hpdell 发表于 2018-7-20 10:34:35

请教下,使用stm32L03进入睡眠自动唤醒后看门狗会自动复位

请教下,使用stm32L03进入睡眠自动唤醒后看门狗会自动复位

具体描述如下:

1、 单片机在进入睡眠模式前卫喂一次够,看门狗设定的时间 为 6-8s,单片机的睡眠时间设定的是 5s
   按照这样的时间设置,单片机醒来后,应该是不会重启才对的,每次单片机醒来后又喂了一次够,
    但是还是会重启 ???????

相关代码如下:

#define PRER_VAL    IWDG_PRESCALER_64
#define RLR__VAL    (uint32_t)(625*7)                //目前设置看门狗复位时间为 7s

//初始化
void IWDG_Init(void)
{
        printf("IWDG Init ... ...\r\n");

       IWDG->KR = 0X5555;      //解除寄存器保护      
        IWDG->PR = PRER_VAL;         // 写入初始化分频值
        IWDG->RLR = RLR__VAL;            // 写入自动装载值
        IWDG->KR= 0XAAAA;   //开启寄存器保护
        IWDG->KR= 0XCCCC;       //启动看门狗
}

//喂狗
void IWDG_Refresh(void)
{
        IWDG->KR=0XAAAA;
}

butterflyspring 发表于 2018-8-3 10:48:10

三个思路,
1:follow我们参考手册的步骤
2:用我们的例程跑一下,在初始化完成了,打个断点,对比一下和你的寄存器之间的差别.
3:将复位时间和喂狗时间拉长.

hpdell 发表于 2018-8-3 17:12:11

butterflyspring 发表于 2018-8-3 10:48
三个思路,
1:follow我们参考手册的步骤
2:用我们的例程跑一下,在初始化完成了,打个断点,对比一下和你的寄存 ...

搞定了,原来是 rlr 寄存器的数据超过范围造成的,

之前以为 rlr 是32bit的,但是实际是 13bit的
页: [1]
查看完整版本: 请教下,使用stm32L03进入睡眠自动唤醒后看门狗会自动复位