CH57x_timer3.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /********************************** (C) COPYRIGHT *******************************
  2. * File Name : CH57x_timer3.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 : TMR3_TimerInit
  11. * Description : 定时功能初始化
  12. * Input : t: 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864
  13. * Return : None
  14. *******************************************************************************/
  15. void TMR3_TimerInit( UINT32 t )
  16. {
  17. R32_TMR3_CNT_END = t;
  18. R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
  19. R8_TMR3_CTRL_MOD = RB_TMR_COUNT_EN;
  20. }
  21. /*******************************************************************************
  22. * Function Name : TMR3_EXTSingleCounterInit
  23. * Description : 外部信号计数功能初始化
  24. * Input : c: 外部送入信号脉冲计数, 最长计数 67108864
  25. * Return : None
  26. *******************************************************************************/
  27. void TMR3_EXTSingleCounterInit( UINT32 c )
  28. {
  29. R32_TMR3_CNT_END = c;
  30. R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
  31. R8_TMR3_CTRL_MOD = RB_TMR_CAP_COUNT|RB_TMR_MODE_IN|RB_TMR_COUNT_EN;
  32. }
  33. /*******************************************************************************
  34. * Function Name : TMR3_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 TMR3_CountInit( CapModeTypeDef cap )
  44. {
  45. R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
  46. R8_TMR3_CTRL_MOD = RB_TMR_COUNT_EN \
  47. |RB_TMR_CAP_COUNT \
  48. |RB_TMR_MODE_IN \
  49. |(cap<<6);
  50. }
  51. /*******************************************************************************
  52. * Function Name : TMR3_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 TMR3_PWMInit( PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts )
  61. {
  62. // R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
  63. R8_TMR3_CTRL_MOD = RB_TMR_COUNT_EN \
  64. |RB_TMR_OUT_EN \
  65. |(pr<<4) \
  66. |(ts<<6);
  67. }
  68. /*******************************************************************************
  69. * Function Name : TMR3_CapInit
  70. * Description : 外部信号捕捉功能初始化
  71. * Input : cap: select capture mode
  72. refer to CapModeTypeDef
  73. * Return : None
  74. *******************************************************************************/
  75. void TMR3_CapInit( CapModeTypeDef cap )
  76. {
  77. R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
  78. R8_TMR3_CTRL_MOD = RB_TMR_COUNT_EN \
  79. |RB_TMR_MODE_IN \
  80. |(cap<<6);
  81. }