我用的是正点原子的探索版开发板,实验功能是红灯亮灭以后,绿灯不停闪烁,我的程序如下:
main.c
#include"stm32f4xx.h"
#include"LED.h"
#include"WWDG.h"
#include"delay.h"
u8 a,b;
u32 p;
int main()
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
led_init();
delay_init(168);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
delay_ms(300);
WWDG_Init(WWDG_Prescaler_8,0x5F,0x7F);
while(1)
{
GPIO_SetBits(GPIOF,GPIO_Pin_9);//红灯
}
}
WWDG.c
#include"stm32f4xx.h"
#include"WWDG.h"
u8 d=0x7f;
void WWDG_Init(u32 p,u8 a,u8 b)
{
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
WWDG_SetPrescaler(p);
WWDG_SetWindowValue(a);
NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
WWDG_ClearFlag();
WWDG_EnableIT();
WWDG_SetCounter(b);
WWDG_Enable(b);
}
void WWDG_IRQHandler(void)
{
WWDG_SetCounter(d);
GPIO_WriteBit(GPIOF,GPIO_Pin_10,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOF,GPIO_Pin_10)));//绿灯
WWDG_ClearFlag();
}
实验结果是红灯常亮,请问为什么会这样。。。我的程序跟例程内容一样,就是语句的顺序有区别
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原子哥能不能讲得详细点呢,还有就是,用了例程的中断服务函数后且仍然保留了我第一处的改动后,程序依然不正常
一周热门 更多>