STM32_WGY/User/wdt_reset.c

65 lines
1.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*********************************************************************************************************
* IAR Development Kits
* on the
*
* M451
*
* Filename : wdt_reset.c
* Version : V1.00
* Programmer(s) : Qian Xianghong
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#include "includes.h"
IWDG_HandleTypeDef hiwdg;
void Watchdog_Init()
{
// 看门狗时钟为32K超时时间为4095/(32K/256)=32秒
hiwdg.Instance = IWDG;
hiwdg.Init.Prescaler = IWDG_PRESCALER_256;
hiwdg.Init.Window = 4095;
hiwdg.Init.Reload = 4095;
if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
{
Error_Handler();
}
}
void Watchdog_Open()
{
FLASH_OBProgramInitTypeDef OptionsBytesStruct;
// 检查并设置OptionBytes的IWDG_STOP标志为Stop模式下IWDG不工作
HAL_FLASHEx_OBGetConfig(&OptionsBytesStruct);
printf("\r\nIWDG_STOP config: %08X\r\n", OptionsBytesStruct.USERConfig & 0x00020000);
if(OptionsBytesStruct.USERConfig & 0x00020000)
{
HAL_FLASH_Unlock();
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR);
HAL_FLASH_OB_Unlock();
OptionsBytesStruct.OptionType = OPTIONBYTE_USER;
OptionsBytesStruct.USERType = OB_USER_IWDG_STOP;
OptionsBytesStruct.USERConfig &= (~0x00020000);
HAL_FLASHEx_OBProgram(&OptionsBytesStruct);
HAL_FLASH_OB_Launch();
}
}
void Watchdog_Feed()
{
HAL_IWDG_Refresh(&hiwdg);
}