女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

FreeRTOS任務(wù)間通信,怎么實(shí)現(xiàn)?

技術(shù)讓夢(mèng)想更偉大 ? 來(lái)源:技術(shù)讓夢(mèng)想更偉大 ? 2023-02-23 09:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FreeRTOS 是一個(gè)可裁剪、可剝奪型的多任務(wù)內(nèi)核,十分好用,而且沒(méi)有任務(wù)數(shù)限制,在此之前分析過(guò)很多了,簡(jiǎn)單來(lái)說(shuō),F(xiàn)reeRTOS實(shí)時(shí)系統(tǒng)能夠創(chuàng)建多個(gè)獨(dú)立的任務(wù),并且任務(wù)之間互不干擾,為了這一點(diǎn)的實(shí)現(xiàn),每個(gè)任務(wù)都應(yīng)該有自己的堆??臻g。當(dāng)任務(wù)進(jìn)行切換,執(zhí)行環(huán)境則保存到該任務(wù)的堆棧中,所以,當(dāng)一段時(shí)間后切換回該任務(wù),它能夠精確地回復(fù)上次工作時(shí)的狀態(tài)。

之前也匯總了一些教程,參考精選匯總 | freertos從基礎(chǔ)到高級(jí)篇系列

FreeRTOS 提供了實(shí)時(shí)操作系統(tǒng)所需的所有功能,包括資源管理、同步、任務(wù)通信等,本篇主要說(shuō)一下任務(wù)通信,任務(wù)創(chuàng)建之后并不是一起運(yùn)行的,而是通過(guò)優(yōu)先級(jí)順序進(jìn)行任務(wù)的調(diào)用來(lái)實(shí)現(xiàn)的。

輪子也造好了,很多我們可以直接拿來(lái)用,ARM Cortex 微控制器軟件接口標(biāo)準(zhǔn)是cmsis,且是與供應(yīng)商無(wú)關(guān)的硬件抽象層,CMSIS-RTOS是實(shí)時(shí)操作系統(tǒng)的通用API,簡(jiǎn)單來(lái)說(shuō)就是將Freertos、Rtthread等操作系統(tǒng)再進(jìn)行一次封裝,形成通用的API函數(shù),目的是使移植更方便。這里我們選用接口是CMSIS_V2,之前也講到過(guò)stm32CubeIDE中CMSIS_V1和CMSIS_V2選項(xiàng)的區(qū)別。

3dc91496-b2fc-11ed-bfe3-dac502259ad0.png

首先創(chuàng)建兩個(gè)任務(wù)myTask01和myTask02,如下圖所示:

3e027d80-b2fc-11ed-bfe3-dac502259ad0.png

創(chuàng)建2個(gè)事件myEvent01,myEvent02,如下圖所示:

3e303c70-b2fc-11ed-bfe3-dac502259ad0.png

拉下來(lái)也可以配置以下信息,在此我們默認(rèn)配置計(jì)數(shù)信號(hào)量、分配方式、控制塊名稱等配置信息。

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

/*DefinitionsformyTask01*/
osThreadId_tmyTask01Handle;
constosThreadAttr_tmyTask01_attributes={
.name="myTask01",
.stack_size=128*4,
.priority=(osPriority_t)osPriorityLow,
};
...
/*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);

我們改寫代碼,實(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)以及定義如下圖所示:

3e64a050-b2fc-11ed-bfe3-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*/
}

最后就可以實(shí)現(xiàn)多個(gè)任務(wù)間的通信了。

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

    關(guān)注

    48

    文章

    7936

    瀏覽量

    154264
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9342

    瀏覽量

    376409
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6196

    瀏覽量

    137628
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    492

    瀏覽量

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

    關(guān)注

    1

    文章

    202

    瀏覽量

    31293

