打印

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

[复制链接]
948|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近调试程序把人搞的有点乱,不过收获也较多。
先说下我调试串口时的问题,我发现我调试的时候,一上电一会儿就死机了,把仿真器带着,没有问题,但是把仿真器一拔下来就不行了。
后来发现在写程序的时候定义了一个结构体:
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;

使用特权

评论回复
5
zb0830| | 2015-7-30 21:22 | 只看该作者
应该是Ctrl+C和Ctrl+V的结果吧

使用特权

评论回复
6
heping517| | 2015-7-30 21:28 | 只看该作者
复制有时就会出现问题,加油,这属于笔误

使用特权

评论回复
7
没有六一了| | 2015-7-30 21:36 | 只看该作者
这个以后也要注意,按理说不应该出现这种错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

354

帖子

0

粉丝