独望枫

人在尘世间,有缘自相见,变化千千万,未开窍,已迷恋
posts - 45, comments - 0, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

FreeRTOS 线程间通信之消息队列

Posted on 2021-07-14 02:17 小菜枫 阅读(1747) 评论(0)  编辑 收藏 引用 所属分类: 学习笔记
1、创建队列API: xQueueCreate(queue.h),其受控于动态申请的宏configSUPPORT_DYNAMIC_ALLOCATION(FreeRTOS.h),并且该宏默认是启用的



2、声明并创建消息队列


3、添加头文件


4、发送函数
xQueueSend:// 写入到队末,队列满后,超时不会插入
xQueueSendToBack:// 写入到队末,队列满后,超时不会插入

上面两个宏定义内函数调用其实是一样的:


xQueueOverwrite:// 写入到队末,队列满后,超时不会插入
xQueueSendToFront:// 写入到队末,队列满后,超时不会插入


5、5、接收函数
xQueueReceive://取出消息,并从队列中删除该消息
xQueuePeek://取出消息,不删除队列中的该消息

6、xQueueSend发送时,队列满了,会如何?使用xQueueSend发送100ms一次

6.1)采用xQueuePeek读取消息,每1S读一次


6.2)采用xQueueReceive读取消息,每1S读一次



7、xQueueSendToBack的实际实现跟xQueueSend完全一致,这里就不尝试了,队列满了,使用xQueueSendOverwrite会如何?使用xQueueSendOverwrite发送100ms一次

7.1)采用xQueuePeek读取消息,每1S读一次

7.2)采用xQueueReceive读取消息,每1S读一次


8、xQueueSendToFront发送时,队列满了,会如何?使用xQueueSendToFront发送100ms一次

8.1)采用xQueuePeek读取消息,每1S读一次

8.2)采用xQueueReceive读取消息,每1S读一次

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理