cmem7_tim.c 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /**
  2. *****************************************************************************
  3. * @file cmem7_tim.c
  4. *
  5. * @brief CMEM7 timer source file
  6. *
  7. *
  8. * @version V1.0
  9. * @date 3. September 2013
  10. *
  11. * @note
  12. *
  13. *****************************************************************************
  14. * @attention
  15. *
  16. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  17. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  18. * TIME. AS A RESULT, CAPITAL-MICRO SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  19. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  20. * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  21. * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  22. *
  23. * <h2><center>&copy; COPYRIGHT 2013 Capital-micro </center></h2>
  24. *****************************************************************************
  25. */
  26. #include "cmem7_tim.h"
  27. static uint32_t tim_GetClock() {
  28. return SYSTEM_CLOCK_FREQ / (1 << (GLOBAL_CTRL->CLK_SEL_0_b.TIMER_CLK + 1));
  29. }
  30. void TIM_Init(TIMER0_Type* Timx, uint16_t Ms) {
  31. assert_param(IS_TIM_ALL_PERIPH(Timx));
  32. Timx->CTRL_b.EN = FALSE;
  33. Timx->LEN = tim_GetClock() / 1000 * Ms;
  34. Timx->TYPE_b.SIGNLE_SHOT = TRUE;
  35. }
  36. void TIM_EnableInt(TIMER0_Type* Timx, BOOL Enable) {
  37. assert_param(IS_TIM_ALL_PERIPH(Timx));
  38. if (Enable == TRUE) {
  39. Timx->INT_EN_b.EN_REVERSE = FALSE;
  40. } else {
  41. Timx->INT_EN_b.EN_REVERSE = TRUE;
  42. }
  43. }
  44. BOOL TIM_GetIntStatus(TIMER0_Type* Timx) {
  45. assert_param(IS_TIM_ALL_PERIPH(Timx));
  46. return (Timx->INT_STA_b.STA ? TRUE : FALSE);
  47. }
  48. void TIM_ClearInt(TIMER0_Type* Timx) {
  49. assert_param(IS_TIM_ALL_PERIPH(Timx));
  50. Timx->INT_STA_b.STA = 1;
  51. }
  52. void TIM_Enable(TIMER0_Type* Timx, BOOL Enable) {
  53. assert_param(IS_TIM_ALL_PERIPH(Timx));
  54. Timx->CTRL_b.EN = Enable;
  55. }
  56. BOOL TIM_IsOverflow(TIMER0_Type* Timx) {
  57. assert_param(IS_TIM_ALL_PERIPH(Timx));
  58. return (Timx->CNT == 0) ? TRUE : FALSE;
  59. }
  60. uint32_t TIM_GetCounter(TIMER0_Type* Timx) {
  61. assert_param(IS_TIM_ALL_PERIPH(Timx));
  62. return Timx->CNT;
  63. }