9673浏览
查看: 9673|回复: 3

[进阶] 分享:用于Arduino代码调试的宏

[复制链接]
本帖最后由 Ricky 于 2014-3-24 10:10 编辑

对于复杂一些的代码,往往需要通过串口打印进行调试,下面的宏将方便调试过程,调试OK了,将#define _DEBUG 1 改为 #define _DEBUG 0即可,代码就变干净了。

1 调试宏:
  1. #define _DEBUG 1   //1 = debug;  0 = normal
  2. #if _DEBUG
  3.     #define DBG_BEGIN(baud)  { Serial.begin(baud); while(!Serial); }
  4.     /*assert */
  5.     #define DBG_ASSERT(A) if( !(A) ) { Serial.print("ERR:F=");Serial.print(__FILE__);Serial.print(" L=");Serial.println(__LINE__); delay(1000); while(1);}
  6.     #define DBG_WARNING(A) if( !(A) ) { Serial.print("WARNING:F=");Serial.print(__FILE__);Serial.print(" L=");Serial.println(__LINE__); delay(500);}
  7.     /*print information*/
  8.     #define DBG_PRINT_FUNNAME  { Serial.print("INFO:Fun=");Serial.println(__func__);}  //put it into the begin of function, you can trace the flow of program
  9.     #define DBG_PRINT(info)  { Serial.print(info);}
  10.     #define DBG_PRINTLN(info)  { Serial.println(info);}
  11.     #define DBG_PRINTLN_VAR(var, type)  { Serial.print(#var);  Serial.print("=");Serial.print(var, type); Serial.print(" @"); Serial.println(type);}
  12. #else
  13.     #define DBG_BEGIN
  14.     #define DBG_ASSERT(A)
  15.     #define DBG_WARNING(A)
  16.     #define DBG_PRINT_FUNNAME
  17.     #define DBG_PRINT(info)
  18.     #define DBG_PRINTLN(info)
  19.     #define DBG_PRINTLN_VAR(val, type)
  20. #endif
复制代码




2、使用样例
  1. int led = 13;
  2. void setup()
复制代码



3、样例在debug状态下色输出
INFO:Fun=softBlink
period=300 @10
times=11 @2
ERR:F=Blink.ino L=50


nemon  中级技匠

发表于 2014-3-24 08:42:14
















回复

使用道具 举报

Youyou  初级技匠

发表于 2014-3-25 10:21:33

很方便调试,收藏了。
回复

使用道具 举报

Angelo  初级技匠

发表于 2014-3-28 11:41:24

样例程序似乎不太完整?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail