最近调试程序把人搞的有点乱,不过收获也较多。
先说下我调试串口时的问题,我发现我调试的时候,一上电一会儿就死机了,把仿真器带着,没有问题,但是把仿真器一拔下来就不行了。
后来发现在写程序的时候定义了一个结构体:
strcut USART1Rx
{
char Buf[50];
char Len;
char Flag;
}Usart1Rx;
在这个结构体中Buf是用于数据的存放,Len是接收到的数据的长度,Flag是定时器里的结束标志位。
在接收中断中有一句是这样if(Usart1Rx.Flag>50)Usart1Rx.Len=0;就是这句话导致数组越界,从而使单片机死机,这是经验教训。
希望有同志调这个的时候,一定要注意啊! |