RTThreadRTOS應(yīng)用之二——使用finsh組件_第1頁(yè)
RTThreadRTOS應(yīng)用之二——使用finsh組件_第2頁(yè)
RTThreadRTOS應(yīng)用之二——使用finsh組件_第3頁(yè)
RTThreadRTOS應(yīng)用之二——使用finsh組件_第4頁(yè)
RTThreadRTOS應(yīng)用之二——使用finsh組件_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、RT Thread RTOS 應(yīng)用之二使用finsh shell 系統(tǒng)實(shí)驗(yàn)描述:開(kāi)啟 RTT 的 finsh 組件;向 finsh 中添加用戶函數(shù);利用 finsh 觀察 RTT個(gè)線程的運(yùn)行狀態(tài);通過(guò) finsh 調(diào)用用戶函數(shù)。實(shí)驗(yàn)講解開(kāi)始: “每個(gè)線程棧應(yīng)該設(shè)定多大最合適?”,“當(dāng)前到底啟動(dòng)了哪幾個(gè)線程?”“我的程序沒(méi)有正常運(yùn)行,到底是哪個(gè)線程出現(xiàn)了問(wèn)題?”,“我想要隨時(shí)獲得任意變量的數(shù)值應(yīng)該怎么辦?” ,“我想要在程序運(yùn)行中,人為插入一些操作應(yīng)該如何實(shí)現(xiàn)?”。這些問(wèn)題都是使用RTOS 的人經(jīng)常會(huì)碰到的,這些問(wèn)題在傳統(tǒng)的OS 中并不好解決,需要用戶自行設(shè)計(jì)解決方法。而在RT Thread 中

2、卻非常容易解決。原因就在于他的finsh shell 系統(tǒng)。RT-Thread 的 shell 系統(tǒng) finsh ,提供了一套供用戶在命令行操作的接口,主要用于調(diào)試、查看系統(tǒng)信息。finsh 被設(shè)計(jì)成一個(gè)不同于傳統(tǒng)命令行的C 語(yǔ)言表達(dá)式解釋器:由于很多嵌入式系統(tǒng)都是采用C 語(yǔ)言來(lái)編寫(xiě), finsh 正是采用了這種系統(tǒng)軟件開(kāi)發(fā)人員都會(huì)的語(yǔ)法形式,把 C 語(yǔ)言表達(dá)式變成了命令行的風(fēng)格。它能夠解析執(zhí)行大部分C 語(yǔ)言的表達(dá)式,也能夠使用類似于C 語(yǔ)言的函數(shù)調(diào)用方式訪問(wèn)系統(tǒng)中的函數(shù)及全局變量,此外它也能夠通過(guò)命令行方式創(chuàng)建變量引自RT-Thread 實(shí)時(shí)操作系統(tǒng)編程指南 。移植 finsh 系統(tǒng)移植 f

3、insh 系統(tǒng)非常簡(jiǎn)單,只需要將rtt 文件夾中的 components 文件夾下的 finsh 文件夾中的文件添加進(jìn)入 MDK 。結(jié)果如圖:之后,在MDK 中包含finsh 的文件路徑,以保證可以檢測(cè)到全部finsh 相關(guān)的頭文件,如下圖所示:開(kāi)啟 finsh 系統(tǒng)在 RTT 中啟用 finsh 系統(tǒng)非常容易,只需要在rtconfig.h頭文件中,定義/* SECTION: finsh, a C-Express shell */#define RT_USING_FINSH/* Using symbol table */#define FINSH_USING_SYMTAB#define FIN

4、SH_USING_DESCRIPTION這三個(gè)宏。其中第一個(gè)宏會(huì)開(kāi)啟finsh系統(tǒng)。后面兩個(gè)宏可以使finsh系統(tǒng)支持列表輸出和輸出函數(shù)描述。修改 finsh 對(duì)應(yīng)usart端口默認(rèn)情況下finsh使用 usart1 端口,如果你需要更改finsh對(duì)應(yīng)的usart 端口,可以按照下面三個(gè)步驟來(lái)進(jìn)行:1.修 改STM32_CONSOLE_USART宏 的 數(shù) 值 。 該 宏 定 義 在board.h 頭 文 件 下 。 Console on USART: no console USART 1 USART 2 USART 3Default: 1#define STM32_CONSOLE_USART

