最近用STC11F32XE来做程序,出现了一个BUG,发现某个全局变量,会在程序运行中发生改变,当然首先怀疑自己哪里赋值了,然后全项目查找,每个涉及这个变量的语句都注释掉,然后再试,BUG依旧。怀疑编译器再搞鬼,然后加上个const 修饰符,bug还是存在。在怀疑是变量地址发生改变,再用串口打印变量地址,未发生变量地址乱掉的情况,一直都是19H这个地址。然后再在这个变量加上idata修饰符,地址发生改变为71H,变量中的数据也不再乱掉。但是另一个使用19H地址的变量数据又发生改变了。一下就郁闷了。苦苦思索,查看反汇编什么的全都没有问题。最后无奈只能怀疑这个片子发生问题,换了一个片子。问题解决。我就cao了。这种问题都会出现,浪费我昨天一整天时间。同时让我想起了前段时间我们产品出现一个问题也和这种现象类似。一个用了不到一个月的产品,客户反映在使用某个功能时,仪表会自动重启,我倒现场去看了傻眼了,这个仪表又没有看门狗,也没断电,电压也正常,居然自动会重启。拿回公司,重新换个芯片解决问题(有问题的芯片重新烧录程序也没有问题了),我只想说STC你可以少一点这种问题吗????
反正我以后设计产品不会再考虑STC了,价格也不便宜,奇奇怪怪的问题一大堆。 |