--- type: entity title: FreeRTOS 基础概念 tags: [freertos, rtos, embedded, concept] created: 2026-07-12 --- # FreeRTOS 基础概念 ## 裸机开发 vs 操作系统 裸机开发在没有 OS 支持下直接操作硬件,开发者亲自管理 CPU、内存和 I/O 资源。 操作系统作为硬件与应用之间的桥梁,负责分配计算和内存资源。分为两类: - **通用 OS**(Linux/Windows/macOS):功能强大,但不保证实时响应 - **实时 OS(RTOS)**:保证任务在给定时间内完成,如 FreeRTOS、uC/OS、RT-Thread ## FreeRTOS 简介 由美国的 Richard Barry 于 2003 年发布,2017 年被亚马逊收购(AWS FreeRTOS)。MIT 开源许可。 核心优势:开源免费、轻量级、多平台支持、丰富的功能(多任务调度、通信、同步)。 ### 关键特点 - **任务调度**:支持不同优先级任务的有序执行 - **任务通信**:队列、信号量等机制 - **内存管理**:适用于嵌入式环境 - **可移植性**:支持多种处理器架构 ## FreeRTOS 基础知识 ### 多任务处理 内核是 OS 的核心组件。多任务 OS 将复杂应用分割成一组更小、更易管理的任务。单核处理器通过任务间快速切换制造并发执行的假象。 ![Multitasking perceived vs actual](../raw/FreeRTOS/尚硅谷FreeRTOS教程/assets/freertos_multitasking_perceived_vs_actual.png) ### FreeRTOS 数据类型 | 类型 | 说明 | |------|------| | `TickType_t` | 系统节拍计数器类型,16 位或 32 位(由 configUSE_16_BIT_TICKS 决定) | | `BaseType_t` | 架构最自然有效类型,32 位架构上为 32 位,有符号 | | `UBaseType_t` | 无符号 BaseType_t | | `StackType_t` | 架构用于存储堆栈的类型 | ### 命名规范 **变量前缀**:`ul`(uint32_t)、`us`(uint16_t)、`uc`(uint8_t)、`x`(非 stdint 类型)、`ux`(无符号非 stdint)、`e`(枚举)、`p`(指针) **函数前缀**:`prv`(私有静态)、返回值类型(`v` 表示 void)+ 文件名 + 功能名,如 `vTaskDelay` 表示 task.c 中返回 void 的延时函数 **宏**:文件名前缀(小写)+ 大写下划线名称,如 `configUSE_PREEMPTION` ## 相关页面 - [[source-freertos|尚硅谷 FreeRTOS 教程 - 资料页]] - [[freertos-task-scheduling|任务调度与状态管理]] - [[freertos-task-api|任务 API 详解]]