中斷號見《nrf52.h》 66行至117行,負數爲cortex-M4內核中斷(內部中斷),0與正數爲廠商自定義中斷(外部中斷)。
函數名見《iar_startup_nrf52.s》 78行至134行。
中斷等級0~7,有點少吧。
注意:SCB->VTOR定義中斷表位置(Vector Table Offset Register)。
默認搶佔中斷等級3位,0~7全是搶佔中斷。
中斷搶佔優先級和亞優先級,具體定義見宋巖譯《Cortex-M3 權威指南》,110頁,不做引用(M3與M4變化不大)。
__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup);
__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void);
設置中斷優先級,外部內部中斷都可用(自動分辨正負號)。
__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority);
__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn);
開掛中斷,注意以下只支持外部中斷。
__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn);
__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn);
是否掛起
__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn);
軟件掛起
__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn);
清除掛起
__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn);
是否激活
__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn);
軟件重啓
__STATIC_INLINE void NVIC_SystemReset(void)
設置系統時鐘
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
注意:系統時鐘中斷等級7,最低。(7是最低嗎?我記錯了?)