在开发阶段,如果出现程序不断重启的情况。
首先先检查是不是代码问题。
1.数组越界。定义的数组只有50个单元,但是程序运行的过程中,却给他赋给50+个单元。
2.中断耗时太长,刚出中断又进去了。这时的现象是程序一直在中断中执行,回不到主函数。 一般出现在中断嵌套中。
3.中断或主函数中有死循环,导致是否没有及时喂看门狗。
4.堆栈溢出。可以用static来避免
5.程序中使用malloc()函数没有释放。
如果没有发现具体的问题。
则开始检查硬件问题。
首先!!!
检查stm32的供电电压是否稳定,是否在正常工作电压范围内。
电源文波大小一定要小,一般Ldo供电在3.3v在几个ma ,在stm32的vdda 和vssa引脚一定要接磁珠,各个电源硬件要接滤波电容。
保证Vcc大于1.8V。当电压低至0.8V时,程序仍有可能执行。这时的现象是PC指针乱飞,有复位,死机,停在中断,时钟频率发生变化等现象。