aboutsummaryrefslogtreecommitdiff
path: root/CH5xx_ble_firmware_library/StdPeriphDriver/inc/CH58x_pwm.h
blob: 75b018a8ed88e88db3376214c1982346bcef07d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/********************************** (C) COPYRIGHT *******************************
 * File Name          : CH57x_pwm.h
 * Author             : WCH
 * Version            : V1.2
 * Date               : 2021/11/17
 * Description
 *********************************************************************************
 * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
 * Attention: This software (modified or not) and binary are used for 
 * microcontroller manufactured by Nanjing Qinheng Microelectronics.
 *******************************************************************************/

#ifndef __CH58x_PWM_H__
#define __CH58x_PWM_H__

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief  channel of PWM define
 */
#define CH_PWM4     0x01  // PWM4 通道
#define CH_PWM5     0x02  // PWM5 通道
#define CH_PWM6     0x04  // PWM6 通道
#define CH_PWM7     0x08  // PWM7 通道
#define CH_PWM8     0x10  // PWM8 通道
#define CH_PWM9     0x20  // PWM9 通道
#define CH_PWM10    0x40  // PWM10 通道
#define CH_PWM11    0x80  // PWM11 通道

/**
 * @brief  channel of PWM define
 */
typedef enum
{
    High_Level = 0, // 默认低电平,高电平有效
    Low_Level,      // 默认高电平,低电平有效
} PWMX_PolarTypeDef;

/**
 * @brief  Configuration PWM4_11 Cycle size
 */
typedef enum
{
    PWMX_Cycle_256 = 0, // 256 个PWMX周期
    PWMX_Cycle_255,     // 255 个PWMX周期
    PWMX_Cycle_128,     // 128 个PWMX周期
    PWMX_Cycle_127,     // 127 个PWMX周期
    PWMX_Cycle_64,      // 64 个PWMX周期
    PWMX_Cycle_63,      // 63 个PWMX周期
    PWMX_Cycle_32,      // 32 个PWMX周期
    PWMX_Cycle_31,      // 31 个PWMX周期
} PWMX_CycleTypeDef;

/**
 * @brief   PWM4-PWM11 通道基准时钟配置
 *
 * @param   d   - 通道基准时钟 = d*Tsys
 */
#define PWMX_CLKCfg(d)    (R8_PWM_CLOCK_DIV = d)

/**
 * @brief   PWM4-PWM11基准时钟配置
 *
 * @param   cyc - refer to PWMX_CycleTypeDef
 */
void PWMX_CycleCfg(PWMX_CycleTypeDef cyc);

/**
 * @brief   设置 PWM4 有效数据脉宽
 *
 * @param   d   - 有效数据脉宽
 */
#define PWM4_ActDataWidth(d)     (R8_PWM4_DATA = d)

/**
 * @brief   设置 PWM5 有效数据脉宽
 *
 * @param   d   - 有效数据脉宽
 */
#define PWM5_ActDataWidth(d)     (R8_PWM5_DATA = d)

/**
 * @brief   设置 PWM6 有效数据脉宽
 *
 * @param   d   - 有效数据脉宽
 */
#define PWM6_ActDataWidth(d)     (R8_PWM6_DATA = d)

/**
 * @brief   设置 PWM7 有效数据脉宽
 *
 * @param   d   - 有效数据脉宽
 */
#define PWM7_ActDataWidth(d)     (R8_PWM7_DATA = d)

/**
 * @brief   设置 PWM8 有效数据脉宽
 *
 * @param   d   - 有效数据脉宽
 */
#define PWM8_ActDataWidth(d)     (R8_PWM8_DATA = d)

/**
 * @brief   设置 PWM9 有效数据脉宽
 *
 * @param   d   - 有效数据脉宽
 */
#define PWM9_ActDataWidth(d)     (R8_PWM9_DATA = d)

/**
 * @brief   设置 PWM10 有效数据脉宽
 *
 * @param   d   - 有效数据脉宽
 */
#define PWM10_ActDataWidth(d)    (R8_PWM10_DATA = d)

/**
 * @brief   设置 PWM11 有效数据脉宽
 *
 * @param   d   - 有效数据脉宽
 */
#define PWM11_ActDataWidth(d)    (R8_PWM11_DATA = d)

/**
 * @brief   PWM4-PWM11通道输出波形配置
 *
 * @param   ch      - select channel of pwm, refer to channel of PWM define
 * @param   da      - effective pulse width
 * @param   pr      - select wave polar, refer to PWMX_PolarTypeDef
 * @param   s       - control pwmx function, ENABLE or DISABLE
 */
void PWMX_ACTOUT(uint8_t ch, uint8_t da, PWMX_PolarTypeDef pr, FunctionalState s);

/**
 * @brief   PWM 交替输出模式配置
 *
 * @param   ch      - select group of PWM alternate output
 *                    RB_PWM4_5_STAG_EN     -  PWM4 和 PWM5 通道交替输出
 *                    RB_PWM6_7_STAG_EN     -  PWM6 和 PWM7 通道交替输出
 *                    RB_PWM8_9_STAG_EN     -  PWM8 和 PWM9 通道交替输出
 *                    RB_PWM10_11_STAG_EN   -  PWM10 和 PWM11 通道交替输出
 * @param   s       - control pwmx function, ENABLE or DISABLE
 */
void PWMX_AlterOutCfg(uint8_t ch, FunctionalState s);

#ifdef __cplusplus
}
#endif

#endif // __CH58x_PWM_H__