5、1默認(rèn)是 1,表示 usart1 端口,你可以根據(jù)自己的需要修改端口號(hào)2.修改 RT_USING_UART1 的數(shù)值/* SECTION: Device System*/ /* Using Device System */#define RT_USING_DEVICE#define RT_USING_UART1如果你需要使用usart2 的話,需要將這個(gè)宏定義成RT_USING_UART23.修改 startup.c 文件 #ifdefRT_USING_FINSH/* init finsh */finsh_system_init();finsh_set_device( uart1);#endi

6、f將其中標(biāo)紅的uart1 修改成你需要的端口號(hào)碼,如uart2 等。4.修改 MDK 設(shè)置為了保證用戶自行添加的函數(shù)不會(huì)被編譯器優(yōu)化掉,需要修改MDK 的設(shè)置,如下:在 Misc controls 標(biāo)簽下,鍵入 ”-keep _fsym_* -keep _vsym_* ”這個(gè)命令,該命令會(huì)保留未被函數(shù)主體調(diào)用的函數(shù)。至此, finsh 的修改和配置就完成了。連接 finshFinsh 系統(tǒng)通過(guò) usart 端口與 PC 端的 232 串口相連接。調(diào)試推薦使用 windows 自帶的超級(jí)終端。具體的通訊參數(shù)如下:串口設(shè)置:每秒位數(shù)115200數(shù)據(jù)位8奇偶校驗(yàn)無(wú)停止位1 數(shù)據(jù)流控制無(wú)下面介紹一下f

7、insh 中經(jīng)常使用的函數(shù)為了照顧C(jī) 語(yǔ)言編寫(xiě)者的習(xí)慣(也就是照顧咱們的習(xí)慣), finsh 中每個(gè)命令后面都需要一個(gè) ()表示結(jié)束,同時(shí)如果函數(shù)帶有參數(shù),參數(shù)按照順序?qū)懭耄ǎ┲?。這點(diǎn)和平時(shí)C 語(yǔ)言書(shū)寫(xiě)函數(shù)一樣。常用的 finsh 命令:1.list_thread()這個(gè)命令可以將當(dāng)前系統(tǒng)的線程狀態(tài)返回到超級(jí)終端中,通過(guò)這個(gè)函數(shù)我們可以獲得當(dāng)前系統(tǒng)中運(yùn)行的線程名稱,數(shù)量,以及其線程棧的使用情況。并且RTT 會(huì)記錄每個(gè)線程最大的線程棧使用情況,這樣為我們優(yōu)化程序,降低程序資源占用提供了很大的方便。2. 宏方式輸出函數(shù)、變量當(dāng)使能了 FINSH USING SYMTAB令。當(dāng)需要輸出函數(shù)或變量到宏

8、時(shí),也能夠使用宏輸出的方式向finsh shell 時(shí),可以通過(guò)引用宏:finsh shell 增加命FINSH FUNCTIONEXPORT和FINSH V AR EXPORT的方式例如本例中,為了通過(guò)finsh控制LED2的狀態(tài),編寫(xiě)了LED2 控制函數(shù)LED2_control(charstate),并且將該函數(shù)添加進(jìn)入finsh系統(tǒng):#ifdef RT_USING_FINSH#include void LED2_control(char state)if (state=0)LED2(OFF);/0表示LED2關(guān)閉elseLED2(ON);/ 非 0 表示 LED2 開(kāi)啟FINSH_FUNCTION_EXPORT(LED2_control,controlLED2sstate);/ 將 該 函 數(shù) 添 加 進(jìn) 入finsh ,方便以后調(diào)用#endif其他的相關(guān)finsh 命令請(qǐng)參考 RT-Thread 實(shí)時(shí)操作系統(tǒng)編程指南程序?qū)崿F(xiàn) :本例為建立在第一個(gè)例子之上,添加了finsh 系統(tǒng),可以通過(guò)超級(jí)終端控制野火開(kāi)發(fā)板上的LE

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論