单片机意外死机,意外复位,程序跑飞。原因有以下几种。
一、数组越界。
特别是使用指针操作的,如果有越界的情况,后果将很严重。
二、电源不稳定。
可以用示波器监测检查
三、Stack 栈溢出
Stack是为了程序运行过程中临时保存所需数据而在内存里分配的一小块空间。保存的数据类型一般情况下包括以下几种:
1. 函数中声明的局部变量以及参数
2. 函数返回值
3. 中断时CPU 寄存器值
4. 函数运行后返回的地址
因此,编译器设置里,一定要预留足够大的栈空间。
IAR里面的设置方法:
参考:
https://www.cnblogs.com/harleygwak1206/p/5856562.html