嵌入式技术论坛
直播中

李萍

8年用户 1484经验值
私信 关注
[问答]

Arduino DUE中MSH_CMD_EXPORT没有效果?

在Arduino IDE中,导入了onelife分享的Arduino DUE的RT-thread支持包

经过初步应用,在DUE板上运行RT-thread功能正常。下面在测试msh增加用户命令的时候,出现了问题:

采用MSH_CMD_EXPORT()增加自己定义的函数作为msn命令的时候,编译、下载都正常,但是在msh中没有出现自己定义的函数!

help显示中没有该命令,执行该命令,也显示找不到命令,请教专家,这是什么方面的问题?如何解决?

代码框架如下:

void disp(void) {
。。。
}
MSH_CMD_EXPORT(disp, display sample data);

感谢大佬指点!

回帖(1)

李军

2023-2-1 15:57:50
1.这一版的RT-thread移植,可以直接在Arduino IDE中使用,对我们这样RT-thread刚入门,但是Arduino IDE比较熟的人,比较友好。
2.这个移植,似乎没有实现MSH_CMD_EXPORT(),所以不能使用。
在finsh目录中,有ADD_MSH_CMD()的功能,所以msh中有写指令。但是ADD_MSH_CMD()在用户代码中无法使用(编译会报错)
所以考虑在RT-thread的finsh目录中,增加一个用户命令的文件,例如test.c,定义用户命令函数,如test();
然后在shell_cmd.h文件中,增加一句ADD_MSH_CMD(),定义挂载函数。(由于本移植没有实现__has_include宏,所以shell_cmd中不能打开包含user_cmd.h的语句,所以无法新加user_cmd.h文件在其中定义加载test的ADD_MSH_CMD()宏函数。
经过上述处理,实现了msh中增加test命令的功能。虽然不是很理想(没能实现在用户目录中添加),但是总算能够使用了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分