ARM Cortex-M3嵌入式開發(fā)及應用教與學 課件 第10章 μCOS-II系統(tǒng)與移植_第1頁
ARM Cortex-M3嵌入式開發(fā)及應用教與學 課件 第10章 μCOS-II系統(tǒng)與移植_第2頁
ARM Cortex-M3嵌入式開發(fā)及應用教與學 課件 第10章 μCOS-II系統(tǒng)與移植_第3頁
ARM Cortex-M3嵌入式開發(fā)及應用教與學 課件 第10章 μCOS-II系統(tǒng)與移植_第4頁
ARM Cortex-M3嵌入式開發(fā)及應用教與學 課件 第10章 μCOS-II系統(tǒng)與移植_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十章

μC/OS-II系統(tǒng)與移植目錄μC/OS-II系統(tǒng)移植μC/OS-II系統(tǒng)結構與配置μC/OS-II系統(tǒng)任務本章小結本章將介紹嵌入式實時操作系統(tǒng)μC/OS-II的系統(tǒng)結構及其在STM32F103RCT6學習板上的移植工程,并將闡述μC/OS-II系統(tǒng)配置與裁剪的方法。μC/OS-II是美國Labrosse先生推出的開源嵌入式實時操作系統(tǒng),具有體積小、實時性強和移植能力強的特點。μC/OS-II可以移植到幾乎所有的ARM微控制器上,那些具有一定RAM空間(最好是8kB以上)且具有堆棧操作的微控制器均可成功移植。STM32F103RCT6片上RAM空間為48kB,可以很好地支持μC/OS-II系統(tǒng)。110.1μC/OS-II系統(tǒng)移植23在工程PRJ26的基礎上,新建工程“PRJ27”,保存在“D:\STM32F103RCT6PRJ\PRJ27”目錄下,此時的工程PRJ27與工程PRJ26完全相同?,F(xiàn)在,進行下面的設計工作:(1)在工程PRJ27工作窗口中,單擊“ManageRun-TimeEnvironment”快捷鈕(“管理運行環(huán)境”),或者單擊菜單“Project|Manage|Run-TimeEnvironment...”,將彈出如右圖所示對話框。μC/OS-II系統(tǒng)移植4然后,單擊“OK”按鈕進入下圖所示界面。μC/OS-II系統(tǒng)移植5(2)在上圖中左側的工程管理器中,鼠標右鍵單擊“STM32F103RCT6”,在其彈出菜單中單擊“OptionsforTarget‘STM32F103RCT6’...Alt+F7”,進入下圖所示對話框,在下圖中選擇“C/C++”選項卡。μC/OS-II系統(tǒng)移植6(3)修改系統(tǒ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)定時器模塊。第10.2節(jié)中將詳細介紹os_cfg.h文件。(11)將文件strfun.c和task01.c添加到工程管理器的“USER”分組下。(12)在bsp.c文件中注釋掉SysTickInit函數(shù),即“//SysTickInit();”,工程中的systick.c和systick.h文件可以從工程中移除,這是因為系統(tǒng)節(jié)拍定時器專用于μC/OS-II操作系統(tǒng)。工程PRJ27是一個完整的工程,在STM32F103RCT6學習板上運行時,LED燈D11每隔1秒閃爍一次(注意:LED燈D9不閃爍,D10的閃爍由通用定時器2控制),在LCD屏的左上角顯示一行信息“uC/OS-IIVersion:2.9211.”(如果按下按鍵S18或S19蜂鳴器將啟動或關閉),如右圖所示。μC/OS-II系統(tǒng)移植10.2μC/OS-II系統(tǒng)結構與配置1415本書使用的μC/OS-II嵌入式實時操作系統(tǒng),版本號為V2.92.11,結合工程PRJ27工作窗口圖可知,μC/OS-II共有16個系統(tǒng)文件(包括ucos_ii.h),如下表所示。μC/OS-II系統(tǒng)結構與配置16如果重點關注μC/OS-II系統(tǒng)的應用程序設計,可以只關心系統(tǒng)配置文件os_cfg.h,通過該文件可對μC/OS-II系統(tǒng)進行裁剪,該文件內容如下面的程序段所示。μC/OS-II系統(tǒng)結構與配置17μC/OS-II系統(tǒng)結構與配置18μC/OS-II系統(tǒng)結構與配置19μC/OS-II系統(tǒng)結構與配置20μC/OS-II系統(tǒng)結構與配置下面將os_cfg.h文件中常用的配置宏列在下表中。10.3μC/OS-II系統(tǒng)任務2122μC/OS-II系統(tǒng)任務μC/OS-II具有3個系統(tǒng)任務,即空閑任務、統(tǒng)計任務和定時器任務(注意,定時器任務在一些書中被稱為用戶任務,本書中將定時器任務稱為系統(tǒng)任務)。系統(tǒng)任務由μC/OS-II內核創(chuàng)建;除了系統(tǒng)任務外,其余任務由用戶創(chuàng)建,實現(xiàn)所需要的功能,均被稱為用戶任務。23空閑任務空閑任務是當所有其他任務均沒有使用CPU時,空閑任務占用CPU,因此,空閑任務是μC/OS-II中優(yōu)先級最低的任務,其優(yōu)先級號固定為OS_LOWEST_PRIO??臻e任務實現(xiàn)的工作為:每執(zhí)行一次空閑任務,系統(tǒng)全局變量OSIdleCtr自增1;每次空閑任務的執(zhí)行都將調用一次鉤子函數(shù)OSTaskIdleHook,用戶可以通過該鉤子函數(shù)擴展功能,例如使STM32F103RCT6進入低功耗模式。24統(tǒng)計任務統(tǒng)計任務用于統(tǒng)計CPU的使用率和各個任務的堆棧使用情況。統(tǒng)計任務的優(yōu)先級號固定為OS_LOWEST_PRIO-1,僅比空閑任務的優(yōu)先級高,對于μC/OS-IIV2.92.11而言,每0.1秒執(zhí)行統(tǒng)計任務一次,將統(tǒng)計這段時間內空閑任務運行的時間,用OSIdleCtr表示,用該數(shù)值與0.1秒時間內只有空閑任務運行時的OSIdleCtr的值(用OSIdleCtrMax表示,在OSStatInit函數(shù)中統(tǒng)計到該值)相比,即得到這0.1秒時間內的CPU空閑率,1減去CPU空閑率的差為CPU使用率。當需要查詢某個任務的堆棧使用情況時,必須在創(chuàng)建這個任務時把它的堆棧內容全部清0,這樣,統(tǒng)計任務在統(tǒng)計每個任務的堆棧使用情況時,統(tǒng)計其堆棧中不為0的元素個數(shù),該值為其堆棧使用的長度,堆棧總長度減去前者即得到該任務的空閑堆??臻g長度。25統(tǒng)計任務當程序段10-10的第44行OS_TASK_STAT_EN為1時,則開啟μC/OS-II統(tǒng)計任務功能。此時需要在第一個用戶任務的無限循環(huán)體前面插入語句“OSStatInit();”以初始化統(tǒng)計任務,并且要求使用函數(shù)OSTaskCreateExt創(chuàng)建用戶任務,最后一個參數(shù)使用“OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR”。統(tǒng)計任務可以統(tǒng)計各個任務的CPU占用率以及其堆棧占用情況。一般地,在第一個用戶任務中顯示CPU使用率和各個任務堆棧占用情況,CPU使用率保存在一個系統(tǒng)全局變量OSCPUUsage中,其值為0~100的整數(shù),如果為3,則表示CPU使用率為3%。26統(tǒng)計任務當查詢某個任務的堆棧使用情況時,需要定義結構體變量類型OS_STK_DATA的變量,然后調用函數(shù)OSTaskStkChk,該函數(shù)有兩個參數(shù),第一個為任務優(yōu)先級號,第二個為指向OS_STK_DATA型結構體變量的指針。例如,OS_STK_DATAStkData;OSTaskStkChk(2,&StkData);則將優(yōu)先級號為2的任務的堆棧使用情況保存在StkData變量中,其中,StkData.OSFree為該任務空閑的堆棧大小,StkData.OSUsed為該任務使用的堆棧大小,單位為字節(jié)。27定時器任務定時器任務由μC/OS-II系統(tǒng)提供,用于創(chuàng)建軟定時器(或稱系統(tǒng)定時器)。相對于STM32F103RCT6芯片的硬件定時器而言,軟定時器是指μC/OS-II系統(tǒng)提供的軟件定時器組件,具有和硬件定時器相似的定時功能。根據(jù)表10-2所示的配置方式,在后續(xù)的工程中將定時器任務的優(yōu)先級號配置為61。程序段10-10中第105行宏定義了常量OS_TMR_CFG_MAX為16,表示最多可以創(chuàng)建16個軟定時器。μC/OS-II定時器任務可管理的定時器數(shù)量僅受定時器數(shù)據(jù)類型的限制,對于16位無符號整型而言,可管理多達65536個定時器。10.4本章小結2829本章小結本章詳細討論了μC/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論