0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺析FreeRTOS實(shí)時(shí)操作系統(tǒng)的任務(wù)通信

技術(shù)讓夢(mèng)想更偉大 ? 來(lái)源:技術(shù)讓夢(mèng)想更偉大 ? 作者:李肖遙 ? 2022-10-11 09:42 ? 次閱讀

FreeRTOS 是一個(gè)可裁剪、可剝奪型的多任務(wù)內(nèi)核,而且沒(méi)有任務(wù)數(shù)限制,在此之前分析過(guò)很多。

FreeRTOS 提供了實(shí)時(shí)操作系統(tǒng)所需的所有功能,包括資源管理、同步、任務(wù)通信等,本篇主要說(shuō)一下任務(wù)通信,我們選用接口是CMSIS_V2,之前也講到過(guò)stm32CubeIDE中CMSIS_V1和CMSIS_V2選項(xiàng)的區(qū)別。

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

首先創(chuàng)建兩個(gè)任務(wù)

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

創(chuàng)建2個(gè)事件

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

拉下來(lái)也可以配置以下信息,在此我們默認(rèn)配置

Semaphore Name:信號(hào)量名稱(chēng)

Count:計(jì)數(shù)信號(hào)量的最大值

Allocation:分配方式:Dynamic 動(dòng)態(tài)內(nèi)存創(chuàng)建

Conrol Block Name:控制塊名稱(chēng)

生成代碼之后任務(wù)和事件如下

/*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"
};

這個(gè)是創(chuàng)建任務(wù)的句柄

/*creationofmyTask01*/
myTask01Handle=osThreadNew(StartTask01,NULL,&myTask01_attributes);

/*creationofmyTask02*/
myTask02Handle=osThreadNew(StartTask02,NULL,&myTask02_attributes);

我們改寫(xiě)代碼,實(shí)現(xiàn)task2往task發(fā)送信號(hào),實(shí)現(xiàn)簡(jiǎn)單的任務(wù)通信。

