feifan570 发表于 2015-9-2 18:04:00

STM8S执行wfi()导致无法复位

硬件平台是:STMS05K6,开发工具是IAR;伪代码如下,偶尔会出现死机,按下复位按钮也没有用,只能重新上电。
如果我把看门狗的代码去掉,并去掉wfi()指令,就没有问题。
是不是我对看门狗使用不正确,还是其他的问题?

程序伪代码如下:
void main(void)
{
    //初始化看门狗
    IWDG->KR = IWDG_KEY_ENABLE;
    IWDG->KR = IWDG_WriteAccess_Enable;
    IWDG->RLR = 0xff;
    IWDG->PR = IWDG_Prescaler_64;
    IWDG->KR = IWDG_WriteAccess_Disable;
    //初始化定时器,10ms中断一次
   ....
    while(1)
    {
         if(is_10ms)
      { //10ms
             is_10ms = 0;
             IWDG->KR = IWDG_KEY_REFRESH;
      }
       ....执行其他操作
      wfi();
      nop();
      nop();
    }
}

guiyi 发表于 2015-9-3 22:05:13

死机时程序跑到那里了?
页: [1]
查看完整版本: STM8S执行wfi()导致无法复位