当前位置:网站首页>RT-Thread 添加 msh 命令
RT-Thread 添加 msh 命令
2022-06-23 09:41:00 【小辉_Super】
本文参考《RT-Thread编程手册》https://www.bookstack.cn/read/rtthread-manual-doc/10.6.md
如何添加命令
在使用 FinSH 时,系统提供了一些很实用的命令,比如:

其实我们也可以自己添加一些命令到 msh 中,方法如下:
MSH_CMD_EXPORT(command, desc);
command 是需要添加的命令(函数名),desc 是命令的描述。
简单测试
下面用一个简单的 my_hello 命令来做测试,在工程中添加如下代码:
void my_hello(void)
{
rt_kprintf("hello world\n");
}
MSH_CMD_EXPORT(my_hello, msh cmd test);
在 msh 命令行上输入 help 命令,可以看到我们的 my_hello 命令已经添加到了命令列表之中:

输入 my_hello 命令,成功运行了 my_hello() 函数:

可变参数的命令
函数一般都是可以带参数的,msh 命令也可以带参数,并且 msh 还支持添加可变参数的命令,定义的格式为:
void my_cmd(int argc, char **argv)
同样,我们写一个简单的测试例子:(记得打开 MicroLIB)
#include <string.h>
#include <stdio.h>
void led_ctrl(int argc, char **argv)
{
if(argc != 3)
{
rt_kprintf("正确格式:led_ctrl LEDx ON/OFF\n");
return;
}
if(!strcmp(argv[1] , "LED0"))
{
if(!strcmp(argv[2] , "ON"))
{
rt_kprintf("led0 on!\n");
}
else if(!strcmp(argv[2] , "OFF"))
{
rt_kprintf("led0 off!\n");
}
}
else if(!strcmp(argv[1] , "LED1"))
{
if(!strcmp(argv[2] , "ON"))
{
rt_kprintf("led1 on!\n");
}
else if(!strcmp(argv[2] , "OFF"))
{
rt_kprintf("led1 off!\n");
}
}
}
MSH_CMD_EXPORT(led_ctrl, "LEDx ON/OFF"); // 不加双引号,ON/OFF 会显示为1/0
测试结果:(参数不同,运行的内容也不同)

边栏推荐
猜你喜欢
![[MRCTF2020]Ez_bypass](/img/cd/bd6fe5dfc3f1942a9959a9dab9e7e0.png)
[MRCTF2020]Ez_bypass

Precautions for map interface

Go 单元测试

Redis learning notes RDB of persistence mechanism

薄膜干涉数据处理

Qiming Xingchen Huadian big data quantum security innovation laboratory was unveiled and two black technology products were released

UEFI source code learning 4.1 - pcihostbridgedxe
![[极客大挑战 2019]HardSQL](/img/73/ebfb410296b8e950c9ac0cf00adc17.png)
[极客大挑战 2019]HardSQL

什么是闭包函数

J. Med. Chem. | RELATION: 一种基于靶标结构的深度学习全新药物设计模型
随机推荐
高性能算力中心 — InfiniBand — Overview
开发者,你对云计算可能有些误解
【CTF】 2018_ rop
ICLR 2022 | dynamic convolution tadaconv in video and efficient convolution video understanding model tadaconvnext
Thin film interference data processing
Bit binding
Redis learning notes - traverse key
Precautions for map interface
Redis learning notes master-slave copy
使用base64,展示图片
UEFI源码学习3.7 - NorFlashDxe
Go 字符串比较
Redis learning notes - redis and Lua
Cesium加载正射影像方案
Copilot免费时代结束!正式版67元/月,学生党和热门开源项目维护者可白嫖
[网鼎杯 2020 青龙组]AreUSerialz
Mysql database introduction summary
[GXYCTF2019]BabySQli
Wechat applet: click the button to switch frequently, overlap the custom markers, but the value does not change
Multithreaded exercises