【FreeRTOS操作系统教程】第7章 FreeRTOSConfig配置文件详解

  • 格式:pdf
  • 大小:301.86 KB
  • 文档页数:10

定义任务名最大的字符数,末尾的结束符 '\0'也要计算在内。
7.2.10 configUSE_16_BIT_TICKS
系统时钟节拍计数使用 TickType_t 数据类型定义的。 如果用户使能了宏定义 configUSE_16_BIT_TICKS,那么 TickType_t 定义的就是 16 位无符号数,如 果没有使能,那么 TickType_t 定义的就是 32 位无符号数。对于 32 位架构的处理器,一定要禁止此宏定 义,即设置此宏定义数值为 0 即可。而 16 位无符号数类型主要用于 8 位和 16 位架构的处理器。
第7章 FreeRTOSConfig 配置文件详解
本章节为大家讲解 FreeRTOS 的配置文件 FreeRTOSConfig.h 中每个选项的作用。初学的话,一定要 有个了解,随着以后的学习一定要熟练操作每个配置选项。
本章节内容主要整理自官网:/a00110.html 7.1 配置选项说明 7.2 基本配置 7.3 钩子函数配置 7.4 任务运行信息获取配置 7.5 合作式任务配置 7.6 软件定时器配置 7.7 内核配置 7.8 断言配置 7.9 函数 Include 配置 7.10 总结
配置为 1
2016年06月30日
版本:1.0
第 3 页 共 10 页
武汉安富莱电子有限公司
安富莱 STM32-V6 开发板 FreeRTOS 教程
使能任务间直接的消息传递,包含信号量,事件标志组和消息邮箱。
配置为 0
禁能此特性。
7.2.13 configUSE_MUTEXES
7.5.2 configMAX_CO_ROUTINE_PRIORITIES
此参数用于定义可供用户使用的最大的合作式任务优先级数,如果这个定义的是 5,那么用户可以使 用的优先级号是 0,1,2,3,4,不包含 5,对于这一点,初学者要特别的注意。
7.6 软件定时器配置
7.6.1 configUSE_TIMERS
此参数用于定义 CPU 的主频,单位 Hz。
7.2.5 configTICK_RATE_HZ
此参数用于定义系统时钟节拍数,单位 Hz,一般取 1000Hz 即可。本教程配套的例子也全部采用这 个时钟节拍数。过高的的系统时钟节拍将使得 FreeRTOS 内核运行占用过多的时间,增加系统负荷。
2016年06月30日
7.2.16 configUSE_ALTERNATIVE_API
此配置将在以后的版本中被删除,建议用户不要再使用。
7.2.17 configQUEUE_REGISTRY_SIZE
通过此定义来设置可以注册的信号量和消息队列个数。 队列注册有两个目的,这两个目的都与内核调试有关: 注册队列的时候,可以给队列起一个名字,当使用调试组件的时候,通过名字可以很容易的区分不同 队列。
配置为 0 禁止此特性。
2016年06月30日
版本:1.0
第 5 页 共 10 页
武汉安富莱电子有限公司
安富莱 STM32-V6 开发板 FreeRTOS 教程
7.2.22 configNUM_THREAD_LOCAL_STORAGE_POINTERS
此配置用于定义线程局部指针变量的个数。
配置为 1 使能软件定时器。
配置为 0 禁能软件定时器。
7.6.2 configTIMER_TASK_PRIORITY
配置软件定时器任务的优先级。
7.6.3 configTIMER_QUEUE_LENGTH
配置软件定时器命令队列的长度。
7.6.4 configTIMER_TASK_STACK_DEPTH
7.2.20 configUSE_NEWLIB_REENTRANT
配置为 1 每个任务创建的时候将分配 Newlib 的重入结构体。
配置为 0 禁止此特性。
7.2.21 configENABLE_BACKWARD_COMPATIBILITY
配置为 1 使能新版本对老版本的兼容特性,即向后兼容或者说向下兼容。
FreeRTOS 中的断言函数 configASSERT()和标准 C 中的断言函数 assert()是一样的,如果断言函数的 参数为 0 时将触发断言函数的执行。
FreeRTOS 的断言功能在调试阶段是非常有用的,可以有效地检查参数错误和运行中的错误,但在正 式发布软件时,请将此功能关闭,因为断言功能会增加工程代码大小并降低工程执行效率。关闭断言也比 较简单,如果 FreeRTOSConfig.h 文件中有断言的宏定义,将其注释掉即可,如果没有宏定义,默认在 FreeRTOSTM32-V6 开发板 FreeRTOS 教程
7.4.1 configGENERATE_RUN_TIME_STATS
配置为 1 使能任务运行状态参数统计。
配置为 0 禁止此特性。
7.4.2 configUSE_TRACE_FACILITY
配置为 1 使能此配置将添加额外的结构体成员和函数,以此来协助可视化和跟踪,在使用 IAR 中的 FreeRTOS 插件时要使能这个配置,否则无法显示任务栈的使用情况。
FreeRTOS 的栈溢出检测支持两种方法,为了方便描述,我们这里将其称之为方法一和方法二。 配置为 2
栈溢出检测使用方法二。
2016年06月30日
版本:1.0
第 6 页 共 10 页
武汉安富莱电子有限公司
配置为 1 栈溢出检测使用方法一。
配置为 0 禁止栈溢出检测。
7.2.1 configUSE_PREEMPTION
配置为 1 使能抢占式调度器。
配置为 0 使能合作式调度器。
武汉安富莱电子有限公司
安富莱 STM32-V6 开发板 FreeRTOS 教程
7.2.2 configUSE_PORT_OPTIMISED_TASK_SELECTION
7.2.7 configMINIMAL_STACK_SIZE
此参数用于定义空闲任务的栈空间大小,单位字,即 4 字节。
7.2.8 configTOTAL_HEAP_SIZE
定义堆大小,FreeRTOS 内核,用户动态内存申请,任务栈,任务创建,信号量创建,消息队列创建 等都需要用这个空间。
7.2.9 configMAX_TASK_NAME_LEN
7.5 合作式任务配置
7.5.1 configUSE_CO_ROUTINES
配置为 1 使能合作式调度相关函数。
2016年06月30日
版本:1.0
第 7 页 共 10 页
武汉安富莱电子有限公司
配置为 0 禁能合作式调度相关函数。
安富莱 STM32-V6 开发板 FreeRTOS 教程
7.2.18 configUSE_QUEUE_SETS
配置为 1 使能消息队列。
配置为 0 禁能消息队列。
7.2.19 configUSE_TIME_SLICING
配置为 1 使能时间片调度。
配置为 0 禁能时间片调度。
用户没有配置此选项 如果用户没有配置此选项,默认在 FreeRTOS.h 文件中已经配置为 1,即使能时间片调度。
7.2.11 configIDLE_SHOULD_YIELD
此参数用于使能与空闲任务同优先级的任务,只有满足以下两个条件时,此参数才有效果: 1. 使能抢占式调度器。 2. 有创建与空闲任务同优先级的任务。
配置为 1,就可以使能此特性了,实际应用中不建议用户使用此功能,将其配置为 0 即可。
7.2.12 configUSE_TASK_NOTIFICATIONS
版本:1.0
第 2 页 共 10 页
武汉安富莱电子有限公司
7.2.6 configMAX_PRIORITIES
安富莱 STM32-V6 开发板 FreeRTOS 教程
此参数用于定义可供用户使用的最大优先级数,如果这个定义的是 5,那么用户可以使用的优先级号 是 0,1,2,3,4,不包含 5,对于这一点,初学者要特别的注意。
使能动态内存申请失败时的钩子函数 配置为 0
禁能动态内存申请失败时的钩子函数
7.3.3 configUSE_TICK_HOOK
配置为 1 使能滴答定时器中断里面执行的钩子函数
配置为 0 禁能滴答定时器中断里面执行的钩子函数
7.3.4 configCHECK_FOR_STACK_OVERFLOW
加快算法执行速度。 比通用方式高效。 有最大优先级数限制,通常限制为 32 个。
7.2.3 configUSE_TICKLESS_IDLE
此配置用于使能 tickless 低功耗模式 配置为 1
使能 tickless 低功耗模式 配置为 0
禁能 tickless 低功耗模式
7.2.4 configCPU_CLOCK_HZ
配置为 1 使能互斥信号量
配置为 0 禁能互斥信号量
7.2.14 configUSE_RECURSIVE_MUTEXES
配置为 1 使能递归互斥信号量
配置为 0 禁能递归互斥信号量
7.2.15 configUSE_COUNTING_SEMAPHORES
配置为 1 使能计数信号量
配置为 0 禁能计数信号量
2016年06月30日
版本:1.0
第 4 页 共 10 页
武汉安富莱电子有限公司
安富莱 STM32-V6 开发板 FreeRTOS 教程
通过队列的相关信息,调试器可以很容易定位队列和信号量,能够定位信号量是因为 FreeRTOS 信号
量也是基于队列实现的。
当然,如果用户没有使用内核方面的调试器,这个宏定义是没有意义的。
配置软件定时器任务的栈空间大小。
7.7 内核配置
内核配置相关的几个宏定义参看第 12 章的 12.3 小节,这几个配置稍复杂些,专门放在了 12.3 小节 进行详细说明。