1 /*********************************************************************** 2 * Filename : HAL_IWDT.c 3 * Description : HAL IWDT driver source file 4 * Author(s) : CWT 5 * version : V1.0 6 * Modify date : 2020-04-17 7 ***********************************************************************/ 8 #include "ACM32Fxx_HAL.h" 9 10 HAL_IWDT_Init(IWDT_HandleTypeDef * hidt)11HAL_StatusTypeDef HAL_IWDT_Init(IWDT_HandleTypeDef * hidt) 12 { 13 if (hidt == NULL) 14 { 15 return HAL_ERROR; 16 } 17 18 System_Module_Enable(EN_IWDT); 19 System_Delay(1); 20 21 System_Enable_Disable_RTC_Domain_Access(FUNC_ENABLE); 22 System_Enable_RC32K(); 23 System_Enable_Disable_Reset(RESET_ENABLE_SOURCE_IWDT, FUNC_ENABLE); 24 /*Enable IWDT */ 25 hidt->Instance->CMDR = IWDT_ENABLE_COMMAND; 26 System_Delay(10); 27 /*Enable Write */ 28 hidt->Instance->CMDR = IWDT_WRITE_ENABLE_COMMAND; 29 System_Delay(10); 30 31 hidt->Instance->PR = hidt->Init.Prescaler; 32 hidt->Instance->RLR = hidt->Init.Reload; 33 hidt->Instance->WINR = hidt->Init.Window; 34 hidt->Instance->WUTR = hidt->Init.Wakeup; 35 System_Delay(1); 36 while(hidt->Instance->SR & (0x0F)){}; // wait for configuration done 37 38 if (hidt->Init.Reload > hidt->Init.Wakeup) 39 { 40 /*Enable Wake up */ 41 hidt->Instance->CMDR = IWDT_WAKEUP_ENABLE_COMMAND; 42 } 43 44 hidt->Instance->CMDR = IWDT_RELOAD_COMMAND; 45 System_Delay(1); 46 while(hidt->Instance->SR & (1 << 4)){}; 47 48 return HAL_OK; 49 50 } 51 HAL_IWDT_Kick_Watchdog_Wait_For_Done(IWDT_HandleTypeDef * hidt)52HAL_StatusTypeDef HAL_IWDT_Kick_Watchdog_Wait_For_Done(IWDT_HandleTypeDef * hidt) 53 { 54 hidt->Instance->CMDR = IWDT_RELOAD_COMMAND; 55 System_Delay(1); 56 while(hidt->Instance->SR & (1 << 4)){}; //wait for kick watchdog done 57 58 return HAL_OK; 59 } 60 61 62 63 64 65 66 67 68 69 70 71 72 73