zoukankan      html  css  js  c++  java
  • finsh初步

    一. 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
    ", wang_num);
    }
    
    FINSH_FUNCTION_EXPORT(wang, just test)
    FINSH_VAR_EXPORT(wang_num, finsh_type_int, just var test)
    
    //#endif
    #endif

    执行结果:

  • 相关阅读:
    使用XMLReader读XML
    C#命名空间大全详细教程
    C# using 三种使用方式
    SVN服务器搭建
    简单的自定义Session
    python学习第十八天 --错误&异常处理
    锁的等级:方法锁、实例锁、类锁
    java线程池如何合理的设置大小
    挖掘两个Integer对象的swap的内幕
    实现线程同步的方式
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/5450375.html
Copyright © 2011-2022 走看看