良许Linux教程网 干货合集 在 STM32 实现命令行

在 STM32 实现命令行

开篇

在工作中,我们经常使用基于 Linux 命令行的开发环境。作为命令行的重度用户,即使在玩单片机时,我们也倾向于使用命令行工具。在搜索了一些命令行工具后,我发现了几个不错的开源 cmd 交互工具,主要关注了 Finsh 和 nr_micro_shell 这两个项目。Finsh 在功能上较为丰富,但资源占用较高;而 nr 则具备基本功能,同时占用 MCU 资源较少。下面是 Github 上给出的对比列表:

Nr 和 Finsh 的编译资源对比:

原始工程 添加nr_micro_shell增加量 添加finsh增加量
ROM 63660 +3832 +26908
RAM 4696 +1104 +1304

综合衡量了一下,移植 nr 作为后续项目的一个命令行交互。本篇文章分享一下小熊派移植 nr shell 的过程~

二、代码下载

上 github 拉代码,开源仓库:

github.com/Nrusher/nr_micro_shell

重点关注源码目录:

image-20240401214612430
image-20240401214612430

三、STM32 CubeMX 工程

配置 STM32L431 UART 外设中断数据收发,开启 FreeRTOS,生成Makefile 工程

image-20240401214615825
image-20240401214615825
image-20240401214621079
image-20240401214621079

Makefile工程生成后,移植 nr shell 下面 源码

image-20240401214623938
image-20240401214623938

添加 makefile ,将添加的文件加入编译:

image-20240401214629138
image-20240401214629138

移植之后在顶层 make 编译代码,编译完成后下载代码

四、代码修改

修改 STM32 CubeMX 的串口重映射,重映射到 printf,在 main 中加入如下代码:

image-20240401214702562
image-20240401214702562

将映射的输出代码关联到 nr shell 打印函数

image-20240401214722956
image-20240401214722956

以上输出解决了,下面解决输入问题,创建一个信号量用于同步接收状态,同时开启空闲中断接收:

image-20240401214726032
image-20240401214726032

中断回调函数,释放信号,同时开启下次中断接收:

image-20240401214728763
image-20240401214728763
image-20240401214732352
image-20240401214732352

Nr shell 的基本收发交互功能就完成了,可以进行愉快的交互了

五、移植现象

image-20240401214735496
image-20240401214735496

处理效率马马虎虎,一条简单指令 10 ms,有空优化优化

image-20240401214737841
image-20240401214737841

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部