您好!我目前正在开发的一款产品出现了程序运行一段时间出现复位重启的现象。目前已排查的可能性有如下几种
1、程序看门狗关闭,没有打开,所以复位不可能是看门狗动作
2、电源比较稳定,排除电源问题
3、通过查看程序的MAP文件,设置的堆栈满足程序使用,不会出现堆栈溢出的情况
咨询的问题:
有没有其他可能或者MCU内部有其他机制导致单片机重启复位的可能?
灰小子:
什么应用环境?周围有没有强的干扰源?
另外,堆栈的使用是动态的,编译器不一定能完全发现出现溢出的情况。
Qiyi QI:
回复 灰小子:
您好!周围工作的环境就是普通的家居环境,我是看main函数的堆栈,目前也怀疑是数组溢出导致堆栈异常,这个有没有什么好的方法进行定位?
Susan Yang:
回复 Qiyi QI:
关于您对堆栈的怀疑,建议您开启堆栈使用量报警
Qiyi QI:
回复 Susan Yang:
使用IAR编译器,怎么开启堆栈溢出报警~还有就是目前单片机异常复位的时间不确定~这个一般什么原因,不是看门狗动作
Susan Yang:
回复 Qiyi QI:
可以通过 tools->options->stack 条目下的选项 打勾
Qiyi QI:
回复 Susan Yang:
您好!这一块之前已经设置好了~编译和运行正常~就是程序运行半天或者一段时间就会复位重启~不太确定什么原因