摘要: 任务支持多优先级自动调度 1. 如何支持多优先级 在之前的实现中,系统只能让两个任务轮流切换,不支持优先级调度。要实现多优先级,核心问题只有一个:如何在任务切换时找到最高优先级的就绪任务? FreeRTOS使用就绪列表来管理所有就绪任务。就绪列表是一个数组,数组下标对应优先级: List_t pxR 阅读全文
posted @ 2026-03-25 01:06 晨曦忆梦 阅读(1) 评论(0) 推荐(0)
摘要: 一、什么是RTOS? 1.1 RTOS的基本概念 RTOS(Real Time Operating System,实时操作系统) 是一种专门为实时应用设计的操作系统。与普通操作系统不同,RTOS的核心特征是能够保证任务在确定的时间内完成响应和处理。 想象一下:你正在厨房做三件事——煮汤、炒菜、烤面包 阅读全文
posted @ 2026-03-24 22:52 晨曦忆梦 阅读(5) 评论(0) 推荐(0)
摘要: 空闲任务与阻塞延时的实现 1. 实现空闲任务 在RTOS中,当所有用户任务都处于阻塞状态时,CPU不能闲着,必须有任务可运行。FreeRTOS为此创建了一个空闲任务(Idle Task),优先级最低,在系统没有其他任务需要运行时执行。 1.1 定义空闲任务的栈 空闲任务也需要独立的栈空间,在main 阅读全文
posted @ 2026-03-24 22:37 晨曦忆梦 阅读(2) 评论(0) 推荐(0)
摘要: 临界段的保护 1. 什么是临界段 临界段(Critical Section) 是一段在执行过程中不能被中断的代码段。在FreeRTOS中,临界段最常见的应用场景是对全局变量的操作。当多个任务或中断可能同时访问同一个全局变量时,如果不加以保护,就会出现数据不一致的问题。 临界段可能被以下两种情况打断: 阅读全文
posted @ 2026-03-24 16:31 晨曦忆梦 阅读(3) 评论(0) 推荐(0)
摘要: 任务的定义与实现 1. 什么是任务 在裸机系统中,程序的主体是一个无限循环的main函数,CPU按顺序执行其中的代码。而在多任务系统中,我们根据功能将整个系统分割成一个个独立的、无法返回的函数,这些函数就是任务。 任务可以看作是并发执行的小程序,每个任务负责完成一项特定的工作。任务需要是无限循环的, 阅读全文
posted @ 2026-03-24 00:43 晨曦忆梦 阅读(18) 评论(0) 推荐(0)
摘要: 列表(List)与列表项(ListItem) 1. 列表项(ListItem_t) 结构体定义 列表项是链表的节点,定义如下: TickType_t xItemValue:排序辅助值,决定节点在链表中的顺序(如任务优先级、定时唤醒时间等)。 struct xLIST_ITEM *pxNext:指向下 阅读全文
posted @ 2026-03-23 19:26 晨曦忆梦 阅读(11) 评论(0) 推荐(0)