[经验分享] 单片机串口调试的巧妙方法

[复制链接]
69|15
jkl21 发表于 2026-1-19 09:50 | 显示全部楼层 |阅读模式



  1. printf("%s %s\r\n" ,__DATE__ ,__TIME__ );//日期  时间
  2. printf("%s    %s   %d\n",__FILE__,__FUNCTION__,__LINE__);//文件名、函数名、行号
  1. void DBG_STRING(char *title, void *pvbuff, unsigned int u32Len)
  2. {
  3.     unsigned int i, j;
  4.     unsigned char *pu8Buff = pvbuff;
  5.    
  6.     printf("%s\r\n", title);
  7.     printf("%s", pu8Buff);
  8.     printf("\n");
  9. }


  10. void DBG_HEX(char *title, void *pvbuff, unsigned int u32Len)
  11. {
  12.     unsigned int i, j;
  13.     unsigned char *pu8Buff = pvbuff;
  14.    
  15.     printf("%s\r\n", title);
  16.     for (i = 0; i < u32Len; i++)
  17.     {
  18.         printf("%02X", pu8Buff[i]);
  19.     }
  20.     printf("\n");
  21. }


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
1988020566 发表于 2026-2-3 19:47 | 显示全部楼层
使用同步头实现波特率自适应              
hearstnorman323 发表于 2026-2-3 22:24 | 显示全部楼层
考虑使用自动协商功能,让通信设备根据条件自动设置最佳参数。
tabmone 发表于 2026-2-4 17:03 | 显示全部楼层
串口线完好无损,连接牢固可靠。              
10299823 发表于 2026-2-4 17:46 | 显示全部楼层
重写 C 库的 _write() 或 fputc() 函数。
pmp 发表于 2026-2-4 20:49 | 显示全部楼层
串口通信失败,优先查硬件,比查代码快 10 倍,核心是「通断、电平、共地」三大关键点
pl202 发表于 2026-2-5 12:47 | 显示全部楼层
基础调试框架搭建              
qiufengsd 发表于 2026-2-5 13:44 | 显示全部楼层
串口中断接收时,若直接在中断里处理数据,易导致后续数据丢失,环形缓冲区是最优解
jimmhu 发表于 2026-2-5 15:28 | 显示全部楼层
串口调试优先查硬件,再查代码,80% 问题在硬件
belindagraham 发表于 2026-2-5 16:57 | 显示全部楼层
通过观察串口信号的电平变化和时序关系,可以快速定位通信错误。
usysm 发表于 2026-2-5 19:28 | 显示全部楼层
十六进制转储—— 调试协议/内存最有效
gygp 发表于 2026-2-5 20:44 | 显示全部楼层
在排查问题时,尝试使用更简单的测试程序,例如只发送一个简单的字符或循环发送一个简单的字符串。
wwppd 发表于 2026-2-5 22:03 | 显示全部楼层
UART TX 使用 DMA + 环形缓冲区
mollylawrence 发表于 2026-2-6 10:01 | 显示全部楼层
重定向 printf + 分级日志
kkzz 发表于 2026-2-6 16:12 | 显示全部楼层
通过串口调试工具发送数据,如果单片机能够正确接收并回显相同的数据,则证明串口通信部分的硬件是正常的。
lihuami 发表于 2026-2-6 16:50 | 显示全部楼层
能打印就别猜,能自动就别手动,能结构化就别乱打。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

3822

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部
0