//重设置WWDG计数器的值
~~~(这个) void WWDG_Set_Counter(u8 cnt)
{
WWDG_Enable(cnt);//使能看门狗 , 设置 counter .
}
//窗口看门狗中断服务程序
void WWDG_NVIC_Init()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占2,子优先级3,组2
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //抢占2,子优先级3,组2
NVIC_Init(&NVIC_InitStructure);//NVIC初始化
}
void WWDG_IRQHandler(void)
{
~~~(这个) WWDG_SetCounter(WWDG_CNT); //当禁掉此句后,窗口看门狗将产生复位
WWDG_ClearFlag(); //清除提前唤醒中断标志位
LED1=!LED1; //LED状态翻转
}
是不是少了一个下划线(_)?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
WWDG_CR寄存器的第七位WDGA是看门狗的激活位,该位由软件置1以启动看门狗,该位一旦置1后,就只能在硬件复位后清零,因此完整的程序里WWDG_Init()函数里WWDG_Enable()启动看门狗之后,接下来WDGA位软件即使写0也不会关闭看门狗,而WWDG_Enable()以及喂狗函数WWDG_SetCounter()唯一的区别就是关于WDGA位的设置。至于WWDG_Set_Counter()函数,提供的程序里只是定义了一下,中断函数里根本就没用到。
一周热门 更多>