1. 现象
求ADC平均值时,在特殊情况下会异常。
2. 分析
2.1
如下图,仿真发现,是由于sum_val局部变量未初始化引起,其值被默认初值为6000,等于多加了6000的数值。
![](https://img-blog.csdnimg.cn/c249b63456e04ec98c62da20eb26f965.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6ec8cb13c1434ef39208a9e251a94d0e.png)
2.2
经调试发现,GetBackKey(Back_key_auto);在调用CheckBatteryValue(Get_Adc_Average(5));后,才出现异常。sum_val局部变量被默认初值6000则来自Get_Adc_Average(5)的返回值。
![在这里插入图片描述](https://img-blog.csdnimg.cn/bb3363aa553748e28f7f4e2e5027123b.png)
3. 解决办法
将sum_val局部变量初始化为0即可
4. 总结
在定义局部变量时,尽量初始化局变量,以预防不可预知的BUG。