FreeRTOSConfig.h部分参数详解


#define configKERNEL_INTERRUPT_PRIORITY 255  //PendSV和SysTick优先级受这个值控制

 

/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */

#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xb0, or priority 11(0x0b=11,只有高4位用来做中断优先级设置位,具体看“http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html”). */


#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15

 

(前提:STM32中断优先级设置位都设置为抢占优先级,没有响应优先级)上述三个值,FreeRTOS API只能在优先级为191~255(如果只有高4位是中断优先级设置位,优先级为11~15)的中断服务函数调用,不能在优先级为0~190(如果只有高4位是中断优先级设置位,优先级为0~10)的中断服务函数调用,因为FreeRTOS只能屏蔽优先级为191~255的中断服务函数。

 

 

configUSE_TIME_SLICING
默认情况下(宏configUSE_TIME_SLICING未定义或者宏configUSE_TIME_SLICING设置为1),FreeRTOS使用基于时间片的优先级抢占式调度器。这意味着RTOS调度器总是运行处于最高优先级的就绪任务,在每个RTOS 系统节拍中断时在相同优先级的多个任务间进行任务切换。如果宏configUSE_TIME_SLICING设置为0,RTOS调度器仍然总是运行处于最高优先级的就绪任务,但是当RTOS 系统节拍中断发生时,相同优先级的多个任务之间不再进行任务切换。

 

 

configTICK_RATE_HZ

1、毫秒级延时pdMS_TO_TICKS() 可以对tick周期计数从而实现延时具体时间,如果configTICK_RATE_HZ大于1000,pdMS_TO_TICKS()就不能使用

2、时间片的频率就是configTICK_RATE_HZ

3、configTICK_RATE_HZ建议设置为100

4、FreeRTOS自带的定时器的计数频率也是基于configTICK_RATE_HZ,这个频率越高则定时的精度越高,但是由此带来的开销也越大。

posted @ 2017-04-17 10:55  流水灯  阅读(31)  评论(0编辑  收藏  举报