项目简介
本项目是基于STM32微控制器的命令行接口(CLI),借助STM32硬件抽象层(HAL)接口,在STM32设备上实现了一个shell。该项目兼容性良好,适用于大多数ST Microelectronics的ARM微控制器。
项目的主要特性和功能
- 支持彩色输出,具备标准VT100终端的大部分功能。
- 提供10条命令的历史记录,可使用上下箭头键回顾之前输入的命令。
- 允许用户添加自定义命令。
- 预实现了help、reset、cls等常用命令。
- 具备LOG、DBG、ERR宏,可快速打印调试信息并显示其在代码中的位置。
- 支持密码保护,增强shell的安全性。
- 可正常使用
stdio
函数,如printf
能直接在终端输出文本。
安装使用步骤
安装
配置项目(CubeMX)
使用STM32CubeMX配置项目,启用要使用的UART,并开启该UART的全局中断。UART的参数(如波特率、字长、奇偶校验等)需与电脑端软件保持一致。
安装文件
将源码文件复制到现有项目中。若使用STM32CubeIDE,项目文件结构可参考文档中的示例。
使用
包含文件
在主文件开头添加#include "../shell/inc/sys_command_line.h"
。若文件由CubeMX生成,需将其放在/* USER CODE BEGIN Includes */
和/* USER CODE END Includes */
注释之间。
运行CLI
在UART初始化后,初始化CLI。在主文件的/* USER CODE BEGIN 2 */
和/* USER CODE END 2 */
注释之间添加CLI_INIT(&huart1);
。然后在主循环中添加CLI_RUN();
以处理命令。
自定义shell
- 密码设置:在
main.h
文件中添加#define CLI_PASSWORD myPassword
来设置密码,若未添加则无密码保护。 - shell名称设置:在
main.h
文件中添加#define CLI_NAME shell_name
来设置shell名称,若未添加则默认显示#
。 - 日志类别设置:在
main.h
文件中添加#define CLI_ADDITIONAL_LOG_CATEGORIES
来定义额外的日志类别,可在运行时使用log
命令启用或禁用这些类别。
添加新命令
使用CLI_ADD_CMD(const char *command, const char *help, uint8_t (*exec)(int argc, char *argv[]) )
函数添加新命令。其中*command
为命令字符串,*help
为命令帮助信息,*exec
为命令执行函数指针。
客户端配置
确保客户端软件(如Putty)启用“Implicit CR in every LF”设置,以处理行终止符。
特别注意事项
- 避免在中断请求中打印文本,因为标准
stdio
库的使用可能导致性能问题。 - 不建议使用
PRINTF_COLOR
,建议使用printf(CLI_FONT_RED"My red number: %d."CLI_FONT_DEFAULT, myNumber);
这样的语句。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】