禁用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 内核上的所有中断。
我用
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 内核上的所有中断。