最近又玩了一下超声波模块,收到板子,也来移植一下,代码很简单,就细说下过程……
首先看下板子布局,准备用TIM1通道1来捕获超声波信号,TIM1的通道1在PE9,
为方便接线,Trig脚就选在PE11了,配置管脚,如下图
同时不要忘记打开UART3,参数默认即可,115200,8,none,1,
接下来配置一下定时器参数,
一定要记得选中上升下降沿触发,就在这地方调了好半天没找到怎么回事……
然后打开TIM1中断……
然后生成工程文件,编译
在BEGIN0 和END0之间添加下面两段代码就可以实现串口重定向到printf(添加其他地方应该也可以),
然后中断处理函数都放在了Echo.c这个驱动里面
测试函数就这一段:
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
For_Echo(); //触发测距
HAL_Delay(1000);
if(Echo_State ==Echo_Finished)
printf("距离:%d mm\r\n",Get_Distance(Echo_Last));
else
printf("测距失败!\r\n");
}
每秒上报一次距离
串口:
接线:
附上移植的代码:
超声波测距.rar
(3.65 KB)
|