stm32之14.超声波测距代码


源码

void sr04_init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

//打开端口B的硬件时钟,就是供电

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);

//打开端口E的硬件时钟,就是供电

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //6号引脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //输入模式

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_High_Speed;//高速,速度越高,响应越快,但是功耗会更高

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//不使能上下拉电阻(因为外部已经有上拉电阻)

GPIO_Init(GPIOE,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //6号引脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_High_Speed;//高速,速度越高,响应越快,但是功耗会更高

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//不使能上下拉电阻(因为外部已经有上拉电阻)

GPIO_Init(GPIOC,&GPIO_InitStructure);

//只要有输出模式,肯定会有初始化电平的状态,看连接设备说明书

PCout(7)=0;

}

int32_t sr04_get_distance(void)

{

uint32_t t=0;

PCout(7)=1;

delay_us(10);

PCout(7)=0;

//等待回响信号,若等待成功,PE6引脚为高电平,则跳出该循环

while(PEin(6)==0);

//测量高电平的持续时间

while(PEin(6))

{

t++;

delay_us(9); //有多少个9us ,就是有多少个3mm

}

//因为超声波的传输时间是发射时间+返回时间,所以需要除以/2

t=t/2;

return 3*t;

}

int main(void)

{

uint32_t distance;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

//抢占优先级0~3,支持4级!

//响应优先级0~3,支持4级!

key_init();

Led_init();

//初始化串口1波特率位115200bps,若发送/接收数据有乱码,请检查PLL

usart1_init(115200);

sr04_init();

while(1)

{

distance = sr04_get_distance();

if(distance >=20 && distance<=4000)

{

printf("distance = %d mm\r\n",distance);

}

//官方要求,时间间隔60ms以上,防止发射信号对反射信号的干扰

delay_ms(1000);

}

}

相关推荐
单片机系统设计3 小时前
基于STM32的水质检测系统
网络·stm32·单片机·嵌入式硬件·毕业设计·水质检测
唔好理总之好犀利5 小时前
FreeRTOS中断内使用taskENTER_CRITICAL()进入临界区
单片机·嵌入式硬件
csg11075 小时前
PIC单片机入门实战(一):PIC16F1824/PIC12F1822,从振荡器与Timer1开始
单片机·嵌入式硬件·物联网
清风6666665 小时前
基于单片机的车辆超载报警系统设计及人数检测设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
QQ_21932764555 小时前
基于单片机的自动售货机系统设计
单片机·嵌入式硬件
Y1rong5 小时前
STM32之IIC
stm32·单片机
Nautiluss6 小时前
一起调试XVF3800麦克风阵列(九)
linux·人工智能·嵌入式硬件·音频·语音识别·dsp开发
钿驰科技6 小时前
TC-BL2840三相有感直流无刷电机驱动板在水泵的应用
单片机·嵌入式硬件
自小吃多6 小时前
爬电距离与电气间隙
笔记·嵌入式硬件·硬件工程
集和诚JHCTECH7 小时前
BRAV-7722赋能手术机器人:高性能控制方案,守护精准手术的每一刻
人工智能·嵌入式硬件·计算机视觉