思路和视频上的是一样的,就是没有设置那么多子函数,而是直接调用库函数。然后小灯就闪不了了。下载模板代码就可以闪,求指教!
源文件:
[mw_shl_code=c,true]#include "wwdg.h"
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "led.h"
void WWDG_Init(u8 tr,u8 wr,u32 pres)
{
NVIC_InitTypeDef NVIC_InitTypeStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
WWDG_SetPrescaler(pres);
WWDG_SetWindowValue(wr);
WWDG_EnableIT();
NVIC_InitTypeStructure.NVIC_IRQChannel=WWDG_IRQn;
NVIC_InitTypeStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitTypeStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitTypeStructure.NVIC_IRQChannelSubPriority=3;
NVIC_Init(&NVIC_InitTypeStructure);
WWDG_ClearFlag();
WWDG_Enable(tr);
}
void WWDG_IRQHandler()
{
LED1=!LED1;
WWDG_SetCounter(0x5f);
WWDG_ClearFlag();
}
[/mw_shl_code]
主函数:
[mw_shl_code=c,true]#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "beep.h"
#include "wwdg.h"
/************************************************
ALIENTEK战舰STM32开发板实验3
按键输入实验
技术支持:
www.openedv.com
淘宝店铺:
http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
int main(void)
{
vu8 key=0;
delay_init(); //延时函数初始化
LED_Init(); //LED端口初始化
KEY_Init(); //初始化与按键连接的硬件接口
BEEP_Init(); //初始化蜂鸣器端口
WWDG_Init(0x7f,0x5f,WWDG_Prescaler_8);
LED0=0; //先点亮红灯
while(1)
{
LED0=1;
}
}
[/mw_shl_code]
另外,窗口看门狗的初始化顺序,喂狗顺序,不要随意改,不然会出问题比较奇葩。
中断里这个就是呀WWDG_SetCounter(0x5f);
{
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init();
KEY_Init(); //按键初始化
LED0=0;
delay_ms(300);
WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8);//计数器值为7f,窗口寄存器为5f,分频数为8
while(1)
{
LED0=1;
}
}[/mw_shl_code]
现在对主程序做了调整,之前中断忘记设置。设置完还是没有效果,然后将WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8);放在while前面,还加了delay_ms(300); 延时。现在LED0常亮,LED1间断微光闪(和模板程序一样)。 看不懂了-.-
一周热门 更多>