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(