lib_wdt.c 1.7 KB

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