0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是嵌入式命令行交互工具

汽车电子技术 来源:玩转单片机 作者: noah 2023-02-20 15:07 次阅读

最近看了几篇嵌入式命令行交互工具的推文,全文介绍和开源托管平台基本一致,感觉就像是在水文章;今天摸鱼的时候移植用了一下,为后续项目开发搭建一个交互,方便后续参数调试和硬件调试,开源链接如下:

https://gitee.com/nrush/nr_micro_shell

| 移植准备

1、去托管平台把源码下下来;

2、准备一个基础工程,实现串口重定义输出:

图片

| 移植源码

1、把核心源码复制到工程中:

图片

2、把命令示例源码复制到工程中:

图片

3、把源码添加到工程中:

图片

4、屏蔽RT-Thread 的头文件:

图片

5、修改输出的末尾行模式:

图片

6、初始化nr_micro_shell:

#include "gd32f10x.h"
#include "stdio.h"
#include "nr_micro_shell.h"


// uart配置
void hal_log_init(void)
{
    /* 使GPIO时钟 */
    rcu_periph_clock_enable(RCU_GPIOA);


    /* 使USART时钟 */
    rcu_periph_clock_enable(RCU_USART0);


    /* 连接端口到USARTx_Tx */
    gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);


    /* 连接端口到USARTx_Rx */
    gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);


    /* USART配置 */
    usart_deinit(USART0);                                   /*!< 复位外设USART */
    usart_word_length_set(USART0, USART_WL_8BIT);           /*!< 配置USART字长 */
    usart_stop_bit_set(USART0, USART_STB_1BIT);             /*!< 配置USART停止位 */
    usart_parity_config(USART0, USART_PM_NONE);             /*!< 配置USART奇偶校验 */
    usart_baudrate_set(USART0, 115200U);                    /*!< 配置USART波特率 */
    usart_receive_config(USART0, USART_RECEIVE_ENABLE);     /*!< USART/UART接收器配置 */
    usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);   /*!< USART/UART发送器配置 */

    usart_enable(USART0);                                   /*!< 使能USART */

    /*中断管理器使能,并分配优先级*/
    nvic_irq_enable(USART0_IRQn, 1, 0);
    /*清除中断标志*/
    usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE);
    usart_interrupt_flag_clear(USART0, USART_INT_FLAG_IDLE);
    /* 使能串口中断 */
    usart_interrupt_enable(USART0, USART_INT_RBNE);         /*!< 接收不为空中断 */
}


// usart0中断
void USART0_IRQHandler(void)
{
    if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE))
    {
        /* 清除标志位 */
        usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE);
        /* 接收数据(注意) */
        shell(usart_data_receive(USART0));
    }
}


//printf重定向函数
int fputc(int ch,FILE *f)
{
    usart_data_transmit(USART0, (uint8_t)ch);  //发送一字节数据
    while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));  //等待发送完成
    return ch;
}


// 外设初始化
void hal_device_init(void)
{
    hal_log_init();
    /* 初始化 */
    shell_init();
}


// 主循环
int main(void)
{
    // 设置优先级组
    nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);
    // 外设初始化
    hal_device_init();
    while (1)
    {

    }
}

7、查看效果:

图片

| 定义指令

1、添加自定义指令代码:

图片

2、查看效果:

图片

| 最终效果

移植成功后就可以在MCU中体验Linux的shell命令那种感觉,注意一定要修改输出的末尾行模式,不然会不能正常使用,来感受一下最终效果:

图片

最终的效果还是不错的,和Linux的体验类似,感兴趣的同学可以移植来体验一下MCU级别的shell命令交互;

--END--

阅读 225

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

    关注

    1

    文章

    379

    浏览量

    28124
  • 参数调试
    +关注

    关注

    0

    文章

    5

    浏览量

    4966
  • 硬件调试
    +关注

    关注

    1

    文章

    9

    浏览量

    10703
