• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32上电复位和看门狗复位有啥区别

7c685f356cbd7121 2020-07-27 浏览量:2353
我的程序30秒进入一次待机模式,有时候可能跑飞,会触发看门狗,从看门狗复位之后,无法再进入待机了。但是给芯片断电,又可以重新正常运行。请问上电复位和看门狗复位有何区别呢?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 复位后执行程序起点其实不完全一样,这也是造成你两种复位效果不一样的主要原因

    完全的上电复位(启动)会进行一系列标准的初始化操作,很多寄存器值会恢复到最初(比如大多数寄存器值会清零)

    而看门狗复位则不一定执行这些初始化,所以如果相关值有变化,看门狗复位后仅仅是程序执行指针复位,但相关值的初始化如果在程序中没有显式进行,则不会变化(相应寄存器值还是复位前的)。

    为了消除这样的影响,一个好的方式就是显式初始化所有寄存器。

    • 发布于 2020-08-01
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 上电复位程序是把程序指针指到rom程序开始的地址,这个时候ram里面没数据

    看门狗复位也是把程序地址指到rom开始的地方,但是ram数据还是死机前的数据

    所以你可以在程序里的变量添加一个初期值,这样看门狗复位也不会影响

    • 发布于2020-07-27
    • 举报
    • 评论 1
    • 0
    • 0
7c685f356cbd7121 回复了 yhj416606438 :软件有没有办法清除ram数据呢? 回复

  • 上电复位是重头开始,所有的都重新初始化,所有RAM寄存器里数据和状态恢复初始值和状态;

    看门狗复位,只是PC程序指针清0,RAM寄存器里的数保持之前的值

    • 发布于2020-07-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 看门狗复位,没有断电,RAM中的数据还在,上电复位时,RAM中的数据是0

    其他的都是一样的了

    • 发布于2020-07-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 上电复位是芯片自动的行为,每次上电的时候相关寄存器里面的值都是默认的

    看门狗定时器则是要靠看门狗定时器控制器,在CPU上面产生一个中断,这个中断中会自动执行复位

    • 发布于2020-07-31
    • 举报
    • 评论 0
    • 0
    • 0

  •  上电复位时,RAM内没有数据,而看门狗复位,电源没有掉,RAM的数据还是在的
    • 发布于2020-08-06
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32上电复位和看门狗复位有啥区别