任務與任務之間通訊,多個任務可以共享一個全局變量,但是此全局變量的寫操作只能由一個任務完成,其余任務只能多此全局變量進行讀操作。
如果多個任務對這個全局變量寫操作時,由于FreeRTOS的任務實時性,比如此變量的值為100,兩個任務會同時獲取到這個值,對他進行加減操作。
這樣這個變量的值就會不正確。
這就是競爭冒險關(guān)系 此共享的全局變量類型必須是CPU類型的通道。
比如ESP32是32bit(4字節(jié))單片機,此全局變量類型必須是int和long類型。
示例如下:



審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
原文標題:任務與任務之間通訊一(共享全局變量)
文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
相關(guān)推薦
在實時嵌入式系統(tǒng)中,性能和資源效率是決定設(shè)計成敗的關(guān)鍵因素。傳統(tǒng)的實時操作系統(tǒng)(RTOS)提供了如隊列、信號量和事件組機制,實現(xiàn)任務之間的同步和通信。FreeRTOS/SAFERTOS還提供一種方法可以使這些過程更快、更輕量化,
發(fā)表于 12-27 14:54
?421次閱讀
FreeRTOS是一個輕量級的實時操作系統(tǒng)(RTOS),其設(shè)計初衷就是為了提供簡單、可靠且高效的實時任務管理。關(guān)于FreeRTOS最多支持多少個任務的問題,實際上并沒有一個固定的上限,
發(fā)表于 09-02 14:21
?1442次閱讀
/溫度。 我想創(chuàng)建一個 CSV 文件來記錄一段時間內(nèi)的數(shù)據(jù)。
我創(chuàng)建 I2C 任務的方法與示例中的 emFIlesystem 任務相同。 兩者都在運行,做著它們應該做的事情,但我覺得它們之間沒有任何聯(lián)系
發(fā)表于 07-03 07:55
請問一下FREERTOS只能創(chuàng)建4個任務,修改哪個宏定義可以增加創(chuàng)建任務的數(shù)量?解決方法:增加FREERTOS的堆。
發(fā)表于 05-13 06:44
用STM32CubeMX中的FreeRTOS 創(chuàng)建3任務 Task Priority =osPrioirityNoral 等級的任務,無法運行。 如果創(chuàng)建2個任務就可以。2個以上都不行
發(fā)表于 05-09 07:02
初學freertos。用的cube生成的freertos工程,單片機型號位stm32f103vbt6。
建了三個人物,一個是串口任務,一個是LED每秒翻轉(zhuǎn)一次,一個是空任務。
串口
發(fā)表于 05-08 08:13
正在看freertos方面的教程,想請教下如何劃分任務?
比如之前做的一個數(shù)據(jù)采集板,用到了單片機以下功能:
1,單片機通過SPI1和ADC芯片通訊,同時還要通過SPI控制ADC電路部分的其他外圍
發(fā)表于 05-08 07:16
freertos如何周期性的執(zhí)行一個任務,比如200ms調(diào)用一次任務, 用定時器發(fā)消息?有沒有一個函數(shù)能直接實現(xiàn)
發(fā)表于 05-07 08:21
在IAR中將freertos移植到STM32中,在進行任務堆棧分配時分配多大的堆棧時一個問題,如何比較方便的獲得任務堆棧呢?利用IAR這個平臺的在線調(diào)試可以嗎?怎么看,請各位大神各抒己見。
發(fā)表于 05-07 08:15
請教下是要 FreeRTOS系統(tǒng), 使用 xTaskCreate 產(chǎn)生的任務 與 osThreadDef產(chǎn)生的線程有什么不同?
發(fā)表于 04-29 07:20
小白剛剛接觸freertos,想問一下就創(chuàng)建任務而言,每一個任務分配的內(nèi)存是多大才好,怎么計算呢?
另外,每個任務的執(zhí)行周期怎么確定?在任務
發(fā)表于 04-23 06:39
用CubeMX4.20設(shè)計的FreeRTOS工程有六個任務,出一個任務優(yōu)先級較低外,另外幾個都是較高優(yōu)先級。發(fā)現(xiàn)只有3個任務是正常運行的,還有三個沒有運行的跡象。用斷點跟蹤法在
發(fā)表于 04-19 08:23
正在學freertos。串口中斷接收一幀數(shù)據(jù)后,放到數(shù)組里,如何將數(shù)據(jù)發(fā)送給任務呢?
如果用消息隊列,是否建立的消息隊列需要是數(shù)組類型的?還是說消息列表建立成uint8類型的,列表長度設(shè)為接收數(shù)據(jù)
發(fā)表于 04-18 06:36
各位大佬,新手剛學習FreeRTOS,現(xiàn)在想在中斷中掛起某個任務,我在教程里看到說有中斷中的恢復函數(shù)xTaskResumeFromISR,但是沒有在中斷中的掛起函數(shù),我搜了一下,有人說直接用
發(fā)表于 04-16 08:26
請教大家一個問題,我子啊使用FreeRTOS的時候創(chuàng)建了一個以太網(wǎng)的任務,任務在使用的過程中被無故掛起,請問一下出現(xiàn)這種現(xiàn)象有哪幾種原因呢?
發(fā)表于 04-09 07:20
評論