LKS05x系列看门狗配置操作如下:
1.看门狗状态控制
void SYS_WatchDogCmd(FuncState state)
{
SYS_WR_PROTECT = 0x7A83; //解除写保护
if(state == ENABLE)
{
SYS_RST_CFG |= BIT0; //使能看门狗
}
else
{
SYS_RST_CFG &= (~BIT0); //关闭看门狗
}
SYS_WR_PROTECT = 0x0000; //开启写保护
}
2.看门狗复位时间设置
函数说明:看门狗复位时间设置,低12位恒为0,输入范围(0x001~0x1FF),复位时间范围为0.0625~32s。计算公式为 (timeOut << 12) / 65536 ,注意复位时间不能设置的太小,以访芯片处于频繁复位状态,导致芯片无法烧录。
需要注意的是:在全温度范围内,64KRC时钟还会存在+-16%左右的偏差,所以保险起见,建议看门狗喂狗时间要比64K计算的理论值再快个20~30%。
void SYS_WatchDogTHSet(u16 timeOut)
{
SYS_WDT_PSW = 0xA6B4;
SYS_WDT_TH = (u32)(timeOut << 12);
}
3. 喂狗函数
两个函数功能相同,都会重置看门狗计数器
void SYS_FeedDog(void)
{
SYS_WDT_PSW = 0xA6B4;
SYS_WDT_CLR = 0x798D;
}
void SYS_WatchDogTHSet(u16 timeOut)
{
SYS_WDT_PSW = 0xA6B4;
SYS_WDT_TH = (u32)(timeOut << 12);
}
|