生活随笔
收集整理的這篇文章主要介紹了
STM32基础——超声波测距+OLED显示+蜂鸣器报警
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此代碼的格式可以直接燒錄到STMF03C8T6最小系統中,燒錄在其它芯片需要自己進行代碼移植,功能是使用超聲波模塊進行測距,距離會顯示在OLED屏幕上,并且當測量到的數據小于設定的范圍是,蜂鳴器報警,可以適用在智能小車的倒車提示功能上。因為三個模塊的代碼過多,只展示一部分,完整代碼私聊拿。
超聲波測距模塊代碼:
.c文件
#include "stm32f10x.h" #include "HCSR04.h"
#include "delay.h"int N
=0;
float distance
=0;
void My_CSB_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure
;NVIC_InitTypeDef NVIC_InitStructure
;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure
;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB
, ENABLE
); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2
, ENABLE
);GPIO_InitStructure
.GPIO_Pin
= GPIO_Pin_10
;GPIO_InitStructure
.GPIO_Mode
= GPIO_Mode_Out_PP
; GPIO_InitStructure
.GPIO_Speed
= GPIO_Speed_50MHz
; GPIO_Init(GPIOB
, &GPIO_InitStructure
); GPIO_InitStructure
.GPIO_Pin
= GPIO_Pin_11
;GPIO_InitStructure
.GPIO_Mode
= GPIO_Mode_IPU
; GPIO_InitStructure
.GPIO_Speed
= GPIO_Speed_50MHz
; GPIO_Init(GPIOB
, &GPIO_InitStructure
);TIM_TimeBaseStructure
.TIM_Period
= 49999;TIM_TimeBaseStructure
.TIM_Prescaler
= 72-1;TIM_TimeBaseStructure
.TIM_ClockDivision
= TIM_CKD_DIV1
; TIM_TimeBaseStructure
.TIM_CounterMode
= TIM_CounterMode_Up
;TIM_TimeBaseInit(TIM2
, &TIM_TimeBaseStructure
); TIM_ITConfig(TIM2
,TIM_IT_Update
,ENABLE
);NVIC_InitStructure
.NVIC_IRQChannel
= TIM2_IRQn
; NVIC_InitStructure
.NVIC_IRQChannelPreemptionPriority
= 1; NVIC_InitStructure
.NVIC_IRQChannelSubPriority
= 0; NVIC_InitStructure
.NVIC_IRQChannelCmd
= ENABLE
; NVIC_Init(&NVIC_InitStructure
); TIM_Cmd(TIM2
, ENABLE
);
}
void TIM2_IRQHandler(void)
{if(TIM_GetITStatus(TIM2
, TIM_IT_Update
) != RESET
){N
+= 1; }TIM_ClearITPendingBit(TIM2
, TIM_IT_Update
);
}int count
=0;
float Distance(void)
{GPIO_ResetBits(GPIOB
, GPIO_Pin_10
);GPIO_SetBits(GPIOB
, GPIO_Pin_10
);delay_us(20);GPIO_ResetBits(GPIOB
, GPIO_Pin_10
);while(GPIO_ReadInputDataBit(GPIOB
, GPIO_Pin_11
) == 0);
TIM2
->CNT
=0;while(GPIO_ReadInputDataBit(GPIOB
, GPIO_Pin_11
) == 1); count
=TIM2
->CNT
;
distance
=(float)count
/58.5; return distance
;
}
.h文件
#ifndef __HCSR04_H
#define __HCSR04_H
#include "sys.h"void My_CSB_Init(void);
float Distance(void);#endif
總結
以上是生活随笔為你收集整理的STM32基础——超声波测距+OLED显示+蜂鸣器报警的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。