版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、FreeRTOS學(xué)習(xí)之六:互斥量前提:默認已經(jīng)裝好MDK V5和STM32CubeMX,并安裝了STM32F1xx系列的支持包。硬件平臺:STM32F1xx系列。目的:學(xué)習(xí)互斥量的使用。多任務(wù)系統(tǒng)中存在一種潛在的風(fēng)險。當(dāng)一個任務(wù)在使用某個資源的過程中,即還沒有完全結(jié)束對資源的訪問時,便被切出運行態(tài),使得資源處于非一致,不完整的狀態(tài)。如果這個時候有另一個任務(wù)或者中斷來訪問這個資源,則會導(dǎo)致數(shù)據(jù)損壞或是其它相似的錯誤。考慮如下情形,有兩個任務(wù)都試圖往一個 LCD 中寫數(shù)據(jù):· 任務(wù) A 運行,并往串口寫字符串“Hello world”。· 任務(wù) A 被任務(wù) B 搶占,但此時字符
2、串才輸出到“Hello w”。· 任務(wù) B 往串口寫“Abort, Retry, Fail?”,然后進入阻塞態(tài)。· 任務(wù) A 從被搶占處繼續(xù)執(zhí)行,完成剩余的字符輸出“orld”?,F(xiàn)在串口接收端收到的是被破壞了的字符串“Hello wAbort, Retry, Fail?orld”。本文例子將再現(xiàn)上述問題,并用互斥量解決該問題。本文例子使用STM32CubeMX配置創(chuàng)建兩個任務(wù),一個任務(wù)連續(xù)發(fā)送字符串“Hello world!”,另一個連續(xù)發(fā)送字符串“Abort, Retry, Fail?”。Step1.打開STM32CubeMX,點擊“New Project”,選擇芯片型號
3、,STM32F103RBTx。Step2.配置時鐘引腳。Step3.配置USART1為異步串口。Step4.將系統(tǒng)時基源改為TIM4。Step5.使能FreeRTOS。Step6.配置時鐘樹。8M輸入時,通過PLL得到72M內(nèi)部時鐘。Step7.配置串口參數(shù),使用默認值即可。Step8.配置FreeRTOS。在Tasks and Queues選項卡,默認配置了一個名為defaultTask的任務(wù),其優(yōu)先級為普通,任務(wù)堆棧大小為128字,任務(wù)函數(shù)名為StartDefaultTask。雙擊藍色的地方,彈出對話框,將任務(wù)名修改為Hello,將任務(wù)函數(shù)名修改為HelloTask。點擊Add按鈕,增加一
4、個任務(wù)Abort,優(yōu)先級設(shè)置為Normal,函數(shù)名為AbortTask。在Timers and Semaphores選項卡,添加互斥量myMutex01。注:其他的都使用默認參數(shù)。Step9.生成代碼。等完成后直接打開工程。工程基本組織結(jié)構(gòu)如下圖,其中Application/User組中的文件是用戶可以修改的,而其他組中的文件一般不進行修改。Step10.分析程序結(jié)構(gòu)。在進入main函數(shù)之前,先定義了幾個變量,聲明了幾個函數(shù)。再看main函數(shù)。將main函數(shù)整理,刪除很多注釋之后,得到下圖所示內(nèi)容。其中第部分,是硬件配置;第部分,創(chuàng)建了一個互斥量和兩個任務(wù);第部分,啟動調(diào)度器。Step11.添加代碼。先實現(xiàn)一個串口打印字符串的函數(shù):要特別說明的是,因為HAL_UART_Transmit()函數(shù)本身使用了硬件鎖來避免串口共享沖突,所以在此使用了osDelay()函數(shù),目的是人為制造UART共享沖突,以模擬多任務(wù)系統(tǒng)中資源共享沖突的情況。在此因為用到了strlen()函數(shù),所以要在main文件中包含頭文件string.h。在兩個任務(wù)函數(shù)中分別添加功能代碼。Step12.編譯下載運行。通過串口調(diào)試助手接收MCU發(fā)送的數(shù)據(jù),下圖是一種可能的結(jié)果。Step13.用互斥量解決共享沖突。在實際應(yīng)用中,比如使用LCD輸出顯示,就可能會遇到上述的共享沖突情況。把串口打印字符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理銷售協(xié)議范文
- 企業(yè)技術(shù)部年終工作總結(jié)
- 中職學(xué)生學(xué)期個人總結(jié)
- DB12T 533-2014 公共服務(wù)單位服務(wù)標(biāo)準(zhǔn)體系標(biāo)準(zhǔn)編號規(guī)則
- 中秋節(jié)晚會領(lǐng)導(dǎo)致辭(20篇)
- 畢業(yè)的實習(xí)報告六篇
- 文書模板-解除流轉(zhuǎn)合同
- 影響肉質(zhì)的營養(yǎng)因素
- 部編版歷史九年級上冊第七單元 第20課《第一次 工業(yè)革命》說課稿
- 普寧市勤建學(xué)校九年級上學(xué)期語文第一次月考試卷
- 幼兒園老師說課培訓(xùn)課件
- 房貸延期代理合同(2篇)
- 海洋研學(xué)勞動課程設(shè)計
- 2024江蘇省沿海開發(fā)集團限公司招聘23人高頻難、易錯點500題模擬試題附帶答案詳解
- 林業(yè)基礎(chǔ)知識考試題庫單選題100道及答案解析
- 2024年計算機二級WPS考試題庫380題(含答案)
- 22G101三維彩色立體圖集
- 大學(xué)生安全文化智慧樹知到期末考試答案章節(jié)答案2024年中南大學(xué)
- 人教版小學(xué)英語單詞表(完整版)
- 《短視頻拍攝與制作》課件-3短視頻拍攝的三大技巧
- 【川教版】《生命 生態(tài) 安全》四上第11課《預(yù)防流感》課件
評論
0/150
提交評論