任務與任務之間通訊,多個任務可以共享一個全局變量,但是此全局變量的寫操作只能由一個任務完成,其余任務只能多此全局變量進行讀操作。
如果多個任務對這個全局變量寫操作時,由于FreeRTOS的任務實時性,比如此變量的值為100,兩個任務會同時獲取到這個值,對他進行加減操作。
這樣這個變量的值就會不正確。
這就是競爭冒險關系 此共享的全局變量類型必須是CPU類型的通道。
比如ESP32是32bit(4字節(jié))單片機,此全局變量類型必須是int和long類型。
示例如下:
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
cpu
+關注
關注
68文章
10829瀏覽量
211193 -
FreeRTOS
+關注
關注
12文章
483瀏覽量
62018 -
ESP32
+關注
關注
18文章
960瀏覽量
17114
原文標題:任務與任務之間通訊一(共享全局變量)
文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
freertos最多支持多少個任務
FreeRTOS是一個輕量級的實時操作系統(tǒng)(RTOS),其設計初衷就是為了提供簡單、可靠且高效的實時任務管理。關于FreeRTOS最多支持多少個任務的問題,實際上并沒有一個固定的上限,
如何使用freeRTOS在兩個任務之間傳輸任務數據?
/溫度。 我想創(chuàng)建一個 CSV 文件來記錄一段時間內的數據。
我創(chuàng)建 I2C 任務的方法與示例中的 emFIlesystem 任務相同。 兩者都在運行,做著它們應該做的事情,但我覺得它們之間沒有任何聯(lián)系
發(fā)表于 07-03 07:55
請問一下FREERTOS只能創(chuàng)建4個任務,修改哪個宏定義可以增加創(chuàng)建任務的數量?
請問一下FREERTOS只能創(chuàng)建4個任務,修改哪個宏定義可以增加創(chuàng)建任務的數量?解決方法:增加FREERTOS的堆。
發(fā)表于 05-13 06:44
用STM32CubeMX中的FreeRTOS創(chuàng)建3任務無法運行的原因?
用STM32CubeMX中的FreeRTOS 創(chuàng)建3任務 Task Priority =osPrioirityNoral 等級的任務,無法運行。 如果創(chuàng)建2個任務就可以。2個以上都不行
發(fā)表于 05-09 07:02
用的cube生成的freertos工程,串口和任務通過郵箱通訊,結果任務反應很慢是怎么回事?
初學freertos。用的cube生成的freertos工程,單片機型號位stm32f103vbt6。
建了三個人物,一個是串口任務,一個是LED每秒翻轉一次,一個是空任務。
串口
發(fā)表于 05-08 08:13
freertos系統(tǒng)如何劃分任務?
正在看freertos方面的教程,想請教下如何劃分任務?
比如之前做的一個數據采集板,用到了單片機以下功能:
1,單片機通過SPI1和ADC芯片通訊,同時還要通過SPI控制ADC電路部分的其他外圍
發(fā)表于 05-08 07:16
freertos如何周期性的執(zhí)行一個任務,比如200ms調用一次任務, 用定時器發(fā)消息?
freertos如何周期性的執(zhí)行一個任務,比如200ms調用一次任務, 用定時器發(fā)消息?有沒有一個函數能直接實現
發(fā)表于 05-07 08:21
FreeRTOS系統(tǒng)使用xTaskCreate產生的任務與osThreadDef 產生的線程有什么不同?
請教下是要 FreeRTOS系統(tǒng), 使用 xTaskCreate 產生的任務 與 osThreadDef產生的線程有什么不同?
發(fā)表于 04-29 07:20
freertos任務創(chuàng)建,每一個任務分配的內存是多大才好,怎么計算呢?
小白剛剛接觸freertos,想問一下就創(chuàng)建任務而言,每一個任務分配的內存是多大才好,怎么計算呢?
另外,每個任務的執(zhí)行周期怎么確定?在任務
發(fā)表于 04-23 06:39
為什么CubeMX設計的FreeRTOS工程只能正常運行3個任務?
用CubeMX4.20設計的FreeRTOS工程有六個任務,出一個任務優(yōu)先級較低外,另外幾個都是較高優(yōu)先級。發(fā)現只有3個任務是正常運行的,還有三個沒有運行的跡象。用斷點跟蹤法在
發(fā)表于 04-19 08:23
freertos串口接收數據后如何發(fā)送給任務?
正在學freertos。串口中斷接收一幀數據后,放到數組里,如何將數據發(fā)送給任務呢?
如果用消息隊列,是否建立的消息隊列需要是數組類型的?還是說消息列表建立成uint8類型的,列表長度設為接收數據
發(fā)表于 04-18 06:36
FreeRTOS里在中斷中掛起任務出錯的原因?怎么解決?
各位大佬,新手剛學習FreeRTOS,現在想在中斷中掛起某個任務,我在教程里看到說有中斷中的恢復函數xTaskResumeFromISR,但是沒有在中斷中的掛起函數,我搜了一下,有人說直接用
發(fā)表于 04-16 08:26
FreeRTOS的任務無故進入掛起狀態(tài)的原因?
請教大家一個問題,我子啊使用FreeRTOS的時候創(chuàng)建了一個以太網的任務,任務在使用的過程中被無故掛起,請問一下出現這種現象有哪幾種原因呢?
發(fā)表于 04-09 07:20
無法在AURIX? Development Studio中調試freeRTOS任務怎么解決?
我們正在開發(fā) AURIX? TriCore? TC389 控制器。
你能否建議需要使用哪個 RTOS 以及首選 IDE調試器來進行開發(fā)過程?
此外,我無法在 AURIX? Development Studio 中調試 freeRTOS 任務。 我們如何調試?
發(fā)表于 01-18 07:41
評論