正在学习STM32的ikun 发表于 2024-3-26 15:56:54

关于中断标志的疑惑

对于中断,先执行中断服务函数还是先清理中断标志?
开始学习固件库的时候,差不多是先进入服务函数在清理中断标志。
最近在用CubeMX,是先清理中断标志再进入回调函数。
想请教一个哪一个好

```c
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* EXTI line interrupt detected */
if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
{
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
}
}
```

xmshao 发表于 2024-3-26 17:10:11

一般来讲,这个没有特定顺序要求。


唯一要注意的是,最好不要将中断请求标志放在中断程序退出前的最后一句,


避免同一中断事件再来一次。

butterflyspring 发表于 2024-3-26 17:01:38

这个没有绝对的标准。

1. Cube库函数已经包含了标志判断和清除,不需要用户自己操作了。

2. 用户需要关注中断发生的频率和中断执行时间的匹配就好了。
    从逻辑上讲,清除就完成本次中断任务了。剩下的只是响应速度够不够的问题。
页: [1]
查看完整版本: 关于中断标志的疑惑