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);

}

}

相关推荐
糖糖单片机设计2 小时前
硬件开发_基于物联网的生态环境检测系统
stm32·单片机·嵌入式硬件·物联网·51单片机
A9better2 小时前
嵌入式开发学习日志35——stm32之超声波测距
stm32·单片机·嵌入式硬件·学习
Janspran3 小时前
监控系统1 - 项目框架 | 线程邮箱
网络·单片机·嵌入式硬件·硬件架构
常州晟凯电子科技3 小时前
海思Hi3516CV610/Hi3516CV608开发笔记之环境搭建和SDK编译
人工智能·笔记·嵌入式硬件·物联网
qq_397562313 小时前
STC8H8K64,使用0.96寸oled屏幕. 进行硬件iic和硬件spi驱动(spi开启DMA)---(代码)
单片机·嵌入式硬件
弘毅 失败的 mian3 小时前
STM32 GPIO实战:LED与按键控制
经验分享·笔记·stm32·单片机·嵌入式硬件
国科安芯4 小时前
ASP3605电源芯片的性能优化与改进思路
网络·单片机·嵌入式硬件·安全·性能优化
lzj_pxxw5 小时前
FreeRTOS_API模块综合应用篇(八)
stm32·单片机·嵌入式硬件·mcu
点灯小铭5 小时前
基于单片机的罐体压力控制器设计与实现
数据库·单片机·mongodb·毕业设计·课程设计
夜月yeyue5 小时前
多级流水线与指令预测
linux·网络·stm32·单片机·嵌入式硬件