超声波 (HC_SR04)检测模块
现在基本没有BUG
效果RUN
模块分析
引脚:
VCC-5V
GND-接地
Trig:接收来自单片机 发出的 激活脉冲(超过10us的高电平)
Echo:发送脉冲给单片机处理。
原理
单片机 通过GPIO口 给Trig发送一个超过10us的高电平激活SR04开始工作发出超声波
传感器 发送一个超声波 此时传感器的Echo变为高电平 ,当接收到物体返回给超声波的时候,转为低电平,只要测出高电平的时间t 即可算出距离。
距离公式:V(声速)*t/2.0=l
时间公式:time_Sammary=ARR(计数器的计数周期)*count(计数器有轮巡次数)—time_Data1(上升沿的时间)+time_Data2(下降沿的时间);
程序分析
1通过TIM7的定时中断给 每100ms给传感器发送1个15us的高电平
/要输出高电平的GPIO初始化/
/TIM7基本定时器初始化/
ARR,PSC输入的值要减去1,因为ARR是从0开始算的
/NVIC中断控制器配置/
/中断服务函数/
2通用定时器TIM4_CH1单通道输入捕获初始化
/接收传感器发送数据的IO口的初始化/
/TIM4_CH1通用定时器的初始化/
// 使能,中断记得放下面 ,
/NVIC中断控制器的初始化/
/更新中断/
//计数器轮询累加
/捕获中断/
//检测到上升沿触发
//检测到下降沿触发
遇到错误
1.超声波 的Trig 的激活函数
TIM6(定时中断 无法进入 ------没写NVIC控制器函数
- 一个定时器 即做延时又做定时中断-----NO
3 ) 输出数据是浮点型 ,但是并未定义 浮点型变量,导致测距 不准确
4 ) —捕获中断 无法进入)---------没有捕获中断使能
**
代码:
**
1基本定时器的定时中断
2 通用定时器 输入捕获
3 中断服务函数–打印距离