新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2015-5-22
- 在线时间
- 0 小时
|
5金钱
原子哥的窗口口看门狗的初始化程序源码是这样的:
void WWDOG_Init(u8 tr,u8 wr,u32 fprer)//tr为计数器值,wr为窗口值,fprer为分频值
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);//使能窗口看门狗的时钟
WWDG_SetWindowValue(wr); //设置窗口值
WWDG_SetPrescaler(fprer); //设置分频值
WWDG_CNT=tr&WWDG_CNT; //这里&的作用是使结果小于0x7f,任何比0x7f小的数与0x7f相与,值不变
WWDG_Enable(WWDG_CNT); //设置计数初值并使能看门狗
WWDG_ClearFlag(); //清除提前唤醒中断标志位,即WWDG_SR唯一的有效位
WWDG_NVIV_Init(); //看门狗中断初始化
WWDG_EnableIT(); //开启中断
}
视频里也说语句的顺序调换是没关系的,但是我换了一些就不对了,例如我把设置计数初值并使能看门狗放到最后一行:
void WWDOG_Init(u8 tr,u8 wr,u32 fprer)//tr为计数器值,wr为窗口值,fprer为分频值
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);//使能窗口看门狗的时钟
WWDG_SetWindowValue(wr); //设置窗口值
WWDG_SetPrescaler(fprer); //设置分频值
WWDG_CNT=tr&WWDG_CNT; //这里&的作用是使结果小于0x7f,任何比0x7f小的数与0x7f相与,值不变
WWDG_ClearFlag(); //清除提前唤醒中断标志位,即WWDG_SR唯一的有效位
WWDG_NVIV_Init(); //看门狗中断初始化
WWDG_EnableIT(); //开启中断
WWDG_Enable(WWDG_CNT); //设置计数初值并使能看门狗
}
|
|