RTX5 | 消息队列02 - 放入与取出消息
生活随笔
收集整理的這篇文章主要介紹了
RTX5 | 消息队列02 - 放入与取出消息
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、前言
- 二、實驗目的
- 三、API
- 3.1、osMessageQueuePut
- 3.2、osMessageQueueGet
- 四、代碼
- 4.1、main.h
- 4.2、main.c
- 五、DEBUG
- 5.1、長按按鍵KEY1,將變量放入消息隊列
- 5.2、長按按鍵KEY2,從消息隊列取出消息
一、前言
在RTOS里,消息隊列與線程一樣都是非常重要的功能。在實際項目上,線程與消息隊列都肯定要使用。最常用的案例是串口中斷回調函數(shù)將收到的字符放入消息隊列,待串口中斷回調函數(shù)結束后,線程立即從該消息隊列里獲取字符,接著按照通訊協(xié)議解釋字符。
中斷回調函數(shù)必須遵循快進快出的原則。所謂快進快出就是中斷回調函數(shù)里的代碼量需盡可能少,所以最好不要在中斷回調函數(shù)里運行解釋通訊協(xié)議的代碼。此時,消息隊列很好地解決了快進快出的問題。因為中斷回調函數(shù)里只需運行將消息放入消息隊列的代碼,解析通訊協(xié)議的代碼放在讀取消息隊列的線程里。
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, /* 放入消息的優(yōu)先級 */NULL /* 超時時間為0,如果osMessageQueuePut被中斷回調函數(shù)調用時,此參數(shù)必須是NULL */);3.2、osMessageQueueGet
/* 從消息隊列msgQueue_ID_CAN1里取出消息 */ osMessageQueueGet(msgQueue_ID_CAN1, /* 消息隊列的名字 */&get_Uart, /* 存放消息的內存 */NULL, /* 取出消息的優(yōu)先級 */NULL /* 超時時間為0,在中斷函數(shù)里調用osMessageQueueGet時,此參數(shù)必須是NULL */);四、代碼
4.1、main.h
4.2、main.c
五、DEBUG
5.1、長按按鍵KEY1,將變量放入消息隊列
5.2、長按按鍵KEY2,從消息隊列取出消息
總結
以上是生活随笔為你收集整理的RTX5 | 消息队列02 - 放入与取出消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RTX5 | 消息队列05 - 获取剩余
- 下一篇: 计算机网络课程设计之网络嗅探器的设计与实