finsh初步

finsh初步一.finsh在RT-Thread中被设计成一个独立的线程,它试图从外部设备中获得用户的输入,然后对用户命令进行解析执行。正确使用finsh需要一个关联过程:rt_hw_board_init()函数调用串口初始化函数rt_hw_usart_init(),此函数初始化串口,并向系统注册“usart1”设备,接着系统调用rt_console_set_device()函数设置“usart1…

大家好,又见面了,我是你们的朋友全栈君。

一. 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 = 1;
void wang(int num)
{
    if(num < 10000) 
        wang_num = wang_num++ * 2;

    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初步

 

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143215.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【获奖公布】“我的2016”主题征文活动

    【获奖公布】“我的2016”主题征文活动还记得2015的年末,2016的新年伊始,你给自己定下的目标,对自己许下的诺言么?时光荏苒,一年又在指缝间溜走了,离2016的结束还剩十多天,在接下来的这十几天里,让我们用博客记录下这或开心、或痛苦,或特殊,或平淡的2016年,愿剩下的每一天我们都不会虚度~值此岁末之际,CSDN博客频道携手“图灵教育”开展了“我的2016”主题征文活动,听大家聊聊2016年的工作、生活中的点滴感动、喜悦和收获,

    2022年6月21日
  • 有刷/无刷动力电调与马达知识

    有刷/无刷动力电调与马达知识模型车需要行驶,就跟真车一样,需要一套动力单元,也有分电动和油动,至于混合动力这个估计就不需要奢望了,对于车模这么小的空间来说是不现实的,而且模型车也不需要考虑燃油经济性的问题。本文则重点介绍电动模型的动力单元。电动模型的动力,主要是指2个元件:第一就是带动车架行驶的电机(Motor),也称马达/摩打等。第二就是控制电机转速的调速器(SpeedController),很久之前早期的调速器…

    2022年5月27日
  • java环境变量 的配置与详解(全网最详细教程)

    java环境变量 的配置与详解(全网最详细教程)笔者这学期开始学习java课程,学习java开发首先需要配置java运行环境变量。虽然上课老师也讲了如何配置java环境变量,可是笔者的同学还是有好多都不会配置,所以笔者最近配置了特别多次java环境变量。如下笔者详细解释从JDK安装到环境变量的装配。目录 JDK的下载与安装 配置java环境变量JAVA_HOME变量Path变量ClassPath变量classpath…

    2022年4月30日
  • visibilitychange – 指定标签页可见时,刷新页面数据

    visibilitychange – 指定标签页可见时,刷新页面数据三个知识点:一通过监听浏览器页面可见性改变(visibilitychange)事件,来判断标签页是否可见二配置路由的meta,来判断是否是指定的标签页三调用其它模块的actions,刷新数据router.jsroutes:[{path:”/”,redirect:”index”},{path:”/ind…

    2022年6月15日
  • ExecuteSQL函数

    ExecuteSQL函数’传递参数SQL传递查询语句,MsgString传递查询信息。自身以一个数据集对象的形式返回PublicFunctionExecuteSQL(ByValSQLAsString,MsgStringAsString)AsADODB.Recordset DimCnnAsADODB.Connection’定义连接对象 DimRstAsADODB

    2022年5月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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