STM32
直播中

张娜

7年用户 978经验值
私信 关注
[问答]

STM8S103K3看门狗死机的原因?

最近在用STM8S103K3芯片,写了个程序,发现开启看门狗之后,进行仿真调式时,程序就死机了
下面是我的看门狗配置程序

//须先启动看门狗,然后才能配置看门狗
static void MCU_IWDOG_Init(void)
{
    IWDG->KR = 0xCC;   //启动看门狗
    IWDG->KR = 0x55;   //解锁寄存器写保护
    IWDG->RLR = 0xFF;  //重装值寄存器  超时时间 1.02 s   
    IWDG->PR = 0x06;   //时钟256分频
    IWDG->KR = 0xAA;  
}


void RESET_WATCHDOG(void) //刷新看门狗计数
{
    IWDG->KR = 0xAA;
}


//主函数
void main(void)
{
    int i;
   MCU_IWDOG_Init();
   i = 0;
  for(;;)
  {
       if(i > 1000)    i = 0;

       else               i ++;

       RESET_WATCHDOG();
  }
}



我写程序时,发现了这个看门狗有问题,就把这个程序抽出来测试一下。我以前用STM8S105K5没有什么问题啊,我找了好久没有找到原因。小弟在些请教下群里的大神

回帖(1)

郭中

2024-5-14 16:58:54
STM8S103K3看门狗死机的原因可能有以下几点:

1. 看门狗定时器溢出:如果程序中没有及时给看门狗定时器喂狗(即重置定时器),当定时器溢出时,系统将自动重启。请确保在程序中定期重置看门狗定时器。

2. 配置错误:检查看门狗配置程序中的参数设置是否正确。例如,超时时间、时钟分频等参数是否符合预期。你提供的代码中,超时时间为1.02秒,时钟分频为256。请确保这些参数符合你的需求。

3. 仿真器问题:在仿真调试过程中,仿真器可能无法模拟看门狗定时器的行为。这可能导致程序在仿真器上运行时出现问题。建议在实际硬件上测试程序,以确保看门狗定时器正常工作。

4. 中断冲突:如果程序中存在中断服务程序,确保它们不会影响看门狗定时器的重置。中断服务程序可能会占用大量时间,导致看门狗定时器溢出。

5. 程序错误:检查程序中是否存在无限循环或其他可能导致程序无法正常运行的错误。

为了解决这个问题,你可以尝试以下步骤:

1. 确保程序中定期重置看门狗定时器,以防止定时器溢出。

2. 检查看门狗配置程序中的参数设置,确保它们符合预期。

3. 在实际硬件上测试程序,以确保看门狗定时器正常工作。

4. 检查程序中的中断服务程序,确保它们不会影响看门狗定时器的重置。

5. 仔细检查程序,修复可能存在的无限循环或其他错误。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分