本资源提供了一系列适用于STM32微控制器的Shell代码及示例程序,涵盖命令行解析、文件系统交互等功能模块,助力开发者快速上手并深入理解STM32应用开发。
内置 cmd-list 命令可以获取所有命令列表,并支持使用 Tab 键进行命令补全以及 Backspace 键回退功能。然而,在 Putty 上此功能存在 bug,尚未修复;而在 SecureCRT 中则运行正常。此外,上下箭头可用于查看历史输入的命令行,而左右箭头允许编辑当前正在输入的命令行。
系统提供 `shell_cmdparam()` 函数用于转换命令后跟随的数字参数(从字符串转为整型),以及 `shell_option_support()` 函数以支持使用 getopt() 进行选项解析。整个项目包含9个文件,全部与硬件无关,并且需要在 C99 以上版本编译。
- kernel.h:一些必要的宏定义。
- shell.c 和 shell.h:命令行解释的具体实现。
- ustdio.c 和 ustdio.h:非标准输出函数集,重新链接 printf 并提供一个小巧的 printk 函数。
- avltree.c 和 avltree.h:平衡二叉树支持。默认情况下,shell 使用链表来建立查询机制,但可以开启使用二叉树的方式(在 shell.h 中设置)。
- getopt.c 和 getopt.h:从网上获取的源码,主要实现命令行解析中的 getopt() 函数。
使用说明:
1. 首先将 shell.c 和 ustdio.c 文件加入工程中。这两个文件是必须的;如果不需要用到 `getopt()` 函数,则可以不添加 getopt.c。
2. 对硬件进行基本初始化,并编写一个串口发送函数,形如 void usart_puts(char * str , uint16_t len) ; 调用 shell_init(shell >,usart_puts); 进行初始化。
3. 新建全局变量 `struct shell_input serial_shell` 并使用 SHELL_INPUT_INIT(&serial_shell, usart_puts) 初始化输入缓存和输出交互;
4. 当串口接收到一整包数据后,调用 shell_input(&serial_shell , packet , pktlen); 进行处理。