在配置窗口看门狗寄存器的时候发现,初始化代码的顺序相当关键,CFR寄存器的第9位(唤醒中断开启)置1时开启看门狗中断,而SR(状态寄存器)的清0必须刚好在CFR第9位置1的前一条代码执行,在其他位置(即使是上两行)都不行!
void WWDG_Init(u8 pr,u8 cr,u8 wr)
{
NVIC_Init(2,3,WWDG_IRQn,2);
RCC->APB1ENR|=1<<11;
WWDG->CFR=0;
WWDG->CR=0;
WWDG->CFR=wr;//窗口值cr设置为64-127,
WWDG->CFR|=pr<<7;//分频系数pr可设置为0.1.2.3分别为1.2.4.8
WWDG->CR=cr;//计数值wr设置为64-128,
WWDG->CR|=1<<7;
WWDG->SR=0;
WWDG->CFR|=1<<9;
}