[FreeRTOS]CubeMX中的配置
首先打开Middleware标签选中其中的FREERTOS选项进入FREERTOS的配置页面。在Mode页面下选择Interface 的版本这里选择CMSIS_V2。CMSIS是由Keil 提供的 一套特殊的函数接口他对freeRTOS的功能函数进行了封装使其变得更加易用在使用 freeRTOS 时不需要再去直接调用freeRTOS的函数只需要调用CMSIS为我们提供的 函数即可目前CMSIS有V1和V2两个版本。FreeRTOS中CMSIS V1与V2的主要区别CMSISV1主要面向早期的Cortex-M3和Cortex-M4内核芯片提供基本的寄存器定义、系统初始化函数如SystemInit()和中断控制接口。CMSISV2随着Cortex-M55、M85等新型内核的推出CMSIS V2引入了更丰富的设备抽象层如core_sc300.h、core_sc55.h等增强了对新一代处理器的支持。项目CMSIS-RTOS V1CMSIS_V1CMSIS-RTOS V2CMSIS_V2头文件#include cmsis_os.h#include cmsis_os2.h标准老旧一代标准ARM 逐步停止维护新一代标准CMSIS-RTOS2持续更新对象句柄类型osThreadId、osSemaphoreId指针类型osThreadId_t、osSemaphoreId_t独立不透明类型类型安全更强内核启动流程自动初始化内核main 可直接创建任务隐式启动调度器强制显式两步osKernelInitialize() → osKernelStart()创建任务风格宏定义静态声明 osThreadDef()支持动态创建 静态创建使用属性结构体 osThreadAttr_t后面见到的所有os开头的函数都是CMSISOS提供的配置一、Kernel settings 内核基础设置最重要参数当前配置含义使用建议USE_PREEMPTIONEnabled抢占式调度Enabled高优先级任务就绪立刻抢占低优先级Disabled协作式任务主动让出 CPU工程几乎全部保持 Enabled只有极简低功耗项目才关CPU_CLOCK_HZSystemCoreClock内核时钟自动绑定系统时钟永远默认不要手动修改TICK_RATE_HZ1000系统滴答时钟频率1000 1ms 一个 tick系统时间片、延时基准最常用 1000 (1ms)低频低功耗可改为 10010msMAX_PRIORITIES56任务最大优先级数量优先级范围0 ~ MAX_PRIORITIES-1注意CMSIS-RTOS 优先级映射有转换常规项目 8/16 足够你现在 56 富余不要设置过大浪费 RAMUSE_MINI_LIST_ITEM1使用精简链表结构减少内存占用默认不动MINIMAL_STACK_SIZE128 Words空闲任务栈大小字1word4 字节空闲任务是系统必备任务一般保持 128空闲任务里做复杂逻辑需要加大MAX_TASK_NAME_LEN16任务名称最大字符长度默认 16 够用极少修改USE_16_BIT_TICKSDisabledtick 计数使用 16 位 / 32 位Disable32 位延时上限更长默认关闭不要开启16 位 tick 最大延时很短IDLE_SHOULD_YIELDEnabled同等优先级任务空闲任务主动让出 CPU默认即可一般不改USE_MUTEXESEnabled启用互斥锁用到互斥锁就打开现代工程基本常开USE_RECURSIVE_MUTEXESEnabled递归互斥锁同一任务可多次加锁需要嵌套上锁开启不用可以关掉节省少量资源USE_COUNTING_SEMAPHORESEnabled计数信号量生产者消费者场景常用大部分工程开启QUEUE_REGISTRY_SIZE8队列 / 信号量注册表调试器查看内核对象用调试用正式工程可减小默认 8 够用USE_TASK_NOTIFICATIONSEnabled任务通知重点轻量化信号量代替很多队列、信号量效率更高强烈保持开启日常大量使用ENABLE_BACKWARD_COMPATIBILITYEnabled兼容老版本 FreeRTOSAPI默认开启避免旧代码报错二、Memory management settings 内存管理参数当前配置含义使用建议TOTAL_HEAP_SIZE15360 BytesFreeRTOS 堆总大小任务、队列、信号量动态内存全部从这里分配重点配置根据任务数量调整太小会创建任务失败Memory Management schemeheap_4内存分配算法heap_1/2/3/4/5 区别heap4支持合并空闲块推荐日常使用CubeMX 默认 heap4绝大多数工程不用更换heap4 特点动态分配、碎片整理heap5 需要你划分多个内存区域。三、Hook function 钩子函数回调调试 / 拓展功能全部当前 DisabledUSE_IDLE_HOOK空闲任务钩子空闲循环执行USE_TICK_HOOK每个 SysTick 中断回调USE_MALLOC_FAILED_HOOK内存分配失败钩子调试神器USE_DAEMON_TASK_STARTUP_HOOK定时器服务任务启动钩子CHECK_FOR_STACK_OVERFLOW栈溢出检测使用建议 正式产品默认关闭节省开销调试阶段打开栈溢出检测、malloc 失败钩子排查崩溃上线关闭。四、Run time and task stats 运行统计GENERATE_RUN_TIME_STATS任务 CPU 占用率统计使用CLion调试时开启USE_TRACE_FACILITY开启 Trace 调试RTT、SystemView默认关闭性能调试的时候临时开启发布关闭采集统计占用 CPU五、Co-routines 协程USE_CO_ROUTINES Disabled协程是老旧轻量级方案现在基本淘汰不要使用保持关闭六、Software timer definitions 软件定时器高频使用模块参数配置含义建议USE_TIMERSEnabled开启 FreeRTOS 软件定时器项目用到定时器必须开不用则关闭释放资源TIMER_TASK_PRIORITY2定时器服务任务优先级 重要定时器回调执行快慢取决于这个优先级一般设置高于普通业务任务注意不要低于需要定时响应的任务TIMER_QUEUE_LENGTH10定时器命令队列深度默认 10大量启停定时器可加大TIMER_TASK_STACK_DEPTH256 Words定时器任务栈大小如果定时器回调函数复杂必须加大栈溢出常见坑七、Interruptnesting behaviour 中断优先级最容易踩坑参数配置含义建议LIBRARY_LOWEST_INTERRUPT_PRIORITY15FreeRTOS 可以管理的最低中断优先级数字越大优先级越低Cortex-M 分组前提下默认不动LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY5阈值重中之重优先级高于 5数字更小 的中断禁止调用 FreeRTOS API优先级≤5可以调用 xxx_FromISR 中断版函数日常保持默认 5不要随意修改所有外部中断、串口中断优先级配置不要高于这个数值否则会引发 HardFault 死机八、CMSIS-RTOS V2 flags全部 Enabled选择接口为 CMSIS_V2osThreadNew、osMessageQueueNew这类 API这些宏开启对应 CMSIS 接口支持。 只要使用 CubeMX 生成的 CMSIS API保持全部开启不用改动。经常需要修改的核心配置USE_PREEMPTION 抢占调度TICK_RATE_HZ 系统节拍MAX_PRIORITIES 任务最大优先级MINIMAL_STACK_SIZE 空闲任务栈TOTAL_HEAP_SIZE 系统堆大小Memory Management scheme 堆模型 heap4USE_TIMERS 软件定时器开关 TIMER_TASK_PRIORITY、TIMER_TASK_STACK_DEPTHLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 中断访问 FreeRTOS 阈值USE_MUTEXES / USE_COUNTING_SEMAPHORES / USE_TASK_NOTIFICATIONS 内核组件开关本章结束keysking相关文章https://docs.keysking.com/docs/stm32/freertos/cubeConfig

