STM32CubeIDE的FreeRTOS参数配置说明

目录

一、简介

1.1、开发环境

1.2、FreeRTOS interface

二、Config Parameters

2.1、Kernel settings

2.1.1、USE_PREEMPTION

2.1.2、CPU_CLOCK_HZ

2.1.3、TICK_RATE_HZ

2.1.4、MAX_PRIORITIES

2.1.5、MINIMAL_STACK_SIZE

2.1.6、MAX_TASK_NAME_LEN

2.1.7、USE_16_BIT_TICKS

2.1.8、IDLE_SHOULD_YIELD

2.1.9、USE_MUTEXES

2.1.10、USE_RECURSIVE_MUTEXES

2.1.11、USE_COUNTING_SEMAPHORES

2.1.12、QUEUE_REGISTRY_SIZE

2.1.13、USE_APPLICATION_TASK_TAG

2.1.14、ENABLE_BACKWARD_COMPATIBILITY

2.1.15、USE_PORT_OPTIMISED_TASK_SELECTION

2.1.16、USE_TICKLESS_IDLE

2.1.17、USE_TASK_NOTIFICATIONS

2.1.18、RECORD_STACK_HIGH_ADDRESS

2.2、Memory management settings

2.2.1、Memory Allocation

2.2.2、OTAL_HEAP_SIZE

2.2.3、Memory Management scheme

2.3、Hook function related definitions

2.3.1、USE_IDLE_HOOK

2.3.2、USE_TICK_HOOK

2.3.3、USE_MALLOC_FAILED_HOOK

2.3.4、USE_DAEMON_TASK_STARTUP_HOOK

2.3.5、CHECK_FOR_STACK_OVERFLOW

2.4、Run time and task stats gathering related definitions

2.4.1、GENERATE_RUN_TIME_STATS

2.4.2、USE_TRACE_FACILITY

2.4.3、USE_STATS_FORMATTING_FUNCTIONS

2.5、Co-routine related definitions

2.6、Software timer definitions

2.7、Interrupt nesting behaviour configuration

2.7.1、LIBRARY_LOWEST_INTERRUPT_PRIORITY

2.7.2、LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY


一、简介

1.1、开发环境

STM32CubeIDE V1.9。

1.2、FreeRTOS interface

CMSIS_V1。

二、Config Parameters

2.1、Kernel settings

2.1.1、USE_PREEMPTION

Enable:使用抢占式调度器,内核在每个时钟节拍中断中进行任务切换;

Disable:使用协程,内核在特定的API函数或进入阻塞态等情况下进行任务切换。

2.1.2、CPU_CLOCK_HZ

CPU 系统时钟频率源,不可更改。

2.1.3、TICK_RATE_HZ

RTOS的心跳时钟频率,设置值为每秒钟跳动次数。

2.1.4、MAX_PRIORITIES

RTOS 任务的最高优先级设置,设置值域4~32。

2.1.5、MINIMAL_STACK_SIZE

空闲任务的堆栈大小。

2.1.6、MAX_TASK_NAME_LEN

任务名称的最大字符数。

2.1.7、USE_16_BIT_TICKS

存放 Tick 周期的计数器的数字位宽,默认Disable,即 16 位。

2.1.8、IDLE_SHOULD_YIELD

Enable:当有另一个空闲优先级任务处于Ready状态时,空闲任务将不会执行它定义的功能的不止一次迭代,而不会让位于另一个任务,这确保当应用程序任务处于空闲状态时,在空闲任务中花费的时间最少, 即同 在空闲优先级下,空闲任务优先级更高,不会被抢占,不会以时间片运行;

Disable:空闲任务永远不会让位于另一个任务,只在被抢占时才会离开运行状态。

2.1.9、USE_MUTEXES

Enable:开启系统构建过程中的互斥量;

Disable:关闭系统构建过程中的互斥量。

2.1.10、USE_RECURSIVE_MUTEXES

Enable:开启系统构建过程中的递归互斥量;

Disable:关闭系统构建过程中的递归互斥量。

2.1.11、USE_COUNTING_SEMAPHORES

Enable:开启系统构建过程中的信号量;

Disable:关闭系统构建过程中的信号量。

2.1.12、QUEUE_REGISTRY_SIZE

队列注册表的大小,默认为8,用于管理队列名称和队列实体,便于运行中进行查看与管理。

2.1.13、USE_APPLICATION_TASK_TAG

Enable:给任务一个 TAG 标签;

Disable:无。

2.1.14、ENABLE_BACKWARD_COMPATIBILITY

Enable:FreeRTOS 8.0.0 之后的版本可以通过宏定义使用 8.0.0 版本之前的函数接口。

2.1.15、USE_PORT_OPTIMISED_TASK_SELECTION

