打印
[技术相关]

【SWDM-QFP100-34SVEA3测评】+移植nr_micro_shell

[复制链接]
618|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创#
本文移植nr_micro_shell,通过串口输入命令,与开发板交互。
nr_micro_shell的项目地址:https://github.com/Nrusher/nr_micro_shell,最新的版本是1.0.2,也正是本文移植的版本。

在移植之前首先要保证串口收发正常,本文使用串口轮询发送和中断接收。

1、nr_micro_shell源码结构

src文件夹是源码,
inc文件夹是头文件,
examples文件夹是示例代码:
nr_micro_shell_commands.c是裸机情况下添加命令示例代码,
nr_micro_shell_thread.c是rtthread情况下添加命令示例代码,
simulator.c是启动nr_micro_shell的示例代码

2、将nr_micro_shell代码添加进工程


3、编译报错

我们这里是裸机移植,因此需要屏蔽掉nr_micro_shell_config.h文件中的两个rt-thread头文件,屏蔽掉之后即可编译成功。

4、配置
在nr_micro_shell_config.h头文件中,我们可以配置nr_micro_shell。

NR_SHELL_USER_NAME,是用户名称,
NR_SHELL_END_OF_LINE,是一行结束符,
shell_printf(fmt, args...) ,是nr_micro_shell的打印函数,这里直接使用printf即可,
ansi_show_char(x) ,是串口发送一个字符的函数,需要配置。



5、串口相关代码
void SerialInit(void)
{
        UART_InitStructure UART_initStruct;
       
        PORT_Init(PORTM, PIN0, PORTM_PIN0_UART0_RX, 1);        //GPIOM.0配置为UART0输入引脚
        PORT_Init(PORTM, PIN1, PORTM_PIN1_UART0_TX, 0);        //GPIOM.1配置为UART0输出引脚
       
        UART_initStruct.Baudrate = 115200;
        UART_initStruct.DataBits = UART_DATA_8BIT;
        UART_initStruct.Parity = UART_PARITY_NONE;
        UART_initStruct.StopBits = UART_STOP_1BIT;
        UART_initStruct.RXThreshold = 1;
        UART_initStruct.RXThresholdIEn = 1;
        UART_initStruct.TXThreshold = 1;
        UART_initStruct.TXThresholdIEn = 0;

        UART_Init(UART0, &UART_initStruct);
        UART_Open(UART0);
}

6、nr_micro_shell接收字符
void UART0_Handler(void)
{
        uint32_t chr;
       
        if(UART_INTStat(UART0, UART_IT_RX_THR ))
{
                while(UART_IsRXFIFOEmpty(UART0) == 0)
                {
                        if(UART_ReadByte(UART0, &chr) == 0)
                        {
shell(chr);
                        }
在串口中断中接收字符,并传给nr_micro_shell处理。
7、初始化并启动nr_micro_shell
调用  shell_init()函数即可,这是一个宏定义,里面其实是有两个函数的


8、测试






使用特权

评论回复

相关帖子

沙发
tpgf| | 2023-6-8 13:20 | 只看该作者
nr_micro_shell正是针对资源较少的MCU编写的基本命令行工具

使用特权

评论回复
板凳
paotangsan| | 2023-6-8 14:07 | 只看该作者
nr_micro_shell为用户提供自定义命令的标准函数原型,只需要按照命令编写命令函数,并注册命令函数,即可使用命令。

使用特权

评论回复
地板
renzheshengui| | 2023-6-8 14:27 | 只看该作者
当串口终端支持ANSI(如Hypertrm终端)时,其不仅支持基本的命令行交互,还提供Tab键命令补全,查询历史命令,方向键移动光标修改功能

使用特权

评论回复
5
wakayi| | 2023-6-8 14:48 | 只看该作者
nr_micro_shell占用资源少,使用简单,灵活方便

使用特权

评论回复
6
wakayi| | 2023-6-8 14:52 | 只看该作者
nr_micro_shell在使用过程只涉及两个shell_init()和shell()两个函数,无论是使用RTOS还是裸机都可以方便的应用该工具,不需要额外的编码工作。

使用特权

评论回复
7
wowu| | 2023-6-8 15:26 | 只看该作者
本项目移植的源平台和目标平台是什么呢

使用特权

评论回复
8
xiaoqizi| | 2023-6-8 15:49 | 只看该作者
请问为了使用这个shell,我们需要下载什么工具呢

使用特权

评论回复
9
freeelectron|  楼主 | 2023-6-8 16:22 | 只看该作者
wowu 发表于 2023-6-8 15:26
本项目移植的源平台和目标平台是什么呢

目标平台就是本系列评测的开发板,具体mcu就是SWM34SVE

使用特权

评论回复
10
freeelectron|  楼主 | 2023-6-8 16:23 | 只看该作者
xiaoqizi 发表于 2023-6-8 15:49
请问为了使用这个shell,我们需要下载什么工具呢

SecureCRT就可以用了

使用特权

评论回复
11
chenqianqian| | 2023-6-12 08:51 | 只看该作者
这是国外开源的吗?

使用特权

评论回复
12
guijial511| | 2023-6-12 19:05 | 只看该作者
不错,这个是基于回显机制嘛?

使用特权

评论回复
13
freeelectron|  楼主 | 2023-6-14 08:33 | 只看该作者
wyjie 发表于 2023-6-13 22:01
这是国外开源的吗?

反正是开源在github的,至于那个国家的,就没注意了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:stm32/LoRa物联网:304350312

65

主题

785

帖子

10

粉丝