我遇到过的现象:
程序版本a:可正常运行
程序版本b:可正常运行,在a的基础上,比a复杂
程序版本c:在b的基础上,增加某功能,但执行此功能后程序死掉(后来发现是程序的问题)
然后,出现了奇怪的事
重复烧写几次c后(当时考虑可能是烧写错误导致死机),单片机上电后未运行后加入的功能也死机,是初始化等程序正常执行,lcd显示界面后死机;
于是烧入b程序,发现与上面同样的现象,显示出界面后死机
烧入a程序,程序正常运行
将改好的c程序烧入,程序正常运行
我想是原来的不正常的c程序由于bug而导致程序乱飞,“碰巧”修改了某处寄存器或是存储器,但是重新烧写程序却不能覆盖它,所以无法修改回来。
而原来的a恰好可以覆盖到被“碰巧”修改的地方,于是又正常了
|