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

}

}

相关推荐
梓德原10 分钟前
【基础】详细分析带隙型稳压电路的工作原理
单片机·嵌入式硬件·物联网
国科安芯1 小时前
航天医疗领域AS32S601芯片的性能分析与适配性探讨
大数据·网络·人工智能·单片机·嵌入式硬件·fpga开发·性能优化
小李做物联网2 小时前
【物联网毕业设计】60.1基于单片机物联网嵌入式项目程序开发之图像厨房监测系统
stm32·单片机·嵌入式硬件·物联网
贝塔实验室3 小时前
新手如何使用Altium Designer创建第一张原理图(三)
arm开发·单片机·嵌入式硬件·fpga开发·射频工程·基带工程·嵌入式实时数据库
@good_good_study3 小时前
STM32 ADC多通道采样实验
stm32·单片机·嵌入式硬件
Darken033 小时前
什么是“位带”?;在STM32单片机中有什么作用?
stm32·单片机·嵌入式硬件
清风6666664 小时前
基于单片机的智能豆浆机设计(加热打浆熬煮自动控制与防干溢保护)
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
Triumph++5 小时前
STM32工程(Kile5)生成Bin文件
stm32·嵌入式硬件
dian2008-ic5 小时前
Linux pcie【9】基于GIC-V3 ITS实现pcie msi中断
linux·arm开发·驱动开发·嵌入式硬件
清风6666665 小时前
基于51单片机的智能断路器设计:过压欠压过流温度实时监控与保护
单片机·嵌入式硬件·毕业设计·51单片机·课程设计·期末大作业