国民MCU_freertos V10.3.1使用经验避坑总结
1.ARM MCU中断配置
1.1 中断概述
中断是处理器的一个常见特性,由硬件产生,中断产生后CPU就会中断当前流程转去处理中断服务。Cortex-M内核的MCU有一个用于管理中断的嵌套向量中断控制器 NVIC,它支持多种中断和异常管理。
Cortex-M处理器提供了多个管理中断和异常的可编程寄存器,重点需要关注的是3个中断屏蔽寄存器:PRIMASK、FAULTMASK和BASEPRI。
1.2 优先级分组
(1)优先级数量
Cortex-M内核支持中断优先级配置,中断优先级数值越小,优先级越高,与FreeRTOS任务优先级相反,任务优先级数值越小,优先级越低。
Cortex-M处理器有3个固定优先级和256个可编程的优先级:
3个固定优先级都是负数,即拥有最高优先级,为复位、NMI和HardFault
256个可编程优先级是指可以配置最多 256个优先级
但是芯片厂商在做基于 Cortex-M 内核的处理器时,不会配置出256个优先级,复杂度高还浪费钱,因此会通过优先级配置寄存器来缩减优先级数。比如,STM32就只使用高4位来实现0x00~0xF0共 16个优先级。