配置STM8S207的看门狗,必须先使能看门狗功能模块,然后再配置其参数,这个和STM32F103不同。
//函数功能:配置看门狗复位时间为1000毫秒
void IWDG_Config(void)
{
IWDG_Enable();//配置看门狗,必须先使能看门狗功能模块,这个和STM32F103不同
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
//允许写访问预分频器和重载寄存器
//Enable the access to the IWDG registers
IWDG_SetPrescaler(IWDG_Prescaler_256);
//设置独立看门狗的预分频器值为256
//独立看门狗定时器使用LSI内部RC时钟源128KHz
//时钟源128KHz先经过固定2分频,再经过256分频,因此每个脉冲时间1*2*256/128000=0.004秒=4毫秒
IWDG_SetReload(250);
//设置独立看门狗重载值为250,重载值(8位寄存器 最大255)
//每个脉冲时间4毫秒,因此独立看门狗重装时间要小于4*250=1000毫秒
IWDG_ReloadCounter();//喂狗,Refresh IWDG
}
//函数功能:看门狗令CPU复位
void SoftReset(void)
{
__disable_interrupt();//关闭所有中端
IWDG_Enable();//配置看门狗,必须先使能看门狗功能模块,这个和STM32F103不同
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
//允许写访问预分频器和重载寄存器
//Enable the access to the IWDG registers
IWDG_SetPrescaler(IWDG_Prescaler_32);
//设置独立看门狗的预分频器值为32
//独立看门狗定时器使用LSI内部RC时钟源128KHz
//时钟源128KHz先经过固定2分频,再经过4分频,因此每个脉冲时间1*2*32/128000=0.0005秒=0.5毫秒
IWDG_SetReload(0x06);
//设置独立看门狗重载值为0x06
//每个脉冲时间0.5毫秒,因此独立看门狗重装时间要小于0.5*6=3毫秒
IWDG_ReloadCounter();//喂狗,Refresh IWDG
while(1);
}