码迷,mamicode.com
首页 > 其他好文 > 详细

finsh初步

时间:2016-05-01 13:31:58      阅读:397      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/embedded-linux/p/5450375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!