在STM32实现命令行

发布时间:2024-02-28  

一、前言

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

重点关注源码目录:

d40d0d80-76ee-11ed-8abf-dac502259ad0.png

三、STM32 CubeMX 工程

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

d445ee16-76ee-11ed-8abf-dac502259ad0.png

d46b87e8-76ee-11ed-8abf-dac502259ad0.png

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

d4996f64-76ee-11ed-8abf-dac502259ad0.png

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

d4c33b0a-76ee-11ed-8abf-dac502259ad0.png

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

四、代码修改

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

d4fadb1e-76ee-11ed-8abf-dac502259ad0.png

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

d52a9bce-76ee-11ed-8abf-dac502259ad0.png

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

d5596ef4-76ee-11ed-8abf-dac502259ad0.png

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

d593acfe-76ee-11ed-8abf-dac502259ad0.png

d5ad3c64-76ee-11ed-8abf-dac502259ad0.png

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

五、移植现象

d5cb0af0-76ee-11ed-8abf-dac502259ad0.png

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

d5e69f5e-76ee-11ed-8abf-dac502259ad0.png


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>