新手关于窗口看门狗的一个小问题

2019-10-16 00:42发布

思路和视频上的是一样的,就是没有设置那么多子函数,而是直接调用库函数。然后小灯就闪不了了。下载模板代码就可以闪,求指教!
源文件:
[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]


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-10-16 03:51
对比改了的地方
另外,窗口看门狗的初始化顺序,喂狗顺序,不要随意改,不然会出问题比较奇葩。
来俩不甜的
2楼-- · 2019-10-16 05:59
没喂狗
taizonglai
3楼-- · 2019-10-16 06:10
窗口看门狗中断服务函数里面这一行代码WWDG_SetCounter(0x5f),设置为0X7F试试!
MickeyEX
4楼-- · 2019-10-16 08:37
来俩不甜的 发表于 2016-12-14 16:34
没喂狗

中断里这个就是呀WWDG_SetCounter(0x5f);
MickeyEX
5楼-- · 2019-10-16 13:29
 精彩回答 2  元偷偷看……
MickeyEX
6楼-- · 2019-10-16 18:08
[mw_shl_code=c,true] int main(void)
{               
        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间断微光闪(和模板程序一样)。 看不懂了-.-

一周热门 更多>