STM32ZET6开发板接HC-SR505

2019-07-21 06:00发布

是程序上不对吗,怎么IO一直检测到输入的是高电平,不接HC-SR505还是高电平,求指导

#include "stm32f10x.h"
#include "delay.h"

#define LED_PIN GPIO_Pin_5
#define HC_PIN  GPIO_Pin_7

void LED_GPIO_Config(void);
void HC_GPIO_Config(void);
int main(void)
{
        u8 a=0;
        delay_init(72);
        LED_GPIO_Config();
        HC_GPIO_Config();
        GPIO_SetBits(GPIOB, LED_PIN);
        while(1)
        {
                a=GPIO_ReadInputDataBit(GPIOC, HC_PIN);
                if(a==1)
                {
                        delay_ms(1000);
                        if(a==1)
                        {
                                GPIO_ResetBits(GPIOB, LED_PIN);
                        }
                }
                delay_ms(3000);
                GPIO_SetBits(GPIOB, LED_PIN);
        }
}
void LED_GPIO_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=LED_PIN;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void HC_GPIO_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=HC_PIN;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
szczyb1314
1楼-- · 2019-07-21 08:46
你配置的IO模式:上拉输入。这个IO平时就是高电平,你还在程序中检测这个IO是不是高,那是肯定是高滴,除非你的HC在检测到时输出一个低电平拉低这个IO,不过貌似听你的语气,你的HC在检测到时输出是高电平
szczyb1314
2楼-- · 2019-07-21 09:09
 精彩回答 2  元偷偷看……
墨雨One
3楼-- · 2019-07-21 10:51
了解,这个HC-SR505有8s延时的问题,之前用下拉试过,是那个模块延时问题

一周热门 更多>