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