lib_tmr.c 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /**
  2. ******************************************************************************
  3. * @file lib_tmr.c
  4. * @author Application Team
  5. * @version V4.4.0
  6. * @date 2018-09-27
  7. * @brief Timer library.
  8. ******************************************************************************
  9. * @attention
  10. *
  11. ******************************************************************************
  12. */
  13. #include "lib_tmr.h"
  14. #define TMR_CTRL_RSTValue (0UL)
  15. #define TMR_VALUE_RSTValue (0UL)
  16. #define TMR_RELOAD_RSTValue (0UL)
  17. /**
  18. * @brief Initializes the TMRx peripheral registers to their default reset values.
  19. * @param TMRx:
  20. TMR0 ~ TMR3
  21. * @retval None
  22. */
  23. void TMR_DeInit(TMR_TypeDef *TMRx)
  24. {
  25. /* Check parameters */
  26. assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
  27. /* Disable timer */
  28. TMRx->CTRL &= ~TMR_CTRL_EN;
  29. /* clear interrupt status */
  30. TMRx->INT = TMR_INT_INT;
  31. /* write default reset values */
  32. TMRx->CTRL = TMR_CTRL_RSTValue;
  33. TMRx->RELOAD = TMR_RELOAD_RSTValue;
  34. TMRx->VALUE = TMR_VALUE_RSTValue;
  35. }
  36. /**
  37. * @brief TMR initialization.
  38. * @param TMRx:
  39. TMR0 ~ TMR3
  40. InitStruct: Timer configuration.
  41. ClockSource:
  42. TMR_CLKSRC_INTERNAL
  43. TMR_CLKSRC_EXTERNAL
  44. EXTGT:
  45. TMR_EXTGT_DISABLE
  46. TMR_EXTGT_ENABLE
  47. Period: the auto-reload value
  48. * @retval None
  49. */
  50. void TMR_Init(TMR_TypeDef *TMRx, TMR_InitType *InitStruct)
  51. {
  52. uint32_t tmp;
  53. /* Check parameters */
  54. assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
  55. assert_parameters(IS_TMR_CLKSRC(InitStruct->ClockSource));
  56. assert_parameters(IS_TMR_EXTGT(InitStruct->EXTGT));
  57. tmp = TMRx->CTRL;
  58. tmp &= ~(TMR_CTRL_EXTCLK|TMR_CTRL_EXTEN);
  59. tmp |= (InitStruct->ClockSource|InitStruct->EXTGT);
  60. TMRx->CTRL = tmp;
  61. TMRx->VALUE = InitStruct->Period;
  62. TMRx->RELOAD = InitStruct->Period;
  63. }
  64. /**
  65. * @brief Fills each TMR_InitType member with its default value.
  66. * @param InitStruct: pointer to an TMR_InitType structure which will be initialized.
  67. * @retval None
  68. */
  69. void TMR_StructInit(TMR_InitType *InitStruct)
  70. {
  71. /*--------------- Reset TMR init structure parameters values ---------------*/
  72. /* Initialize the ClockSource member */
  73. InitStruct->ClockSource = TMR_CLKSRC_INTERNAL;
  74. /* Initialize the EXTGT member */
  75. InitStruct->EXTGT = TMR_EXTGT_DISABLE;
  76. /* Initialize the Period member */
  77. InitStruct->Period = 0;
  78. }
  79. /**
  80. * @brief Interrupt configuration.
  81. * @param TMRx:
  82. TMR0~TMR3
  83. NewState:
  84. ENABLE
  85. DISABLE
  86. * @retval None
  87. */
  88. void TMR_INTConfig(TMR_TypeDef *TMRx, uint32_t NewState)
  89. {
  90. /* Check parameters */
  91. assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
  92. assert_parameters(IS_FUNCTIONAL_STATE(NewState));
  93. if (NewState == ENABLE)
  94. {
  95. TMRx->CTRL |= TMR_CTRL_INTEN;
  96. }
  97. else
  98. {
  99. TMRx->CTRL &= ~TMR_CTRL_INTEN;
  100. }
  101. }
  102. /**
  103. * @brief Get timer interrupt status.
  104. * @param TMRx:
  105. TMR0~TMR3
  106. * @retval Interrupt status.
  107. */
  108. uint8_t TMR_GetINTStatus(TMR_TypeDef *TMRx)
  109. {
  110. /* Check parameters */
  111. assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
  112. if (TMRx->INT&TMR_INT_INT)
  113. return 1;
  114. else
  115. return 0;
  116. }
  117. /**
  118. * @brief Clear timer interrupt status bit.
  119. * @param TMRx:
  120. TMR0~TMR3
  121. * @retval None.
  122. */
  123. void TMR_ClearINTStatus(TMR_TypeDef *TMRx)
  124. {
  125. /* Check parameters */
  126. assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
  127. TMRx->INT = TMR_INT_INT;
  128. }
  129. /**
  130. * @brief TMRER enable.
  131. * @param TMRx:
  132. TMR0~TMR3
  133. NewState:
  134. ENABLE
  135. DISABLE
  136. * @retval None
  137. */
  138. void TMR_Cmd(TMR_TypeDef *TMRx, uint32_t NewState)
  139. {
  140. /* Check parameters */
  141. assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
  142. assert_parameters(IS_FUNCTIONAL_STATE(NewState));
  143. if (NewState == ENABLE)
  144. TMRx->CTRL |= TMR_CTRL_EN;
  145. else
  146. TMRx->CTRL &= ~TMR_CTRL_EN;
  147. }
  148. /**
  149. * @brief Get TMRx current value.
  150. * @param TMRx:
  151. TMR0~TMR3
  152. * @retval timer value.
  153. */
  154. uint32_t TMR_GetCurrentValue(TMR_TypeDef *TMRx)
  155. {
  156. /* Check parameters */
  157. assert_parameters(IS_TMR_ALL_INSTANCE(TMRx));
  158. return (TMRx->VALUE);
  159. }
  160. /*********************************** END OF FILE ******************************/