当前位置: 首页 > news >正文

嵌入式调试利器:STM32F429移植letter-shell实战

大家好,我是知微。

在上一篇教程中,我们已经完成了:

  1. 使用CubeMX配置UART7串口通信
  2. 实现了printf重定向到串口输出
  3. 配置了FreeRTOS实时操作系统

今天将带你实操,如何在现有项目中集成letter-shell命令行工具,为嵌入式系统添加强大的命令行交互功能。


letter-shell是一款轻量级嵌入式命令行工具,具有以下特点:

  • 支持动态注册函数为命令
  • 自动参数解析
  • Tab补全功能
  • 历史记录功能
  • 支持裸机轮询/中断和RTOS任务模式

letter-shell源码下载

  • gitee仓库:https://gitee.com/zhang-ge/letter-shell
  • github仓库:https://github.com/NevermindZZT/letter-shell
  • 我使用的github仓库的v3.1.2版本

  • 仓库的readme.md文件,有比较详细的功能使用说明,所以这篇文章,只演示比较常用的移植,和添加自己命令的过程,如果有用到其他功能,可以自行探索。

lettershell文件简单说明

demo文件夹

这里面是一些示例,如果有用到,可以参考。比如我这里用了FreeRTOS,等会儿就可以参考stm32-freertos的内容。

doc文件夹

这里面就是一些图片

extensions文件夹
  • 这里是一些扩展,可根据实际情况使用

  • cpp_support,用于扩展letter shell,使其可以在cpp环境中生效
  • fs_support,用于实现letter shell对常见文件系统操作的支持
  • game,一个仅供娱乐的组件,移植了几个命令行的游戏
  • log, 用于嵌入式系统的日志打印工具,可以为日志定义不同的级别
  • shell_enhance,是letter shell 3.0上用于增强shell功能的组件
  • telnet,基于letter shell运行的一个telnet服务端,可以在一些具有网络能力的嵌入式环境中使用
src文件夹
  • 这些文件是核心实现代码

  • shell.h - 定义了Shell系统的核心数据结构和接口
  • shell.c - 实现了Shell系统的主要功能,包括命令解析、执行和输入处理
  • shell_cfg.h - 包含了Shell系统的各种配置选项和宏定义
  • shell_cmd_list.c - 在不使用命令导出模式时,定义静态命令表和按键绑定
  • shell_ext.h - 定义了Shell扩展功能的接口和数据类型 shell_ext.h:1-49
  • shell_ext.c - 实现了Shell的扩展功能,主要处理参数解析和函数调用
  • shell_companion.c - 实现了Shell伴生对象系统,用于将扩展对象与Shell实例关联
tools文件夹
  • 这里就一个文件,用于扫描指定目录中所有使用SHELL_EXPORT_XXX宏导出的命令

  • 使用演示

需要移植的文件

  • src文件夹内所有的文件都会用到
  • 因为我用了FreeRTOS,也用到了demo\stm32-freertos\文件夹内的所有文件
  • 在项目中创建一个lettershell文件,先后把srcstm32-freertos目录下和文件都拷贝过来,会提示shell_cfg.h已存在,直接替换就好了。

添加文件到工程中

  • 添加lettershell相关的c文件

  • 添加lettershell头文件所在目录

http://www.dtcms.com/a/326992.html

相关文章:

  • 【第四章:大模型(LLM)】05.LLM实战: 实现GPT2-(7)模型训练与微调
  • Apache 服务器基础配置与虚拟主机部署
  • 【自动化备份全网服务器数据项目】
  • 前端,route路由
  • 计算机视觉(7)-纯视觉方案实现端到端轨迹规划(思路梳理)
  • Rsync自动化备份平台建设实战
  • C#对接Ollama,调用大模型禁用思考模式
  • 鸿蒙本地与云端数据双向同步实战:从原理到可运行 Demo 的全流程指南
  • HarmonyOS元服务开发系列教程(三):实现音乐播放和封面旋转
  • 智能家居Agent:物联网设备的统一控制与管理
  • Python函数篇:从零到精通
  • 间隙锁(Gap Lock)
  • 【YOLOV8】小目标困难场景优化
  • 计算机网络---默认网关(Default Gateway)
  • 通用同步/异步收发器USART串口
  • JavaScript的fetch函数的用法
  • C++11新增关键字和范围for循环
  • 【限时分享:Hadoop+Spark+Vue技术栈电信客服数据分析系统完整实现方案
  • 基于Python的《红楼梦》文本分析与机器学习应用
  • Uniapp物联网平台登录与温湿度监测系统
  • 【电子硬件】EMI中无源晶振的优势
  • 从原理到实践:一文掌握Kafka的消息生产与消费
  • Web前端小游戏轮盘。
  • 开发避坑指南(23):Tomcat高版本URL特殊字符限制问题解决方案(RFC 7230 RFC 3986)
  • Python Day28 HTML 与 CSS 核心知识点 及例题分析
  • @Rancher简介部署使用 - Docker Compose
  • 第五章 特征值与特征向量
  • vue3 实现web网页不同分辨率适配
  • 【狂热算法篇】探寻图论幽径之SPFA算法:图论迷宫里的闪电寻径者(通俗易懂版)
  • http网页部署