1 /********************************** (C) COPYRIGHT *******************************
2 * File Name : CH57x_timer2.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 : TMR2_TimerInit
14 * Description : 定时功能初始化
15 * Input : t: 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864
16
17 * Return : None
18 *******************************************************************************/
TMR2_TimerInit(UINT32 t)19 void TMR2_TimerInit( UINT32 t )
20 {
21 R32_TMR2_CNT_END = t;
22 R8_TMR2_CTRL_MOD = RB_TMR_ALL_CLEAR;
23 R8_TMR2_CTRL_MOD = RB_TMR_COUNT_EN;
24 }
25
26 /*******************************************************************************
27 * Function Name : TMR2_EXTSingleCounterInit
28 * Description : 外部信号计数功能初始化
29 * Input : c: 外部送入信号脉冲计数, 最长计数 67108864
30 * Return : None
31 *******************************************************************************/
TMR2_EXTSingleCounterInit(UINT32 c)32 void TMR2_EXTSingleCounterInit( UINT32 c )
33 {
34 R32_TMR2_CNT_END = c;
35 R8_TMR2_CTRL_MOD = RB_TMR_ALL_CLEAR;
36 R8_TMR2_CTRL_MOD = RB_TMR_CAP_COUNT|RB_TMR_MODE_IN|RB_TMR_COUNT_EN;
37 }
38
39 /*******************************************************************************
40 * Function Name : TMR2_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 *******************************************************************************/
TMR2_CountInit(CapModeTypeDef cap)49 void TMR2_CountInit( CapModeTypeDef cap )
50 {
51 R8_TMR2_CTRL_MOD = RB_TMR_ALL_CLEAR;
52 R8_TMR2_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 : TMR2_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 *******************************************************************************/
TMR2_PWMInit(PWMX_PolarTypeDef pr,PWM_RepeatTsTypeDef ts)67 void TMR2_PWMInit( PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts )
68 {
69 // R8_TMR2_CTRL_MOD = RB_TMR_ALL_CLEAR;
70 R8_TMR2_CTRL_MOD = RB_TMR_COUNT_EN \
71 |RB_TMR_OUT_EN \
72 |(pr<<4) \
73 |(ts<<6);
74 }
75
76
77 /*******************************************************************************
78 * Function Name : TMR2_CapInit
79 * Description : 外部信号捕捉功能初始化
80 * Input : cap: select capture mode
81 refer to CapModeTypeDef
82 * Return : None
83 *******************************************************************************/
TMR2_CapInit(CapModeTypeDef cap)84 void TMR2_CapInit( CapModeTypeDef cap )
85 {
86 R8_TMR2_CTRL_MOD = RB_TMR_ALL_CLEAR;
87 R8_TMR2_CTRL_MOD = RB_TMR_COUNT_EN \
88 |RB_TMR_MODE_IN \
89 |(cap<<6);
90 }
91
92 /*******************************************************************************
93 * Function Name : TMR2_DMACfg
94 * Description : 配置DMA功能
95 * Input : s:
96 ENABLE - 打开
97 DISABLE - 关闭
98 startAddr: DMA 起始地址
99 endAddr: DMA结束地址
100 m:配置DMA模式
101 * Return : None
102 *******************************************************************************/
TMR2_DMACfg(UINT8 s,UINT16 startAddr,UINT16 endAddr,DMAModeTypeDef m)103 void TMR2_DMACfg( UINT8 s, UINT16 startAddr, UINT16 endAddr, DMAModeTypeDef m )
104 {
105 if(s == DISABLE){
106 R8_TMR2_CTRL_DMA = 0;
107 }
108 else{
109 R16_TMR2_DMA_BEG = startAddr;
110 R16_TMR2_DMA_END = endAddr;
111 if(m) R8_TMR2_CTRL_DMA = RB_TMR_DMA_LOOP|RB_TMR_DMA_ENABLE;
112 else R8_TMR2_CTRL_DMA = RB_TMR_DMA_ENABLE;
113 }
114 }
115
116
117
118
119