在STM32实现命令行

控制/MCU

1878人已加入

描述

一、前言

工作中的开发环境都是基于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

重点关注源码目录:

命令行

三、STM32 CubeMX 工程

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

命令行

命令行

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

命令行

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

命令行

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

四、代码修改

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

命令行

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

命令行

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

命令行

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

命令行

命令行

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

五、移植现象

命令行

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

命令行

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分