欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

RTX5 | 消息队列02 - 放入与取出消息

发布时间:2025/3/15 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 RTX5 | 消息队列02 - 放入与取出消息 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 一、前言
  • 二、实验目的
  • 三、API
    • 3.1、osMessageQueuePut
    • 3.2、osMessageQueueGet
  • 四、代码
    • 4.1、main.h
    • 4.2、main.c
  • 五、DEBUG
    • 5.1、长按按键KEY1,将变量放入消息队列
    • 5.2、长按按键KEY2,从消息队列取出消息

一、前言

在RTOS里,消息队列与线程一样都是非常重要的功能。在实际项目上,线程与消息队列都肯定要使用。最常用的案例是串口中断回调函数将收到的字符放入消息队列,待串口中断回调函数结束后,线程立即从该消息队列里获取字符,接着按照通讯协议解释字符。

中断回调函数必须遵循快进快出的原则。所谓快进快出就是中断回调函数里的代码量需尽可能少,所以最好不要在中断回调函数里运行解释通讯协议的代码。此时,消息队列很好地解决了快进快出的问题。因为中断回调函数里只需运行将消息放入消息队列的代码,解析通讯协议的代码放在读取消息队列的线程里。

STM32工程:
链接:https://pan.baidu.com/s/1PbkeYj0yNU09-DcbMbC7bQ
提取码:ftgi

二、实验目的

长按KEY1按键,将变量put_Uart放入消息队列。长按KEY2按键,从消息队列取出消息。

三、API

3.1、osMessageQueuePut

/* 将put_Uart变量的值放入消息队列msgQueue_ID_CAN1 */ osMessageQueuePut(msgQueue_ID_CAN1, /* 消息队列的名字 */&put_Uart, /* 放入消息队列的变量(消息) */NULL, /* 放入消息的优先级 */NULL /* 超时时间为0,如果osMessageQueuePut被中断回调函数调用时,此参数必须是NULL */);

3.2、osMessageQueueGet

/* 从消息队列msgQueue_ID_CAN1里取出消息 */ osMessageQueueGet(msgQueue_ID_CAN1, /* 消息队列的名字 */&get_Uart, /* 存放消息的内存 */NULL, /* 取出消息的优先级 */NULL /* 超时时间为0,在中断函数里调用osMessageQueueGet时,此参数必须是NULL */);

四、代码

4.1、main.h

4.2、main.c




五、DEBUG

5.1、长按按键KEY1,将变量放入消息队列

5.2、长按按键KEY2,从消息队列取出消息


总结

以上是生活随笔为你收集整理的RTX5 | 消息队列02 - 放入与取出消息的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。