FreeRTOS配置文件
【FreeRTOS】05 任务的调度:抢占式、协作式、时间片轮转_freertos抢占式_xiaobaibai_2021的博客-CSDN博客
#define configUSE_PREEMPTION 1 /*配置FreeRTOS的任务调度方法*/
#define configUSE_IDLE_HOOK 0 /*忽略空闲钩子,空闲的时候不会调用空闲任务钩子*/
#define configUSE_TICK_HOOK 0 /*忽略时间片钩子,时间片中断不调用空闲钩子任务*/
#define configCHECK_FOR_STACK_OVERFLOW 0 /*大于0时启用堆栈溢出检测功能,如果使用此功能,用户必须提供一个栈溢出钩子函数,如果使用的话,此值可以为1或者2,因为有2种溢出检测方法*/
#define configCPU_CLOCK_HZ ((unsigned long)48000000) /*MCU的时钟频率*/
#define configTICK_RATE_HZ ((TickType_t)1000) /*RTOS系统节拍中断的频率。即一秒中断的次数,每次中断RTOS都会进行任务调度*/
#define configMAX_PRIORITIES 5 /*可使用的最大优先级*/
#define configMINIMAL_STACK_SIZE ((unsigned short)128) /*空闲任务使用的堆栈大小*/
#define configTOTAL_HEAP_SIZE ((size_t) (28*1024)) /*系统所有总的堆大小*/
#define configMAX_TASK_NAME_LEN 16 /*最大任务名长度*/
#define configUSE_16_BIT_TICKS 0 /*系统节拍计数器变量数据类型,1表示16位无符号整型,0表示32位无符号整型*/
#define configIDLE_SHOULD_YIELD 0 /*空闲任务不放弃CPU使用权给其他同优先级的用户任务*/
#define configUSE_MUTEXES 1/*使用互斥信号量*/
#define configGENERATE_RUN_TIME_STATS 1 /*启用运行时间统计功能*/
#define configUSE_TRACE_FACILITY 1 /*启用可视化跟踪调试*/
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATUS() (ulHighFrequencyTimerTicks = 0ul)
#define portGET_RUN_TIME_COUNTER_VALUE() ulHighFrequencyTimerTicks
1、FreeRTOS的任务调度方法有抢占式、时间片轮转、协作式。
2、抢占式,每次高优先级的任务恢复就绪态就会立即抢占低优先级的任务
时间片,相同优先级的任务每次都轮流执行一个时间片。注意高优先级的任务恢复就绪态的时候并不会立即抢占低优先级的任务。而是等待低优先级的任务执行完一个时间片。
协作式,任务运行完一段时间后通过taskYIELD()函数放弃CPU的运行权。处于就绪态的最高优先级的任务运行。如果其他任务都不在就绪态,那么仍然回到taskYIELD()后面继续运行原来的任务。