# stm32_study_hal_freertos
**Repository Path**: user_ye/stm32_study_hal_freertos
## Basic Information
- **Project Name**: stm32_study_hal_freertos
- **Description**: 学习记录 笔记 demo freertos stm32
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-01
- **Last Updated**: 2026-09-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 视频教程:
+ 尚硅谷freertos https://www.bilibili.com/video/BV1vUpje9Ej2?spm_id_from=333.788.videopod.episodes
## FreeRTOS核心模块应用场景一览
| 模块 | 核心功能 | 典型应用场景 (STM32项目实例) |
| :--- | :--- | :--- |
| **任务 (Task)** | 实现程序的并发执行,将复杂功能拆分为多个独立、可调度的任务。 | 将**数据采集、人机交互(按键/LED)、通信(串口/网络)、逻辑控制**等功能分别设计为独立任务,实现代码解耦,提高可维护性。 |
| **消息队列 (Queue)** | 任务间安全地传递**数据**,实现异步通信。 | - **传感器数据分发**:采集任务将温湿度数据打包,通过队列发送给显示和存储任务。
- **串口命令解析**:中断服务程序将接收到的字节放入队列,由专门的任务进行解析和处理。
- **日志记录**:各任务将调试信息发送到队列,由低优先级的日志任务统一写入存储介质。 |
| **信号量 (Semaphore)** | **同步**任务或**管理资源**。分为二值信号量和计数信号量。 | - **二值信号量**:用于同步中断和任务。例如,按键中断触发后释放信号量,唤醒一个任务来处理按键事件。
- **计数信号量**:管理有限数量的资源,如“停车位”模型。例如,管理一个包含5个缓冲区的内存池。 |
| **互斥量 (Mutex)** | 保护**共享资源**,防止多任务同时访问导致数据错乱,并带有**优先级继承**机制。 | - **保护共享外设**:多个任务需要操作同一个UART或I2C总线时,使用互斥量来确保操作的原子性。
- **保护全局变量/数据结构**:对频繁读写的关键数据(如系统状态、配置参数)进行保护。 |
| **事件组 (Event Group)** | 实现任务与多个事件之间的**复杂同步**,可以等待“所有”或“任意”事件发生。 | - **多条件启动**:系统启动时,等待**Wi-Fi连接成功、传感器初始化完成、SD卡挂载成功**等多个条件全部满足后,再开始主业务。
- **多任务同步**:多个任务各自完成计算后,通过事件组同步,汇聚结果再进入下一阶段。 |
| **软件定时器 (Software Timer)** | 实现基于系统时钟的**定时或周期性任务**回调,精度通常在毫秒级。 | - **周期性轮询**:每隔固定时间(如500ms)读取一次传感器数据或翻转LED状态。
- **超时管理**:实现按键长按检测、通信超时重试等。
- **延时动作**:实现“开启设备后,若2秒无操作则自动关闭”等功能。 |
| **内存管理 (Memory Management)** | 为任务、队列等内核对象及用户数据提供动态或静态的内存分配与释放。 | - **动态创建/删除任务**:根据运行状态(如用户操作)动态创建或销毁任务。
- **处理变长数据包**:在通信任务中,根据实际接收到的数据包大小动态申请内存。
- **选择`heap_4`方案**:在需要频繁分配和释放不同大小内存的复杂项目中,使用`heap_4`方案以减少内存碎片。 |
| **任务通知 (Task Notification)** | 轻量级的任务间直接通信和同步,比信号量/队列**更快、更省内存**。 | - **替代二值信号量**:在点对点同步场景(如中断唤醒特定任务)中,作为更高效的替代方案。
- **传递简单状态**:直接向任务发送一个32位的值,用于传递简单的控制命令或状态。 |