首页 > 其他 > 详细

(int argc, char *argv[])在MCU中的调试使用

时间:2021-08-25 23:35:16      阅读:20      评论:0      收藏:0      [点我收藏+]

这里主要讲了基于RTT的 finsh->MSH_CMD_EXPORT 方法,在串口终端中调用自定义函数,并传入参数的方法。


在传统的MCU开发中

当我们需要测试一个函数在传入不同参数时的运算结果时,往往使用数组或者单步修改变量值的方法来测试。这种方法不是很方面。

今天分享一个基于RTT的 finsh->MSH_CMD_EXPORT ,在串口终端中调用自定义函数,并传入参数的方法。

例程如下:

static void _cb(uint32_t flag) {
    /*内容不重要*/
}
    
static void cy_up(int argc, char *argv[]) {
    uint32_t bitchs;

    if (argc == 2) {
        bitchs = strtol(argv[1], NULL, 0);
        cy_broadcast_and_read_back(bitchs, _cb);
        D_LOG("send to UP %x\n", bitchs);
    }
    else {
        D_LOG("Input parameter error!\n");
    }
}
MSH_CMD_EXPORT(cy_up, cyUP test);

这里需要重点讲下 argc 和 argv

argc[0] 固定为程序名,例如上述示例中 argc[0] 的内容为字符串 cy_up。

argc 表示输入输入的形参数量。它的值永远 ≥ 1.

技术分享图片

如上,当我们输入 cy_up 0x8010 时,我们将在 argc[1] 中得到 “0x8010” 的字符串。注意这里是字符串!不是十六进制数。如果想得到十六进制(或者其它)我们需要调用C库标准函数 strtol() 将字符串转换为十六进制整数。

由于上述例程中的项目已经完成,下面我找了一个类似的ubuntu下的例程,来直观体验一下:

源程序:

技术分享图片

输入结果:

技术分享图片

(int argc, char *argv[])在MCU中的调试使用

原文:https://www.cnblogs.com/svchao/p/15186917.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!