stm32f429+超声波传感器HC-SR04 -- 测距
生活随笔
收集整理的這篇文章主要介紹了
stm32f429+超声波传感器HC-SR04 -- 测距
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
工具
1. 開發板stm32f429(f4系列的應該都可以)
2. 超聲波傳感器,型號為HC-SR04
| VCC | VCC(5V) |
| GND | GND |
| Trig | 推挽普通輸出模式 |
| Echo | 上拉輸入,需開啟外部中斷 |
代碼實現邏輯:
1. 配置定時器TIM4用于計算Echo高電平信號的時長
void TIM4_Init(u16 arr,u16 psc) // TIM4 rewrite {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //定時器參數初始化//初始化定時器RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); //TIM4時鐘使能 TIM_TimeBaseStructure.TIM_Prescaler=psc; //定時器分頻TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上計數模式TIM_TimeBaseStructure.TIM_Period=arr; //自動重裝載值TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //輸入捕獲會用到TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//初始化定時器4 }2. 配置兩個IO給Trig和Echo
1)使能 IO 口時鐘,包括使能 SYSCFG 時鐘用于外部中斷
2)初始化Echo的 IO 口為上拉輸入,初始化Trig的 IO 口為上拉推挽普通輸出
3)設置 Echo的 IO 口與中斷線的映射關系,設置中斷線上升沿觸發中斷模式
4)配置中斷優先級分組(NVIC),并使能中斷
5)編寫中斷服務函數
3. 編寫函數:使能超聲波傳感器,測算距離一次
void HCSR04_Start(void) {GPIO_SetBits(GPIOD,GPIO_Pin_0); //將Trig設置為高電平delay_us(12); //持續大于10us觸發,觸發超聲波模塊工作GPIO_ResetBits(GPIOD,GPIO_Pin_0); }4. 如何在main中調用
#include "sys.h" #include "delay.h" #include "usart.h" #include "timer.h" #include "hc_sr04.h"int main(void) {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2delay_init(180); //初始化延時函數 USART1_init(9600);//初始化串口波特率為9600TIM4_Init(9998,7199); //定時器初始化HCSR04_GPIO_Init(); //超聲波傳感器初始化while(1){u8 i=0;while(i<10){delay_ms(100); // 超聲波工作周期建議在60ms以上,以防止發射信號對回響信號的影響i++;}HCSR04_Start(); // 使能超聲波傳感器,測算距離一次} }聲明:
1. 代碼不完全,基于正點原子F4的項目文件編寫
2. 此文參照他人的分享(STM32學習筆記——HC—SR04(超聲波模塊)_精神小火君-CSDN博客_正點原子超聲波)/如若侵犯請聯系刪除
3. 以上代碼已在傳感器上經過驗證沒有問題
4. 項目文件上傳到github(GitHub - Liqing-Ye/stm32f4-HC-SR04: stm32f4+HC-SR04超聲波測距)
總結
以上是生活随笔為你收集整理的stm32f429+超声波传感器HC-SR04 -- 测距的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么用MindManager制作鱼骨图
- 下一篇: Jmeter性能测试之事务控制器的使用