嵌入式调试过程卡死机记录

2019-07-12 16:58发布

最近做项目时,偶尔调试会遇到死机的情况,幸好以前程序写得多,都能大概记得一点原因,想想还是记下来吧,好记星不如烂笔头,万一哪天忘了呢还能在博客里面找找。

1.变量超范围。
今日例子:20141220 /*Get Value MMA8451*/ Angle = LPLD_MMA8451_GetResult(MMA8451_STATUS_Z_READY, MMA8451_REG_OUTZ_MSB); /*Get Value L3G4200*/ Acc = L3G4200_GetZ(); // Angle_Out = Angle_P * Angle + Angle_D * Acc;
今天调PD控制的时候,意外发现,死机了,K60死机了。。 它竟然死机了,想想发现,以前貌似也遇到过。待我一看,发现,原来是我的Angle_Out变量超范围了。
uint32 Angle_Out; 即int型的变量Angle_Out范围
小记事本: C语言的int类型与开发环境平台有关,可能是16位(2^16),也可能是32位(2^32),估计现在大多数开发环境都是用32位的,所以范围远远超出65535,可达到4294967296