2.7.1.11.1 NVIC programming hints
Software uses the CPSIE I and CPSID I instructions to enable and disable interrupts. The CMSIS provides the following intrinsic functions for these instructions:
void __disable_irq(void) // Disable Interrupts
void __enable_irq(void) // Enable Interrupts
In addition, the CMSIS provides a number of functions for NVIC control, including those listed in the following table.
| CMSIS interrupt control function | Description | 
|---|---|
| void NVIC_SetPriorityGrouping(uint32_t priority_grouping) | Set the priority grouping | 
| void NVIC_EnableIRQ(IRQn_t IRQn) | Enable IRQn | 
| void NVIC_DisableIRQ(IRQn_t IRQn) | Disable IRQn | 
| uint32_t NVIC_GetPendingIRQ (IRQn_t IRQn) | Return true (IRQ-Number) if IRQn is pending | 
| void NVIC_SetPendingIRQ (IRQn_t IRQn) | Set IRQn pending | 
| void NVIC_ClearPendingIRQ (IRQn_t IRQn) | Clear IRQn pending status | 
| uint32_t NVIC_GetActive (IRQn_t IRQn) | Return the IRQ number of the active interrupt | 
| void NVIC_SetPriority (IRQn_t IRQn, uint32_t priority) | Set priority for IRQn | 
| uint32_t NVIC_GetPriority (IRQn_t IRQn) | Read priority of IRQn | 
| void NVIC_SystemReset (void) | Reset the system | 
The input parameter IRQn is the IRQ number, see Table 2-16. For more information about these functions see the CMSIS documentation.
