恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
FreeRTOS和uC/OS队列为什么会传出不同的数据?
首页
资讯中心
/
FreeRTOS和uC/OS队列为什么会传出不同的数据?
FreeRTOS和uC/OS队列为什么会传出不同的数据?
发布时间:2026/9/14 20:34:27
在 RTOS 开发中,队列是最常用的任务间通信机制之一。比如:UART接收 ↓ 解析一帧数据 ↓ 发送到队列 ↓ 应用任务取出 ↓ 处理数据看起来非常简单。但当一个项目从 FreeRTOS 移植到 uC/OS,或者反过来移植时,有一个非常容易踩坑的问题:代码逻辑完全一样,队列 API 也看起来差不多,但应用任务拿到的数据却全部一样。为什么?根本原因往往不是 UART,也不是队列长度,而是:两个 RTOS 对“队列里到底保存什么”的设计思路可能不同。理解这个问题,实际上就是理解 RTOS 消息通信中非常核心的两个概念:传值和传指针。一、先看一个典型的串口接收场景假设串口接收中断不断收到数据。接收代码维护一个缓冲区:staticuint8_tsCOM_RxBuf[COM_PACKAGE_LEN