您现在的位置: 主页 > MCU > 单片机技术应用 > stm32F1使用us-100超声波测距 -
本文所属标签:
为本文创立个标签吧:

stm32F1使用us-100超声波测距 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]依旧,使用CubeMX进行外设配置。使用电平方式,需要进行两次捕捉,而且发送10us触发脉冲,需要延时。103VBT6的Timer不多,还是UART口方便。硬件配置:1)UART波特率设为96002)开启NVIC中断软件:我使用US-100测量料

依旧,使用CubeMX进行外设配置。

本文引用地址: http://www.21ic.com/app/mcu/201807/780823.htm

使用电平方式,需要进行两次捕捉,而且发送10us触发脉冲,需要延时。103VBT6的Timer不多,还是UART口方便。


硬件配置:

1)UART波特率设为9600

2)开启NVIC中断


软件:

我使用US-100测量料斗里的颗粒料消耗,项目使用Freertos系统。

1)

在main函数里启用UART2端口监听


HAL_UART_Receive_IT(&huart2,rx_data_sonic,2);


触发模块后,它会返回2个字节的数据,这里直接读2个。


2)

在Task里每10秒触发一次,发送一个字节0x55。任务是20ms运行一次,使用一个计数。


check_interval++;

if(check_interval>=499){

HAL_UART_Transmit(&huart2,&command_sonic,1,1);

check_interval=0;

}



3)

在中断回调函数里做计算。

料斗高度是50厘米,因此限制返回的值。譬如把料斗盖打开,测的几米的数据,扔掉不用。可不必考虑料斗打开的情况。


//超声波数据

if(huart->Instance==USART2){

uint16_tdistance=rx_data_sonic[0]*256+rx_data_sonic[1];

if(Q_SonicDataHandle!=NULL){

if(distance<500){

osMessagePut(Q_SonicDataHandle,(uint32_t)distance,0);

}

}

HAL_UART_Receive_IT(&huart2,rx_data_sonic,2);

}


语句末尾要再次启动串口中断监听。




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > stm32F1使用us-100超声波测距 -
 

"stm32F1使用us-100超声波测距 -"的相关文章

网站地图

围观()