RT_thread nano移植Finsh

2024-06-02 07:44
文章标签 rt thread nano finsh 移植

本文主要是介绍RT_thread nano移植Finsh,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考连接:

https://blog.csdn.net/baseball214/article/details/131341722

移植的前提是,你已经有一个可以使用的nano功能.

1.将rtthread-nano-master\rt-thread\components文件复制到工程.

2.添加Finsh中的.c以及相关.h头文件路径

3.注释掉finsh_config.h文件中以下两个宏定义,因为这个在rtconfig.h文件中已经定义,提示重复定义.

#define FINSH_THREAD_PRIORITY       21
#define FINSH_THREAD_STACK_SIZE     1024

 4.注释掉finsh_port.c中

RT_WEAK char rt_hw_console_getchar(void)
{/* Note: the initial value of ch must < 0 */int ch = -1;//#error "TODO 4: Read a char from the uart and assign it to 'ch'."return ch;
}

 5.实现rt_hw_console_getchar(参考Nano 移植控制台/FinSH (rt-thread.org))

 我使用的是将中断接收到的数据加到队列中, 然后从队列读出来.

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART1)             /* 如果是串口1 */{HAL_UART_Receive_IT(&g_uart1_handle, (uint8_t *)g_rx_buffer, RXBUFFERSIZE);InQue(rx_que, g_rx_buffer[0]);}
}void USART1_IRQHandler(void)
{ HAL_UART_IRQHandler(&g_uart1_handle);       /* 调用HAL库中断处理公用函数 */
}char rt_hw_console_getchar(void)
{int ch = -1;uint8_t val;rt_thread_mdelay(30);if(OutQue(rx_que,&val)){ch = val;}return ch;
}

6.在rtconfig.h中加#define RTE_USING_FINSH

移植成功,就可以开心的使用了 

使用Mobaxterm时,发现出现如下, 需要右键命令框,如下设置

添加命令

// 清屏函数
static long clear(void)
{rt_kprintf("\x1b[2J\x1b[H");return 0;
}
MSH_CMD_EXPORT(clear, clear the screen);// 多参数测试函数添加
static long test(int argc, char** argv)
{int i;for(i = 0; i < argc; i++){rt_kprintf("display %d string: %s\r\n", i, argv[i]);}return 0;
}
MSH_CMD_EXPORT(test, test function);

 

这篇关于RT_thread nano移植Finsh的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1023356

相关文章

jmeter之Thread Group(线程组)

Thread Group(线程组) 1.线程组,或者可以叫用户组,进行性能测试时的用户资源池。 2.是任何一个测试计划执行的开始点。 3.上一篇提到的“控制器”和“HTTP请求”(采集器)必须在线程组内;监听器等其他组件,可以直接放在测试计划下。 线程组设置参数的意义 我们以下图为例,进行详细说明。见下图:  区域1(在取样器错误后要执行的动作) 这个区域的主要作用很明显,在线程内

Exception processing async thread queue Exception processing async thread queue

错误信息描述: eclipse 在debug中弹出异常信息框 Exception processing async thread queue Exception processing async thread queue 解决方法: eclipse 中有一个Expressions窗口,里面添加的 expression 没有正确执行,并且没有删除,只要 Remove All Expressio

no thread-bound request found:are you referring to request

问题描述: 通过webservice接口调用程序时,发现在执行查询的时候一直报一个错误,错误信息如下: java.lang.IllegalStateExceptino:No thread-bound request found:are you referring to request attributes outside of an actual web request,or processi

移植对话框MFC

VC版 MFC程序对话框资源移植 以下均拷贝自上面,仅用来记录 (部分有删除) 法1: Eg:将B工程调试好的对话框移植到A工程中 1.资源移植         1.1  在2017打开B工程,在工作区Resource标签页中选中Dialog文件夹下的资源文件,按Ctrl+C或点击Edit->Copy.         1.2. 关闭当前工程,注意不要关闭VC6,打开B工程(File

FFplay源码分析-video_thread

《FFmpeg原理》的社群来了,想加入社群的朋友请购买 VIP 版,VIP 版有更高级的内容与答疑服务。 本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8 FFplay 源码分析系列以一条简单的命令开始,ffplay -i a.mp4。a.mp4下载链接:百度网盘,提取码:nl0s 。 上一篇文章已经讲解完了 audio_thread() 音频解码

FFplay源码分析-read_thread

《FFmpeg原理》的社群来了,想加入社群的朋友请购买 VIP 版,VIP 版有更高级的内容与答疑服务。 本系列 以 ffmpeg4.2 源码为准,下载地址:链接:百度网盘 提取码:g3k8 FFplay 源码分析系列以一条简单的命令开始,ffplay -i a.mp4。a.mp4下载链接:百度网盘,提取码:nl0s 。 如下图所示,本文主要讲解 read_thread() 函数的内

基于imx6ull开发板 移植opencv4.7.0

一、概述 本章节是针对opencv-4.7.0移植到Linux系统,运行在正点原子-I.MX6U ALPHA开发板 上,详细的移植流程如下。 二、环境要求 2.1 硬件环境 正点原子-I.MX6U ALPHA开发板虚拟机:VMware 2.2 软件环境 Ubuntu系统要求:20.04opencv版本: 4.7.0opencv贡献软件版本:4.x交叉工具链版本:gcc-linaro-6

conda环境的备份和移植

备份和移植 Conda 环境可以通过以下步骤实现: 克隆环境 conda create --name backup_myenv --clone myenv# 删除原环境# conda remove --name myenv --all 移植 Conda 环境 方法1:使用 environment.yml 文件移植环境 # 导出环境的依赖项conda env export --na

「生信Debug」OpenBLAS blas_thread_init: pthread_create: Resource temporarily unavailable

BLAS(Basic Linear Algebra Subprograms),翻译为基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序。OpenBLAS是其中一个实现了相关运算的开源程序库,其他软件在开发的时候就不需要额外造轮子,直接调用相关的API即可。 之前在使用OrthoFinder遇到了类似的问题,见https://github.com/davidemms/OrthoF

52、U-boot2023的移植教程

uboot:https://ftp.denx.de/pub/u-boot/ nxp-uboot:https://github.com/nxp-imx/uboot-imx 1、顶层Makefile  文件加入编译的两种方式:以xxx/xxx.c文件为例         1、使用menuconfig:               先编辑.c所在目录下的Kconfig,加入配置项xxx