5分钟学习笔记(FreeRTOS)(一)

发布时间:2026/10/23 16:10:28

5分钟学习笔记(FreeRTOS)(一) 学习1.任务状态Running / Ready / Blocked / SuspendedRunning运行态表示当前任务正在占用 CPU 执行。Ready就绪态表示任务已经具备运行条件但是还未被调度器选中执行。由于有更高优先级任务正在运行或者同优先级任务还没轮到它所以暂时没有执行Blocked阻塞态表示任务正在等待某个时间到达或者等待某个事件发生。在阻塞期间任务不占用 CPU也不会被调度器选中运行。等时间到了或者事件发生了任务会重新进入 Ready 状态。等待延时结束等待队列数据等待信号量等待事件组等待任务通知等待互斥量例如例如vTaskDelay(100);任务会阻塞 100 个 tick。注意100 tick 不一定等于 100ms具体取决于系统 tick 周期再比如xQueueReceive(queue, data, 100);如果队列没数据任务会阻塞等待如果 100 个 tick 内还没等到数据就超时退出阻塞。Suspended挂起态表示任务被手动挂起后不会参与调度也不会因为超时自动恢复。只有调用 vTaskResume() 或 xTaskResumeFromISR() 才能恢复到 Ready 状态。2.任务为什么会阻塞因为任务调用了会等待的 FreeRTOS API主动让出 CPU去等待时间、资源或者事件。vTaskDelay();xQueueReceive();xSemaphoreTake();xEventGroupWaitBits();ulTaskNotifyTake();这些函数都可能进入阻塞态总结FreeRTOS任务不是一直占用CPU运行的。当任务需要等待延时、队列、信号量、事件组或任务通知时就会进入阻塞态。阻塞态任务不会消耗CPU调度器会去运行其他Ready任务。等事件发生或者等待超时后该任务再回到Ready态等待调度器重新调度。3. BaseType_t xTaskCreate( TaskFunction_t pvTaskCode,const char * const pcName,const configSTACK_DEPTH_TYPE uxStackDepth,void *pvParameters,UBaseType_t uxPriority,TaskHandle_t *pxCreatedTask);个人理解pvTaskCode任务函数入口地址任务函数通常是一个无限循环不能直接 return。如果任务不再需要运行应该调用 vTaskDelete() 删除自己。 例如void LED_Task(void *argument) { while(1) { HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0); vTaskDelay(pdMS_TO_TICKS(500)); } }如果任务想删除自己vTaskDelete(NULL);vTaskDelete(NULL)不是删除空任务而是删除当前正在运行的任务自己pcName是任务的名称主要用于1. 调试 2. 任务列表显示 3. FreeRTOS Trace 工具显示uxStackDepth为任务分配的栈深度单位通常是 StackType_t不是字节。在 STM32 上 128 通常约等于 512 字节。注意这是 FreeRTOS 原生 xTaskCreate() 的规则如果用 CMSIS-RTOS 或 CubeMX 配置任务界面里的 stack size 可能按字节理解要看具体接口。pvParameters是传递给任务函数的参数指针。例如uint8_t led_id 1; xTaskCreate(LED_Task, LED, 128, led_id, 2, NULL);任务里接收void LED_Task(void *argument) { uint8_t id *(uint8_t *)argument; while(1) { // 使用 id } }注意如果传局部变量地址要小心变量生命周期。 led_id 是局部变量创建任务的函数退出后这个地址可能失效所以传给任务的参数最好是全局变量、static变量或者长期存在的结构体。uxPriority是任务的优先级数字越大优先级越高pxCreatedTask是一个输出参数用来保存创建成功后的任务句柄。xTaskCreate() 还有一个返回值BaseType_t常见返回值pdPASS任务创建成功 errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY内存不足创建失败4.vTaskDelay() 作用vTaskDelay() 用于让当前任务进入阻塞态延时指定的 tick 数。延时时间到后任务从 Blocked 状态回到 Ready 状态延时时间到后任务从 Blocked 状态回到 Ready 状态等待调度器选中后才会重新进入 Running。。它是相对延时适合普通延时如果要实现严格周期任务应使用 vTaskDelayUntil()。5.Delay后任务去哪了任务在 Running 状态调用 vTaskDelay() 后会主动让出 CPU让其他 Ready 任务得到执行机会。本任务会进入 Blocked阻塞态在延时未结束前一直处于阻塞态不参与调度也不占用 CPU。当延时时间到了以后任务会从 Blocked 状态转为 Ready就绪态然后等待调度器调度只有被调度器选中后才会重新进入 Running运行态。总结一句话Running 是正在跑Ready 是能跑但没轮到Blocked 是等时间或事件Suspended 是被手动暂停。
延伸阅读

更多相关文章

2026/10/22 18:36:13

AI烟叶病虫害智能防治植保机上位控制系统

# AI烟叶病虫害智能防治植保机上位控制系统 QT国产信创工控完整工程,适配**统信UOS、银河麒麟ARM/x86**,严格遵循《烟草主要病虫害防控技术规程》DB42/T 2456-2025标准;双目多光谱AI烟株病虫识别+MAVLink植保无人机/自走式喷药车双兼容,集成**病虫识别分级、智能配药、变量…

2026/10/23 22:54:21

回归分析:从数学原理到Python实战的机器学习入门指南

1. 从“预测”开始:为什么回归是机器学习的基石 如果你刚接触机器学习,翻开任何一本教材或课程,大概率第一个遇到的算法就是“回归”。这绝非偶然。很多人会问,机器学习不是有分类、聚类、推荐那么多酷炫的应用吗,为什…

2026/10/20 13:58:29

2026 年5款企业数字人软件横评:多语种跨境场景适配实测对比

一、引文与摘要跨境贸易企业做海外短视频营销,最头疼的不是内容创意,而是多语种内容的生产效率。2026年实测5款主流企业数字人软件后,一个明确的结论是:晟诺科讯达在多语种适配、克隆效率和成本控制三个维度的综合表现领先&#x…

2026/10/24 12:39:09

Protege构建本体实战:从Pizza案例到OWL推理机自动分类

简介:这份 Protege 构建本体教程面向知识工程、语义网与人工智能方向的初学者及进阶学习者,帮助读者掌握使用 Protg-OWL 编辑器进行本体建模的完整思路。内容围绕本体基本概念展开,涵盖 OWL 本体的三大组成要素——个体、属性与类&#xff0c…

2026/10/24 12:39:09

Dice系数与Hausdorff距离:医学图像分割的体积契约与边界契约

简介:本资源是一份面向计算机视觉方向研究者与医学影像分析从业者的专业参考资料,聚焦图像分割任务中Dice系数(DSC)与Hausdorff距离(HD)两大核心评价指标的原理辨析、适用边界及协同使用策略。针对仅依赖DS…

2026/10/24 12:39:09

Transformer深度学习全解析:从注意力机制到可解释性

简介:这是一份关于 Transformer 与深度学习的系统讲解型 PDF 资料,面向机器学习初学者、算法工程师以及对注意力机制和预训练模型感兴趣的开发者。内容覆盖深度学习历史、编码器-解码器架构、点积注意力与多头注意力、BERT 及其变体等核心主题&#xff0…

2026/10/24 12:39:09

claude-mem:给 Claude 装上长期记忆,终结多会话遗忘

如果你经常用 Claude 做长周期项目,大概会有这种感觉:上午刚把接口方案聊得明明白白,顺手让它生成了一批测试用例,下午新开一个会话聊同一个项目,它却一脸茫然地反问“这个模块是干什么的来着”。这种“金鱼式”的体验…

2026/10/24 12:39:09

为Claude打造外挂记忆层:claude-mem终结每会话失忆症

如果你也习惯在终端里跟 Claude 这类大模型聊天来写代码、排查问题,八成撞到过同一堵墙:昨天刚捋清楚的接口设计、今天开个新会话,它又一脸无辜地问你“目前的需求背景是什么”“之前的结论是什么”。我把这个状态叫“每会话失忆症”。后来我…

2026/10/24 12:34:09

迈普交换机VLAN与三网合一配置实战:PVID、组播与环路检测避坑

简介:《迈普交换机配置》是一份面向网络运维初学者与中小型网络管理人员的命令配置参考文档,围绕迈普交换机日常配置与排错需求,梳理从基础模式切换到VLAN规划、端口参数调整的常用操作。文档以命令语法加配置举例的方式组织,内容…

2026/10/23 22:56:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/24 0:02:40

MATLAB缩进快捷键与批量格式化实战指南

1. 被自动缩进折磨的那些年如果你写过MATLAB代码,大概率经历过这种场景:从某个文档、网页或者聊天记录里复制了一段代码,粘贴进编辑器之后,每一行前面都带着莫名其妙的空格,有的行首是四个空格,有的是一个T…

2026/10/24 0:02:40

用Poco实现Qt风格信号与槽的跨平台C++方案

简介:本资源是一份面向C中级开发者的技术实践工程,聚焦于在非Qt框架环境下模拟实现Qt核心通信机制——信号与槽,借助Poco网络库的事件系统完成解耦式对象通信。适用于需在跨平台C项目中引入松耦合回调机制、但受限于无法集成Qt依赖的开发场景…

2026/10/24 0:02:40

ESXi裸机虚拟化安装指南:从硬件兼容到虚拟机部署

1. 为什么还要折腾ESXi:从一台闲置机器说起手里攒了几台淘汰下来的迷你主机,配置不算差,i5加16G内存,扔了可惜,装个桌面系统又觉得浪费。这种场景下,ESXi就成了一个绕不开的选择。它是一套裸机虚拟化平台&a…

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

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

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