如何解决具有外部中断的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 举报,一经查实,本站将立刻删除。