主要记录config.h文件里面的内容
#include开始的宏以及config
点开FreeRTOS.h 发现它的宏定义都是以config开头
“config” 开始的宏和”include”开始的宏一样,都是用来完成Freertos的配置和裁剪的,如:
configCPU_CLOCK_HZ
表示,配置CPU的频率
使能的意思
-
configUSE_PREEMPTION
调度模式配置
配置为0:合作式调度,即时间片轮流执行
配置为1:抢占式调度,即优先级高的任务抢先执行
由于我们要求实时响应,就配置为1,使用抢占式调度方式。否则就发挥不出实时操作系统的作用
-
configCPU_CLOCK_HZ
CPU时钟,就是我们常说的主频。单位是Hz
如:STM32F407主频为168M:
#define configCPU_CLOCK_HZ (168000000) -
configTICK_RATE_HZ
系统滴答,即系统每秒钟滴答的次数,可以说是系统的心跳,但需要和主频区分开。系统滴答的值要根据CPU主频来看,一般主频越高,取值相对越大,一般在100~1000之间
简单举例:系统滴答决定vTaskDelay
比如:
#define configTICK_RAYE_HZ (1000)
则:
vTaskDelay(1000),表示延时1S
-
configMAX_PRIORITIES
系统最大优先级值
我们创建任务是,配置的优先级值不能超过这个最大值
xTaskCreate(vApp Task1,“Task1”,TASK1_STACK_SIZE,NULL,
TASK1_PRIORITY
,NULL);
提示:
a. 系统优先级和中断优先级原理类似,高优先级的会抢在低优先级的前面,但需要区分系统和中断优先级的应用场景
b. FreeRTOS中优先级
数值越大
,
优先级越高
。而UCOS则相反
-
configMINIMAL_STACK_SIZE
最小堆栈值
在系统中,一般用于空闲、定时等一些系统任务中,当然,我们有些地方也可以使用这个定义的堆栈值。
注意数值的单位,一般在ARM中为4个字节 -
configTOTAL_HEAP_SIZE
系统总共堆(栈)大小
我们需要根据需要使用的情况定义这个值。不能定义太小,太小内存容易溢出;也不能定义太大,有些芯片RAM本身就不(有些只有几K),如果太大我们就没法定义太多全局变量,或分配其他堆栈空间 -
configMAX_TASK_NAME_LEN
任务名称最大长度
也就是创建任务定义任务名称的字符串长度
xTaskCreate(vApp Task1,“
Task1
”,TASK1_STACK_SIZE,NULL,TASK1_PRIORITY,NULL); -
configUSE_16_BIT_TICKS
是否使用16位滴答计数值
配置为0:则使用32位的滴答计数值,一般在32位处理器中都是配置为0;
配置为1:则使用16位的滴答计数值,一般8位或者16位处理器中配置为1. -
configIDLE_SHOULD_YIELD
是否让空闲任务”放弃”抢占
也就是说在执行与空闲任务相同优先级的任务过程中,空闲任务是否具有抢占的机会。
配置为0:不放弃抢占;
配置为1:放弃抢占; -
configUSE_MUTEXES(*)
是否使用互斥锁
配置为0:不使用
配置为1:使用
**
提示
:**互斥锁也叫互斥信号量,也就是说对资源加锁。它的作用是实现多任务间共享资源的独占式处理。简答来说,就是某个资源在同一时刻只允许一个任务处理。 -
configUSE_RECURSIVE_MUTEXES 是否使用递归锁
-
configUSE_COUNTING_SEMAPHORES 是否使用信号量计数功能
-
configQUEUE_REGISTRY_SIZE (*)可添加队列名的数量
-
configUSE_QUEUE_SETS(*)
是否使用消息队列 “SET” 功能 -
configUSE_TIME_SLICING (*)
是否使用时间片进行调度
更多见链接 https://blog.csdn.net/ybhuangfugui/article/details/77609473?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163196979016780269830870%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163196979016780269830870&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2
blog
first_rank_v2~rank_v29-5-77609473.pc_v2_rank_blog_default&utm_term=FreeRTOS_004_FreeRTOSConfig.h%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4450
https://blog.csdn.net/ybhuangfugui/article/details/77745156?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163196979016780269830870%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163196979016780269830870&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2
blog
first_rank_v2~rank_v29-4-77745156.pc_v2_rank_blog_default&utm_term=FreeRTOS_004_FreeRTOSConfig.h%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4450