CH57x_timer1.c 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /********************************** (C) COPYRIGHT *******************************
  2. * File Name : CH57x_timer1.c
  3. * Author : WCH
  4. * Version : V1.0
  5. * Date : 2018/12/15
  6. * Description
  7. *******************************************************************************/
  8. #include "CH57x_common.h"
  9. /*******************************************************************************
  10. * Function Name : TMR1_TimerInit
  11. * Description : 定时功能初始化
  12. * Input : t: 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864
  13. * Return : None
  14. *******************************************************************************/
  15. void TMR1_TimerInit( UINT32 t )
  16. {
  17. R32_TMR1_CNT_END = t;
  18. R8_TMR1_CTRL_MOD = RB_TMR_ALL_CLEAR;
  19. R8_TMR1_CTRL_MOD = RB_TMR_COUNT_EN;
  20. }
  21. /*******************************************************************************
  22. * Function Name : TMR1_EXTSingleCounterInit
  23. * Description : 外部信号计数功能初始化
  24. * Input : c: 外部送入信号脉冲计数, 最长计数 67108864
  25. * Return : None
  26. *******************************************************************************/
  27. void TMR1_EXTSingleCounterInit( UINT32 c )
  28. {
  29. R32_TMR1_CNT_END = c;
  30. R8_TMR1_CTRL_MOD = RB_TMR_ALL_CLEAR;
  31. R8_TMR1_CTRL_MOD = RB_TMR_CAP_COUNT|RB_TMR_MODE_IN|RB_TMR_COUNT_EN;
  32. }
  33. /*******************************************************************************
  34. * Function Name : TMR1_CountInit
  35. * Description : 边沿计数功能初始化
  36. * Input : cap: 采集计数类型
  37. CAP_NULL - 不计数
  38. Edge_To_Edge - 计数任意边沿
  39. FallEdge_To_FallEdge - 计数下降沿
  40. RiseEdge_To_RiseEdge - 计数上升沿
  41. * Return : None
  42. *******************************************************************************/
  43. void TMR1_CountInit( CapModeTypeDef cap )
  44. {
  45. R8_TMR1_CTRL_MOD = RB_TMR_ALL_CLEAR;
  46. R8_TMR1_CTRL_MOD = RB_TMR_COUNT_EN \
  47. |RB_TMR_CAP_COUNT \
  48. |RB_TMR_MODE_IN \
  49. |(cap<<6);
  50. }
  51. /*******************************************************************************
  52. * Function Name : TMR1_PWMInit
  53. * Description : PWM 输出初始化
  54. * Input : pr: select wave polar
  55. refer to PWMX_PolarTypeDef
  56. ts: set pwm repeat times
  57. refer to PWM_RepeatTsTypeDef
  58. * Return : None
  59. *******************************************************************************/
  60. void TMR1_PWMInit( PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts )
  61. {
  62. // R8_TMR1_CTRL_MOD = RB_TMR_ALL_CLEAR;
  63. R8_TMR1_CTRL_MOD = RB_TMR_COUNT_EN \
  64. |RB_TMR_OUT_EN \
  65. |(pr<<4) \
  66. |(ts<<6);
  67. }
  68. /*******************************************************************************
  69. * Function Name : TMR1_CapInit
  70. * Description : 外部信号捕捉功能初始化
  71. * Input : cap: select capture mode
  72. refer to CapModeTypeDef
  73. * Return : None
  74. *******************************************************************************/
  75. void TMR1_CapInit( CapModeTypeDef cap )
  76. {
  77. R8_TMR1_CTRL_MOD = RB_TMR_ALL_CLEAR;
  78. R8_TMR1_CTRL_MOD = RB_TMR_COUNT_EN \
  79. |RB_TMR_MODE_IN \
  80. |(cap<<6);
  81. }
  82. /*******************************************************************************
  83. * Function Name : TMR1_DMACfg
  84. * Description : 配置DMA功能
  85. * Input : s:
  86. ENABLE - 打开
  87. DISABLE - 关闭
  88. startAddr: DMA 起始地址
  89. endAddr: DMA结束地址
  90. m:配置DMA模式
  91. * Return : None
  92. *******************************************************************************/
  93. void TMR1_DMACfg( UINT8 s, UINT16 startAddr, UINT16 endAddr, DMAModeTypeDef m )
  94. {
  95. if(s == DISABLE){
  96. R8_TMR1_CTRL_DMA = 0;
  97. }
  98. else{
  99. R16_TMR1_DMA_BEG = startAddr;
  100. R16_TMR1_DMA_END = endAddr;
  101. if(m) R8_TMR1_CTRL_DMA = RB_TMR_DMA_LOOP|RB_TMR_DMA_ENABLE;
  102. else R8_TMR1_CTRL_DMA = RB_TMR_DMA_ENABLE;
  103. }
  104. }