请教下,使用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; } |
1:follow我们参考手册的步骤
2:用我们的例程跑一下,在初始化完成了,打个断点,对比一下和你的寄存器之间的差别.
3:将复位时间和喂狗时间拉长.
评分
查看全部评分
搞定了,原来是 rlr 寄存器的数据超过范围造成的,
之前以为 rlr 是32bit的,但是实际是 13bit的
评分
查看全部评分