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

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

使用电平方式,需要进行两次捕捉,而且发送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);

}


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


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