1.PRIMASK和FAULTMASK寄存器
有时候为了执行严格的时序,需要暂时屏蔽所有中断,这是可以使用PRIMASK。PRIMASK可以屏蔽除复位,MNI和HardFault之外的所有中断。
FAULTMASK比PRIMASK更严格,连HardFault都可以屏蔽。
2.BASEMASK对中断的屏蔽更灵活一些,可以屏蔽优先级低于某一阀值的中断,这个阀值就是通过BASEMASK设置。
3.中断配置宏
configPRIO_BITS:配置MCU使用几位优先级,例如STM32使用的是4位,则设置成4;
configLIBRARY_LOWEST_INTERRUPT_PRIORITY: 设置最低优先级,例如configPRO_BITS=4,则有16级优先级,那么最低优先级为15,此宏应配置成15.
configKERNEL_INTERRUPT_PRIORITY:此宏配置内核中断优先级,用来设置PendSV和滴答定时器中断优先级,其定义是:
#define configKERNEL_INTERRUPT_PRIOPRTY (configLIBRARY_LOWEST_INTERRUPT_PRIORITY <<(8-configPRIO_BITS))
configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY: 此宏用来配置FreeRTOS能管理的最高优先级,例如此宏配置成5,那么0-4优先级不受系统管理,系统无法对其屏蔽等操作。5-15级优先级才能受系统管理。
configMAX_SYSCALL_INTERRUPT_PRIORITY: 其定义是:
#define configMAX_SYSCALL_INTERRUPT_PRIORITY (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY<<(8-configPRIO_BITS))
4.FreeRTOS中断开关
系统的开关操作是通过两个宏定义实现:
portENABLE_I