FreeRTOS 是一個可裁剪、可剝奪型的多任務內核,而且沒有任務數限制,在此之前分析過很多。
FreeRTOS 提供了實時操作系統所需的所有功能,包括資源管理、同步、任務通信等,本篇主要說一下任務通信,我們選用接口是CMSIS_V2,之前也講到過stm32CubeIDE中CMSIS_V1和CMSIS_V2選項的區別。
首先創建兩個任務
創建2個事件
拉下來也可以配置以下信息,在此我們默認配置
Semaphore Name:信號量名稱
Count:計數信號量的最大值
Allocation:分配方式:Dynamic 動態內存創建
Conrol Block Name:控制塊名稱
生成代碼之后任務和事件如下
/*DefinitionsformyTask01*/ osThreadId_tmyTask01Handle; constosThreadAttr_tmyTask01_attributes={ .name="myTask01", .stack_size=128*4, .priority=(osPriority_t)osPriorityLow, }; /*DefinitionsformyTask02*/ osThreadId_tmyTask02Handle; constosThreadAttr_tmyTask02_attributes={ .name="myTask02", .stack_size=128*4, .priority=(osPriority_t)osPriorityLow, }; /*DefinitionsformyEvent01*/ osEventFlagsId_tmyEvent01Handle; constosEventFlagsAttr_tmyEvent01_attributes={ .name="myEvent01" }; /*DefinitionsformyEvent02*/ osEventFlagsId_tmyEvent02Handle; constosEventFlagsAttr_tmyEvent02_attributes={ .name="myEvent02" };
這個是創建任務的句柄
/*creationofmyTask01*/ myTask01Handle=osThreadNew(StartTask01,NULL,&myTask01_attributes); /*creationofmyTask02*/ myTask02Handle=osThreadNew(StartTask02,NULL,&myTask02_attributes);
我們改寫代碼,實現task2往task發送信號,實現簡單的任務通信。
/*USERCODEENDHeader_StartTask01*/ voidStartTask01(void*argument) { /*USERCODEBEGINStartTask01*/ /*Infiniteloop*/ osStatus_tos_Status; while(1) { os_Status=osEventFlagsWait(myTask02Handle,/*事件標志組ID*/ COMM2_EVENT,/*等待事件標志位0與事件標志位1*/ osFlagsWaitAny,/*邏輯或*/ osWaitForever/*一直等待*/ ); if(os_Status==COMM1_EVENT) { printf("startTask02isrunning. "); } } /*USERCODEENDStartTask01*/ } /*USERCODEBEGINHeader_StartTask02*/
osEventFlagsWait函數的具體實現以及定義如下
osEventFlagsSet就是往某個任務的句柄發送一個信號,實現如下
/*USERCODEENDHeader_StartTask02*/ voidStartTask02(void*argument) { /*USERCODEBEGINStartTask02*/ /*Infiniteloop*/ for(;;) { osEventFlagsSet(myEvent01Handle,COMM1_EVENT); osDelay(1); } /*USERCODEENDStartTask02*/ }
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
CMSIS
+關注
關注
0文章
40瀏覽量
11922 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62271
原文標題:freeRTOS 任務通信簡介
文章出處:【微信號:技術讓夢想更偉大,微信公眾號:技術讓夢想更偉大】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
FreeRTOS嵌入式實時操作系統
1 FreeRTOS操作系統功能
作為一個輕量級的操作系統,FreeRTOS提供的功能包括:任務管理、時間管理、信號量、消息隊列、
發表于 07-06 11:07
?6593次閱讀
實時操作系統FreeRTOS移植教程
Free 即免費的,RTOS 全稱是 Real Time Operating System,中文就是實時操作系統。注意,RTOS 不是指某一個確定的系統,而是指一類系統。比如 uC/O
【案例分享】FreeRTOS的嵌入式實時操作系統的實現
FreeRTOS是一個源碼公開的免費的嵌入式實時操作系統,通過研究其內核可以更好地理解嵌入式操作系統的實現原理.本文主要闡述FreeRTOS
發表于 07-23 04:30
請問freertos是硬實時操作系統嗎?
freertos是硬實時操作系統嗎?都有哪些硬實時操作系統?。?/div>
發表于 06-13 09:00
FreeRTOS實時操作系統
的FreeRTOS實時操作系統,Nabto正在努力建立一個強大的FreeRTOS + Nabto組合的解決方案。我們最新推出AppMyProduct應用平臺可幫助您快速開發遠程控制設備
發表于 08-04 07:58
為什么要在單片機中使用實時多任務操作系統
為什么要在單片機中使用實時多任務操作系統該視頻在113分10秒之后,講了實時操作系統的使用價值。老師講得非常好,我就不過多贅述了。(這個視頻
發表于 08-24 06:02
基于FreeRTOS的嵌入式實時操作系統的原理和實現
FreeRTOS是一個源碼公開的免費的嵌入式實時操作系統,通過研究其內核可以更好地理解嵌入式操作系統的實現原理.本文主要闡述FreeRTOS
發表于 11-18 03:34
?6711次閱讀
什么是操作系統?FreeRTOS中文實用教程讓你快速入門FreeRTOS
本文檔的主要內容詳細介紹的是什么是操作系統?FreeRTOS中文實用教程讓你快速入門FreeRTOS帶你了解了1.認識操作系統 2.輕松上手RTOS 3.
發表于 09-12 16:51
?276次下載
嵌入式實時操作系統FreeRTOS在ARM7上移植實現
嵌入式實時操作系統FreeRTOS在ARM7上移植實現(嵌入式開發工程師待遇)-嵌入式實時操作系統Fre
發表于 07-30 12:05
?21次下載
STM32-初學FreeRTOS操作系統
的freeRTOS是實時操作系統之一,特點是多線程,采用“輪換”的方式實現“并行”的效果,操作系統內可以建立任務,每個
發表于 12-08 14:21
?14次下載
FreeRTOS實時操作系統簡述
FreeRTOS是一個為嵌入式系統設計的開源實時操作系統。它提供了一個多任務內核和一系列組件功能,適合在資源受限的設備上管理
發表于 09-19 12:37
?1861次閱讀
實時操作系統之RT-Thread及FreeRTOS
RT-Thread與其他很多RTOS如FreeRTOS的主要區別之一是,它不僅僅是一個實時內核,還具備豐富的中間層組件,如下圖所示。FreeRTOS和RT-Thread是兩種常見的嵌入式實時
評論