当前位置: 首页 > news >正文

[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 */ }

后面我会更新 二值信号量

http://www.jsqmd.com/news/116691/

相关文章:

  • Linly-Talker如何接入微信小程序?完整集成方案
  • Linly-Talker支持多种肖像输入格式:证件照、自拍、动漫均可
  • 通信系统仿真:无线通信系统仿真_(17).无线通信系统的优化设计
  • 数字人创业新风口:Linly-Talker降低技术门槛
  • 数字人短视频爆发时代,Linly-Talker助你抢占流量红利
  • 通信系统仿真:无线通信系统仿真_(20).案例分析:卫星通信系统仿真
  • Linly-Talker能否支持眼球追踪联动?视线交互功能研发进展
  • Linly-Talker在金融客服中的落地实践案例分享
  • Linly-Talker部署教程:GPU环境下快速搭建数字人对话系统
  • DPJ-140 基于单片机基于Arduino控制器的语音模块数据传输系统设计(源代码+proteus仿真)
  • 教育行业变革者:Linly-Talker打造个性化AI辅导老师
  • 浅谈计算机防火墙操作
  • 华为SR-MPLS TE跨域(E2E)配置案例
  • 用Linly-Talker制作多语言数字人视频,出海营销新利器
  • 混合储能系统光储下垂控制Matlab/simulink 混合储能系统/光储微网/下垂控制
  • Linly-Talker安全性评估:数据隐私与模型合规性说明
  • 重工业、轻工业和复杂装备行业的设备维护策略制定:目标、策略、实施框架和工具等的差异
  • 降低90%成本!Linly-Talker让企业轻松拥有AI虚拟客服
  • 【RAG安全】【ACL】The Good and The Bad: Exploring Privacy Issues in Retrieval-Augmented Generation (RAG)
  • Linly-Talker与HeyGen对比:谁更适合中文数字人场景?
  • Linly-Talker vs 传统虚拟人:效率、成本与体验全面对比
  • 行星齿轮非线性程序:相图、庞加莱与分叉图
  • 医疗健康领域应用:Linly-Talker构建智能导诊数字人
  • 打造虚拟主播不再难,Linly-Talker全栈解决方案来了
  • Linly-Talker语音克隆功能实测:1分钟复刻你的声音
  • 智慧城市之城市环境智能监管 非法倾倒行为自动识别 环保执法证据采 垃圾倾倒倾倒物品类型识别数据据 垃圾堆识别数据集 公路垃圾识别10315期
  • Linly-Talker在药品使用说明中的逐条强调播放设计
  • Linly-Talker边缘计算部署可行性研究:端侧推理优化方案
  • 无需动捕设备!Linly-Talker通过语音驱动面部动画
  • 1.99亿,济南低空应急救援及城市生命线监测感知数字化建设工程(信息化部分)