请教Vector num 和 IRQ num 的区别是什么?

2020-02-19 21:05发布

我使用的芯片是 MK16Z64VHL4,在数据手册中描述关于中断有如下

3.3.2.3 Interrupt channel assignments
The interrupt vector assignments are defined in the following table.
• Vector number — the value stored on the stack when an interrupt is serviced.
• IRQ number — non-core interrupt source count, which is the vector number minus
16.


配置中断时是用IRQ num

比如:SYStick中断,就是 enable_irq(-1);

可能对NVIC等概念我不是很清楚,所以请大家帮我解释一下,这两个概念有什么不同?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
security
2020-02-20 06:03
Vector number就是异常表的序号,也就是MSP、系统异常、IRQ中断在异常表的索引序号。
IRQ number就是IRQ中断的逻辑序号,举个例子,IRQ number = 0,对应于异常表的第16个元素,也就是Vector number的编号为16。
举个例子,SysTick的Vector number是15,IRQ number是-1。

而你举得例子,
比如:SYStick中断,就是 enable_irq(-1);
理论上,是不会出现这样的调用,因为enable_irq是针对外部中断的,也就是IRQ number >= 0的中断。
你可以再看下代码,开启SysTick异常中断的具体方法。