news 2026/1/8 20:13:30

[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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/21 2:35:58

python作业四

题目一:位运算: 计算56及-18的所有位运算符结果,并使在注释中体现计算过程a 56 b -18 # 56的二进制:00000000 00000000 00000000 00111000 #-18的二进制:11111111 11111111 11111111 11101110 """ -1…

作者头像 李华
网站建设 2026/1/4 22:44:13

Linly-Talker + LangChain:构建具备记忆的智能数字人助理

Linly-Talker LangChain:构建具备记忆的智能数字人助理 在客户服务、在线教育和虚拟主播日益普及的今天,用户对交互体验的要求早已超越“能说话”这一基本功能。人们期待的是一个能够记住对话历史、理解上下文、带有个性甚至情感反馈的“活生生”的数字…

作者头像 李华
网站建设 2026/1/5 12:26:40

数字人直播新纪元:Linly-Talker助力电商24小时自动带货

数字人直播新纪元:Linly-Talker助力电商24小时自动带货 你有没有注意到,最近在抖音、淘宝的直播间里,有些“主播”从不喝水、不会疲劳,甚至凌晨三点还在激情喊着“三二一上链接”?这些不知疲倦的“人”,很可…

作者头像 李华
网站建设 2025/12/24 6:34:15

Linly-Talker部署教程:GPU环境下快速搭建数字人对话系统

Linly-Talker部署教程:GPU环境下快速搭建数字人对话系统 在虚拟主播、智能客服和AI助手日益普及的今天,如何以低成本构建一个能“听懂”用户提问、“张嘴说话”并具备个性化声音与表情的数字人,已成为企业与开发者关注的核心问题。传统方案依…

作者头像 李华
网站建设 2025/12/21 2:25:11

Linly-Talker在药品使用说明中的逐条强调播放设计

Linly-Talker在药品使用说明中的逐条强调播放设计在医院药房、社区药店甚至家庭场景中,一个反复出现的问题是:患者真的读懂了手中的药品说明书吗?密密麻麻的文字、专业术语的堆叠、警示信息被淹没在段落之间——这些都可能导致用药错误&#…

作者头像 李华
网站建设 2025/12/31 14:37:37

【前端知识点总结】Web身份认证 Cookie vs .Token

在 Web 开发的世界里,身份认证是守护应用大门的第一道锁。长久以来,Cookie 一直是这把锁的忠实守护者。但随着架构的演进,一位新的挑战者——Token——登上了历史舞台,并逐渐成为现代应用的主流选择。 它们之间不是简单的替代关系,而是一场关于设计哲学、安全性和架构演进…

作者头像 李华