相关新闻

[CEOI 1997] 多米诺骨牌 题解

[CEOI 1997] 多米诺骨牌 题解

[CEOI 1997] 多米诺骨牌 题解 题目传送门——请务必读好题目 这题让求点数和之差最小的旋转次数,因为这个差需要取绝对值,所以转移很难。 带绝对值转移难,那干脆把绝对值扔了! dpi,jdp_{i,j}dpi,j​ 表示前 iii 个骨牌&#xf…

2026/10/13 18:40:43 阅读更多 →
【VSCode】基于win10系统老版本和VSCode最新版本下出现的VSCode内置的终端窗口不能运行的问题的解决方案

【VSCode】基于win10系统老版本和VSCode最新版本下出现的VSCode内置的终端窗口不能运行的问题的解决方案

vscode不能启动终端,从而不能进行eide插件和keil assistant插件的编译功能 VS Code 在 Windows 上彻底抛弃了旧的终端后端(Winpty),强制换成了新的 ConPTY,但你的系统环境没能成功启动这个新后端。 一、解决方案一 升…

2026/10/13 18:40:32 阅读更多 →
终极指南:3分钟掌握浏览器EPUB编辑器,零代码创作专业电子书

终极指南:3分钟掌握浏览器EPUB编辑器,零代码创作专业电子书

