STM32F103与四路超声波传感器使用中的坑HC-SR04

本文介绍了作者在使用STM32F103控制四路HC-SR04超声波传感器进行避障小车制作时遇到的问题。主要问题包括:超声波响应速度慢,while循环等待高电平可能导致卡死,以及板子需手动复位才能正常连续测距。作者建议采用输入捕获方式改进,并寻求解决方案。
摘要由CSDN通过智能技术生成

STM32F103与四路超声波传感器使用中的坑HC-SR04

首先在此声明,本人是菜鸟一个,学习stm32也没有多长时间,最近因为做比赛,所以临时学习了一些东西,也遇到了一些坑,在此希望能够记录一下,作为自己的学习笔记,也希望能够跟大家分享,如果有不对的地方,希望各位大佬批评指正。

HC-SR04不再多说,淘宝满天飞的东西,我直接分析代码

首先是头文件,这个都没有问题

#include "hcsr04.h"
#include "stm32f10x_gpio.h"

其次,我在开头宏定义了我的HCSR04的管脚,这样方便以后修改,不用每个都去修改,只需要修改开头的宏定义就可以了,比较方便

//   0#   hscr04
#define HCSR04_0_PORT GPIOB
#define HCSR04_0_CLK RCC_APB2Periph_GPIOB
#define HCSR04_0_TRIG GPIO_Pin_5
#define HCSR04_0_ECHO GPIO_Pin_6

其余的也一样,在这里我就不再复制黏贴,大家直接改好就行,例如我定义的

//   1#   hscr04
#define HCSR04_1_PORT GPIOB
#define HCSR04_1_CLK RCC_APB2Periph_GPIOB
#define HCSR04_1_TRIG GPIO_Pin_7
#define HCSR04_1_ECHO GPIO_Pin_8

同样的道理,剩下的管脚应该都会定义了。

定义完了管脚,先定义一个整型变量,用于计数

u16 msHcCount = 0;

然后是GPIO的配置,这里以0#传感器为例

//hscr04  0# GPIO管脚初始化
void  Hcsr04_0_gpio_Init()
{      
    GPIO_InitTypeDef GPIO_InitStructure;  
    RCC_APB2PeriphClockCmd(HCSR04_0_CLK,ENABLE);  
       
    // IO初始化  
    GPIO_InitStructure.GPIO_Pin = HCSR04_0_TRIG;       //发送电平引脚  
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出  
    GPIO_Init(HCSR04_0_PORT, &GPIO_InitStructure);  
    GPIO_ResetBits(
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值