本帖最后由 wxzan 于 2021-5-27 08:05 编辑
MM32F0010 PA6接LED,上电LED亮一下。设置WWDG中断,在WWDG中断中喂狗。结果程序不进入中断,LED闪烁,一直在复位。
/*****************************************************************************
* @file main.c
* @author
* @version
* @date
* @brief
*****************************************************************************/
#include "HAL_device.h"
#include "HAL_conf.h"
#include <stdio.h>
void NVIC_Configure(void);
void LED_Init(void);
void delay_us(uint32_t count);
void WWDG_Init(void);
void WWDG_IRQHandler(void);
/********************************************************************************************************
**函数信息 :int main (void)
**功能描述 :
**输入参数 :
**输出参数 :
********************************************************************************************************/
int main(void)
{
LED_Init();
GPIO_ResetBits(GPIOA,GPIO_Pin_6);
delay_us(65535);
delay_us(65535);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
delay_us(65535);
delay_us(65535);
WWDG_Init();
while(1)
{
}
}
/********************************************************************************************************
**函数信息 :NVIC_Configure(u8 ch, u8 sub)
**功能描述 :中断配置
**输入参数 :
**输出参数 :无
********************************************************************************************************/
void NVIC_Configure(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/********************************************************************************************************
**函数信息 :Wwdg_Init()
**功能描述 :窗口看门狗中断配置
**输入参数 :无
**输出参数 :无
********************************************************************************************************/
void WWDG_Init(void)
{
NVIC_Configure();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
WWDG_SetPrescaler(WWDG_Prescaler_8);
WWDG_SetWindowValue(0x66);
WWDG_Enable(0x70);
WWDG_ClearFlag();
WWDG_EnableIT();
}
/********************************************************************************************************
**函数信息 :void WWDG_IRQHandler (void)
**功能描述 :窗口看门狗中断函数
**输入参数 :无
**输出参数 :无
********************************************************************************************************/
void WWDG_IRQHandler(void)
{
WWDG_SetCounter(0x70);
WWDG_ClearFlag();
}
/********************************************************************************************************
**函数信息 : LED_Init
**功能描述 :LED初始化
**输入参数 :
**输出参数 :无
********************************************************************************************************/
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_Pin_6);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
}
/*************************************************************************************
** Function name: delay_us
*************************************************************************************/
void delay_us(uint32_t count)
{
uint32_t j,k;
for(j=count;j>0;j--)
for(k=3;k>0;k--);
}
|