将超声波测距模块与stm32连接配置其接口(PA10---PA11)

PA10是TIM1的通道3对应的GPIO口
在TIM1将时钟源设置为内部时钟源,将通道3设置为输入捕获直接模式(Input Capture direct mode)将通道4设置为输入捕获间接模式(Input Caputre indirect mode)。将定时器的预分频器设置为72分频使计数器的频率为1MHz。在输入捕获通道3默认保持上升沿检测,在输入捕获通道4修改为下降沿检测。


在NVIC设置开启TIM1捕获/比较中断

在时钟设置将主频改为72MHz

因为需要使用OLED屏幕显示测试距离所以需要打开I2C1

并且勾选为每个外设单独生成单独的.c/.h文件

将oled.c/.h font.c/.h 文件放入本次工程文件夹中

在输入捕获回调函数首先 if 一下进入中断的是不是定时器1,在判断一下触发回调函数的是不是通道4
成立则通过通道3捕获回波的上升沿时间与通道4捕获回声的下降沿时间计算距离并保存到distance中。
在main函数中初始化OLED函数 ,启动定时器计数,启动输入捕获通道3通道4函数
在while函数中首先触发超声波发射,然后重置定时器计数保证每次测距从0开始
最后在OLED显示频中将输入捕获回调函数计算的距离显示在OLED屏幕中。