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