原文標(biāo)題:FreeRTOS 任務(wù)間通信,怎么實(shí)現(xiàn)?

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    FreeRTOS介紹與基礎(chǔ)任務(wù)創(chuàng)建

    本篇介紹FreeRTOS與基礎(chǔ)任務(wù)創(chuàng)建
    的頭像 發(fā)表于 09-26 09:00 ?3212次閱讀
    <b class='flag-5'>FreeRTOS</b>介紹與基礎(chǔ)<b class='flag-5'>任務(wù)</b>創(chuàng)建

    FreeRTOS中的任務(wù)管理

    任務(wù)FreeRTOS 中最基本的調(diào)度單元,它是一段可執(zhí)行的代碼,可以獨(dú)立運(yùn)行。FreeRTOS 中的任務(wù)是基于優(yōu)先級(jí)的搶占式調(diào)度,優(yōu)先級(jí)高的任務(wù)
    的頭像 發(fā)表于 11-27 17:03 ?1377次閱讀

    轉(zhuǎn):第27章 FreeRTOS任務(wù)消息郵箱

    本章節(jié)為大家講解FreeRTOS消息隊(duì)列(消息隊(duì)列長(zhǎng)度固定為1)的另一種實(shí)現(xiàn)方式----基于任務(wù)通知(Task Notifications)的消息隊(duì)列,這里我們將這種方式實(shí)現(xiàn)的消息隊(duì)
    發(fā)表于 09-09 07:52

    如何去實(shí)現(xiàn)基于stm32的FreeRTOS任務(wù)程序

    基于 stm32 的 FreeRTOS任務(wù)程序實(shí)現(xiàn)一、什么是FreeRTOS二、AHT20數(shù)據(jù)采集原理電路繪制三、FreeRTOS的多
    發(fā)表于 08-24 07:45

    任務(wù)通信的目的是什么

    嵌入式操作系統(tǒng)中任務(wù)之間的交互與Linux同一進(jìn)程的不同線程之間的交互完全類似,可以通過(guò)全局變量和任務(wù)通信機(jī)制兩種方法來(lái)實(shí)現(xiàn)。這種交互包括
    發(fā)表于 12-24 08:16

    請(qǐng)問(wèn)ESP32單核如何使用FreeRTOS測(cè)試隊(duì)列進(jìn)行任務(wù)通信?

    請(qǐng)問(wèn)ESP32單核如何使用FreeRTOS測(cè)試隊(duì)列進(jìn)行任務(wù)通信?
    發(fā)表于 01-14 07:12

    FreeRTOS隊(duì)列創(chuàng)建任務(wù)通信的基本應(yīng)用程序

    應(yīng)用程序 : 此代碼是 FreeRTOS 隊(duì)列創(chuàng)建任務(wù)通信的基本應(yīng)用程序 。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件: NuMaker-PFM-
    發(fā)表于 08-22 07:12

    FreeRTOS隊(duì)列創(chuàng)建任務(wù)通信的基本應(yīng)用程序

    應(yīng)用程序 : 此代碼是 FreeRTOS 隊(duì)列創(chuàng)建任務(wù)通信的基本應(yīng)用程序 。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件: NuMaker-PFM-
    發(fā)表于 08-30 07:56

    如何輕松幾步實(shí)現(xiàn)在STM32上運(yùn)行FreeRTOS任務(wù)

    輕松幾步實(shí)現(xiàn)在STM32上運(yùn)行FreeRTOS任務(wù)
    的頭像 發(fā)表于 03-01 12:07 ?8828次閱讀
    如何輕松幾步<b class='flag-5'>實(shí)現(xiàn)</b>在STM32上運(yùn)行<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>

    (一)FreeRTOS學(xué)習(xí)之FreeRTOS任務(wù)基礎(chǔ)知識(shí)

    功能,初學(xué)者必須先掌握——任務(wù)的創(chuàng)建、刪除、掛起和恢復(fù)等操作。本章節(jié)分為如下幾部分:*什么是多任務(wù)系統(tǒng)*FreeRTOS任務(wù)與協(xié)程*初次使用*任務(wù)
    發(fā)表于 12-23 19:57 ?3次下載
    (一)<b class='flag-5'>FreeRTOS</b>學(xué)習(xí)之<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>基礎(chǔ)知識(shí)

    FreeRTOS任務(wù)詳解

    詳細(xì)講解freeRTOS任務(wù)
    發(fā)表于 12-23 20:01 ?11次下載
    <b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>任務(wù)</b>詳解

    FreeRTOS系列第11篇---FreeRTOS任務(wù)控制

    FreeRTOS任務(wù)控制API函數(shù)主要實(shí)現(xiàn)任務(wù)延時(shí)、任務(wù)掛起、解除任務(wù)掛起、任務(wù)優(yōu)先級(jí)獲取和設(shè)置
    發(fā)表于 01-26 17:54 ?12次下載
    <b class='flag-5'>FreeRTOS</b>系列第11篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>控制

    freeRTOS任務(wù)

    freeRTOS系統(tǒng)的任務(wù)切換的具體過(guò)程最終都是在pendSV中斷服務(wù)函數(shù)里面完成的。
    的頭像 發(fā)表于 02-10 11:02 ?1993次閱讀
    <b class='flag-5'>freeRTOS</b>的<b class='flag-5'>任務(wù)</b>

    FreeRTOS的二值信號(hào)量

    FreeRTOS中的信號(hào)量是一種任務(wù)通信的方式,信號(hào)量包括:二值信號(hào)量、互斥信號(hào)量、計(jì)數(shù)信號(hào)量,本次實(shí)驗(yàn)只使用二值信號(hào)量。信號(hào)量用于任務(wù)
    的頭像 發(fā)表于 02-10 15:07 ?1740次閱讀

    FreeRTOS任務(wù)通知簡(jiǎn)介

    任務(wù)通知簡(jiǎn)介 任務(wù)通知在 FreeRTOS 中是一個(gè)可選的功能,要使用任務(wù)通知的話就需要將宏configUSE_TASK_NOTIFICATIONS 定義為 1。
    的頭像 發(fā)表于 07-30 11:34 ?979次閱讀