




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十章
μC/OS-II系統(tǒng)與移植目錄μC/OS-II系統(tǒng)移植μC/OS-II系統(tǒng)結(jié)構(gòu)與配置μC/OS-II系統(tǒng)任務(wù)本章小結(jié)本章將介紹嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II的系統(tǒng)結(jié)構(gòu)及其在STM32F103RCT6學(xué)習(xí)板上的移植工程,并將闡述μC/OS-II系統(tǒng)配置與裁剪的方法。μC/OS-II是美國Labrosse先生推出的開源嵌入式實(shí)時(shí)操作系統(tǒng),具有體積小、實(shí)時(shí)性強(qiáng)和移植能力強(qiáng)的特點(diǎn)。μC/OS-II可以移植到幾乎所有的ARM微控制器上,那些具有一定RAM空間(最好是8kB以上)且具有堆棧操作的微控制器均可成功移植。STM32F103RCT6片上RAM空間為48kB,可以很好地支持μC/OS-II系統(tǒng)。110.1μC/OS-II系統(tǒng)移植23在工程PRJ26的基礎(chǔ)上,新建工程“PRJ27”,保存在“D:\STM32F103RCT6PRJ\PRJ27”目錄下,此時(shí)的工程PRJ27與工程PRJ26完全相同。現(xiàn)在,進(jìn)行下面的設(shè)計(jì)工作:(1)在工程PRJ27工作窗口中,單擊“ManageRun-TimeEnvironment”快捷鈕(“管理運(yùn)行環(huán)境”),或者單擊菜單“Project|Manage|Run-TimeEnvironment...”,將彈出如右圖所示對話框。μC/OS-II系統(tǒng)移植4然后,單擊“OK”按鈕進(jìn)入下圖所示界面。μC/OS-II系統(tǒng)移植5(2)在上圖中左側(cè)的工程管理器中,鼠標(biāo)右鍵單擊“STM32F103RCT6”,在其彈出菜單中單擊“OptionsforTarget‘STM32F103RCT6’...Alt+F7”,進(jìn)入下圖所示對話框,在下圖中選擇“C/C++”選項(xiàng)卡。μC/OS-II系統(tǒng)移植6(3)修改系統(tǒng)啟動(dòng)文件startup_stm32f10x_hd.s,如下面的程序段所示。μC/OS-II系統(tǒng)移植7(4)修改文件app_cfg.h,如下面的程序段所示。(5)修改includes.h文件,如下面的程序段所示。μC/OS-II系統(tǒng)移植8(6)修改main.c文件,如下面的程序段所示。μC/OS-II系統(tǒng)移植9(7)新建文件strfun.c和strfun.h,保存在目錄“D:\STM32F103RCT6PRJ\PRJ27\USER”下,其代碼如下面的程序段所示。μC/OS-II系統(tǒng)移植10μC/OS-II系統(tǒng)移植11(8)新建文件task01.c和task01.h,保存在“D:\STM32F103RCT6PRJ\PRJ27\USER”目錄下,其代碼如下面的程序段所示。μC/OS-II系統(tǒng)移植12(9)修改exti.c文件中如下面的程序段所示的部分。μC/OS-II系統(tǒng)移植13(10)修改os_cfg.h文件中宏常量“OS_TMR_EN”的值,由0u修改為1u(位于文件的第139行),表示打開系統(tǒng)定時(shí)器模塊。第10.2節(jié)中將詳細(xì)介紹os_cfg.h文件。(11)將文件strfun.c和task01.c添加到工程管理器的“USER”分組下。(12)在bsp.c文件中注釋掉SysTickInit函數(shù),即“//SysTickInit();”,工程中的systick.c和systick.h文件可以從工程中移除,這是因?yàn)橄到y(tǒng)節(jié)拍定時(shí)器專用于μC/OS-II操作系統(tǒng)。工程PRJ27是一個(gè)完整的工程,在STM32F103RCT6學(xué)習(xí)板上運(yùn)行時(shí),LED燈D11每隔1秒閃爍一次(注意:LED燈D9不閃爍,D10的閃爍由通用定時(shí)器2控制),在LCD屏的左上角顯示一行信息“uC/OS-IIVersion:2.9211.”(如果按下按鍵S18或S19蜂鳴器將啟動(dòng)或關(guān)閉),如右圖所示。μC/OS-II系統(tǒng)移植10.2μC/OS-II系統(tǒng)結(jié)構(gòu)與配置1415本書使用的μC/OS-II嵌入式實(shí)時(shí)操作系統(tǒng),版本號為V2.92.11,結(jié)合工程PRJ27工作窗口圖可知,μC/OS-II共有16個(gè)系統(tǒng)文件(包括ucos_ii.h),如下表所示。μC/OS-II系統(tǒng)結(jié)構(gòu)與配置16如果重點(diǎn)關(guān)注μC/OS-II系統(tǒng)的應(yīng)用程序設(shè)計(jì),可以只關(guān)心系統(tǒng)配置文件os_cfg.h,通過該文件可對μC/OS-II系統(tǒng)進(jìn)行裁剪,該文件內(nèi)容如下面的程序段所示。μC/OS-II系統(tǒng)結(jié)構(gòu)與配置17μC/OS-II系統(tǒng)結(jié)構(gòu)與配置18μC/OS-II系統(tǒng)結(jié)構(gòu)與配置19μC/OS-II系統(tǒng)結(jié)構(gòu)與配置20μC/OS-II系統(tǒng)結(jié)構(gòu)與配置下面將os_cfg.h文件中常用的配置宏列在下表中。10.3μC/OS-II系統(tǒng)任務(wù)2122μC/OS-II系統(tǒng)任務(wù)μC/OS-II具有3個(gè)系統(tǒng)任務(wù),即空閑任務(wù)、統(tǒng)計(jì)任務(wù)和定時(shí)器任務(wù)(注意,定時(shí)器任務(wù)在一些書中被稱為用戶任務(wù),本書中將定時(shí)器任務(wù)稱為系統(tǒng)任務(wù))。系統(tǒng)任務(wù)由μC/OS-II內(nèi)核創(chuàng)建;除了系統(tǒng)任務(wù)外,其余任務(wù)由用戶創(chuàng)建,實(shí)現(xiàn)所需要的功能,均被稱為用戶任務(wù)。23空閑任務(wù)空閑任務(wù)是當(dāng)所有其他任務(wù)均沒有使用CPU時(shí),空閑任務(wù)占用CPU,因此,空閑任務(wù)是μC/OS-II中優(yōu)先級最低的任務(wù),其優(yōu)先級號固定為OS_LOWEST_PRIO??臻e任務(wù)實(shí)現(xiàn)的工作為:每執(zhí)行一次空閑任務(wù),系統(tǒng)全局變量OSIdleCtr自增1;每次空閑任務(wù)的執(zhí)行都將調(diào)用一次鉤子函數(shù)OSTaskIdleHook,用戶可以通過該鉤子函數(shù)擴(kuò)展功能,例如使STM32F103RCT6進(jìn)入低功耗模式。24統(tǒng)計(jì)任務(wù)統(tǒng)計(jì)任務(wù)用于統(tǒng)計(jì)CPU的使用率和各個(gè)任務(wù)的堆棧使用情況。統(tǒng)計(jì)任務(wù)的優(yōu)先級號固定為OS_LOWEST_PRIO-1,僅比空閑任務(wù)的優(yōu)先級高,對于μC/OS-IIV2.92.11而言,每0.1秒執(zhí)行統(tǒng)計(jì)任務(wù)一次,將統(tǒng)計(jì)這段時(shí)間內(nèi)空閑任務(wù)運(yùn)行的時(shí)間,用OSIdleCtr表示,用該數(shù)值與0.1秒時(shí)間內(nèi)只有空閑任務(wù)運(yùn)行時(shí)的OSIdleCtr的值(用OSIdleCtrMax表示,在OSStatInit函數(shù)中統(tǒng)計(jì)到該值)相比,即得到這0.1秒時(shí)間內(nèi)的CPU空閑率,1減去CPU空閑率的差為CPU使用率。當(dāng)需要查詢某個(gè)任務(wù)的堆棧使用情況時(shí),必須在創(chuàng)建這個(gè)任務(wù)時(shí)把它的堆棧內(nèi)容全部清0,這樣,統(tǒng)計(jì)任務(wù)在統(tǒng)計(jì)每個(gè)任務(wù)的堆棧使用情況時(shí),統(tǒng)計(jì)其堆棧中不為0的元素個(gè)數(shù),該值為其堆棧使用的長度,堆??傞L度減去前者即得到該任務(wù)的空閑堆??臻g長度。25統(tǒng)計(jì)任務(wù)當(dāng)程序段10-10的第44行OS_TASK_STAT_EN為1時(shí),則開啟μC/OS-II統(tǒng)計(jì)任務(wù)功能。此時(shí)需要在第一個(gè)用戶任務(wù)的無限循環(huán)體前面插入語句“OSStatInit();”以初始化統(tǒng)計(jì)任務(wù),并且要求使用函數(shù)OSTaskCreateExt創(chuàng)建用戶任務(wù),最后一個(gè)參數(shù)使用“OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR”。統(tǒng)計(jì)任務(wù)可以統(tǒng)計(jì)各個(gè)任務(wù)的CPU占用率以及其堆棧占用情況。一般地,在第一個(gè)用戶任務(wù)中顯示CPU使用率和各個(gè)任務(wù)堆棧占用情況,CPU使用率保存在一個(gè)系統(tǒng)全局變量OSCPUUsage中,其值為0~100的整數(shù),如果為3,則表示CPU使用率為3%。26統(tǒng)計(jì)任務(wù)當(dāng)查詢某個(gè)任務(wù)的堆棧使用情況時(shí),需要定義結(jié)構(gòu)體變量類型OS_STK_DATA的變量,然后調(diào)用函數(shù)OSTaskStkChk,該函數(shù)有兩個(gè)參數(shù),第一個(gè)為任務(wù)優(yōu)先級號,第二個(gè)為指向OS_STK_DATA型結(jié)構(gòu)體變量的指針。例如,OS_STK_DATAStkData;OSTaskStkChk(2,&StkData);則將優(yōu)先級號為2的任務(wù)的堆棧使用情況保存在StkData變量中,其中,StkData.OSFree為該任務(wù)空閑的堆棧大小,StkData.OSUsed為該任務(wù)使用的堆棧大小,單位為字節(jié)。27定時(shí)器任務(wù)定時(shí)器任務(wù)由μC/OS-II系統(tǒng)提供,用于創(chuàng)建軟定時(shí)器(或稱系統(tǒng)定時(shí)器)。相對于STM32F103RCT6芯片的硬件定時(shí)器而言,軟定時(shí)器是指μC/OS-II系統(tǒng)提供的軟件定時(shí)器組件,具有和硬件定時(shí)器相似的定時(shí)功能。根據(jù)表10-2所示的配置方式,在后續(xù)的工程中將定時(shí)器任務(wù)的優(yōu)先級號配置為61。程序段10-10中第105行宏定義了常量OS_TMR_CFG_MAX為16,表示最多可以創(chuàng)建16個(gè)軟定時(shí)器。μC/OS-II定時(shí)器任務(wù)可管理的定時(shí)器數(shù)量僅受定時(shí)器數(shù)據(jù)類型的限制,對于16位無符號整型而言,可管理多達(dá)65536個(gè)定時(shí)器。10.4本章小結(jié)2829本章小結(jié)本章詳細(xì)討論了μC/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 輸尿管軟鏡治療與應(yīng)用
- 房屋買賣委托代理合同書
- 吊裝作業(yè)勞務(wù)合同
- 區(qū)塊鏈技術(shù)在金融行業(yè)的深度實(shí)踐與創(chuàng)新應(yīng)用
- 2025至2030全球及中國檸檬產(chǎn)業(yè)營銷策略及前景需求規(guī)模研究報(bào)告
- 股權(quán)轉(zhuǎn)讓土地及合作協(xié)議二零二五年
- 辦公自動(dòng)化中AI技術(shù)的道德約束與實(shí)施策略
- 企業(yè)辦公流程優(yōu)化中的區(qū)塊鏈技術(shù)應(yīng)用研究
- 區(qū)塊鏈如何改變企業(yè)間的數(shù)據(jù)交換與交互模式
- 北京文化旅游產(chǎn)業(yè)的國際競爭力分析
- 2025年重慶市中考物理模擬試卷(一)(含解析)
- 《服務(wù)營銷雙主動(dòng)》課件
- 公司法公章管理制度
- 演出經(jīng)紀(jì)人員資格備考資料2025
- 成都交通投資集團(tuán)有限公司招聘考試真題2024
- (二模)嘉興市2025年高三教學(xué)測試語文試卷(含答案)
- 湖北省宜昌二中2025年高考化學(xué)考前最后一卷預(yù)測卷含解析
- 醫(yī)院不良事件上報(bào)制度
- MTK安全架構(gòu)研究-全面剖析
- 餐飲食堂消防安全培訓(xùn)
- 10S505 柔性接口給水管道支墩
評論
0/150
提交評論