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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

RTX5 | 事件标志组03 - 线程同步(逻辑或)

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RTX5 | 事件标志组03 - 线程同步(逻辑或) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言


事件標志組是獨自存在的,線程標志組只是線程的一部分。事件標志組的使用方法與線程標志組的使用方法一樣,學會使用線程標志組就等于學會使用事件標志組,反之亦然。當線程退出之后,其線程標志組就會消失。創建線程就等于創建了一個線程標志組,它們是一塊的。事件標志組需要單獨創建,所以事件標志組需要額外占用內存池的內存。那為什么需要事件標志組?全部用線程標志組不就好了嗎?

通過一個事件標志組,一個線程可以同步多個線程。1個事件標志組里有32個事件位,每1個事件位同步1個線程的話,那么1個事件標志組最大能同步32個線程。線程標志組只能用于同步本線程,例如線程A通過線程B的線程標志組,只能同步線程B了,不能用于同步線程C。總的來說,事件標志組的使用比較靈活。

事件標志組與線程標志組都能實現邏輯與,還有邏輯或同步線程。

STM32工程:
鏈接:https://pan.baidu.com/s/114jsUS5R_NEw8WjD3Lazug
提取碼:yxvq

二、實驗目的


長按按鈕KEY0 或 長按KEY1(邏輯或),線程LED通過事件標志組A同步線程A,printf一些信息。

三、API


3.1、osEventFlagsWait

/* 使用舉例1 */ void thread_A_App(void *argument) {osStatus_t os_Status;while(1){os_Status = osEventFlagsWait(event_Flags1_ID, /* 事件標志組ID */0x00000003U, /* 等待事件標志位0與事件標志位1 */osFlagsWaitAny, /* 邏輯或 */osWaitForever /* 一直等待 */);printf("thread A is running.\r\n");}}/* 使用舉例2 */ void thread_A_App(void *argument) {osStatus_t os_Status;while(1){os_Status = osEventFlagsWait(event_Flags1_ID, /* 事件標志組ID */0x00000003U, /* 等待事件標志位0與事件標志位1 */osFlagsWaitAny, /* 邏輯或 */2000U /* 超時時間2S */);printf("thread A is running.\r\n");}}

四、代碼


4.1、main.h

4.2、main.c






五、Event Recorder調試


5.1、長按按鍵KEY0與KEY1

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的RTX5 | 事件标志组03 - 线程同步(逻辑或)的全部內容,希望文章能夠幫你解決所遇到的問題。

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