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

下載本文檔

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

文檔簡介

第十章

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

溫馨提示

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

評論

0/150

提交評論