关于按键电路的问题

2019-07-25 12:22发布

   if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)==RESET)
        {
           delay_ms(100);
                if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)==RESET)
                {
                       
                        GPIOA->ODR^=0X02;

                }
       
        }


用这个按键电路,按下去以后发现,电流立即加大了30Ma,吓得我不敢再按了,控制引脚是配置为推挽输出模式,然后灯也没反应,是什么问题?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
沐唐
1楼-- · 2019-07-25 15:29
你这不是检测按键的么,按键是PB14,你检测A怎么会么会有反应,按键管脚配置为推挽输出?
jkd405
2楼-- · 2019-07-25 17:11
 精彩回答 2  元偷偷看……
genius
3楼-- · 2019-07-25 19:45
沐唐 发表于 2017-11-8 09:23
你这不是检测按键的么,按键是PB14,你检测A怎么会么会有反应,按键管脚配置为推挽输出?

void KEY_GPIO_init(void)//初始化管脚
{
/*********定义一个GPIO_InitTypeDef 类型的结构体**********/
           GPIO_InitTypeDef GPIO_InitStructure;

     /*********选择要控制的GPIOx的引脚**********/
           //GPIO_InitStructure.GPIO_Pin =(GPIO_Pin_6|GPIO_Pin_7);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    /*********设置引脚速率为50MHZ**********/
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    /*********设置引脚模式为通用上拉输入**********/
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
       
    /*打开LED使用的GPIO的时钟使能*/
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

    /*初始化相应的GPIO*/
         GPIO_Init(GPIOA, &GPIO_InitStructure);         
}


    if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)==Bit_RESET)
        {
           delay_ms(10);
                if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)==Bit_RESET)
                {
                       
                         GPIO_SetBits(GPIOA,GPIO_Pin_1);

//                          }
                }
       
        }



这是相关代码,没有检测到低电平

沐唐
4楼-- · 2019-07-25 22:21
genius 发表于 2017-11-8 10:33
void KEY_GPIO_init(void)//初始化管脚
{
/*********定义一个GPIO_InitTypeDef 类型的结构体********* ...

端口初始化要先开时钟

一周热门 更多>