#include "wdg.h"
#include "led.h"
void IWDG_Init(u8 prer,u16 rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(prer);
IWDG_SetReload(rlr);
IWDG_ReloadCounter();
IWDG_Enable();
}
void IWDG_Feed()
{
IWDG_ReloadCounter();
}
u8 WWDG_CNT=0x7F;
void WWDG_Init(u8 tr,u8 wr,u32 fprer)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
WWDG_CNT&=tr;
WWDG_SetPrescaler(fprer);
WWDG_SetWindowValue(wr);
WWDG_Enable(WWDG_CNT);
WWDG_ClearFlag();
WWDG_NVIC_Init();
WWDG_EnableIT();
}
void WWDG_Set_Counter(u8 cnt)
{
WWDG_Enable(cnt);
}
void WWDG_NVIC_Init()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
NVIC_Init(&NVIC_InitStructure);
}
void WWDG_IRQHandler()
{
WWDG_SetCounter(WWDG_CNT);
WWDG_ClearFlag();
LED1=!LED1;
}
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "wdg.h"
int main()
{
delay_init();
NVIC_Configuration();
LED_Init();
LED0=0;
delay_ms(500);
WWDG_Init(0x7F,0x5F,WWDG_Prescaler_8);
LED0=1;
while(1);
}
}
为社么上面的程序,窗口看门狗还是会复位?使用JTAG调试时在中断函数中设置断点,却没有在断点处停止,应该是没有进入中断函数,请大神指教!
|