新手上路
- 积分
- 40
- 金钱
- 40
- 注册时间
- 2014-6-19
- 在线时间
- 2 小时
|
5金钱
以下是我的代码:
#include "stm32f10x.h"
#include "delay.h"
#include "LED.H"
#include "KEY.H"
#include "BEEP.H"
#include "usart.h"
#include "BitBand.h"
void NVIC_Configuration(void);
void WWDG_Init(u8 dog);
void WWDG_NVIC_Init(void);
u8 key_up,key_1,key_2,key_0;//用于判断KEY_0 1 2 UP 按下次数
int main (void)
{
NVIC_Configuration();//中断分组设置(仅在最初设置一次,函数执行中一般不改变分组)
led_Init();//LED初始化
beep_Init();
delay_init();//延时初始化
D0=1;
D1=0;
BEEP = 1;
delay_ms(300);
WWDG_Init(0x7F);
while(1)
{
D1=1;
BEEP = 0;
}
}
/*中断分组设置(仅在最初设置一次,函数执行中一般不改变分组)*/
void NVIC_Configuration(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
}
void WWDG_Init(u8 dog)
{
WWDG_NVIC_Init();
RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG,ENABLE);
WWDG_SetPrescaler(WWDG_Prescaler_8);
WWDG_SetWindowValue(0x5F);
WWDG_Enable(dog);
WWDG_ClearFlag();
WWDG_EnableIT();
}
void WWDG_NVIC_Init(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占2,子优先级3,组2
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //抢占2,子优先级3,组2
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);//NVIC初始化
}
void WWDG_IRQHandler(void)
{
WWDG_SetCounter(0x7F); //当禁掉此句后,窗口看门狗将产生复位
WWDG_ClearFlag(); //清除提前唤醒中断标志位
D0=!D0; //LED状态翻转
}
弄了两三个小时还是不行,LED0 0从来就没有亮过,说明没有进入中断,不过重新上电的时候, BEEP会响 两三次,之后再也不响了,谢谢大神了, |
|