![STM32CubeMX+FreeRTOS學(xué)習(xí)[2]-二值信號量(Lu)WORD_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/96fa6dc2-4008-4130-83b4-8b69c51d8c84/96fa6dc2-4008-4130-83b4-8b69c51d8c841.gif)
![STM32CubeMX+FreeRTOS學(xué)習(xí)[2]-二值信號量(Lu)WORD_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/96fa6dc2-4008-4130-83b4-8b69c51d8c84/96fa6dc2-4008-4130-83b4-8b69c51d8c842.gif)
![STM32CubeMX+FreeRTOS學(xué)習(xí)[2]-二值信號量(Lu)WORD_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/96fa6dc2-4008-4130-83b4-8b69c51d8c84/96fa6dc2-4008-4130-83b4-8b69c51d8c843.gif)
![STM32CubeMX+FreeRTOS學(xué)習(xí)[2]-二值信號量(Lu)WORD_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/96fa6dc2-4008-4130-83b4-8b69c51d8c84/96fa6dc2-4008-4130-83b4-8b69c51d8c844.gif)
![STM32CubeMX+FreeRTOS學(xué)習(xí)[2]-二值信號量(Lu)WORD_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/28/96fa6dc2-4008-4130-83b4-8b69c51d8c84/96fa6dc2-4008-4130-83b4-8b69c51d8c845.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、文檔可能無法思考全面,請瀏覽后下載! FreeRTOS學(xué)習(xí)之二:二值信號量前提:默認(rèn)已經(jīng)裝好MDK V5和STM32CubeMX,并安裝了STM32F1xx系列的支持包。硬件平臺:STM32F1xx系列。目的:學(xué)習(xí)使用二值信號量進(jìn)行任務(wù)同步。二值信號量主要用于任務(wù)的同步。本文例子使用STM32CubeMX配置創(chuàng)建兩個任務(wù),一個任務(wù)每秒鐘發(fā)送一次信號量,另一個等待信號量并控制LED的輸出狀態(tài)。Step1.打開STM32CubeMX,點擊“New Project”,選擇芯片型號,STM32F103RBTx。Step2.配置時鐘引腳。Step3.配置PA8和PD2為Output,并把用戶標(biāo)簽分別改為
2、LED0,LED1。7 / 7Step4.將系統(tǒng)時基源改為TIM4。Step5.使能FreeRTOS。Step6.配置時鐘樹。8M輸入時,通過PLL得到72M內(nèi)部時鐘。Step7.配置FreeRTOS。在Tasks and Queues選項卡中,默認(rèn)配置了一個名為defaultTask的任務(wù),其優(yōu)先級為普通,任務(wù)堆棧大小為128字,任務(wù)函數(shù)名為StartDefaultTask。雙擊藍(lán)色的地方,彈出對話框,將任務(wù)名修改為Periodic,將任務(wù)函數(shù)名修改為PeriodicTask。點擊Add按鈕,增加一個任務(wù)Handle,優(yōu)先級設(shè)置為Normal,函數(shù)名為HandleTask。在Timers a
3、nd Semaphores選項卡,點擊Binary Semaphores項右邊的“Add”按鈕,添加一個信號量,名稱改為bSem01。注:該步驟中,除了添加任務(wù)和信號量,其他的都使用默認(rèn)參數(shù)。Step8.生成代碼。等完成后直接打開工程。工程基本組織結(jié)構(gòu)如下圖,其中Application/User組中的文件是用戶可以修改的,而其他組中的文件一般不進(jìn)行修改。Step9.分析程序結(jié)構(gòu)。在進(jìn)入main函數(shù)之前,先定義了幾個變量,聲明了幾個函數(shù)。再看main函數(shù)。將main函數(shù)整理,刪除很多注釋之后,得到下圖所示內(nèi)容。其中第部分,是硬件配置;第部分,創(chuàng)建一個信號量和兩個任務(wù);第部分,啟動調(diào)度器。啟動調(diào)度
4、器后,程序就由FreeRTOS的調(diào)度器管理了,后面的while(1)是不會執(zhí)行到的。Step10.添加代碼。在main.c文件中,找到前面配置添加的兩個任務(wù)函數(shù),并在其中分別添加代碼。PeriodicTask的功能是,每1秒鐘發(fā)送一次信號量。HandleTask的功能的,等待信號量,然后翻轉(zhuǎn)LED0和LED1的輸出狀態(tài)。Step11.編譯下載運行。LED0和LED1分別閃爍,周期都是2秒。程序分析:1.分析語句:osSemaphoreDef(bSem01);和osThreadDef()類似,osSemaphoreDef()并不是一個函數(shù),而是一個宏。其定義在cmsis_os.h文件中,作用是定
5、義一個osSemaphoreDef_t結(jié)構(gòu)體。2.分析語句:bSem01Handle = osSemaphoreCreate(osSemaphore(bSem01), 1);同樣的,osSemaphore ()也是一個宏定義,在cmsis_os.h文件中可查到。該語句的作用就是創(chuàng)建一個信號量,最后一個參數(shù)=1時,創(chuàng)建的就是一個二值信號量。3.HandleTask任務(wù)在執(zhí)行osSemaphoreWait(bSem01Handle , osWaitForever);語句后,進(jìn)入阻塞狀態(tài),等待PeriodicTask任務(wù)釋放信號量。在實際運用中,二值信號量主要用于任務(wù)同步。如果把上面的Periodi
6、cTask任務(wù)換成硬件定時器的ISR函數(shù),那么HandleTask任務(wù)就相當(dāng)于定時器的延遲處理函數(shù)。這是RTOS種常用的方法。因為RTOS調(diào)度本身使用了較低優(yōu)先級的定時器中斷實現(xiàn),如果在硬件ISR中執(zhí)行過多的代碼,就會造成RTOS響應(yīng)受到很大影響。因此,在ISR中只發(fā)送信號量,然后在其延遲處理函數(shù)中實現(xiàn)真正的用戶功能。這本質(zhì)上就是,將任務(wù)函數(shù)和硬件中斷進(jìn)行同步。需要注意的一點是,在原生的FreeRTOS中,信號量的發(fā)送和獲取在ISR中要使用以FromISR結(jié)尾的特定函數(shù)。在STM32Cube生成的代碼中,ST的工程師已經(jīng)把接口進(jìn)行了統(tǒng)一,在相應(yīng)的函數(shù)中,通過查詢程序狀態(tài)寄存器判斷當(dāng)前是在ISR中還是在普通函數(shù)中。所以用戶在使用時,統(tǒng)一使用osSemaphoreWait()和osSemaphor
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畜牧業(yè)居間服務(wù)補充協(xié)議
- 銀行業(yè)務(wù)辦理流程優(yōu)化指南
- 金融服務(wù)員工心態(tài)管理培訓(xùn)
- 大數(shù)據(jù)驅(qū)動的農(nóng)業(yè)現(xiàn)代化智能化發(fā)展路徑研究
- 創(chuàng)業(yè)項目可行性研究
- 高中歷史:近代社會變革中的文化現(xiàn)象研究方案
- 汽車機械維修技術(shù)案例分析題庫
- 農(nóng)業(yè)生產(chǎn)智慧化發(fā)展趨勢與前景展望方案
- 外科總論復(fù)習(xí)試題及答案
- 高職護(hù)理婦產(chǎn)科復(fù)習(xí)試題及答案
- 2024年度陜西省國家電網(wǎng)招聘之其他工學(xué)類綜合練習(xí)試卷A卷附答案
- 臺灣大學(xué)公開課《邏輯講義》全集
- 曹劌論戰(zhàn)復(fù)習(xí)公開課課件
- 2025年春國開學(xué)習(xí)網(wǎng)《形勢與政策》專題測驗1-5答案
- (2025春新版本)人教版七年級生物下冊全冊教案
- CNAS-CL01:2018 檢測和校準(zhǔn)實驗室能力認(rèn)可準(zhǔn)則
- 《認(rèn)知行為療法》課件
- B5G-6G,信道,衛(wèi)星SDR 解決方案
- 2025年浙江寧波市新農(nóng)村數(shù)字電影院線有限公司招聘筆試參考題庫附帶答案詳解
- 2025年國網(wǎng)數(shù)字科技控股有限公司招聘筆試參考題庫含答案解析
- 監(jiān)控設(shè)備采購及安裝投標(biāo)方案(技術(shù)方案)
評論
0/150
提交評論