收藏 人收藏

    评论

    相关推荐

    在STM32实现命令行

    工作中的开发环境都是基于linux命令行交互,作为命令行的重度使用者,玩单片机也要使用命令行工具,百度了一些
    发表于 12-09 11:32 2383次阅读

    Linux命令行的基本使用

    嵌入式Linux开发环境的构建,Linux命令行的基本使用,VI、GCC、Makefile基本工具的使用,交叉开发环境的使用。学习条件: 1.C语言编程基础
    发表于 11-05 09:08

    Linux命令行怎么使用

    嵌入式Linux开发环境的构建,Linux命令行的基本使用,VI、GCC、Makefile基本工具的使用,交叉开发环境的使用。学习条件: 1.C语言编程基础
    发表于 12-16 07:46

    在单片机上实现shell命令行交互的方法

    文章发表于我的个人微信公众号:嵌入式软件那些事公众号会定期分享一些嵌入式软件开发相关的技术经验,涉及嵌入式Linux、STM32、RTOS等,希望对大家有所帮助!如何在单片机上实现shell
    发表于 01-12 07:33

    caxa命令行中的应用

    caxa命令行中的应用 命令行对于大多用户来说往往只是输入数据的作用,但是其中的奥妙还有很多,下面就给大家
    发表于 10-18 18:18 2294次阅读

    Xilinx软件命令行工具:XSCT开发和调试

    了解如何使用XSCT,Xilinx软件命令行工具进行开发和调试。 该视频演示了XSCT如何充当Xilinx SDK的命令行控制台。
    的头像 发表于 11-21 06:02 1.4w次阅读

    Xilinx软件命令行工具进行开发和调试

    了解如何使用XSCT,Xilinx软件命令行工具进行开发和调试。 该视频演示了XSCT如何充当Xilinx SDK的命令行控制台。
    的头像 发表于 11-22 06:53 6698次阅读

    Git常见的误区和命令行工具等综述

    Git常见的误区和命令行工具等综述
    发表于 08-31 09:51 0次下载

    使用串口登录嵌入式Linux设备命令行的方法

    使用串口登录嵌入式Linux设备命令行的方法如下:举例如下:平台:AT91SAM9G45OS: linux-2.6.66交叉编译器:arm-linux-gcc ,版本:3.4.1用到的命令
    发表于 11-01 16:57 10次下载
    使用串口登录<b class='flag-5'>嵌入式</b>Linux设备<b class='flag-5'>命令行</b>的方法

    学习笔记(02):嵌入式Linux开发基础-shell命令使用

    嵌入式Linux开发环境的构建,Linux命令行的基本使用,VI、GCC、Makefile基本工具的使用,交叉开发环境的使用。学习条件: 1.C语言编程基础
    发表于 11-01 18:00 14次下载
    学习笔记(02):<b class='flag-5'>嵌入式</b>Linux开发基础-shell<b class='flag-5'>命令</b>使用

    Golang基于flag库实现一个命令行工具

    Golang 标准库中的 flag 库提供了解析命令行选项的能力,我们可以基于此来开发命令行工具
    的头像 发表于 10-28 09:26 1290次阅读

    新的开源命令行工具west

    电子发烧友网站提供《新的开源命令行工具west.zip》资料免费下载
    发表于 11-11 09:25 0次下载
    新的开源<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>west

    嵌入式命令行交互工具移植过程

    移植成功后就可以在MCU中体验Linux的shell命令那种感觉,注意一定要修改输出的末尾行模式,不然会不能正常使用
    的头像 发表于 02-06 15:00 1140次阅读

    一个开源MCU级的命令行交互组件

    一个开源MCU级命令行交互组件~
    的头像 发表于 10-17 16:26 422次阅读
    一个开源MCU级的<b class='flag-5'>命令行</b><b class='flag-5'>交互</b>组件

    单片机上如何做shell命令行交互

    做过嵌入式Linux开发或使用过桌面Linux系统的童鞋们,肯定对shell命令交互印象比较深刻,然而我们大多数搞嵌入式软件开发的码农都是基于单片机,比如51、STM32等进行开发的,
    的头像 发表于 11-01 15:16 1359次阅读