终极指南:3分钟掌握浏览器EPUB编辑器,零代码创作专业电子书 【免费下载链接】EPubBuilder 一款在线的epub格式书籍编辑器 项目地址: https://gitcode.com/gh_mirrors/ep/EPubBuilder 还在为复杂的电子书制作软件而烦恼吗?EPubBuilder为…

2026/10/13 19:18:18 阅读更多 →

最新新闻

高职财税大数据应用专业:数据分析能力培养路径与实战场景

高职财税大数据应用专业:数据分析能力培养路径与实战场景

这两年,我和不少带“高职财税大数据应用”专业的老师交流,大家最常聊的话题不是买什么新实训平台,也不是考证通过率,而是同一句话:“数据分析到底怎么真正融进财税课?”前几年,这个问题还能靠一…

2026/10/14 19:58:07 阅读更多 →
Android四大组件与AMS/WMS协作机制:系统服务核心原理与避坑实践

Android四大组件与AMS/WMS协作机制:系统服务核心原理与避坑实践

做Android开发这几年,我最大的感受就是:很多疑难杂症之所以难查,不是代码写得多烂,而是你对“四大组件”和系统服务之间那套协作机制没吃透。四大组件就像一个个打工仔,干活的逻辑全写在应用进程里,可它们能…

2026/10/14 19:58:07 阅读更多 →
React待办清单实战:从跑通到拆解状态管理与本地持久化

React待办清单实战:从跑通到拆解状态管理与本地持久化

简介:这是一份面向 React 初学者与前端进阶者的待办事项清单实战项目源码,基于 React.js 构建,配合 Node.js、Webpack 与 SCSS 完成工程化与样式组织,适合用来练习组件拆分、状态管理与列表增删交互。压缩包共 15 个文件&#xff…

2026/10/14 19:58:07 阅读更多 →
MyBatis逆向工程:从数据库Schema到可维护Mapper的工程化实践

MyBatis逆向工程:从数据库Schema到可维护Mapper的工程化实践

1. 项目概述:为什么“MyBatis逆向工程”不是偷懒捷径,而是团队提效的底层基建你有没有经历过这样的场景:一个新数据库表上线,字段12个,关联3张字典表,业务接口要查、要改、要分页、要导出——光是手写Mappe…

2026/10/14 19:58:07 阅读更多 →
真题资源高效利用:从分类索引到三轮刷题法的完整训练指南

真题资源高效利用:从分类索引到三轮刷题法的完整训练指南

简介:这是一份面向蓝桥杯参赛者的历年真题合集,涵盖省赛与国赛两个层级的代表性赛题,适用于正在备赛的本科、高职院校学生及指导老师。资源以rar压缩包形式整体打包,大小约62.1MB,便于一次性获取多届试题并离线使用&am…

2026/10/14 19:58:07 阅读更多 →
TypeScript协议适配:将Claude Code前端无缝对接Deepseek模型

TypeScript协议适配:将Claude Code前端无缝对接Deepseek模型

1. 这不是“换壳”,而是一次精准的协议层手术“80行 TypeScript Mods,把 Claude Code 改造成 Deepseek Harness”——这个标题乍看像极了某些技术圈里常见的“魔改教程”,但实际操作中,我很快意识到:它根本不是在 UI 上…

2026/10/14 19:57:05 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →