谷动谷力

 找回密码
 立即注册
查看: 1108|回复: 0
收起左侧

【STM32 笔记】STM32 实现命令行

[复制链接]
发表于 2023-6-4 11:18:43 | 显示全部楼层 |阅读模式
【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
重点关注源码目录:
640?wx_fmt=png.jpg
三、STM32 CubeMX 工程
配置 STM32L431 UART 外设中断数据收发,开启 FreeRTOS,生成Makefile 工程
640?wx_fmt=png.jpg
640?wx_fmt=png.jpg
Makefile工程生成后,移植 nr shell 下面 源码
640?wx_fmt=png.jpg
添加 makefile ,将添加的文件加入编译:
640?wx_fmt=png.jpg
移植之后在顶层 make 编译代码,编译完成后下载代码
四、代码修改
修改 STM32 CubeMX 的串口重映射,重映射到 printf,在 main 中加入如下代码:
640?wx_fmt=png.jpg
将映射的输出代码关联到 nr shell 打印函数
640?wx_fmt=png.jpg
以上输出解决了,下面解决输入问题,创建一个信号量用于同步接受状态,同时开启空闲中断接收:
640?wx_fmt=png.jpg
中断回调函数,释放信号,同时开启下次中断接收:
640?wx_fmt=png.jpg
640?wx_fmt=png.jpg
Nr shell 的基本收发交互功能就完成了,可以进行愉快的交互了
五、移植现象
640?wx_fmt=png.jpg
处理效率马马虎虎,一条简单指令 10 ms,有空优化优化
640?wx_fmt=png.jpg


+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-9-17 22:57 , Processed in 0.123125 second(s), 39 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表