RT论坛_Thread

RT论坛_Threadfinsh是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试或查看系统信息。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

文章主要参考:https://blog.csdn.net/killercode11/article/details/104290949,借鉴了rt_hw_console_getchar()的定义。

本文不介绍 RT-Thread 的串口配置,如有需要,可以参考:重映射串口到 rt_kprintf 函数

将 FinSH源码添加到工程

FinSH源码在 RT-Thread 源码目录的 components\finsh\ 目录下,

在这里插入图片描述

将其导入到工程中,具体操作这里不做介绍,记得要把头文件包含进来,

在这里插入图片描述

开启 FinSH

修改 rtconfig.h,开启 finsh config,下面是使用 Configuration Wizard 向导进行图形化配置,

在这里插入图片描述
其实就是将 finsh_fonfig.h 头文件包含到工程中,这个头文件里有 FisSH 的基本参数配置,

在这里插入图片描述

定义终端读取函数

移植完 FinSH 源码后,初次编译一般会报一个错误,需要将弱化函数 rt_hw_console_getchar() 里的 #error 这行屏蔽掉(记得先把该文件的只读属性关闭)

在这里插入图片描述
接着我们在 board.c 文件手动重新定义 rt_hw_console_getchar() 函数,函数内容如下,这是标准库版本,如果需要 HAL库版本,可以参考文章最前面的链接。

char rt_hw_console_getchar(void)
{ 
   
    /* Note: the initial value of ch must < 0 */
    int ch = -1;
		if(USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) != RESET)
    { 
   
        //USART_ClearITPendingBit(USART_DEBUG, USART_FLAG_RXNE);
        ch = USART_ReceiveData(DEBUG_USARTx) & 0xFF;
    }
    else
    { 
   
        if(USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_ORE) != RESET)
        { 
   
            USART_ClearITPendingBit(DEBUG_USARTx,  USART_FLAG_ORE);
        }
        rt_thread_mdelay(10);
    }

    return ch;
}

Jetbrains全家桶1年46,售后保障稳定

体验 FinSH

我使用 SSCOM 来作为终端,效果还不错,命令直接在显示窗口里输入。

在这里插入图片描述
或许有人会问为什么不用 PuTTy、XShell 这类常用的终端软件,我也想用,但连接上这类终端软件后,开发板就不运行了。

遇到的问题

1.段错误

在这里插入图片描述

导致这种错误的原因有很多种,比如 RT_MAIN_THREAD_STACK_SIZE 太小,而我是因为 RT_THREAD_PRIORITY_MAX 设置得太小(只设置为 8),小于 FINSH_THREAD_PRIORITY 的默认值 21,所以解决办法就是将 FINSH 的线程优先级(数值)改小或者将系统优先级最大值(数值范围)改大。

在这里插入图片描述

2.终端工具无法打印

使用 PuTTy、XShell,终端没反应,且开发板会卡住。初步分析的原因是 “正点原子一键下载电路和终端工具冲突”(网上他人结论),所以只能用串口调试助手来操作 Finsh 了。

3.程序不运行

这个问题可能的原因也很多,但需要注意的是:如果要使用 FinSH,就不能开启串口中断,至于为什么,我目前也没去了解。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/210436.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • jquery与vue区别_学jquery还是vue

    jquery与vue区别_学jquery还是vue仅仅从自己使用经验来说下感受。1,vue是一个前端框架,jquery是javacript库,封装了一些js常用的方法,仅此而已。vue有成熟的生态链,mvvm模式,是一个真正的web框架。表现在:1:vue有固定的写法和规定,必须要有一个div来作为容器,绑定事件方法,数据都有固定的地方,数据要写在data里面,方法要写在methods里面。而且绑定事件在dom元素标签上绑定,防止时间太…

  • RJ45 网线接口介绍

    RJ45接口通常用于数据传输,最常见的应用为网卡接口。  RJ45是各种不同接头的一种类型(例如:RJ11也是接头的一种类型,不过它是电话上用的);RJ45头根据线的排序不同,分为有两种,一种是橙白、橙、绿白、蓝、蓝白、绿、棕白、棕;另一种是绿白、绿、橙白、蓝、蓝白、橙、棕白、棕;因此使用RJ45接头的线也有两种即:直通线、交叉线。RJ45型网卡接口  10100basetxRJ

  • ruby 基础笔记

    ruby 基础笔记

  • echarts数据可视化如何实现_数据可视化页面

    echarts数据可视化如何实现_数据可视化页面ECharts实现数据可视化入门教程(超详细)ECharts介绍ECharts入门教程第一步:下载并引入scharts.js文件第二步:编写代码目录结构编写index.html代码效果展示ECharts的基础配置主要配置(常用的)案例讲解ECharts介绍官网链接:ApacheEChartsECharts是一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢

    2022年10月12日
  • pycharm输入了激活码提升key is invaild_在线激活

    (pycharm输入了激活码提升key is invaild)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlEC87GSLRKZ-eyJsaWNlbnNlSWQi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号