分享下,最近调试程序的心得

[复制链接]
1140|6
 楼主| 飞翔的控制器 发表于 2015-7-8 13:34 | 显示全部楼层 |阅读模式
最近调试程序把人搞的有点乱,不过收获也较多。
先说下我调试串口时的问题,我发现我调试的时候,一上电一会儿就死机了,把仿真器带着,没有问题,但是把仿真器一拔下来就不行了。
后来发现在写程序的时候定义了一个结构体:
strcut USART1Rx
{
       char Buf[50];
       char Len;
       char Flag;
}Usart1Rx;
在这个结构体中Buf是用于数据的存放,Len是接收到的数据的长度,Flag是定时器里的结束标志位。
在接收中断中有一句是这样if(Usart1Rx.Flag>50)Usart1Rx.Len=0;就是这句话导致数组越界,从而使单片机死机,这是经验教训。
希望有同志调这个的时候,一定要注意啊!
dsll2010 发表于 2015-7-8 16:47 | 显示全部楼层
那行代码看起来正常,为什么会导致数组越界?
zheng522 发表于 2015-7-8 19:17 来自手机 | 显示全部楼层
楼主应该是len++吧
zb0830 发表于 2015-7-30 21:21 | 显示全部楼层
if(Usart1Rx.Flag>50)
Usart1Rx.Len=0
是不是判断错了,应该是if(Usart1Rx.Len>50)Usart1Rx.Len=0;
zb0830 发表于 2015-7-30 21:22 | 显示全部楼层
应该是Ctrl+C和Ctrl+V的结果吧
heping517 发表于 2015-7-30 21:28 | 显示全部楼层
复制有时就会出现问题,加油,这属于笔误
没有六一了 发表于 2015-7-30 21:36 | 显示全部楼层
这个以后也要注意,按理说不应该出现这种错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

354

帖子

0

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