本帖最后由 千岁寒 于 2018-8-21 16:32 编辑
提要:
M0:
cortex M0核支持最多32外设中断和一个不可屏蔽(NMI)中断。
M0 有0~3共4级抢占优先级(没有子优先级)。
M3:
cortex M3核支持最多240外设中断和一个不可屏蔽(NMI)中断。
M3支持抢占优先级及子优先级。即抢占优先级高的中断可打断低优先级中断。当抢占优先级相同的两个中断同时发生,子优先级高的中断先执行。若抢占优先级相同,子优先级低的中断先发生并执行,则此时再发生的高子优先级中断需等待之前的中断结束后才能被响应,即抢占不能发生。
注:对于cortex M0来说,NVIC寄存器的访问必须是每次一个字(32bit),而cortex M3则可以以字,半字或字节来进行。
--------------------------------
--------------------------------
--------------------------------
1、cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断。
2、stm32只有84个中断,包括16个内核中断和68个可屏蔽中断
3、stm32f103上只有60个可屏蔽中断,f107上才有68个中断
4、先占优先级也就是抢占优先级,概念等同于51单片机中的中断。假设有两中断先后触发,已经在执行的中断先占优先级如果没有后触发的中断先占优先级更高,就会先处理先占优先级高的中断。也就是说又有较高的先占优先级的中断可以打断先占优先级较低的中断。这(抢占优先级)是实现中断嵌套的基础。
5、次占优先级,也就是响应优先级,只在同一先占优先级的多个中断同时触发时起作用,先占优先级相同,则优先执行次占优先级较高的中断。次占优先级不会造成中断嵌套。 如果中断的两个优先级都一致,则优先执行位于中断向量表中位置较高(越靠前)的中断。 |
ARM 公司有关M0 IP 的技术手册写着,4级中断优先级 NVIC that features: — 1, 2, 4, 8, 16, 24, or 32 external interrupt inputs, each with four levels of priority — dedicated Non-Maskable Interrupt (NMI) input — support for both level-sensitive and pulse-sensitive interrupt lines — optional Wake-up Interrupt Controller (WIC), providing ultra-low power sleep mode support.