单片机
返回首页

stm32F1使用us-100超声波测距

2017-09-27 来源:eefocus

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

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


硬件配置:

1)UART波特率设为9600

2)开启NVIC中断


软件:

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

1)

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


  1. HAL_UART_Receive_IT(&huart2, rx_data_sonic, 2);  


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


2)

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


  1. check_interval++;  

  2. if (check_interval >= 499) {  

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

  4.   check_interval = 0;  

  5. }  



3)

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

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


  1. // 超声波数据  

  2. if (huart->Instance == USART2) {  

  3.   uint16_t distance = rx_data_sonic[0]*256 + rx_data_sonic[1];  

  4.     

  5.   if (Q_SonicDataHandle != NULL) {  

  6.     if (distance < 500) {  

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

  8.     }  

  9.   }  

  10.   HAL_UART_Receive_IT(&huart2, rx_data_sonic, 2);   

  11.     

  12. }  


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


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • PIC单片机控制的遥控防盗报警器电路

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 如何构建一个触摸传感器电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章