MS-DTU/MS-DTU-V1/User/wdt_reset.c

65 lines
1.7 KiB
C
Raw Permalink Normal View History

2025-04-03 14:18:58 +08:00
/*
*********************************************************************************************************
* 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()
{
// <20><><EFBFBD>Ź<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ32K<32><4B><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>Ϊ4095/(32K/256)=32<33><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;
// <20><><EFBFBD><EFBFBD><E9B2A2><EFBFBD><EFBFBD>OptionBytes<65><73>IWDG_STOP<4F><50>־Ϊ<D6BE><CEAA>Stopģʽ<C4A3><CABD>IWDG<44><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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);
}