第12章 RT-Thread開發(fā)應(yīng)用實例_第1頁
第12章 RT-Thread開發(fā)應(yīng)用實例_第2頁
第12章 RT-Thread開發(fā)應(yīng)用實例_第3頁
第12章 RT-Thread開發(fā)應(yīng)用實例_第4頁
第12章 RT-Thread開發(fā)應(yīng)用實例_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第12章RT-Thread開發(fā)應(yīng)用實例12.1RT-Thread線程管理應(yīng)用實例嵌入式開發(fā)人員要對自己設(shè)計的嵌入式系統(tǒng)了如指掌,線程的優(yōu)先級信息,線程與中斷的處理,線程的運(yùn)行時間、邏輯、狀態(tài)等都要明確,才能設(shè)計出好的系統(tǒng),所以,在設(shè)計時需要根據(jù)需求制定框架。在設(shè)計之初就應(yīng)該考慮下面幾點因素:線程運(yùn)行的上下文環(huán)境、線程的執(zhí)行時間應(yīng)合理設(shè)計。RT-Thread中程序運(yùn)行的上下文包括以下3種:(1)中斷服務(wù)函數(shù)。(2)普通線程。(3)空閑線程。12.1.1線程的設(shè)計要點1.中斷服務(wù)函數(shù)中斷服務(wù)函數(shù)運(yùn)行于特權(quán)模式,不能阻塞或調(diào)用阻塞API,應(yīng)簡潔快速,僅標(biāo)記事件,由線程處理。過長中斷會影響系統(tǒng),應(yīng)設(shè)計時注意中斷頻率和處理時間。2.普通線程實時系統(tǒng)中,線程死循環(huán)會阻塞低優(yōu)先級線程,影響系統(tǒng)運(yùn)行。設(shè)計時應(yīng)避免無阻塞循環(huán),保證線程能進(jìn)入阻塞態(tài),確保低優(yōu)先級線程正常執(zhí)行。3.空閑線程空閑線程是RT-Thread無工作時自動運(yùn)行的線程,支持鉤子執(zhí)行特殊功能,負(fù)責(zé)資源回收,且必須始終可運(yùn)行,不允許阻塞。在空閑線程鉤子上掛接的空閑鉤子函數(shù),應(yīng)該滿足以下條件:(1)不會掛起空閑線程。(2)不應(yīng)該陷入死循環(huán),需要留出部分時間用于系統(tǒng)處理系統(tǒng)資源回收。4.線程的執(zhí)行時間線程的執(zhí)行時間一般是指兩個方面,一是線程從開始到結(jié)束的時間,二是線程的周期。線程執(zhí)行時間指從開始到結(jié)束的時間和周期,需要設(shè)計時同時考慮。如線程Ta周期10ms,運(yùn)行1ms,需在10ms內(nèi)響應(yīng)事件A。若線程Tb周期50ms,運(yùn)行100μs,優(yōu)先級高于Ta,搶占資源后仍保證Ta在10ms內(nèi)完成響應(yīng),系統(tǒng)實時性不受影響。若線程Tc運(yùn)行20ms,優(yōu)先級高于Ta,會導(dǎo)致Ta錯過10ms響應(yīng),故設(shè)計時應(yīng)確保運(yùn)行時間短的線程優(yōu)先級更高。線程管理實例是將線程常用的函數(shù)進(jìn)行一次實驗,在野火STM32開發(fā)板上進(jìn)行該實驗,創(chuàng)建兩個線程,一個是LED線程,另一個是按鍵線程,LED線程是顯示線程運(yùn)行的狀態(tài),而按鍵線程是通過檢測按鍵的按下與否來進(jìn)行對LED線程的掛起與恢復(fù),RT-Thread線程管理MDK工程架構(gòu)如圖12-1所示。12.1.2線程管理實例圖12-1RT-Thread線程管理MDK工程架構(gòu)RT-Thread線程管理代碼清單參考書中內(nèi)容。(1)將程序編譯好,用USB線連接計算機(jī)和開發(fā)板的USB接口(絲印為USB轉(zhuǎn)串口)。(2)使用DAP仿真器將程序下載到野火STM32開發(fā)板。(3)在計算機(jī)上打開串口調(diào)試助手,復(fù)位開發(fā)板,可以看到rt_kprintf()的打印信息。(4)開發(fā)板上的LED開始閃爍。(5)按下開發(fā)板的KEY1按鍵,線程掛起,燈停止閃爍,串口會輸出掛起信息。(6)按下KEY2按鍵,線程恢復(fù),燈重新閃爍,串口輸出恢復(fù)信息。(7)實驗效果如圖12-2所示。圖12-2串口調(diào)試助手打印的函數(shù)任務(wù)執(zhí)行順序12.2STM32F407-RT-SPARK開發(fā)板

