我发现有两种方法可以使用STM32 HAL禁用特定ISR。
以定时器输入捕获ISR为例,有HAL_TIM_IC_Start_IT()
和HAL_TIM_IC_Stop()
,但也有HAL_NVIC_DisableIRQ(TIMx_IRQn)
和HAL_NVIC_EnableIRQ(TIMx_IRQn)
。
我很想使用HAL_TIM
API,因为这允许我禁用定时器的某些通道(即TIM_CHANNEL_1、TIM_CHANNAL_2、TIM_CHANNEL_3等(,其中使用HAL_NVIC
API将禁用与TIMx相关的所有中断。
在应用程序运行时启用/禁用动态中断时,最理想使用哪种API?
这完全取决于你想做什么:
如果您禁用NVIC上的中断,标志仍然会被设置,也许您希望设置它们,因为您要轮询它们。也许你会这样做是因为你不想取消外围设备的配置。
或者,如果你想停止观看一个频道而不观看其他频道,那么你需要在频道级别上这样做。