新手入门
- 积分
- 15
- 金钱
- 15
- 注册时间
- 2014-8-30
- 在线时间
- 4 小时
|
20金钱
本帖最后由 mcwolf 于 2016-8-30 18:51 编辑
我用stm32读取几个陀螺仪,现在遇到这种诡异情况,程序一直运行正,但突然会出现随机一个陀螺仪读数一直为0或者一直为其他读数。更换陀螺仪,转移管脚均无法解决。后来重刷原程序后重启还是会一直读数为固定数值。也就是只要一旦出现故障后,重启以及重刷程序都无法解决。同时换陀螺仪、换管脚也无效,情况随机无法预测。最诡异的在这里,我如果在原程序中任意位置添加一条向串口输出数据的语句printf(...),读数会马上正常。而且读数正常后,我把那条printf(....)语句去掉,再烧回去程序仍然正常读数,会正常运行,直到下一次随机再出现故障。我现在只能采用加printf(...)语句后烧写让它正常再,去掉烧回去的方法解决。不知没有没遇到同样情况的,能指点小弟一二,故障的真正原因在哪里。注明,我的stm32 型号是 stm32103fzet6
经我多次测试发现是这样,不是加printf()就好,而是只要加入任意代码程序都会正常,但修改参数不行。比如我修改时序的延时函数其参数扩大10倍都没用,但是只要加入一段代码比如 n++;这种极其简单的, 再烧入,就可以正常读取。但是发生故障后如果不加语句,原程序无论如何重烧都不行。而只要正常读取后把加入的语句删掉还是会正常。 |
|