FreeRTOS和uC/OS队列为什么会传出不同的数据?
2026/9/14 20:34:20 网站建设 项目流程

在 RTOS 开发中,队列是最常用的任务间通信机制之一。

比如:

UART接收 ↓ 解析一帧数据 ↓ 发送到队列 ↓ 应用任务取出 ↓ 处理数据

看起来非常简单。

但当一个项目从 FreeRTOS 移植到 uC/OS,或者反过来移植时,有一个非常容易踩坑的问题:

代码逻辑完全一样,队列 API 也看起来差不多,但应用任务拿到的数据却全部一样。

为什么?

根本原因往往不是 UART,也不是队列长度,而是:

两个 RTOS 对“队列里到底保存什么”的设计思路可能不同。

理解这个问题,实际上就是理解 RTOS 消息通信中非常核心的两个概念:

传值和传指针。


一、先看一个典型的串口接收场景

假设串口接收中断不断收到数据。

接收代码维护一个缓冲区:

staticuint8_tsCOM_RxBuf[COM_PACKAGE_LEN

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询