RT-Thread官方開發(fā)板STM32F407-RT-SPARK(星火1號)是一款專為工程師和高校學(xué)生設(shè)計的嵌入式RTOS開發(fā)學(xué)習(xí)板。STM32F407-RT-SPARK開發(fā)板選用ST公司的STM32F407ZGT6微控制器,能夠滿足嵌入式入門的需求。此開發(fā)板不僅具有眾多的板載資源(Flash存儲、Wi-Fi通信、多個傳感器),還支持豐富的擴(kuò)展接口,讓用戶輕松實現(xiàn)各種復(fù)雜的應(yīng)用場景。通過使用這款開發(fā)板,用戶將能夠深入了解RT-Thread實時操作系統(tǒng)的工作原理。12.2.1STM32F407-RT-SPARK開發(fā)板簡介STM32F407-RT-SPARK開發(fā)板如圖12-3所示,開發(fā)板資源如圖12-4所示。圖12-3STM32F407-RT-SPARK開發(fā)板圖12-4STM32F407-RT-SPARK開發(fā)板資源板載資源如下:(1)復(fù)位按鍵、輕觸按鍵X4、自鎖開關(guān)。(2)蜂鳴器。(3)LR1220RTC后備電池座。(4)ST-Link。(5)USB-FS。(6)麥克風(fēng)、4極耳機(jī)。(7)SD卡座。(8)8MBNorFlash。(9)紅外發(fā)射、紅外接收。(10)ICM20608六軸傳感器、AP3216接近傳感器、AHT20溫濕度傳感器。(11)RW007Wi-Fi。(12)240×240并行LCD支持背光調(diào)節(jié)。(13)19燈等距全彩LED。(14)全彩LED外接。(15)3.3V電源擴(kuò)展、5V電源擴(kuò)展。擴(kuò)展接口如下:(1)RS485接口。(2)CAN接口。(3)40Pin樹莓派標(biāo)準(zhǔn)擴(kuò)展無沖撞IO。(4)Spark-10Pin創(chuàng)意堆疊平臺。(5)PMOD接口×2。(6)支持的集成開發(fā)環(huán)境:RT-ThreadStudio、MDK。在計算機(jī)的F盤新建一個文件夾F:\RT-ThreadProject。打開RT-ThreadStudio集成開發(fā)環(huán)境,選擇文件→新建→RT-Thread項目創(chuàng)建一個項目,如圖12-5所示。12.2.2基于STM32F407-RT-SPARK開發(fā)板的模板工程創(chuàng)建項目實例圖12-5新建RT-Thread項目基于開發(fā)板的模板工程創(chuàng)建一個RT-Thread項目如圖12-6所示。(1)在圖12-6中的Projectname(項目名稱)對話框輸入項目名稱RT-SPARKProject(名稱可由用戶自定義)。(2)取消使用缺省位置,項目保存路徑設(shè)置為F:\RT-ThreadProject。(3)選擇基于開發(fā)板創(chuàng)建項目。(4)選擇STM32F407-RT-SPARK開發(fā)板。(5)類型選擇模板工程。(6)調(diào)試器選擇ST-LINK。(7)接口選擇SWD。圖12-6創(chuàng)建RT-Thread項目設(shè)置單擊圖12-6中的完成按鈕,彈出如圖12-7所示的創(chuàng)建RT-Thread項目進(jìn)度提示。圖12-7創(chuàng)建RT-Thread項目進(jìn)度提示等待RT-SPARKProject項目創(chuàng)建完成,進(jìn)入如圖12-8所示的RT-SPARKProject項目調(diào)試界面。圖12-8RT-SPARKProject項目調(diào)試界面新建完項目后,在RT-ThreadStudio的“項目資源管理器”中,可以看到項目的目錄樹,如圖12-9所示。12.2.3RT-Thread項目架構(gòu)圖12-9RT-Thread項目目錄樹由圖12-9可知,項目樹有多個分支,每個分支都有各自的作用。RT-Thread不僅是一個實時操作系統(tǒng)內(nèi)核,它還包含各種組件和應(yīng)用軟件包,在開發(fā)過程中,可以根據(jù)項目實際需求,對內(nèi)核參數(shù)、使用的硬件、使用的組件和應(yīng)用軟件包進(jìn)行配置(不是所有項目都必須進(jìn)行配置),配置方法如下:1. 打開配置界面在項目資源管理器中,雙擊如圖12-10所示的項目樹中的RT-ThreadSeltings文件,打開RT-Thread項目配置界面。配置界面默認(rèn)顯示“軟件包”“組件和服務(wù)層”的架構(gòu)配置圖界面、如圖12-11所示。12.2.4配置RT-Thread項目圖12-10項目樹中的RT-ThreadSeltings文件圖12-11架構(gòu)配置圖界面在圖12-11中,單擊架構(gòu)圖配置界面右邊的側(cè)邊欄按鈕,即可轉(zhuǎn)到“配置樹”配置界面,如圖12-12所示。圖12-12RT-ThreadSeltings配置樹配置界面如果要返回架構(gòu)配置圖界面,只要單擊圖12-12中RT-ThreadSeltings配置樹配置界面左邊的側(cè)邊欄按鈕即可。2. 配置并保存根據(jù)項目需要在配置界面中進(jìn)行相應(yīng)配置,如圖12-13所示為配置使用ADC設(shè)備驅(qū)動程序。圖12-13使用ADC設(shè)備驅(qū)動程序配置完成后,在鍵盤上按下Ctrl+S鍵,保存配置。在RT-ThreadStudio關(guān)閉RT-ThreadSettings配置界面,退出配置。RT-ThreadStudio會自動將配置應(yīng)用到項目中,比如會自動下載相關(guān)資源文件到項目中并設(shè)置好項目配置,確保項目配置后能夠構(gòu)建成功,正在保存配置如圖12-14所示。圖12-14正在保存配置RT-ThreadSettings配置完成后,在STM32F4xx_HAL_Driver驅(qū)動中增加了STM32F4xx_hal_adc_ex.c和STM32F4xx_hal_adc.c驅(qū)動代碼,如圖12-15所示。應(yīng)用程序通過RT-Thread提供的ADC設(shè)備管理接口來訪問ADC硬件,相關(guān)接口函數(shù)如下所示:(1)rt_device_find():根據(jù)ADC設(shè)備名稱查找設(shè)備獲取設(shè)備句柄。(2)rt_adc_enable():使能ADC設(shè)備。(3)rt_adc_read():讀取ADC設(shè)備數(shù)據(jù)。(4)rt_adc_disable():關(guān)閉ADC設(shè)備。ADC的使用與KeilMDK集成開發(fā)環(huán)境中不同,RT-Thread對ADC等設(shè)備的使用進(jìn)行了二次封裝。其他設(shè)備的使用也同ADC設(shè)備的使用一樣。圖12-15添加ADC的HAL庫將鼠標(biāo)放到圖12-11中組件msh命令圖標(biāo),彈出如圖12-16所示的msh命令圖標(biāo)界面。圖12-16msh命令圖標(biāo)界面單擊API文檔與按鈕同樣的功能,單擊應(yīng)用文檔,彈出如圖12-17所示RT-Thread文檔中心界面圖12-17RT-Thread文檔中心界面12.3基于STM32F407-RT-SPARK開發(fā)板的示例工程創(chuàng)建項目實例基于開發(fā)板的示例工程創(chuàng)建一個RT-Thread項目,示例工程中可以選擇的示例如圖12-18所示。圖12-18示例工程中可以選擇的示例在圖12-19中的Projectname(項目名稱)對話框輸入項目名稱不需要輸入,當(dāng)選擇了某一個示例,如02_basic_rgb_led,項目名稱自動配置為02_basic_rgb_led,當(dāng)然項目名稱也可以由用戶定。不使用缺省位置,項目保存路徑設(shè)置為F:\RT-ThreadProject,選擇基于開發(fā)板創(chuàng)建項目,選擇STM32F407-RT-SPARK開發(fā)板,類型選擇示例工程,調(diào)試器選擇ST-LINK,接口選擇SWD。圖12-19基于開發(fā)板的示例工程創(chuàng)建一個RT-Thread項目單擊圖12-19中的完成按鈕,開始創(chuàng)建RT-Thread項目,等待項目創(chuàng)建完成,進(jìn)入如圖12-20所示的0

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論