標籤:freertos cli freertos-plus-cli
FreeRTOS+CLI
An Extensible Command Line Interface FrameworkIntroduction
FreeRTOS+CLI (Command Line Interface) provides a simple, small, extensible and RAM efficient method of enabling your FreeRTOS application to process command line input. The steps required to add a command are shown in the clickable diagram below - click each stage in the process individually to be taken to a worked example.
上面是官網關於FreeRTOS+CLI的簡單介紹,在網上搜尋了好久沒看到相關人員的使用,於是憑著感覺開始將源碼加入工程使用,下面是我的步驟經曆。開發環境:系統:win7開發IDE:CoIDE_V2Beta編譯器:GNU Tools ARM Embedded\4.7 2014q2(arm-none-eabi-gcc)嵌入式環境:stm32f103vet6
第一步:首先建立一個簡單的FreeRTOS工程,這個很簡單,請自行參考網上資料。
第二步:下載FreeRTOSV8.2.1原始碼並解壓。
第三步:將“\FreeRTOSV8.2.1\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI”下的兩個檔案加入工程。其中在標頭檔“FreeRTOS_CLI.h”中加入一個沒定義的資料(這個是我在編譯的時候報錯發現的):#define configCOMMAND_INT_MAX_OUTPUT_SIZE 1000
第三步:在“\FreeRTOSV8.2.1\FreeRTOS-Plus\Demo\Common\FreeRTOS_Plus_CLI_Demos”是幾個使用的demo,由於我使用的是串口,所以就使用“UARTCommandConsole.c”和“Sample-CLI-commands.c”,所以就將這兩個檔案也加入工程。 在““UARTCommandConsole.c””中修改參數:#define cmdQUEUE_LENGTH 1000 這個資料是串口一下子輸出的資料大小,盡量大點,這樣輸出可以完全,太小的話可能串口輸出不完全,這個是我實際使用發現的。
第四步:由於我使用的串口互動,那麼需要底層的硬體支援,所以就是硬體驅動了。在“UARTCommandConsole.c”中引入了個標頭檔“#include "serial.h"” 。此檔案在FreeRTOS中的關於stm32f10X的demo中有這個標頭檔和.c檔案的實現,直接拷貝過來然後加入工程。
第五步:按自己硬體修改“serial.c”檔案。1:/* Library includes. *///#include "stm32f10x_lib.h"#include "stm32f10x_conf.h"2:xSerialPortInitMinimal()函數中對使用的串口初始化。
3:中斷函數的修改//void vUARTInterruptHandler( void )void USART3_IRQHandler( void )
4:反正在“serial.c”中每個函數要根據自己硬體去修改,最好從頭至尾檢查一遍,防止一個函數參數和使用的硬體介面不同都可能照成使用不成功。
第六步:在main函數中加入相關初始化和CLI任務。vRegisterSampleCLICommands();//此函數是官方提供的例子,可以不加入,如果加入注意裡面的一些函數使用需要開啟一些依靠的宏。vUARTCommandConsoleStart( 1000, 1 );
第七步:編譯無問題後下載和PC通訊,設定好傳輸速率,然後使用官方的幾個例子測試。測試成功,以後就可以自己添加一下互動命令了。
我提供我的工程檔案在github中。下面是工程目錄局部視圖:
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
將FreeRTOS-Plus-CLI項目加入工程使用歩驟