lib_wdt.c 1.7 KB
Newer Older
F
FuChao 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
/**
  ******************************************************************************
  * @file    lib_wdt.c 
  * @author  Application Team
  * @version V4.4.0
  * @date    2018-09-27
  * @brief   WDT library.
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */
#include "lib_wdt.h"

#define WDTPASS_KEY 0xAA5555AA
#define WDTCLR_KEY  0x55AAAA55

/**
  * @brief  Enable WDT timer.
  * @param  None
  * @retval None
  */
void WDT_Enable(void)
{
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN |= PMU_WDTEN_WDTEN;
  
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN |= PMU_WDTEN_WDTEN;
}

/**
  * @brief  Disable WDT timer.
  * @param  None
  * @retval None
  */
void WDT_Disable(void)
{
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN &= ~PMU_WDTEN_WDTEN;
  
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN &= ~PMU_WDTEN_WDTEN;
}

/**
  * @brief  Clear WDT counter.
  * @param  None
  * @retval None
  */
void WDT_Clear(void)
{
  PMU->WDTCLR = WDTCLR_KEY;
}

/**
  * @brief  Set WDT counting period.
  * @param  counting period:
               WDT_2_SECS
               WDT_1_SECS
               WDT_0_5_SECS
               WDT_0_25_SECS
  * @retval None
  */
void WDT_SetPeriod(uint32_t period)
{
  uint32_t tmp;
  
  assert_parameters(IS_WDT_PERIOD(period));
    
  tmp = PMU->WDTEN;
  tmp &= ~PMU_WDTEN_WDTSEL;
  tmp |= period;
  PMU->WDTPASS = WDTPASS_KEY;
  PMU->WDTEN = tmp;
}

/**
  * @brief  Get WDT counter value.
  * @param  None
  * @retval current counter value.
  */
uint16_t WDT_GetCounterValue(void)
{
  return (PMU->WDTCLR & PMU_WDTCLR_WDTCNT);
}

/*********************************** END OF FILE ******************************/