常用单片机调试方式有仿真器、串口、屏幕显示。
1、仿真器仿真
IAR、keil等集成开发环境配合仿真器调试程序很适合单片机
优点:可设置断点、实时查看内存等
缺点:要有仿真器
2、串口调试
相较于仿真器仿真,串口调试不需要仿真器,在某些没有或者不能使用仿真器的系统上更实用,通用性更强。
一般串口输出我们会使用重定向到串口的printf函数或者自定义的串口输出函数(比如:send_debug_msg(char* msg)),我们在程序中某处输出调试信息
#ifdef DEBUGsend_debug_msg("exec 002");
#endif
像这样每句输出前后都会带上 #ifdef #endif,看起来不是很简洁,我们换一种写法让他只占用一行。
#ifdef DEBUG
#define DEBUGF(fmt) send_debug_msg(fmt)
#else
#define DEBUGF(fmt)
#endifor#ifdef DEBUG
#define DEBUGF(fmt,args...) printf(fmt ,##args)
#else
#define DEBUGF(fmt,args...)
#endif
这样我们在写程序时可以直接写DEBUGF("exec 002");如果DEBUG被定义了这句话就会被替换为send_debug_msg("exec 002");正常输出。否则会被替换为空,用printf函数调试用法也类似。
DEBUGF("exec 002");等价于#ifdef DEBUGsend_debug_msg("exec 002");
#endif
3、屏幕显示
使用屏幕显示调试的信息,这种方式有较大限制,因为很多目标系统并不配有屏幕,不推荐使用