65 lines
1.7 KiB
C
65 lines
1.7 KiB
C
|
|
/*
|
|||
|
|
*********************************************************************************************************
|
|||
|
|
* 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);
|
|||
|
|
}
|
|||
|
|
|