关于中断标志的疑惑
对于中断,先执行中断服务函数还是先清理中断标志?开始学习固件库的时候,差不多是先进入服务函数在清理中断标志。
最近在用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);
}
}
```
一般来讲,这个没有特定顺序要求。
唯一要注意的是,最好不要将中断请求标志放在中断程序退出前的最后一句,
避免同一中断事件再来一次。 这个没有绝对的标准。
1. Cube库函数已经包含了标志判断和清除,不需要用户自己操作了。
2. 用户需要关注中断发生的频率和中断执行时间的匹配就好了。
从逻辑上讲,清除就完成本次中断任务了。剩下的只是响应速度够不够的问题。
页:
[1]