mrclp 发表于 2016-4-21 11:04:16

独立看门狗的问题

Help ...用的是stm32f030f4p6,开了独立看门狗之后,仿真设置断点,硬件还是会自动复位是吧?
后面改了程序,都没有给看门狗初始化,设置中断后,硬件还是会自动复位去自己跑程序;还要怎么关闭看门狗?

xmshao 发表于 2016-4-21 16:09:04

要重新修改代码,关闭看门狗。复位运行生效。



mrclp 发表于 2016-4-21 23:06:18

xmshao 发表于 2016-4-21 16:09
要重新修改代码,关闭看门狗。复位运行生效。

关闭看门狗,就是不初始化看门狗的意思吧;

damiaa 发表于 2017-2-16 13:01:51

本帖最后由 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;
}

IC销售工程师 发表于 2017-2-18 09:33:08

围观:lol
页: [1]
查看完整版本: 独立看门狗的问题