窗口看门狗调试时无法进入中断,LED灯始终常亮,不闪烁,调试半天不知哪里出问题,参考了精英版代码,还是不行,求助!!

2019-07-21 00:55发布

#include"wwdg.h"
#include"stm32f10x.h"
#include"delay.h"
#include"led.h"

u8 wwdg_cnt=0x7f;

void Wwdg_Init(u8 tr,u8 wv,u32 pre)
{
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
       
        wwdg_cnt=tr&wwdg_cnt;
       
        WWDG_SetPrescaler(pre);
       
        WWDG_SetWindowValue(wv);
       
        WWDG_Enable(wwdg_cnt);
       
        WWDG_ClearFlag();
       
        Wwdg_NVIC_Init();
       
        WWDG_EnableIT();
}

void Wwdg_NVIC_Init(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
       
        NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}

void WWDG_IRQHandler(void)
{
        WWDG_SetCounter(wwdg_cnt);
        WWDG_ClearFlag();
        LED1=!LED1;

}


#include"led.h"
#include"stm32f10x.h"

void Led_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        GPIO_SetBits(GPIOB,GPIO_Pin_5);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOE,&GPIO_InitStructure);
        GPIO_SetBits(GPIOE,GPIO_Pin_5);

}
#include "stm32f10x.h"
#include"delay.h"
#include"led.h"
#include"wwdg.h"


int main(void)
{
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        delay_init();
        Led_Init();
        LED0=0;
        delay_ms(300);
        Wwdg_Init(0x7f,0x5f,WWDG_Prescaler_8);
        while(1)
        {
                LED0=1;
        }
       
       
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
qq531958586
1楼-- · 2019-07-21 03:48
 精彩回答 2  元偷偷看……
apricity
2楼-- · 2019-07-21 07:23
好像是计数值没有初始化, 在初始化里加句WWDG_SetCounter(wwdg_cnt);试试
qq531958586
3楼-- · 2019-07-21 08:03
apricity 发表于 2018-1-27 20:01
好像是计数值没有初始化, 在初始化里加句WWDG_SetCounter(wwdg_cnt);试试

WWDG_Enable(wwdg_cnt);初始化里有这个,原子的代码就是加了这句就可以了
apricity
4楼-- · 2019-07-21 13:18
qq531958586 发表于 2018-1-27 20:15
WWDG_Enable(wwdg_cnt);初始化里有这个,原子的代码就是加了这句就可以了

哦,你用的精英,我在看看
qq531958586
5楼-- · 2019-07-21 14:12
 精彩回答 2  元偷偷看……
apricity
6楼-- · 2019-07-21 15:02
qq531958586 发表于 2018-1-27 20:25
对的,在线调试时,寄存器的值正常,感觉就是没有进入中断处理函数。

在中断里设个断点,然后debug下

一周热门 更多>