当前位置: 代码迷 >> 综合 >> 51/stm32单片机软件调试方法与技巧
  详细解决方案

51/stm32单片机软件调试方法与技巧

热度:14   发布时间:2024-01-26 05:09:10.0

常用单片机调试方式有仿真器、串口、屏幕显示。

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、屏幕显示

使用屏幕显示调试的信息,这种方式有较大限制,因为很多目标系统并不配有屏幕,不推荐使用