stm32F105RBT6开禁止读取flash及软复位看门狗复位都会引发HardFaul

2019-07-14 18:32发布

        STM32F105RBT6开禁止读取flash,软复位看门狗复位都会引发HardFault_handler中断,关闭禁止读取flash则能正常复位,求教问题及解决原因。
程序如下:
       flash锁定程序:
        if(FLASH_GetReadOutProtectionStatus()!=SET)
        {
            FLASH_Unlock();
            FLASH_ReadOutProtection(ENABLE);
        }
   
      软复位程序

    NVIC_SystemReset();                                            // 软复位系统

     喂狗程序
     void IWDG_ReloadCounter(void)
   {
      IWDG->KR = KR_KEY_Reload;
   }

  猜测:锁flash和软复位不能同时用?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
asd011
1楼-- · 2019-07-14 22:57
谢谢回帖。软复位后,判断flash是否锁定之前的程序可以运行,之后的程序不能运行。
xieweibin
2楼-- · 2019-07-15 01:32
 精彩回答 2  元偷偷看……
asd011
3楼-- · 2019-07-15 01:37
xieweibin 发表于 2018-8-16 08:09
本帖最后由 无薪税绵 于 2018-3-1 17:14 编辑

这是 stm32 的设计问题。

谢谢大神回复,断掉电源,从新上电问题没有解决!
xieweibin
4楼-- · 2019-07-15 02:06
你试试,在软复位前加入:

  __set_FAULTMASK(1);
  NVIC_SystemReset();
// __set_FAULTMASK(1); 是关闭所有中断的意思,
//目的是在执行NVIC_SystemReset();
//复位函数过程中不被中断所打断。


看看软复位能否正常。



NVIC_SystemReset()调用后跳到HardFault_Handler()的处理办法:
http://bbs.21ic.com/icview-780542-1-1.html


STM32进入HardFault_Handler处理办法:
http://blog.csdn.net/u012075442/article/details/50931354
zhouxk
5楼-- · 2019-07-15 02:52
asd011 发表于 2018-8-16 08:19
谢谢大神回复,断掉电源,从新上电问题没有解决!

不知道你是什么情况,我的程序已经在产品中用了七八年了,一切正常。
asd011
6楼-- · 2019-07-15 06:57
xieweibin 发表于 2018-8-16 08:34
你试试,在软复位前加入:

  __set_FAULTMASK(1);

感谢回复!程序莫名奇妙的好使了,我在测试,看看能不能找到问题,发现问题我在回帖把问题原因写出来。

一周热门 更多>