原子的窗口看门狗实验,主程序
WWDG_Init(0X7F,0X5F,3); //计数器值为7f,窗口寄存器为5f,分频数为8
那么有以下两个问题:
1、喂狗是指让系统复位还是不复位?
2、那么系统是什么时候开始喂狗的,根据手册的说明,应该是在0x5f-0x4f之间喂,但是具体怎么喂的呢?
此外,在
WDG.C文件 中
1、中断服务程序是怎么触发的?
2、我使用KEIL断点调试,一直呆在主程序while(1)的死循环中,有什么调试技巧吗
// WDG.C文件
void WWDG_Init(u8 tr,u8 wr,u8 fprer)
{
RCC->APB1ENR|=1<<11;
WWDG_CNT=tr&WWDG_CNT;
WWDG->CFR|=fprer<<7;
WWDG->CFR=WWDG->CFR&0XFF80;
WWDG->CFR|=wr;
WWDG->CR|=WWDG_CNT;
WWDG->CR|=1<<7;
MY_NVIC_Init(2,3,WWDG_IRQChannel,2);//抢占2,子优先级3,组2
WWDG->SR=0X00; //注意此处不是WWDG->SR|=0X00;
WWDG->CFR|=1<<9;
}
void WWDG_Set_Counter(u8 cnt)
{
WWDG->CR=(cnt&0X7F);
}
void WWDG_IRQHandler(void)
{
WWDG_Set_Counter(WWDG_CNT);
WWDG->SR=0X00; //注意此处不是WWDG->SR|=0X00;
LED2=!LED2;
}
|