FreeRTOS 教程:添加命令行实现
FreeRTOS不像RT-Thread那样内置了类似Finsh的命令行组件,但官方提供了CLI(Command Line Interface)示例及相关API,供需要者参考和实现。在这篇文章中,我们将介绍如何在STM32F103系列上移植FreeRTOS的CLI,并添加自定义命令行功能。
一、准备工作
- 新建项目文件夹 首先,在您的项目目录中创建一个用于存放RTOS文件的文件夹,这里命名为
rtos
。
- 下载FreeRTOS源码 从FreeRTOS的GitHub仓库下载最新的源码包,并将其中的
source
文件夹拷贝到rtos
目录下。文件结构如下:
include
: 头文件目录portable
: 硬件接口相关文件夹(包括芯片接口、内存管理等)Keil
: ARM-MDK IDE的启动文件(硬件接口)MemMang
: 内存管理相关RVDS
和GCC
: 不同编译环境的启动文件
*.c
: FreeRTOS的核心源文件
二、移植CLI命令行
-
拷贝文件 将CLI示例中的两个文件
UARTCommandConsole.c
和Sample-CLI-commands.c
拷贝到您的工程目录下。
-
处理依赖 打开
UARTCommandConsole.c
,查看其依赖关系。发现需要FreeRTOS_CLI.h
和serial.h
两个头文件。
-
拷贝serial相关文件 将
serial.h
和serial.c
文件拷贝到工程目录中。serial.h
可以在FreeRTOS/Demo/Common/include
找到,而serial.c
根据实际板子及编译器情况,可以在对应(或相近)的示例路径下找到,例如STM32F103系列的serial.c
在FreeRTOS/Demo/CORTEX_STM32F103_Keil/serial
路径下。
-
拷贝FreeRTOS_CLI相关文件 将
FreeRTOS_CLI.c
和FreeRTOS_CLI.h
文件从FreeRTOS/FreeRTOS-Plus/Source/FreeRTOS-Plus-CLI
目录下拷贝到工程目录中。
-
添加依赖 确认上述文件的依赖已添加完毕,在MDK工程中为CLI添加一个独立的Group,并将上述文件添加到Group中,同时添加头文件路径。
三、编译与调试
-
编译 进行初次编译,若报错提示
configCOMMAND_INT_MAX_OUTPUT_SIZE
未定义,则在FreeRTOS_CLI.h
头文件中添加该