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