如何解决STM32F070 EXTI(n) 误触发
我有 5 个按钮,已映射到 EXTI 中断。
PA0,PA1,PA2,PA3,PA15
我观察到当按下 PA0 上的按钮时,它会为 PA1 调用 EXTI 中断,反之亦然。 PA2 和 PA3 的行为相似。
这里是回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_0)
{
val1++;
}
if(GPIO_Pin == GPIO_PIN_1)
{
val2++;
}
if(GPIO_Pin == GPIO_PIN_2)
{
val3++;
}
if(GPIO_Pin == GPIO_PIN_3)
{
val4++;
}
}
按下 Key0 应该只会增加 val1 ,但它会增加 val2 ,反之亦然
这里是 ISR
void EXTI0_1_IRQHandler(void)
{
/* USER CODE BEGIN EXTI0_1_IRQn 0 */
/* USER CODE END EXTI0_1_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
/* USER CODE BEGIN EXTI0_1_IRQn 1 */
/* USER CODE END EXTI0_1_IRQn 1 */
}
我检查了电源轨上的噪音,但没有发现任何噪音。 在一个版本中,也添加了去抖动(虽然在当前版本中你看不到它) 当我在 ISR 中放置断点时,按下 PA0 上的按钮时会触发 PA1 上的错误中断(val1 应该增加,而不是 val2 增加) 我还尝试在中断进入 ISR 后禁用它,并在处理后在 main() 中重新启用中断。但它的行为也同样不稳定。
有人可以指出我的代码中是否有错误或任何其他问题吗?
提前致谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。