一. finsh在RT-Thread中被设计成一个独立的线程,它试图从外部设备中获得用户的输入,然后对用户命令进行解析执行。

正确使用finsh需要一个关联过程:

  1. rt_hw_board_init()函数调用串口初始化函数rt_hw_usart_init(),此函数初始化串口,并向系统注册“usart1”设备,接着系统调用rt_console_set_device()函数设置“usart1”作为console输出。
  2. rtthread_startup()函数中调用finsh_system_init()初始化finsh组件,并调用finsh_set_device(“usart1”),将“usart1”和finsh关联起来,这样usart1的输入即可被finsh读入并分析、执行。

上述过程需要正确配置如下项:

#define RT_USING_FINSH    //rt_config.h

#define RT_USING_UART1      //rt_config.h

#define RT_CONSOLE_DEVICE_NAME   “usart1”    //rtconfig.h

二.finsh中自定义命令、函数及变量

使用宏方式输出,需在rtconfig.h中定义FINSH_USING_SYMTAB

FINSH_FUNCTION_EXPORT()

FINSH_FUNCTION_EXPORT_ALIAS()

FINSH_VAR_EXPORT()

#include <rtthread.h>

#ifdef RT_USING_FINSH
//#ifdef FINSH_USING_SYMTAB #include <finsh.h> // must include
static int wang_num = ;
void wang(int num)
{
if(num < )
wang_num = wang_num++ * ; rt_kprintf("Param:%d\n", wang_num);
} FINSH_FUNCTION_EXPORT(wang, just test)
FINSH_VAR_EXPORT(wang_num, finsh_type_int, just var test) //#endif
#endif

执行结果:

finsh初步的更多相关文章

  1. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  2. CSharpGL(29)初步封装Texture和Framebuffer

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...

  3. Android自定义View初步

    经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...

  4. 初步认识Node 之Node为何物

    很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的.具体的概念了.    Node的目标 提供一种简单的构建可伸缩网络程序的方法.那么,什么是可伸缩网络程序呢?可伸缩 ...

  5. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

    [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website develop ...

  6. 基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  7. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

  8. CozyRSS开发记录14-RSS源管理初步完工

    CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添 ...

  9. 初步了解CPU

    了解CPU By JackKing_defier 首先说明一下,本文内容主要是简单说明CPU的大致原理,所需要的前提知识我会提出,但是由于篇幅我不会再详细讲解需要的其他基础知识.默认学过工科基础课. ...

随机推荐

  1. iOS中用json接收图片的二进制流

    标题可能说的有点混乱,再好好描述一下我遇到的问题: 我负责做一款App的iOS版本,服务器和Android版本都开发完了.服务器的图片存的不是路径,而是在数据库中的blob流对象,由于要求所有数据都用 ...

  2. iOS 取消警告

    第一步找到要取消的警告类型 在相应的警告上右击->Reveal in Log 被选中的-Wdeprecated-declarations就是我们所要的警告类型了. -W是前缀,这个前缀表示的是 ...

  3. 狗日的Javascript中的闭包

    前面的话: 闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.下面是作者从作用域链慢慢讲到 ...

  4. android出现段错误时的查找定位的方法

    android出现段错误时的查找方法,例如出现log: - ::): Fatal signal (SIGSEGV) at ), thread (SurfaceFlinger) - ::): *** * ...

  5. 【spring boot】4.spring boot配置多环境资源文件

    一个spring boot 项目在开发环境.测试环境.生产环境下,好多的配置都是不尽相同的.所以配置多分的资源文件,仅仅在部署在不同环境的时候,选择激活不同的资源文件就可以实现多环境的部署. 项目结构 ...

  6. Android Studio生成APK自动追加版本号、自定义apk名称、指定签名证书文件

    你也可以查看我的其他同类文章,也会让你有一定的收货! 生成APK自动追加版本号 可自动区分debug和release,并追加版本号: 打开 build.gradle 在 android 节点中插入下面 ...

  7. FL2440 rt3070模块station模式移植

    ---------------------------------------------------------------------------------------------------- ...

  8. 面试题:Java中值传递和引用传递的问题

    随便写写留着自己看. 首先,Java的参数传递,不管是基本数据类型还是引用类型的参数,都是按值传递,没有按引用传递! 当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本.指向同 ...

  9. ArcGIS教程:Iso 聚类非监督分类

    摘要 使用 Iso 聚类工具和最大似然法分类工具对一系列输入栅格波段运行非监督分类. 使用方法 · 此工具结合了 Iso 聚类工具与最大似然法分类工具的功能.输出经过分类的栅格.作为可选的,它也能够输 ...

  10. docker集群——搭建Mesos+Zookeeper+Marathon的Docker管理平台

    服务器架构 机器信息: 这里部属的机器为3个Master控制节点,3个slave运行节点,其中: zookeeper.Mesos-master.marathon运行在Master端:Mesos-sla ...