4. 嵌套向量中断控制器 (NVIC)

4.1. 概述

Cortex-M0提供了“嵌套向量中断控制器(NVIC)”用以管理中断事件。

中断优先级分为4级,可通过中断优先级配置寄存器(IRQn)进行配置。中断发生时,内核比较中断优先级,并自动获取入口地址,并保护环境,将指定寄存器中数据入栈,无需软件参与。中断服务程序结束后,由硬件完成出栈工作。同时支持“尾链”模式及“迟至”模式,有效的优化了中断发生及背对背中断的执行效率,提高了中断的实时性。

更多细节请参阅 “Cortex®-M0 技术参考手册” 及 “ARM® CoreSight 技术参考手册”。

4.2. 特性

  • 支持嵌套及向量中断

  • 硬件完成现场的保存和恢复

  • 动态改变优先级

  • 确定的中断时间

4.3. 中断向量表

SWM221 提供了外设32个中断供外设与核交互,其排列如 表格 2 所示。可以通过中断配置模块,将任意模块或具体 IO 的中断连接至指定中断编号。具体使用参考中断配置模块。

表格 2 中断向量表

中断源

外设中断

地址

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