STM32 CubeIDE 超声波测距

将超声波测距模块与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屏幕中。

相关推荐
于小猿Sup1 天前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
chao1898441 天前
STM32 HAL库驱动AT24C02 EEPROM例程
stm32·单片机·嵌入式硬件
不会武功的火柴1 天前
SystemVerilog语法(8)-有限状态机(FSM)
嵌入式硬件·fpga开发·自动化·ic验证·rtl·uvm方法学
猫猫的小茶馆1 天前
【Python】函数与模块化编程
linux·开发语言·arm开发·驱动开发·python·stm32
feifeigo1231 天前
STM32矩阵键盘驱动(库函数版)实现
stm32·矩阵·计算机外设
嵌入式小站1 天前
STM32 零基础可移植教程 05:按键消抖,为什么按一次会触发好几次
chrome·stm32·嵌入式硬件
czhaii1 天前
跟我动手学FX系列PLC GX2环境
嵌入式硬件
拾知_H1 天前
STM32/Delay延时函数编程思路
stm32·单片机·时钟·延时
2zcode1 天前
基于STM32的智能扫地机器人设计与实现
stm32·嵌入式硬件·机器人
jllllyuz1 天前
单相并网逆变器控制代码实现(STM32版)
stm32·单片机·嵌入式硬件