禁用stm32f103的外部中断后如何重新启用它?

How can I re-enable the stm32f103's external interrupt after I disable it?

我用

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; 
NVIC_Init(&NVIC_InitStructure);

开启中断然后使用

NVIC_InitStructure.NVIC_IRQChannelCmd=DISABLE; 
NVIC_Init(&NVIC_InitStructure);

禁用它。那么如何重新启用中断,使用 ICER、ISER 或任何其他方式?

要在 NVIC 中启用和禁用中断,只需使用相关的 CMSIS 函数:

void NVIC_EnableIRQ(IRQn_Type IRQn);
void NVIC_DisableIRQ(IRQn_Type IRQn);

有CMSIS库函数可以启用中断和禁用中断。

使用void NVIC_EnableIRQ(IRQn_Type IRQn);您可以重新启用禁用的中断。

您需要提供中断的 IRQ 号才能再次启用它。

但是如果你想一次性打开或关闭所有中断,那么你必须使用STM32中的ARM函数。这些是

__disable_irq();
__enable_irq();

通过使用这些,您可以很好地启用禁用 ARM 内核上的所有中断。