嵌入式FreeRTOS学习笔记(2026.10.07)

发布时间:2026/10/8 13:30:51

嵌入式FreeRTOS学习笔记(2026.10.07) 一、vTaskDelayUntil函数 vTaskDelayUntil(xtStart, 20)效果在xtStart时刻起延时任务20个tick并更新xtStart时间为 xtStart 20 。即t₁时刻延时20tick令t₂为新值。二、空闲任务与空闲钩子1. 任务自杀、他杀、被杀不会主动释放内存空间释放内存空间由空闲任务完成。2. 空闲任务的优先级为0。3. RTOS优先级越大优先级越高前提高优先级任务持续就绪永不阻塞当任务优先级大于空闲任务时空闲任务得不到CPU便不会释放空间造成内存泄漏。4. 当任务优先级大于空闲任务若想释放空间可通过延时函数 vTaskDelay() 阻塞任务让出CPU才能执行空闲任务和空闲钩子。5. 空闲钩子想要在空闲任务执行自己的代码才会使用。空闲钩子是空闲任务的回调函数。6. 前提开启抢占模式(configUSE_PREEMPTION1)且开启时间片轮转空闲任务和任务优先级相同通过时间片轮转执行任务、释放空间和空闲钩子。任务有延时时间片执行稳定任务没有延时时间片执行不稳定7. 空闲任务不需要自己创建在启动调度器便会自动创建使用空闲钩子需要将宏 configUSE_IDLE_HOOK 置1并自行实现 vApplicationIdleHook 回调函数。三、调度配置项① configUSE_PREEMPTION 是否允许抢占② configUSE_TIME_SLICING 是否允许时间片轮转③ configUSE_MUTEXES 配套 configUSE_SHOULD_YIELD 互斥锁相关不是控制空闲任务让步此处互斥锁还没有学习简单理解为空闲任务让步四、抢占/禁止抢占规则1. 前提禁止抢占模式configUSE_PREEMPTION0新版FreeRTOS禁止抢占时调度挑选任务优先选就绪队列里高优先级任务任务运行中途不会被任何就绪任务打断。若当前运行任务被延时进入阻塞状态让出CPU调度重新挑选就绪队列中优先级高同等优先级时按顺序的任务执行。新版FreeRTOS禁止抢占模式下时间片轮转功能失效同优先级任务不会依靠Tick自动切换。五、任务执行场景1. Task3(3)、Task1(1)、Task2(1)注中的数字代表优先级前提允许抢占禁止/允许时间片轮转的情况下只要高优先级任务不被阻塞结果高优先级一直执行。2. 前提允许抢占开启时间片轮转高优先级在执行过程中被阻塞在被阻塞期间Task1、Task2同低优先级按时间片轮流执行高优先级阻塞到期就绪后会立刻抢占当前正在运行的低优先级任务。3. 时间片轮转前提抢占模式打开只发生在同优先级就绪任务之间。4. 如果存在两个同优先级的低优先级任务和一个高优先级任务无阻塞、无延时无论时间片轮转是否开启结果都是一直执行高优先级任务。5. 空闲钩子可以调用 taskYIELD() 让步但工程一般不推荐严禁调用任何会造成阻塞的FreeRTOS API。总结时间片轮转是抢占模式下多个同优先级就绪任务平分CPU时间的调度机制。禁止抢占模式Tick不会自动触发同优先级任务切换时间片轮转失效。
延伸阅读

更多相关文章

2026/10/8 13:25:51

MultiTool Office:一个轻量、现代的 Windows AI 办公工作台

🏢 MultiTool Office Next面向 Windows 的文件管理与办公工作台,集成本地检索、AI 助手、OCR、翻译和待办。把多层目录浏览、文件搜索和日常办公操作集中到一个窗口:查找资料、核对配套文件、识别合同字段、批量命名,或随时唤出常…

2026/10/8 15:46:41

Python列表与元组:可变性、性能与应用场景详解

前段时间在技术社区闲逛,看到一个提问:“Python里列表和元组到底有啥区别?我该用哪个?”下面回答区的留言五花八门,但也不少把两者混为一谈的。这个问题看似基础,但真要动手写代码时,不少人还是…

2026/10/8 15:46:41

三数之和双指针解法:去重细节与算法复杂度优化

刷题刷到 LeetCode 15 题“三数之和”,这个位置非常微妙。前十几题基本是数组、字符串、动态规划热身,而这一题一出来,很多人的思维会卡住。题目本身不复杂:给定一个整数数组,找出所有和为 0 且不重复的三元组。但“不…

2026/10/8 15:46:41

Java电商源码改造实战:从跑通到上线的表设计、支付与压测

简介:基于Java技术栈构建的完整电商网站源码项目,面向正在学习Spring Boot、MyBatis、Redis等后端框架,或希望掌握Vue.js/jQuery前端交互的开发者,也适合需要参考实际业务流程的初、中级程序员。项目覆盖用户注册登录、商品分类搜…

2026/10/8 15:46:41

软件测试核心知识全解析:流程、实战、工具与面试攻略

这些年我见过太多人把软件测试理解成“找个人点点按钮”,也见过太多项目因为测试缺位在上线后炸出惊天大雷。软件测试这门活,表面上是执行用例、提bug,内核却是质量建模、风险判断、流程管理,甚至项目管理的全面较量。 这篇文章我…

2026/10/8 15:41:39

隔离内网AI Agent工程实战:本地模型推理与RAG知识库构建

1. 项目背景与整体架构思路1.1 为什么要在内网环境里跑AI Agent接手"隔离内网下AI Agent工程实战"这个项目,是因为一个很现实的问题:很多企业和机构的生产环境物理隔离,终端、业务系统和核心数据都在一个与公网物理断开的独立网络里…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

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

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