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

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

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

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

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

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

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

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

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

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

創(chuàng)建2個事件

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

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

Semaphore Name:信號量名稱

Count:計數(shù)信號量的最大值

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

Conrol Block Name:控制塊名稱

生成代碼之后任務(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"
};

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

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

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

我們改寫代碼,實(shí)現(xiàn)task2往task發(fā)送信號,實(shí)現(xià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就是往某個任務(wù)的句柄發(fā)送一個信號,實(shí)現(xiàn)如下

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




審核編輯:劉清

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

    關(guān)注

    0

    文章

    39

    瀏覽量

    11825
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61724

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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