4. 嵌套向量中断控制器 (NVIC)
4.1. 概述
Cortex-M0提供了“嵌套向量中断控制器(NVIC)”用以管理中断事件。
中断优先级分为4级,可通过中断优先级配置寄存器(IRQn)进行配置。中断发生时,内核比较中断优先级,并自动获取入口地址,并保护环境,将指定寄存器中数据入栈,无需软件参与。中断服务程序结束后,由硬件完成出栈工作。同时支持“尾链”模式及“迟至”模式,有效的优化了中断发生及背对背中断的执行效率,提高了中断的实时性。
更多细节请参阅 “Cortex®-M0 技术参考手册” 及 “ARM® CoreSight 技术参考手册”。
4.2. 特性
支持嵌套及向量中断
硬件完成现场的保存和恢复
动态改变优先级
确定的中断时间
4.3. 中断向量表
SWM221 提供了外设32个中断供外设与核交互,其排列如 表格 2 所示。可以通过中断配置模块,将任意模块或具体 IO 的中断连接至指定中断编号。具体使用参考中断配置模块。
中断源 |
外设中断 |
地址 |
---|---|---|
0 |
UART0 |
0x00000040 |
1 |
TIMER0 |
0x00000044 |
2 |
CAN0 |
0x00000048 |
3 |
UART1 |
0x0000004C |
4 |
PWM_CH1 |
0x00000050 |
5 |
TIMER1 |
0x00000054 |
6 |
HALL |
0x00000058 |
7 |
PWM_CH0 |
0x0000005C |
8 |
QSPI0 |
0x00000060 |
9 |
PWM_HALT |
0x00000064 |
10 |
USART |
0x00000068 |
11 |
WDT |
0x0000006C |
12 |
I2C0 |
0x00000070 |
13 |
XTAL_STOP_DET |
0x00000074 |
14 |
SARADC0 |
0x00000078 |
15 |
CMP |
0x0000007C |
16 |
BTIMER0 |
0x00000080 |
17 |
BTIMER1 |
0x00000084 |
18 |
BTIMER2 |
0x00000088 |
19 |
BTIMER3 |
0x0000008C |
20 |
GPIOA |
0x00000090 |
21 |
GPIOB |
0x00000094 |
22 |
GPIOC |
0x00000098 |
23 |
GPIOA0/GPIOC0 |
0x0000009C |
24 |
GPIOA1/GPIOC1 |
0x000000A0 |
25 |
GPIOA2/GPIOC2/MPU |
0x000000A4 |
26 |
GPIOA3/GPIOC3/PVD |
0x000000A8 |
27 |
GPIOB0/GPIOA8/TIMER2 |
0x000000AC |
28 |
GPIOB1/GPIOA9/DMA |
0x000000B0 |
29 |
GPIOB2/GPIOA10/DIV |
0x000000B4 |
30 |
GPIOB3/GPIOA11/SPI0 |
0x000000B8 |
31 |
GPIOB4/GPIOB10/QEI |
0x000000BC |