最近在用US100超声波模块,已经用串口中断方式实现,想尝试用串口查询方式接受数据,但经检验:只能接收到高8位正常数据,低8位跟高8位数据相同。US—100:
在模块上电前,首先插上模式选择跳线上的跳线帽,使模块处于串口触发模式在此模式下只需要在Trig/TX管脚输入0X55(波特率9600),系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。输出的距离值共两个字节,第一个字节是距离的高8位(HDate),第二个字节为距离的低8位(LData),单位为毫米。即距离值为(HData*256 +LData)mm。
int main(void)
{
u8 Hdata=0,Ldata=0;
u16 data=0;
uart_init(9600);
usart_init(9600);
delay_init(84);
while(1)
{
USART_SendData(USART2,0x55); //超声波模块串口模式 测距 触发数据
Hdata=USART_ReceiveData(USART2);
Ldata=USART_ReceiveData(USART2);
data=((Hdata*256 +Ldata)/10); //计算距离
printf("
您发送的消息为:%d",data);
delay_ms(1000);
}
}
所以你讀到的不知道是啥東東...確定是high byte?? 我怎麼覺得是讀到上一筆的low byte
你要先檢查SR的RXNE位是不是1才能讀...
一周热门 更多>