news 2026/5/6 12:43:29

[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/5/1 4:58:09

win一键关闭所有用户程序:告别繁琐的手动退出,高效下班关机

一、引子 每天下班前,我都有一个“强迫症”习惯:把电脑上所有打开的程序都关掉,再执行关机。 这不仅是为了让第二天开机时系统清爽、启动迅速,更是为了避免: 浏览器恢复几十个标签页,拖慢系统&#xff1b…

作者头像 李华
网站建设 2026/5/3 7:27:32

无需动捕设备!Linly-Talker通过语音驱动面部动画

无需动捕设备!Linly-Talker通过语音驱动面部动画 在电商直播间里,一位“主播”正微笑着介绍新品——口型精准对齐话语,眼神自然流转,语气亲切生动。可你不会想到,这位数字人从未走进摄影棚,也没有佩戴任何动…

作者头像 李华
网站建设 2026/5/5 16:39:44

通信系统仿真:无线通信系统仿真_(17).无线通信系统的优化设计

无线通信系统的优化设计 1. 优化设计的重要性 在无线通信系统中,优化设计是提高系统性能的关键步骤。无线通信环境复杂多变,包括信道衰落、噪声、干扰等因素,这些都对通信质量产生重大影响。优化设计旨在通过系统参数的调整,使系统…

作者头像 李华
网站建设 2026/5/2 18:01:42

论文查重不过?几款AI工具帮你降重

论文一直是很多大学生们的大难题从开题报告到最后的答辩每一步都非常消耗时间和精力这当中,查重更是困扰着大家的一个麻烦别担心,学长将给大家介绍几款AI论文降重工具亲测好用,建议收藏!【主力推荐】SpeedAI在众多工具中&#xff…

作者头像 李华
网站建设 2026/5/1 6:10:52

Linly-Talker语音识别模块(ASR)精准度实测分析

Linly-Talker语音识别模块(ASR)精准度实测分析 在数字人从实验室走向真实场景的今天,一个关键问题摆在开发者面前:用户说了一句话,系统真的“听懂”了吗?这看似简单的交互背后,藏着自动语音识别…

作者头像 李华
网站建设 2026/5/4 12:32:55

Linly-Talker适合中小企业吗?ROI成本收益分析

Linly-Talker适合中小企业吗?ROI成本收益分析 在客服电话永远占线、宣传视频制作周期动辄两周、新品发布还得请专业主播的今天,不少中小企业主都在问:我们能不能也用上“数字人”?不是那种需要百万预算和动捕棚的影视级虚拟偶像&a…

作者头像 李华