2、中断变量处理欠妥。若定义某些会在中断中修正的全局变量,这时要把稳两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前该当首先关闭全局中断,防止读到一半被中断给修正了,读完之后再打开全局中断;否则涌现造成数据乱套。
3、地址溢出,常见缺点为指针操作缺点。我要着重说的是数组下标利用循环函数中循环变量,如果循环变量没掌握好则会涌现数组下标越界,意外修正系统的寄存器造成去世机,这种情形下如果去世机解释运气好,否则后面不知道发生什么头疼的事。

4、无条件的去世循环;比如利用while(x);等待电平变革,正常情形下x都会变成0,就怕万一,因此最好加上韶光限定;

5、看门狗没有关闭。有的单片机纵然没利用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成去世机,这个要看芯片手册,最好在程序复位后首先该当显式打消看门狗再关闭看门狗;
6、堆栈溢出。最难查找的问题,对付容量小的单片机,只管即便减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能办理问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改玉成局变量,试一试说不定就可以了。







