news 2026/6/10 17:45:57

[free rtos 队列的讲解(第三天)]

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[free rtos 队列的讲解(第三天)]

队列单的说 他就是传递信息的作用

队列项目: 队列中的每个数据单元(如示意图中的每个圆圈)

队列长度: 队列能存储的最大项目数量(如最多存放5个数据)

  • FIFO(先进先出): 默认方式,先入队的数据优先被读取(如流水线依次处理)
  • LIFO(后进先出): 可配置但较少使用
  • 需记忆"First In First Out"专业术语
2)数据传递方式
  • 值传递: 默认将数据拷贝到队列中(如兔子产生的数据完整复制到队列)
  • 指针传递: 传递较大数据时为节省时间可采用指针传递
3)多任务访问
  • 共享性: 队列不属于特定任务,任何任务/中断都可发送/读取消息
  • 互斥保护: 自动实现入队出队操作的互斥访问
4)阻塞机制
  • 阻塞时间设置:
    • 0: 不等待,立即返回
    • 0_portMAX_DELAY 等待指定时间后超时返回

    • portMAX_DELAY 死等直到操作成功

下面我们分析队列相关API函数

QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength, UBaseType_t uxItemSize );
  • 参数说明:
    • uxQueueLength: 队列最大容量(如5个数据)
    • uxItemSize: 每个数据项的字节大小
  • 返回值: 成功返回队列句柄,失败返回NULL
  • 下面我们进行写队列

  • ​ BaseType_t xQueueSend( QueueHandle_t xQueue, const void* pVItemToQueue, TickType_t xTicksToWait ) ​
  • BaseType_t xQueueReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait);

    这是我们读队列

  • ​ xQueue:待读取的队列句柄 pvBuffer:数据读取缓冲区指针(存放读出数据) xTicksToWait:阻塞超时时间(单位:系统时钟节拍) ​

    下面我们开始进行实际操作

  • 我们的任务是按下key1 向队列发数据 按下key2 向队列接收数据

我们创建任务 下面我们创建队列

其中16是我们的队列是 长度 uint16_t 8位 为一个字节

所以是两个字节

下面我放进去源代码

void StartTaskReceive(void const * argument) { /* USER CODE BEGIN StartTaskReceive */ uint16_t buf; BaseType_t status; /* Infinite loop */ for(;;) { if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET) { osDelay(20); if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET) { status = xQueueReceive(myQueueHandle, &buf, 0); if (status == pdTRUE) { printf("读取队列成功,读出值%d\r\n", buf); } else { printf("读取队列失败\r\n"); } } while (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET); } osDelay(10); } /* USER CODE END StartTaskReceive */ }

后面我会更新 二值信号量

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:39:09

【C语言】(指针篇)指针的定义

喜欢这个文章可以给主页Mem0rin点一个关注互三,一起进步! 总算是学完了指针了,目前打算写三篇指针相关的博客,后面两篇讲指针的运算和遍历, 指针的传参。 文章目录一、指针的定义(一)指针的概念…

作者头像 李华
网站建设 2026/6/10 12:38:46

如何用Linly-Talker批量生成产品介绍视频?自动化脚本示例

如何用Linly-Talker批量生成产品介绍视频?自动化脚本示例 在电商内容战愈演愈烈的今天,一个新品上线往往需要配套数十条短视频:主图视频、详情页讲解、社交媒体种草……传统拍摄模式下,一支三分钟的广告片从脚本撰写到成片输出动辄…

作者头像 李华
网站建设 2026/6/10 10:51:35

转行具身最好的机会在昨天,其次是现在...

具身智能,是今年全世界都离不开的技术热词。国外的特斯拉optimus、Figure AI,国内的像宇树、智元、星海图等等大大小小几百家上千家公司。柱哥和做具身招聘的朋友,现在人才缺口太大了,很多硕士生都已经被预定。。。自动驾驶行业也…

作者头像 李华
网站建设 2026/6/10 15:39:47

Linly-Talker能否支持眼球追踪联动?视线交互功能研发进展

Linly-Talker 能否支持眼球追踪联动?视线交互功能研发进展 在虚拟主播、智能客服和远程教育等场景中,用户对数字人的期待早已超越“能说会动”的基础水平。如今,一个真正“像人”的数字人,不仅要说得自然、表情生动,更…

作者头像 李华
网站建设 2026/6/10 19:12:34

浅谈计算机防火墙操作

1.什么是计算机防火墙计算机防火墙是一种网络安全系统,它充当网络(如互联网)与您的计算机或内部网络之间的屏障或过滤器,依据预设的规则来监控和控制所有进出的网络流量。简单来说,它的核心功能就像一个“安全检查站”…

作者头像 李华
网站建设 2026/6/10 14:00:58

Linly-Talker性能测试报告:不同GPU下的推理速度对比

Linly-Talker性能测试报告:不同GPU下的推理速度对比 在虚拟主播、智能客服和数字员工逐渐走入大众视野的今天,人们对“会说话、能互动”的数字人不再陌生。然而,真正实现自然流畅的实时对话,并非简单地把语音合成和动画拼接在一起…

作者头像 李华