精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析FreeRTOS實時操作系統的任務通信

技術讓夢想更偉大 ? 來源:技術讓夢想更偉大 ? 作者:李肖遙 ? 2022-10-11 09:42 ? 次閱讀

FreeRTOS 是一個可裁剪、可剝奪型的多任務內核,而且沒有任務數限制,在此之前分析過很多。

FreeRTOS 提供了實時操作系統所需的所有功能,包括資源管理、同步、任務通信等,本篇主要說一下任務通信,我們選用接口是CMSIS_V2,之前也講到過stm32CubeIDE中CMSIS_V1和CMSIS_V2選項的區別。

c6be9b74-48a6-11ed-a3b6-dac502259ad0.png

首先創建兩個任務

c6e775e4-48a6-11ed-a3b6-dac502259ad0.png

創建2個事件

c729019e-48a6-11ed-a3b6-dac502259ad0.png

拉下來也可以配置以下信息,在此我們默認配置

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函數的具體實現以及定義如下

c75a11c6-48a6-11ed-a3b6-dac502259ad0.png

osEventFlagsSet就是往某個任務的句柄發送一個信號,實現如下

/*USERCODEENDHeader_StartTask02*/
voidStartTask02(void*argument)
{
/*USERCODEBEGINStartTask02*/
/*Infiniteloop*/
for(;;)
{
osEventFlagsSet(myEvent01Handle,COMM1_EVENT);
osDelay(1);
}
/*USERCODEENDStartTask02*/
}




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • CMSIS
    +關注

    關注

    0

    文章

    39

    瀏覽量

    11874
  • FreeRTOS
    +關注

    關注

    12

    文章

    483

    瀏覽量

    62018

原文標題:freeRTOS 任務通信簡介

文章出處:【微信號:技術讓夢想更偉大,微信公眾號:技術讓夢想更偉大】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FreeRTOS嵌入式實時操作系統

      1 FreeRTOS操作系統功能   作為一個輕量級的操作系統FreeRTOS提供的功能包括:任務管理、時間管理、信號量、消息隊列、
    發表于 07-06 11:07 ?6573次閱讀
    <b class='flag-5'>FreeRTOS</b>嵌入式<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>

    實時操作系統FreeRTOS移植教程

    Free 即免費的,RTOS 全稱是 Real Time Operating System,中文就是實時操作系統。注意,RTOS 不是指某一個確定的系統,而是指一類系統。比如 uC/O
    的頭像 發表于 06-08 09:23 ?8544次閱讀
    <b class='flag-5'>實時</b><b class='flag-5'>操作系統</b><b class='flag-5'>FreeRTOS</b>移植教程

    【案例分享】FreeRTOS的嵌入式實時操作系統的實現

    FreeRTOS是一個源碼公開的免費的嵌入式實時操作系統,通過研究其內核可以更好地理解嵌入式操作系統的實現原理.本文主要闡述FreeRTOS
    發表于 07-23 04:30

    請問freertos是硬實時操作系統嗎?

    freertos是硬實時操作系統嗎?都有哪些硬實時操作系統啊?
    發表于 06-13 09:00

    FreeRTOS實時操作系統

    FreeRTOS實時操作系統,Nabto正在努力建立一個強大的FreeRTOS + Nabto組合的解決方案。我們最新推出AppMyProduct應用平臺可幫助您快速開發遠程控制設備
    發表于 08-04 07:58

    為什么要在單片機中使用實時任務操作系統

    為什么要在單片機中使用實時任務操作系統該視頻在113分10秒之后,講了實時操作系統的使用價值。老師講得非常好,我就不過多贅述了。(這個視頻
    發表于 08-24 06:02

    嵌入式實時操作系統FreeRTOS基本概述

    嵌入式實時操作系統FreeRTOS基本概述在嵌入式領域當中,實時操作系統的應用越來越廣泛了,目前嵌入式
    發表于 02-16 07:12

    關于實時操作系統任務通信的一種方法

    關于實時操作系統任務通信的一種方法
    發表于 09-03 11:45 ?3次下載
    關于<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>中<b class='flag-5'>任務</b>間<b class='flag-5'>通信</b>的一種方法

    基于FreeRTOS的嵌入式實時操作系統的原理和實現

    FreeRTOS是一個源碼公開的免費的嵌入式實時操作系統,通過研究其內核可以更好地理解嵌入式操作系統的實現原理.本文主要闡述FreeRTOS
    發表于 11-18 03:34 ?6653次閱讀

    什么是操作系統?FreeRTOS中文實用教程讓你快速入門FreeRTOS

    本文檔的主要內容詳細介紹的是什么是操作系統?FreeRTOS中文實用教程讓你快速入門FreeRTOS帶你了解了1.認識操作系統 2.輕松上手RTOS 3.
    發表于 09-12 16:51 ?275次下載
    什么是<b class='flag-5'>操作系統</b>?<b class='flag-5'>FreeRTOS</b>中文實用教程讓你快速入門<b class='flag-5'>FreeRTOS</b>

    嵌入式實時操作系統FreeRTOS在ARM7上移植實現

    嵌入式實時操作系統FreeRTOS在ARM7上移植實現(嵌入式開發工程師待遇)-嵌入式實時操作系統Fre
    發表于 07-30 12:05 ?20次下載
    嵌入式<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b><b class='flag-5'>FreeRTOS</b>在ARM7上移植實現

    STM32-初學FreeRTOS操作系統

    freeRTOS實時操作系統之一,特點是多線程,采用“輪換”的方式實現“并行”的效果,操作系統內可以建立任務,每個
    發表于 12-08 14:21 ?13次下載
    STM32-初學<b class='flag-5'>FreeRTOS</b><b class='flag-5'>操作系統</b>

    FreeRTOS:一個迷你的實時操作系統內核

    ** 1、FreeRTOS** FreeRTOS是一個迷你的實時操作系統內核。作為一個輕量級的操作系統,功能包括:
    的頭像 發表于 06-29 17:15 ?966次閱讀
    <b class='flag-5'>FreeRTOS</b>:一個迷你的<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>內核

    FreeRTOS實時操作系統簡述

    FreeRTOS是一個為嵌入式系統設計的開源實時操作系統。它提供了一個多任務內核和一系列組件功能,適合在資源受限的設備上管理
    發表于 09-19 12:37 ?1724次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>簡述

    實時操作系統之RT-Thread及FreeRTOS

    RT-Thread與其他很多RTOS如FreeRTOS的主要區別之一是,它不僅僅是一個實時內核,還具備豐富的中間層組件,如下圖所示。FreeRTOS和RT-Thread是兩種常見的嵌入式實時
    的頭像 發表于 05-29 08:10 ?3625次閱讀
    <b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>之RT-Thread及<b class='flag-5'>FreeRTOS</b>