这里主要讲了基于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中的调试使用的更多相关文章

  1. c/c++中int main(int argc,char *argv[])的具体含义

    int main(int argc,char * argv[ ]) argv为指针的指针 argc为整数 char **argv or: char *argv[ ] or: char argv[ ][ ...

  2. int main(int argc,char *argv[])的具体含义

    int main(int argc,char * argv[]) argv为指针的指针 argc为整数 char **argv or: char *argv[] or: char argv[][] m ...

  3. 如何理解主函数main中变量(int argc,char *argv[])的含义

    每一个C语言的初学者,都会注意到主函数main()里的两个参数,但是初学者一般不会去关注这两个参数的具体作用,下面我们就来介绍这两个参数的具体作用. main()函数是控制台程序的入口,int mai ...

  4. opencv中 int main(int argc,char* argv[])详解

    opencv中  int main(int argc,char* argv[])详解 argc是命令行总的参数个数     argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     ...

  5. C++中 int main(int argc, char **argv) 命令行传递参数

    C++中,比较常见的是不带参数的主函数int main(),如果使用命令行执行程序,主函数也可以接收预先输入的参数,形式如下. int main(int argc,char **argv) argc: ...

  6. VC++中的int main(int argc, char argv[])是什么意思

    这是C/C++的一重要函数,叫主函数.无论程序多复杂,代码中必须有这么一个函数,也只能有一个这样的函数:程序执行时就是从这个函数进入的.由于问得比较笼统,如果你想知道详细情况的话,发给你一个网友的求助 ...

  7. 关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试

    https://blog.csdn.net/LYJ_viviani/article/details/51873961 https://stackoverflow.com/questions/30241 ...

  8. int main(int argc,char* argv[])参数详解

    argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[] ...

  9. int main(int argc,char* argv[]) 简单理解

    (1)第一个int代表整个main函数的返回值,若函数正常执行完毕,返回0,异常返回则是-1 (2)int argc代表命令行参数的总个数,既然是个数,那就是整型的,即:int; (3)char* a ...

  10. main()函数的输入参数 main(int argc, char** argv)

    一般简单的C++程序,main函数的写法都是 int main() {... ; return 0;},但是,如果在运行程序时需要有参数输入,可以是使用将主函数写成int main(int argv, ...

随机推荐

  1. Mybatis(Map)

    Map 假设,我们的实体类,或者数据库中的表,字段或参数过多,我们应当考虑使用map 创建接口 //万能的mapper,我们不需要知道数据库里面有什么,是一个键值对的表现 //我们只需查询对应的字段 ...

  2. python添加水印

    # coding:utf-8 from PIL import Image, ImageDraw, ImageFont def add_text_to_image(image, text): font ...

  3. Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000: java.net.ConnectException: 拒绝连接 (Connection refused) (state=08S01,code=0)

    一:启动hiveserver2服务 二:启动beeline 三:连接hiveserver2(下面的1000000端口号适当改小写因为其超出最大端口号的范围建议改为10000) 如果启动不成功实现我们先 ...

  4. disk test use sysbench and fio

    sysbench 进入到测试目录 prepare.sh sysbench --test=fileio --file-test-mode=$1 --file-num=100 --file-total-s ...

  5. 这样拆分和压缩css代码

    在[拆分]和[压缩]css代码之前,首先要配置 loader 处理不同的 css 资源,因为 webpack 没有默认可处理 css 资源的规则,具体可参考这一篇 webpack处理css/less资 ...

  6. Nginx快速入门:简介、安装、配置

    Nginx概述 与 Apache 软件类似,Nginx ("engine x")是一个开源的.支持高性能.高并发的web服务和代理服务软件.它是由俄罗斯人 Igor Sysoev ...

  7. [selenium]浏览器基本操作

    前言 版本: python:3.9 selenium:4.1.5 浏览器:firefox 创建浏览器对象 from selenium import webdriver driver = webdriv ...

  8. Oracle内存管理方式介绍(转载)

    "Oracle内存管理可分为两大类,自动内存管理和手动内存管理.其中手动内存管理又可分为自动共享内存管理,手动共享内存管理,自动PGA内存管理以及手动PGA内存管理.本文会简单的介绍不同的内 ...

  9. 大规模 IoT 边缘容器集群管理的几种架构-6-个人体验及推荐

    前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介 大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s 大规模 IoT 边缘容器集群管理的几种架构-2-H ...

  10. 发现了一个可以免费下载jar包的网站,所有jar包都有

    苦苦找不到项目所需要的jar包?发现了一个可以免费下载jar包的网站: https://jar-download.com/ 非常好用. 每个JAR文件都将从官方Maven存储库下载.通过下载所有Mav ...