日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 - 放入与取出消息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。