GD32F103 关闭总中断的代码
时间: 2024-09-20 18:04:17 浏览: 82
GD32F103系列是一款ARM Cortex-M4微控制器,它有一个全局中断管理器(Global Interrupt Management,简称GIM)。要关闭所有中断,你需要操作INTERRUPTERRUPT ENABLE寄存器(例如:RCC->AHB1ENR)和系统控制寄存器(NVIC->ISER0~ISER(n-1)),其中n表示中断向量组的数量。
以下是关闭所有中断的基本步骤:
1. 首先,禁止APB1总线上的所有外设中断,通过设置`RCC_AHB1ENR`寄存器对应位为0:
```c
// 如果你想关闭所有EXTI中断
RCC_AHB1ENR &= ~EXTI_ALL_PERIPH_INT_ENABLE;
// 如果你想关闭其他外设中断,替换EXTI_ALL_PERIPH_INT_ENABLE为相应外设的中断使能位
```
2. 然后,禁止内核级中断,通常这涉及到NVIC寄存器。假设你有8个中断向量组:
```c
for (uint32_t i = 0; i < NVIC_GetVectorNumber(IrqType); ++i) {
NVIC_DisableIRQ((IRQn_Type)(i + NVIC_IRQINDEX_OFFSET)); // IrqType是你关心的中断类型编号,比如NVIC_PriorityGroup_0等
}
```
这里的`NVIC_GetVectorNumber(IrqType)`会返回特定中断类型的编号,`NVIC_IRQINDEX_OFFSET`用于转换中断向量组索引。
完成上述操作后,所有的中断都被禁用了。如果你想再次启用中断,只需反向操作即可。
注意:在实际应用中,应确保你在适当的时候开启和关闭中断,以防止程序意外陷入死锁。
阅读全文