#include "stm32f10x.h"
void Delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=0;j<1000;j++);
}
void GPIO_init()
{
GPIO_InitTypeDef GPIO_instruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_instruct.GPIO_Pin=GPIO_Pin_2;
GPIO_instruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_instruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_instruct);
}
void WWDG_INIT()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
WWDG_Enable(0x7f);
WWDG_SetPrescaler (WWDG_Prescaler_8);
WWDG_SetWindowValue (0x42);
WWDG_ClearFlag();
WWDG_EnableIT ();
}
void NVIC_INIT()
{
NVIC_InitTypeDef NVIC_instruct;
NVIC_instruct.NVIC_IRQChannel=WWDG_IRQn;
NVIC_instruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_instruct.NVIC_IRQChannelSubPriority=0;
NVIC_instruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_instruct);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
}
//中断服务程序
void WWDG_IRQHandler(void)
{
WWDG_ClearFlag();
}
int main()
{
GPIO_init();
GPIO_SetBits(GPIOA,GPIO_Pin_2);
WWDG_INIT();
NVIC_INIT();
while(1);
}
我打开窗口看门狗,想让它产生复位信号,进入中断没喂狗,那应该是LED2闪烁的现象,可是灯就亮了一下,但如果我在中断里喂狗的话,灯就会一直亮着,
还有一个问题,如果不使用中断程序的话,窗口看门狗还要用到NVIC这个嵌套中断函数吗??
|