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. 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中。下面是工程目录局部视图: