在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何讓RTOS多任務訪問同一個UART?

strongerHuang ? 來源:strongerHuang ? 作者:strongerHuang ? 2021-03-12 17:18 ? 次閱讀

RTOS多任務編程的時候,同一個硬件(比如UARTI2C等)被多個任務訪問的情況比較多,如果不合理處理,就會導致“混亂”的局面。 處理“混亂”局面的方法比較多,下面基于FreeRTOS,以UART為例講講常見的互斥、隊列這兩種方法。

1

互斥訪問方法互斥量:是一個可以處于兩態之一的變量:解鎖和加鎖。 原理:創建一個互斥量,任務A在需要占用資源(使用UART發送數據),把資源(UART)占用。此時,任務B及其他任務就不能占用該資源。當任務A使用完資源(UART發送完數據),釋放資源,其他任務就可以搶占該資源。

創建互斥量 任務A占用資源 使用資源(發送數據) 任務A釋放資源 優先級高的任務B占用資源 使用資源 任務B釋放資源 依次,優先級任務占用資源 · · ·

代碼:

//創建互斥量資源SemaphoreHandle_t xSemaphore = NULL;xSemaphore = xSemaphoreCreateMutex(); void TaskA(void *pvParameters){ for(;;) { //占用資源 if(xSemaphoreTake(xSemaphore, 10 ) == pdTRUE) { //使用資源(發送數據) USART_SendNByte(); //釋放資源 xSemaphoreGive(xSemaphore); } }} 信號量與互斥量區別:信號量:多個任務同步使用某個資源; 一個任務完成某個動作后通過信號告訴別的任務,別的任務才可以執行某些動作; 互斥量:多任務互斥使用某個資源; 一個任務占用某個資源,那么別的任務就無法訪問,直到該任務離開,其他任務才可以訪問該資源;

2

隊列操作方法隊列操作方法就是FIFO,先入先出的原理。比如:任務A要使用UART發送一串數據,將其加入隊列; 接著任務B也要使用UART發送一串數據。 那么,任務A將這串數據加入隊列,接著任務B又將要發送的一串數據加入隊列。 在另外一個UART發送的任務中,從隊列中按照FIFO方式讀取隊列里面的數據,依次發送出去即可。

創建一個隊列(發送數據隊列) 創建一個任務(UART發送數據任務) 任務A加入隊列 任務B加入隊列 · · · 另外一邊的任務,依次讀取隊列數據,使用UART發送出去。

代碼:

QueueHandle_t xQueue;xQueue = xQueueCreate(QUEUE_LENGTH, QUEUE_ITEM_SIZE); xTaskCreate(UART_Send_Task, “UART_Send”, STACK_SIZE, NULL, TASK_PRIORITY, NULL); void TaskA(void *pvParameters){ for(;;) { //任務相關操作 //加入隊列 xQueueSend(xQueue, &TaskA_Buf, 10) }} void TaskB(void *pvParameters){ for(;;) { //任務相關操作 //加入隊列 xQueueSend(xQueue, &TaskB_Buf, 10) }} void UART_Send_Task(void *pvParameters){ for(;;) { //循環讀取隊列BUF if(xQueueReceive(xQueue, &Buf, 10) == pdTRUE) { USART_SendNByte(&Buf); } }}

以上兩種方法比較常用,也比較簡單,希望對大家有幫助。

提示:代碼僅供學習理解原理,在項目中需要結合實際情況增、刪、修改代碼。

原文標題:RTOS多任務訪問同一個UART的方法

文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3685

    瀏覽量

    94917
  • RTOS
    +關注

    關注

    24

    文章

    844

    瀏覽量

    120819

原文標題:RTOS多任務訪問同一個UART的方法

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    快速入門——LuatOS:sys庫多任務管理實戰攻略!

    的開發者,這里將用最簡明的步驟,助你輕松實現多任務應用開發! sys庫是LuatOS的核心系統調度庫,它基于Lua協程機制實現了實時多任務調度、定時器管理以及消息通信等功能。 在詳細介紹sys庫之前,我們先來補充些關于實時操作
    的頭像 發表于 05-29 14:36 ?121次閱讀
    快速入門——LuatOS:sys庫<b class='flag-5'>多任務</b>管理實戰攻略!

    請問如何在同一個FX3上實現兩GPIF接口?

    我們按照 AN75779 應用說明在 FX3 上成功實現了自定義圖像傳感器接口。 現在我們想添加另一個 GPIF 接口,這將允許同一個 FX3 設備從 FPGA 接收數據并發送到 USB 主機,但不
    發表于 05-13 06:35

    啟用了同一個攝像頭的3vicap通道和3venc通道遇到的疑問求解

    我啟用了同一個攝像頭的3vicap通道和3venc通道 他們一一進行了系統綁定 CSI2 -- vicap0 -- venc0 h264編碼 網絡推流使用 CSI2 -- vicap1
    發表于 04-28 06:16

    stm32同一個定時器不同的通道,可以不同時的輸出pwm波形嗎?

    請問,stm32的同一個定時器,不同的通道,可以不同時的輸出pwm波形嗎?比如tim1的ch1輸出,延時幾毫秒后tim1的ch2輸出。 現在是要輸出兩相位不同的pwm波形,延時時間、頻率、占空比
    發表于 03-07 08:20

    RTOS中的本地存儲指針使用

    本地存儲指針是RTOS中的重要特性,增強了任務管理和數據處理能力。在RTOS上下文中,本地存儲是指存儲在本地的特定
    的頭像 發表于 02-28 16:33 ?855次閱讀
    <b class='flag-5'>RTOS</b>中的本地存儲指針使用

    同一個74AHC138控制輸出的8GPIO口是可以同時輸出的嗎?

    前端DSP沒有足夠的GPIO口來驅動4IC:TPS7A8300,現在想使用SN74AHC138來使GPIO口由3復用為8 請問,同一個74AHC138控制輸出的8
    發表于 01-23 06:41

    使用任務通知提高RTOS應用的效率

    在實時嵌入式系統中,性能和資源效率是決定設計成敗的關鍵因素。傳統的實時操作系統(RTOS)提供了如隊列、信號量和事件組機制,實現任務之間的同步和通信。FreeRTOS/SAFERTOS還提供種方法可以使這些過程更快、更輕量化,
    的頭像 發表于 12-27 14:54 ?629次閱讀

    同一個I2C總線,能帶多少片相同的ADS1115芯片?

    請問:同一個I2C總線,能帶多少片相同的ADS1115芯片,謝謝了!!!那個地址沒看明白!!怎么操作??
    發表于 12-27 06:45

    請問ULN2003同一個芯片不同輸出端能接不同的上拉電平嗎?

    ULN2003同一個芯片不同輸出端能接不同的上拉電平嗎?
    發表于 12-16 06:29

    AFE4420的tx通道和pd通道是必須使用同一個芯片上的嗎?

    你好,想請問下4420的tx通道和pd通道是必須使用同一個芯片上的嗎?可不可以使用片子的tx通道控制led,另一個片子的pd通道進行
    發表于 11-28 07:30

    LV和組態王上位機軟件在同一電腦通過網線讀寫同一個PLC失敗

    問題:LV和組態王上位機軟件在同一電腦通過同一個網卡、同一根網線和IP讀寫同一個PLC失敗 PLC型號:西門子S7-200 smart 現狀:非標設備自帶組態王上位機軟件,因整條產線有
    發表于 10-18 08:26

    大家好,請教恒流源芯片并聯使用接同一個LED的問題

    大家好,請教個問題,如果三路同款恒流源芯片都設定為1A的輸出電流,三路并聯,然后接同一個LED,那流過LED的實際電流是多少呢每路恒流源芯片的實際輸出電流是多少呢假設是理想情況下。 如果兩路同款
    發表于 10-12 09:39

    運放的帶寬與運放的單位增益帶寬是同一個概念嗎?

    運放的帶寬與運放的單位增益帶寬是同一個概念嗎?
    發表于 09-04 06:18

    freertos和rtos區別是什么

    RTOS 的主要特點是實時性、多任務處理、資源管理、中斷處理等。 FreeRTOS 是開源的實時操作系統,由英
    的頭像 發表于 09-02 14:18 ?2715次閱讀

    簡單認識RTOS實時操作系統

    RTOS(Real Time Operating System,實時操作系統)是種專門設計用于在嚴格時間限制內處理任務的操作系統。它以其高實時性、多任務處理能力和資源管理能力在工業自
    的頭像 發表于 08-20 11:20 ?4896次閱讀
    主站蜘蛛池模板: 亚洲香蕉毛片久久网站老妇人 | 成人欧美精品大91在线 | 日本黄色免费在线观看 | 四虎永久影院永久影库 | 色性综合 | 成人黄色免费网站 | 亚洲第八页 | 色爱区综合 | 亚洲黄站 | 荡女妇边被c边呻吟久久 | 天天综合射 | 夜夜骑首页 | 国产精品欧美精品国产主播 | 久久久久综合中文字幕 | 免费爱做网站在线看 | 天天鲁天天爽精品视频 | 色多多在线观看播放 | 美女性爽视频国产免费 | aaaa日本| 日韩性xxx| 他也色在线视频 | 国模在线| 在线播放网址 | 色噜噜狠狠色综合欧洲 | 国语自产拍在线观看7m | 午夜在线影院 | 日本免费黄色 | 五月天六月丁香 | 国产精品一久久香蕉产线看 | 一级片一级片一级片 | 狠狠做深爱婷婷久久一区 | 岛国大片在线播放 | 亚洲欧美一区二区三区在线播放 | 波多野结衣在线观看一区二区三区 | vip免费观看 | 四虎永久精品免费网址大全 | 久久精品女人天堂 | 特级毛片永久久免费观看 | 窝窝午夜在线观看免费观看 | 在线看片地址 | 韩国黄色三级视频 |