在运行时/应用程序运行时禁用中断的适当方法



我发现有两种方法可以使用STM32 HAL禁用特定ISR。

以定时器输入捕获ISR为例,有HAL_TIM_IC_Start_IT()HAL_TIM_IC_Stop(),但也有HAL_NVIC_DisableIRQ(TIMx_IRQn)HAL_NVIC_EnableIRQ(TIMx_IRQn)

我很想使用HAL_TIMAPI,因为这允许我禁用定时器的某些通道(即TIM_CHANNEL_1、TIM_CHANNAL_2、TIM_CHANNEL_3等(,其中使用HAL_NVICAPI将禁用与TIMx相关的所有中断。

在应用程序运行时启用/禁用动态中断时,最理想使用哪种API?

这完全取决于你想做什么:

如果您禁用NVIC上的中断,标志仍然会被设置,也许您希望设置它们,因为您要轮询它们。也许你会这样做是因为你不想取消外围设备的配置。

或者,如果你想停止观看一个频道而不观看其他频道,那么你需要在频道级别上这样做。

最新更新