1 /** 2 ****************************************************************************** 3 * @file lib_wdt.c 4 * @author Application Team 5 * @version V1.1.0 6 * @date 2019-10-28 7 * @brief WDT library. 8 ****************************************************************************** 9 * @attention 10 * 11 ****************************************************************************** 12 */ 13 #include "lib_wdt.h" 14 15 #define WDTPASS_KEY 0xAA5555AA 16 #define WDTCLR_KEY 0x55AAAA55 17 18 /** 19 * @brief Enables WDT timer. 20 * @param None 21 * @retval None 22 */ WDT_Enable(void)23void WDT_Enable(void) 24 { 25 PMU->WDTPASS = WDTPASS_KEY; 26 PMU->WDTEN |= PMU_WDTEN_WDTEN; 27 28 PMU->WDTPASS = WDTPASS_KEY; 29 PMU->WDTEN |= PMU_WDTEN_WDTEN; 30 } 31 32 /** 33 * @brief Disables WDT timer. 34 * @param None 35 * @retval None 36 */ WDT_Disable(void)37void WDT_Disable(void) 38 { 39 PMU->WDTPASS = WDTPASS_KEY; 40 PMU->WDTEN &= ~PMU_WDTEN_WDTEN; 41 42 PMU->WDTPASS = WDTPASS_KEY; 43 PMU->WDTEN &= ~PMU_WDTEN_WDTEN; 44 } 45 46 /** 47 * @brief Clears WDT counter. 48 * @param None 49 * @retval None 50 */ WDT_Clear(void)51void WDT_Clear(void) 52 { 53 PMU->WDTCLR = WDTCLR_KEY; 54 } 55 56 /** 57 * @brief Configures WDT counting period. 58 * @param counting period: 59 WDT_2_SECS 60 WDT_4_SECS 61 WDT_8_SECS 62 WDT_16_SECS 63 * @retval None 64 */ WDT_SetPeriod(uint32_t period)65void WDT_SetPeriod(uint32_t period) 66 { 67 uint32_t tmp; 68 69 assert_parameters(IS_WDT_PERIOD(period)); 70 71 tmp = PMU->WDTEN; 72 tmp &= ~PMU_WDTEN_WDTSEL; 73 tmp |= period; 74 PMU->WDTPASS = WDTPASS_KEY; 75 PMU->WDTEN = tmp; 76 } 77 78 /** 79 * @brief Gets WDT counter value. 80 * @param None 81 * @retval current counter value. 82 */ WDT_GetCounterValue(void)83uint16_t WDT_GetCounterValue(void) 84 { 85 return (PMU->WDTCLR & PMU_WDTCLR_WDTCNT); 86 } 87 88 /*********************************** END OF FILE ******************************/ 89