具有外部中断的STM32F4 GPIO LED

问题描述

我试图使用连接到PA1的外部按钮来触发外部中断,以便打开LED(在PD12上)。我尝试使用在stm32f4xx_it.c中声明的变量并将其在EXTI1_IRQHandler中设置为1,还尝试使用GPIO回调函数。但是,即使未按下按钮,该引脚似乎也连续被检测为高电平。

预期结果:未按下按钮>> LED熄灭>>已按下按钮>> LED点亮

实际结果:未按下按钮>> LED点亮>>已按下按钮>> LED点亮

我不知道为什么会这样,我尝试进行测试以查看是否我的面包板上的按钮接线错误,但是如果我将一侧连接到+ 5v并串联添加一个电阻和LED,则可以正常工作,按下按钮时LED点亮,不按下按钮时LED熄灭。

编辑:该代码使用发现板的内置按钮和LED在新项目上起作用,但是当我尝试使用自己的外部按钮时,只要我将电线连接到板上的引脚,LED就会打开。甚至被连接到面包板的另一端,所以以某种方式被告知引脚处于高电平?

我将在下面附加一些代码

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{


  /* Prevent unused argument(s) compilation warning */
  UNUSED(GPIO_Pin);
  /* NOTE: This function Should not be modified,when the callback is needed,the HAL_GPIO_EXTI_Callback Could be implemented in the user file
   */
  if(GPIO_Pin == GPIO_PIN_1)
    {
        if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1))
        {
    
        buttonpressed=1;
        }

    }

}
  while (1)
  {

       if(buttonpressed==1){
         
          HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,GPIO_PIN_SET);
         
      }
      buttonpressed=0;

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)