/*USERCODEENDHeader_StartTask01*/
voidStartTask01(void*argument)
{
/*USERCODEBEGINStartTask01*/
/*Infiniteloop*/
osStatus_tos_Status;

while(1)
{
os_Status=osEventFlagsWait(myTask02Handle,/*事件標(biāo)志組ID*/
COMM2_EVENT,/*等待事件標(biāo)志位0與事件標(biāo)志位1*/
osFlagsWaitAny,/*邏輯或*/
osWaitForever/*一直等待*/
);
if(os_Status==COMM1_EVENT)
{
printf("startTask02isrunning.
");
}
}
/*USERCODEENDStartTask01*/
}

/*USERCODEBEGINHeader_StartTask02*/

osEventFlagsWait函數(shù)的具體實(shí)現(xiàn)以及定義如下

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

osEventFlagsSet就是往某個(gè)任務(wù)的句柄發(fā)送一個(gè)信號(hào),實(shí)現(xiàn)如下

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




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • CMSIS
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    12023
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62815

原文標(biāo)題:freeRTOS 任務(wù)通信簡(jiǎn)介

文章出處:【微信號(hào):技術(shù)讓夢(mèng)想更偉大,微信公眾號(hào):技術(shù)讓夢(mèng)想更偉大】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FreeRTOS嵌入式實(shí)時(shí)操作系統(tǒng)

      1 FreeRTOS操作系統(tǒng)功能   作為一個(gè)輕量級(jí)的操作系統(tǒng),FreeRTOS提供的功能包括:任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、
    發(fā)表于 07-06 11:07 ?6617次閱讀
    <b class='flag-5'>FreeRTOS</b>嵌入式<b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b>

    實(shí)時(shí)操作系統(tǒng)FreeRTOS移植教程

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

    【案例分享】FreeRTOS的嵌入式實(shí)時(shí)操作系統(tǒng)的實(shí)現(xiàn)

    FreeRTOS是一個(gè)源碼公開(kāi)的免費(fèi)的嵌入式實(shí)時(shí)操作系統(tǒng),通過(guò)研究其內(nèi)核可以更好地理解嵌入式操作系統(tǒng)的實(shí)現(xiàn)原理.本文主要闡述FreeRTOS
    發(fā)表于 07-23 04:30

    請(qǐng)問(wèn)freertos是硬實(shí)時(shí)操作系統(tǒng)嗎?

    freertos是硬實(shí)時(shí)操作系統(tǒng)嗎?都有哪些硬實(shí)時(shí)操作系統(tǒng)?。?/div>
    發(fā)表于 06-13 09:00

    FreeRTOS實(shí)時(shí)操作系統(tǒng)

    FreeRTOS實(shí)時(shí)操作系統(tǒng),Nabto正在努力建立一個(gè)強(qiáng)大的FreeRTOS + Nabto組合的解決方案。我們最新推出AppMyProduct應(yīng)用平臺(tái)可幫助您快速開(kāi)發(fā)遠(yuǎn)程控制設(shè)備
    發(fā)表于 08-04 07:58

    為什么要在單片機(jī)中使用實(shí)時(shí)任務(wù)操作系統(tǒng)

    為什么要在單片機(jī)中使用實(shí)時(shí)任務(wù)操作系統(tǒng)該視頻在113分10秒之后,講了實(shí)時(shí)操作系統(tǒng)的使用價(jià)值。老師講得非常好,我就不過(guò)多贅述了。(這個(gè)視頻
    發(fā)表于 08-24 06:02

    嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS基本概述

    嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS基本概述在嵌入式領(lǐng)域當(dāng)中,實(shí)時(shí)操作系統(tǒng)的應(yīng)用越來(lái)越廣泛了,目前嵌入式
    發(fā)表于 02-16 07:12

    關(guān)于實(shí)時(shí)操作系統(tǒng)任務(wù)通信的一種方法

    關(guān)于實(shí)時(shí)操作系統(tǒng)任務(wù)通信的一種方法
    發(fā)表于 09-03 11:45 ?3次下載
    關(guān)于<b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b>中<b class='flag-5'>任務(wù)</b>間<b class='flag-5'>通信</b>的一種方法

    基于FreeRTOS的嵌入式實(shí)時(shí)操作系統(tǒng)的原理和實(shí)現(xiàn)

    FreeRTOS是一個(gè)源碼公開(kāi)的免費(fèi)的嵌入式實(shí)時(shí)操作系統(tǒng),通過(guò)研究其內(nèi)核可以更好地理解嵌入式操作系統(tǒng)的實(shí)現(xiàn)原理.本文主要闡述FreeRTOS
    發(fā)表于 11-18 03:34 ?6782次閱讀

    什么是操作系統(tǒng)?FreeRTOS中文實(shí)用教程讓你快速入門(mén)FreeRTOS

    本文檔的主要內(nèi)容詳細(xì)介紹的是什么是操作系統(tǒng)?FreeRTOS中文實(shí)用教程讓你快速入門(mén)FreeRTOS帶你了解了1.認(rèn)識(shí)操作系統(tǒng) 2.輕松上手RTOS 3.
    發(fā)表于 09-12 16:51 ?276次下載
    什么是<b class='flag-5'>操作系統(tǒng)</b>?<b class='flag-5'>FreeRTOS</b>中文實(shí)用教程讓你快速入門(mén)<b class='flag-5'>FreeRTOS</b>

    嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS在A(yíng)RM7上移植實(shí)現(xiàn)

    嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS在A(yíng)RM7上移植實(shí)現(xiàn)(嵌入式開(kāi)發(fā)工程師待遇)-嵌入式實(shí)時(shí)操作系統(tǒng)Fre
    發(fā)表于 07-30 12:05 ?21次下載
    嵌入式<b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>FreeRTOS</b>在A(yíng)RM7上移植實(shí)現(xiàn)

    STM32-初學(xué)FreeRTOS操作系統(tǒng)

    freeRTOS實(shí)時(shí)操作系統(tǒng)之一,特點(diǎn)是多線(xiàn)程,采用“輪換”的方式實(shí)現(xiàn)“并行”的效果,操作系統(tǒng)內(nèi)可以建立任務(wù),每個(gè)
    發(fā)表于 12-08 14:21 ?14次下載
    STM32-初學(xué)<b class='flag-5'>FreeRTOS</b><b class='flag-5'>操作系統(tǒng)</b>

    FreeRTOS:一個(gè)迷你的實(shí)時(shí)操作系統(tǒng)內(nèi)核

    ** 1、FreeRTOS** FreeRTOS是一個(gè)迷你的實(shí)時(shí)操作系統(tǒng)內(nèi)核。作為一個(gè)輕量級(jí)的操作系統(tǒng),功能包括:
    的頭像 發(fā)表于 06-29 17:15 ?1112次閱讀
    <b class='flag-5'>FreeRTOS</b>:一個(gè)迷你的<b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b>內(nèi)核

    FreeRTOS實(shí)時(shí)操作系統(tǒng)簡(jiǎn)述

    FreeRTOS是一個(gè)為嵌入式系統(tǒng)設(shè)計(jì)的開(kāi)源實(shí)時(shí)操作系統(tǒng)。它提供了一個(gè)多任務(wù)內(nèi)核和一系列組件功能,適合在資源受限的設(shè)備上管理
    發(fā)表于 09-19 12:37 ?1986次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b>簡(jiǎn)述

    實(shí)時(shí)操作系統(tǒng)之RT-Thread及FreeRTOS

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