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