123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /***********************************************************************
- * Filename : HAL_IWDT.c
- * Description : HAL IWDT driver source file
- * Author(s) : CWT
- * version : V1.0
- * Modify date : 2020-04-17
- ***********************************************************************/
- #include "ACM32Fxx_HAL.h"
- HAL_StatusTypeDef HAL_IWDT_Init(IWDT_HandleTypeDef * hidt)
- {
- if (hidt == NULL)
- {
- return HAL_ERROR;
- }
- System_Module_Enable(EN_IWDT);
- System_Delay(1);
- System_Enable_Disable_RTC_Domain_Access(FUNC_ENABLE);
- System_Enable_RC32K();
- System_Enable_Disable_Reset(RESET_ENABLE_SOURCE_IWDT, FUNC_ENABLE);
- /*Enable IWDT */
- hidt->Instance->CMDR = IWDT_ENABLE_COMMAND;
- System_Delay(10);
- /*Enable Write */
- hidt->Instance->CMDR = IWDT_WRITE_ENABLE_COMMAND;
- System_Delay(10);
- hidt->Instance->PR = hidt->Init.Prescaler;
- hidt->Instance->RLR = hidt->Init.Reload;
- hidt->Instance->WINR = hidt->Init.Window;
- hidt->Instance->WUTR = hidt->Init.Wakeup;
- System_Delay(1);
- while(hidt->Instance->SR & (0x0F)){}; // wait for configuration done
- if (hidt->Init.Reload > hidt->Init.Wakeup)
- {
- /*Enable Wake up */
- hidt->Instance->CMDR = IWDT_WAKEUP_ENABLE_COMMAND;
- }
- hidt->Instance->CMDR = IWDT_RELOAD_COMMAND;
- System_Delay(1);
- while(hidt->Instance->SR & (1 << 4)){};
- return HAL_OK;
- }
- HAL_StatusTypeDef HAL_IWDT_Kick_Watchdog_Wait_For_Done(IWDT_HandleTypeDef * hidt)
- {
- hidt->Instance->CMDR = IWDT_RELOAD_COMMAND;
- System_Delay(1);
- while(hidt->Instance->SR & (1 << 4)){}; //wait for kick watchdog done
- return HAL_OK;
- }
|