FreeRTOS和裸机中的中断说明:之前刚学习FreeRTOS时,在中断优先级配置这里迷糊,搞不懂和裸机的中断有什么区别,裸机是程序设计者设定好中断优先级,而FreeRTOS是设定好0~15级的中断优先级,好多到好多是FreeRTOS控制,另外的不受FreeRTOS控制,比如设定优先级高于5的不受FreeRTOS控制,即0~4不受控制,5~15受FreeRTOS控制,某段程序我调用FreeRTOS中的关中断API函数,对0~4优先级的程序就无效。
1.NVIC基础知识: M3和M4的每个中断优先级是由8位寄存器的高4位来设置的,低4位取0,可以表示2*2*2*2 = 16级,共5个优先级分组(见下图),上电复位默认为优先级分组0,在初始化时调用函数NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4)配置优先级分组,数值越小优先级越高,Reset、NMI、Hard Fault优先级为负数,优先级最高,而系统中断,如PendSV、SVC、SysTick可以和外部中断一样设置优先级,故和外部中断在同一个NVIC下面设置。

2.FreeRTOS使用NVIC配置说明:
01.#define configPRIO_BITS 4:在FreeRTOSConfig.h文件中定义的宏,用于设置优先级设置8位寄存器实际使用位数,因为优先级寄存器只用到了高4位,所以这里就是定义为4。__NVIC_PRIO_BITS包含在标准库头文件stm32f10x.h,如果这里include了stm32f10x.h,就会执行下图第一句条件编译,而__NVIC_PRIO_BITS又是定义在cmsis软件包的core_cm3.h中,见下图2,所以用户即使没有

最低0.47元/天 解锁文章
3893

被折叠的 条评论
为什么被折叠?