查找下一个任务方式的选择,查找下一个就绪任务就是查找优先级表,对优先级表进行导0算法,分为通用切换或者针对性切换。

Enable:针对性切换,使用处理器自带的导0指令,使用汇编编写,切换效率高,但兼容性差;

Disable:通用切换,使用C编写,执行效率低,兼容性高。

2.1.16、USE_TICKLESS_IDLE

Enable:生成两个空函数PreSleepProcessing和PostSleepProcessing,用户可以编写代码进入低功耗模式。

2.1.17、USE_TASK_NOTIFICATIONS

任务通知使能,每个RTOS任务都有一个32位的通知值,直接发送给任务事件,可以解除接收任务的阻塞,并可选地更新接收任务的通知值。

Enable:开启;

Disable:关闭。

2.1.18、RECORD_STACK_HIGH_ADDRESS

Enable:记录任务的堆栈入口地址到TCB。

2.2、Memory management settings

2.2.1、Memory Allocation

内存分配方式:动态和静态。

Dynamic:动态;

Static:静态。

2.2.2、OTAL_HEAP_SIZE

内存堆的分配大小。设置时,要满足所有任务的最小使用要求,但不要超过系统分配上限。

2.2.3、Memory Management scheme

内存分配方式,分为:heap_1.c、heap_2.c、heap_3.c、heap_4.c、heap_5.c。

方式优点      缺点
heap_1.c分配简单,时间确定只分配、不回收
heap_2.c动态分配、最佳匹配碎片、时间不定
heap_3.c调用标准库函数速度慢、时间不定
heap_4.c相邻空闲内存可合并,解决碎片问题时间不定
heap_5.c在heap_4基础上支持分隔的内存块,可解决碎片问题时间不定

2.3、Hook function related definitions

2.3.1、USE_IDLE_HOOK

Enable:系统生成一个空回调函数"void vApplicationIdleHook()",由用户编写函数主体。每执行1次空闲任务,执行一次该钩子函数。

2.3.2、USE_TICK_HOOK

Enable:系统生成一个空回调函数"void vApplicationTickHook()",由用户编写函数主体。每个TICK周期,执行一次该钩子函数。

该钩子函数从Tick中断执行,因此执行时间要短,并且不调用非中断使用的API函数(FROM_ISR结尾)。

2.3.3、USE_MALLOC_FAILED_HOOK

Enable:系统生成一个空回调函数"void vApplicationMallocFailedHook()",由用户编写函数主体。每当申请动态内存失败时,执行一次该钩子函数。

2.3.4、USE_DAEMON_TASK_STARTUP_HOOK

Enable:系统生成一个空回调函数"void vApplicationDaemonTaskStartupHook()",由用户编写函数主体。任务刚启动时,执行一次该钩子函数。

2.3.5、CHECK_FOR_STACK_OVERFLOW

Enable:系统生成一个空回调函数"void vApplicationStackOverflowHook( xTaskHandle xTask, signed char *pcTaskName )",由用户编写函数主体。任务栈溢出时,执行一次该钩子函数,传入任务 TCB 和任务名称。

2.4、Run time and task stats gathering related definitions

2.4.1、GENERATE_RUN_TIME_STATS

Enable:开启时间统计功能。在调用"vTaskGetRunTimeStats() "函数时,将任务运行时间信息保存到可读列表中。

2.4.2、USE_TRACE_FACILITY

Enable:包含额外的结构成员和函数以帮助执行可视化和跟踪,方便 MDK 软件工具调试使用。

2.4.3、USE_STATS_FORMATTING_FUNCTIONS

Enable:生成 "vTaskList() "和 "vTaskGetRunTimeStats() "函数用于获取任务运行状态。

2.5、Co-routine related definitions

协程的配置项。两个选项用来配置协程是否开启,以及协程的优先级。

开启后,需要用户手动创建协程。

2.6、Software timer definitions

USE_TIMERS:Enable:开启软件定时器任务。Enable后,会出现以下3个新的选项:

TIMER_TASK_PRIORITY:设置软件计时器服务/守护进程任务的优先级,值域0~4;

TIMER_QUEUE_LENGTH:设置软件计时器命令队列的长度,值域1~255;

TIMER_TASK_STACK_DEPTH:设置分配给计时器服务任务的堆栈的大小(单位是字,不是字节),值域128~16.384K。

2.7、Interrupt nesting behaviour configuration

2.7.1、LIBRARY_LOWEST_INTERRUPT_PRIORITY

用来设置最低优先级。

FreeRTOS 使用4位优先级,对应16个优先级数,最低优先级为15。

2.7.2、LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY

设置FreeRTOS 可管理的最大优先级,也就是设置阈值优先级。

默认设置5,也就是高于5 的优先级(优先级数小于5)不归 FreeRTOS 管理。

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪恒远

感君意气无所惜,一为歌行歌主客

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值