独立看门狗的问题
Help ...用的是stm32f030f4p6,开了独立看门狗之后,仿真设置断点,硬件还是会自动复位是吧?后面改了程序,都没有给看门狗初始化,设置中断后,硬件还是会自动复位去自己跑程序;还要怎么关闭看门狗?
要重新修改代码,关闭看门狗。复位运行生效。
xmshao 发表于 2016-4-21 16:09
要重新修改代码,关闭看门狗。复位运行生效。
关闭看门狗,就是不初始化看门狗的意思吧; 本帖最后由 damiaa 于 2017-2-16 13:05 编辑
IWDGInit(); //初始化看门狗
IWDG_ReloadCounter();//喂狗
如果你初始化启动了看门狗,定期喂狗是必须的。否则就复位了。
如果你不初始化启动看门狗,就没必要喂狗。只是在程序跑飞后不能复位重新启动。
看门狗主要是为了 程序跑飞后能复位重新启动
void IWDGInit(void)
{
/* IWDG timeout equal to 250 ms (the timeout may varies due to LSI frequency
dispersion) */
/* Enable write access to IWDG_PR and IWDG_RLR registers */
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
/* IWDG counter clock: LSI/32 */
IWDG_SetPrescaler(IWDG_Prescaler_32);
/* Set counter reload value to obtain 250ms IWDG TimeOut.
Counter Reload Value = 250ms/IWDG counter clock period
= 250ms / (LSI/32)
= 0.25s / (LsiFreq/32)
= LsiFreq/(32 * 4)
= LsiFreq/128
*/
//IWDG_SetReload(LsiFreq/128);
IWDG_SetReload(40000/128);
/* Reload IWDG counter */
IWDG_ReloadCounter();
/* Enable IWDG (the LSI oscillator will be enabled by hardware) */
IWDG_Enable();
}
oid IWDG_ReloadCounter(void)
{
IWDG->KR = KR_KEY_RELOAD;
}
围观:lol
页:
[1]