(int argc, char *argv[])在MCU中的调试使用
这里主要讲了基于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中的调试使用的更多相关文章
- c/c++中int main(int argc,char *argv[])的具体含义
int main(int argc,char * argv[ ]) argv为指针的指针 argc为整数 char **argv or: char *argv[ ] or: char argv[ ][ ...
- int main(int argc,char *argv[])的具体含义
int main(int argc,char * argv[]) argv为指针的指针 argc为整数 char **argv or: char *argv[] or: char argv[][] m ...
- 如何理解主函数main中变量(int argc,char *argv[])的含义
每一个C语言的初学者,都会注意到主函数main()里的两个参数,但是初学者一般不会去关注这两个参数的具体作用,下面我们就来介绍这两个参数的具体作用. main()函数是控制台程序的入口,int mai ...
- opencv中 int main(int argc,char* argv[])详解
opencv中 int main(int argc,char* argv[])详解 argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 ...
- C++中 int main(int argc, char **argv) 命令行传递参数
C++中,比较常见的是不带参数的主函数int main(),如果使用命令行执行程序,主函数也可以接收预先输入的参数,形式如下. int main(int argc,char **argv) argc: ...
- VC++中的int main(int argc, char argv[])是什么意思
这是C/C++的一重要函数,叫主函数.无论程序多复杂,代码中必须有这么一个函数,也只能有一个这样的函数:程序执行时就是从这个函数进入的.由于问得比较笼统,如果你想知道详细情况的话,发给你一个网友的求助 ...
- 关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试
https://blog.csdn.net/LYJ_viviani/article/details/51873961 https://stackoverflow.com/questions/30241 ...
- int main(int argc,char* argv[])参数详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[] ...
- int main(int argc,char* argv[]) 简单理解
(1)第一个int代表整个main函数的返回值,若函数正常执行完毕,返回0,异常返回则是-1 (2)int argc代表命令行参数的总个数,既然是个数,那就是整型的,即:int; (3)char* a ...
- main()函数的输入参数 main(int argc, char** argv)
一般简单的C++程序,main函数的写法都是 int main() {... ; return 0;},但是,如果在运行程序时需要有参数输入,可以是使用将主函数写成int main(int argv, ...
随机推荐
- 2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。 其中的每一个数字出现的频率都相同。
2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量. 其中的每一个数字出现的频率都相同. 答案2023-07-29: 大体步骤如下: 1.初始化变量base为固定值10 ...
- Django: You are trying to add a non-nullable field 'name' to mainnav without a default; we can't do that (the database needs something to populate existing rows).
错误原因: 语句中缺少默认值 class Main(models.Model): img = models.CharField(max_length=255) name = models.CharFi ...
- PoW是什么?
PoW是什么? 工作量证明(proof of work,PoW)是一种用于确认和验证区块链交易和新区块有效性的共识算法.区块链中常见的工作量证明算法包括比特币的SHA-256.以太坊的Ethash.莱 ...
- [elasticsearch]部署安装单节点和集群
单点安装 进入安装目录:cd /usr/local 获取安装包: wget http://172.29.50.31/download/ProgramPackage/elasticsearch/elas ...
- 并发工具类Phaser
前言 在面试这一篇我们介绍过CountDownLatch和CyclicBarrier,它们都是jdk1.5提供的多线程并发控制类,内部都是用AQS这个同步框架实现. 在我们的实际项目中,有很多场景是需 ...
- 12、Spring之基于xml的AOP
阅读本文前,建议先阅读Spring之基于注解的AOP 12.1.环境搭建 创建名为spring_aop_xml的新module,过程参考9.1节 12.1.1.配置打包方式和依赖 <?xml v ...
- 解决git出现fatal: detected dubious ownership in repository at XXXXX的错误
在window环境下,使用git命令时报错fatal: detected dubious ownership in repository at XXXXXX,图片如下 解决方法如下 添加一行代码 gi ...
- JSTL常用代码总结
1. jstl判空: (1) 须先引人<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix=" ...
- 五分钟 k8s入门到实战--跨服务调用
背景 在做传统业务开发的时候,当我们的服务提供方有多个实例时,往往我们需要将对方的服务列表保存在本地,然后采用一定的算法进行调用:当服务提供方的列表变化时还得及时通知调用方. student: url ...
- 【krpano】密码插件
密码插件可以在浏览场景或者执行action之前弹出密码输入框,要求用户输入密码.当密码输入成功了才可以进行下一步操作. 下载地址:http://pan.baidu.com/s/1gfOKKKF 给场景 ...