中断控制器(INTC)选择中断事件作为中断请求送到 NVIC 唤醒 WFI;选择中断事件作为事件输入(RXEV) 唤醒 WFE;选择中断事件唤醒系统低功耗模式(休眠模式和停止模式);控制外部中断和软件中断。
INTC 的主要规格如下:
1) NVIC 中断请求:
INTC
配备了
258
个中断事件,处理后作为中断请求(
IRQ
)发送给
NVIC
,支持
130
个
IRQ
,每个
IRQ
对应一个或多个中断事件。
2) 可编程优先级:
16
个可编程优先级(使用了
4
位中断优先级寄存器)。
3) 不可屏蔽中断:可以独立选择多种系统中断事件作为不可屏蔽中断,且各中断事件配备独立的使能
选择、标志及标志清除寄存器。
4) 配备
16
个外部中断事件。
5) 配备多个中断事件,具体数目请参考【中断事件】。
6) 配备
32
个软件中断事件。
7) 中断可唤醒系统休眠模式和停止模式。
INT003_IRQn 对应默认的回调函数 IRQ003_Handler
如果初始化时指定用户自定义的回调函数,则会执行自定义回调函数
/* IRQ sign-in */
stcIrqSignConfig.enIntSrc = ExtInt_Type->IntSrc;
stcIrqSignConfig.enIRQn = ExtInt_Type->IRQn;
// stcIrqSignConfig.enIRQn = INT003_IRQn;
// stcIrqSignConfig.pfnCallback = &EXTINT_KEY10_IrqCallback;
(void)INTC_IrqSignIn(&stcIrqSignConfig);
/* NVIC config */
NVIC_ClearPendingIRQ(stcIrqSignConfig.enIRQn);
NVIC_SetPriority(stcIrqSignConfig.enIRQn, ExtInt_Type->Priority);
NVIC_EnableIRQ(stcIrqSignConfig.enIRQn);
如果指定回调函数为EXTINT_KEY10_IrqCallback,则执行EXTINT_KEY10_IrqCallback,如果初始化时未指定用户自定义回调函数,则执行默认回调函数IRQ003_Handler,用户可自己实现IRQ003_Handler函数具体代码内容。