STM32
直播中

安德森大

8年用户 1281经验值
擅长:接口/总线/驱动
私信 关注
[问答]

STM32cubeIDE PA0口外部中断改变LED灯状态时,GPIO翻转函数放在外部中断回调函数中不被调用怎么解决?

STM32cubeIDE PA0口外部中断改变LED灯状态时,GPIO翻转函数放在外部中断回调函数中不被调用,放在EXti0_IRQHandl函数才起作用

回帖(1)

宋文剑

2024-3-12 14:13:14
在STM32CubeIDE中,当使用外部中断时,通常需要在外部中断回调函数(例如HAL_GPIO_EXTI_Callback)中处理中断事件。在这个回调函数中,您可以执行一些操作,例如GPIO翻转函数来改变LED的状态。
但是,有时候在回调函数中执行GPIO翻转函数可能不起作用,这可能是因为回调函数的执行时间过长或者优先级不正确导致的。在这种情况下,您可以考虑将GPIO翻转函数放在EXTI0_IRQHandler函数中,该函数是外部中断的实际中断处理函数。
EXTI0_IRQHandler函数是由STM32CubeIDE自动生成的,用于处理外部中断0的中断事件。在这个函数中,您可以直接调用GPIO翻转函数来改变LED的状态。这样,当外部中断0发生时,中断处理函数会立即执行GPIO翻转操作,而不需要等待回调函数的执行。
需要注意的是,将GPIO翻转函数放在EXTI0_IRQHandler函数中可能会导致中断处理时间变长,因此需要根据具体应用场景进行评估。如果中断处理时间过长,可能会影响其他的中断响应或系统性能。
总结起来,如果在外部中断回调函数中执行GPIO翻转函数不起作用,您可以尝试将它放在EXTI0_IRQHandler函数中。但请注意评估中断处理时间和系统性能的影响。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分