http://blog.csdn.net/loveywm/article/details/47323369
2015
FreeRTOS+CLI
An Extensible Command Line Interface Framework
Introduction
FreeRTOS+CLI (Command Line Interface) provides a simple, small, extensible and RAM efficient method of enabling your FreeRTOS application to process command line input.
上面是官網關于FreeRTOS+CLI的簡單介紹,在網上搜索了好久沒看到相關人員的使用,于是憑著感覺開始將源碼加入工程使用,下面是我的步驟經歷。
開發(fā)環(huán)境:
系統(tǒng):win7
開發(fā)IDE:CoIDE_V2Beta
編譯器:GNU Tools ARM Embedded\4.7 2014q2(arm-none-eabi-gcc)
嵌入式環(huán)境:stm32f103vet6
第一步:首先建立一個簡單的FreeRTOS工程,這個很簡單,請自行參考網上資料。
第二步:下載FreeRTOSV8.2.1源代碼并解壓。
第三步:將“\FreeRTOSV8.2.1\FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI”下的兩個文件加入工程。其中在頭文件“FreeRTOS_CLI.h”中加入一個沒定義的數據(這個是我在編譯的時候報錯發(fā)現(xiàn)的):
#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 這個數據是串口一下子輸出的數據大小,盡量大點,這樣輸出可以完全,太小的話可能串口輸出不完全,這個是我實際使用發(fā)現(xiàn)的。
第四步:由于我使用的串口交互,那么需要底層的硬件支持,所以就是硬件驅動了。在“UARTCommandConsole.c”中引入了個頭文件“#include "serial.h"” 。此文件在FreeRTOS中的關于stm32f10X的demo中有這個頭文件和.c文件的實現(xiàn),直接拷貝過來然后加入工程。
第五步:按自己硬件修改“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中。下面是工程目錄局部視圖: