CSDN上其实有很多超声波测距的博客,但我还是想写一篇,主要是附上可用的程序,伸手党最爱。其实我也是个伸手党,不过还是希望大家能自己动手自己多练自己能实现。
同时写下我的心得与看法:
1,程序是用STM32CubeMX生成代码并改造完成的,所以使用的HAL库。
2,使用的是高级定时器TIM1(仅计时,没有用输入捕获的功能)+ 外部中断EXTI。
3,定时器分频值理论上越小结果越精确,自动重装载值越大越不容易溢出(因为定时器一旦溢出,那结果就要考虑加上n*65536这种情况(n为溢出次数))。
4,所以我设置PSC=72-1,ARR=65536-1。这时定时器计一个数耗时为1us ,由于距离结果是直接获得cm的 ,所以音速单位我们将其换成cm/us ,
5,我手中的超声波模块HC-SR04是5V供电的,不了解其他的是不是也是这样,用3.3V供电的话结果误差较大。
6,HAL库我使得并不熟,所以连设置当前计数器的值和读当期计数器的值这两个函数我都不知道名字叫啥,不过幸好我晓得他们最终操作的是哪个寄存器,就是TIM1->CNT了。所以,有些寄存器操作还是很简单的,譬如,一些数据寄存器:USART1->DR, SPI1->DR, TIM1->PSC, TIM1->ARR.里面存的都是数,因此不用考虑每一位是啥子功能。
7,PF5接Echo, PF6接Trig, 暂时想不到了,嘻嘻先这样吧,以后想到了再补充。写得不好,多多见谅,欢迎批评指正。
贴两张图
最后留下程序:
链接:https://pan.baidu.com/s/1HfPSHaTwpq23DD83RbbmIA
提取码:f2hj
2022-07-05插入一张图片,并给提问问题的小伙伴:提问问题请将问题描述清楚,一句“怎么没数据”“怎么不显示”,这样的问题我是真的不知道