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

 

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

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

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

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

(0)


相关推荐

  • 网游盗号木马关闭杀软窗口盗号「建议收藏」

    网游盗号木马关闭杀软窗口盗号「建议收藏」病毒进入系统后,在系统盘的%WINDOWS%目录下生成病毒文件NAVMon32.exE和NAVMon32.dll,并修改注册表启动项相关数据,使自己能在每次系统启动时跟着自动运行起来。  紧接着,它创建线程,循环查找杀毒软件卡巴斯基的报警和提示窗口,只要找到,便模拟用户的鼠标点击,抢先关闭该窗口,使用户无法获得卡巴发出的系统异常警告。这样,病毒就能尽可能久地呆在用户系统中。  病毒顺利运行

  • java 音频转为wav格式标准音频 | Java工具类

    java 音频转为wav格式标准音频 | Java工具类目录简述环境依赖maven依赖ffmpeg依赖工具类代码总结简述该工具类主要是为了将各类音频转为wav标准格式,其中可以调节采样率、声道数等指标。主要是使用ffmpeg命令进行转换。环境依赖maven依赖<dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platfor

  • numpy.meshgrid()理解

    numpy.meshgrid()理解一句话解释numpy.meshgrid()——生成网格点坐标矩阵。关键词:网格点,坐标矩阵网格点是什么?坐标矩阵又是什么鬼?我先问个问题:这张图你会生成吗?…

  • pycharm database 没有_pycharm社区版使用教程

    pycharm database 没有_pycharm社区版使用教程网上教程都是直接打开右上角的database,但是我死活也没找到,后来发现应该是因为社区版的问题,需要自己安装,详细步骤如下图。1.打开File—》Settings—-》Plugins搜索database,选择DatabaseNavigator安装即可done~

  • 她不在

    她不在她不在

  • DropDownList DataBound事件

    DropDownList DataBound事件当我们在对DropDownList绑定数据的时候DropDownList1.DataTextField=””;DataTextField绑定要显示的值DropDownList1.DataValueField=””;DataValueField绑定value值可是当绑定的时候没有value值的话,value的值就会和Text值相等,可是我们value值又不想取文字形式的…

发表回复

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

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