STM32
直播中

刘勇

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

请问stm8l101p3u为什么进入halt之后看门狗不复位?

  在网上查了半天,很多人都是说halt之后不想让看门狗运行却停不下来,为什么到了我这我想halt之后看门狗继续运行它反而不复位了呢??

看门狗的代码

  RST_ClearFlag(RST_FLAG_IWDGF);
  /* Enable the IWDG*/
  IWDG_Enable();
  /* Enable the access to the IWDG registers*/
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  /* Fixe IWDG Reset period */
  IWDG_SetPrescaler(IWDG_Prescaler_256);
  IWDG_SetReload(0xFF);
  /* Refresh IWDG */
  IWDG_ReloadCounter();


这样子不喂狗会自己一直复位,但是加了halt();之后,反而不复位了?
看了说明文档
The IWDG can continue to work in Halt or Active-halt mode, depending on the configuration
of the IWDG_HALT option byte.


找来找去也没看到这个 IWDG_HALT 在什么地方?文档里面没有说明,库里面也找不到,刚开始用,求大神赐教。

回帖(1)

敷衍作笑谈

2024-5-13 17:56:46
STM8L101P3U进入HALTED模式后,看门狗不复位的原因可能有以下几点:

1. 看门狗配置问题:在进入HALTED模式之前,确保已经正确配置了看门狗。根据您提供的代码,您已经设置了看门狗的预分频器和重载值,但是在进入HALTED模式之前,您需要确保已经启用了看门狗。您可以在进入HALTED模式之前添加以下代码:

```c
IWDG_Enable();
```

2. 看门狗时钟问题:确保在进入HALTED模式之前,看门狗的时钟已经正确配置。如果时钟配置不正确,看门狗可能无法正常工作。

3. 看门狗复位标志问题:在进入HALTED模式之前,您需要清除看门狗的复位标志。您可以在进入HALTED模式之前添加以下代码:

```c
RST_ClearFlag(RST_FLAG_IWDGF);
```

4. 进入HALTED模式的方式:确保您使用正确的方式进入HALTED模式。STM8L101P3U有多种进入HALTED模式的方式,如使用STOP命令或使用WFE/WFI指令。请确保您使用的是正确的方式。

5. 代码执行顺序问题:确保您的代码执行顺序是正确的。在进入HALTED模式之前,您需要先配置看门狗,然后清除看门狗复位标志,最后进入HALTED模式。

综上所述,您可以尝试以下步骤:

1. 确保看门狗配置正确。
2. 确保看门狗时钟配置正确。
3. 在进入HALTED模式之前,清除看门狗复位标志。
4. 使用正确的方式进入HALTED模式。
5. 确保代码执行顺序正确。

如果问题仍然存在,请检查您的硬件连接和电源供应,以确保没有其他问题影响看门狗的正常工作。
举报

更多回帖

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