8051-ELL库  beta 1.1.6
8051-ELL library API Document Center
STC8x_SYSCLK.h
浏览该文件的文档.
1 /*-----------------------------------------------------------------------
2 | FILE DESCRIPTION |
3 -----------------------------------------------------------------------*/
4 /*----------------------------------------------------------------------
5  - File name : STC8Ax_SYSCLK.h
6  - Author : zeweni
7  - Update date : 2020.05.03
8  - Copyright(C) : 2020-2021 zeweni. All rights reserved.
9 -----------------------------------------------------------------------*/
10 /*------------------------------------------------------------------------
11 | COPYRIGHT NOTICE |
12 ------------------------------------------------------------------------*/
13 /*
14  * Copyright (C) 2021, zeweni (17870070675@163.com)
15 
16  * This file is part of 8051 ELL low-layer libraries.
17 
18  * 8051 ELL low-layer libraries is free software: you can redistribute
19  * it and/or modify it under the terms of the Apache-2.0 License.
20 
21  * 8051 ELL low-layer libraries is distributed in the hope that it will
22  * be useful,but WITHOUT ANY WARRANTY; without even the implied warranty
23  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24  * Apache-2.0 License for more details.
25 
26  * You should have received a copy of the Apache-2.0 License.8051 ELL
27  * low-layer libraries. If not, see <http://www.apache.org/licenses/>.
28 **/
29 /*-----------------------------------------------------------------------
30 | INCLUDES |
31 -----------------------------------------------------------------------*/
32 #ifndef __STC8x_SYSCLK_H_
33 #define __STC8x_SYSCLK_H_
34 
35 /*--------------------------------------------------------
36 | @Description: ELL library core |
37 --------------------------------------------------------*/
38 #include "ELL_CORE.h"
39 
40 /*--------------------------------------------------------
41 | @Description: STC8x MCU Register |
42 --------------------------------------------------------*/
43 
44 #if (PER_LIB_MCU_MUODEL == STC8Ax)
45  #include "STC8Ax_REG.h"
46 #elif (PER_LIB_MCU_MUODEL == STC8Cx)
47  #include "STC8Cx_REG.h"
48 #elif (PER_LIB_MCU_MUODEL == STC8Fx)
49  #include "STC8Fx_REG.h"
50 #elif (PER_LIB_MCU_MUODEL == STC8Gx)
51  #include "STC8Gx_REG.h"
52 #elif (PER_LIB_MCU_MUODEL == STC8Hx)
53  #include "STC8Hx_REG.h"
54 #endif
55 
56 
57 /*-----------------------------------------------------------------------
58 | DATA |
59 -----------------------------------------------------------------------*/
60 
61 #ifndef PER_LIB_MCU_MUODEL
64  #define PER_LIB_MCU_MUODEL STC8Ax
65 #endif
66 
67 #ifndef PER_LIB_SYSCLK_CTRL
70  #define PER_LIB_SYSCLK_CTRL 1
71 #endif
72 
73 #ifndef PER_LIB_SYSCLK_VALUE
76  #define PER_LIB_SYSCLK_VALUE 0
77 #endif
78 
79 
80 #ifndef PER_LIB_SYSCLK_INIT_CTRL
83  #define PER_LIB_SYSCLK_INIT_CTRL 1
84 #endif
85 
86 
87 #ifndef PER_LIB_SYSCLK_WORK_CTRL
90  #define PER_LIB_SYSCLK_WORK_CTRL 1
91 #endif
92 
93 /*--------------------------------------------------------
94 | @Description: System clock ferquency division define |
95 --------------------------------------------------------*/
96 
97 #if (PER_LIB_MCU_MUODEL == STC8Ax || PER_LIB_MCU_MUODEL == STC8Fx )
98 
99  #define SYSCLK_DIV1 0x10
100  #define SYSCLK_DIV2 0x20
101  #define SYSCLK_DIV4 0x40
102  #define SYSCLK_DIV8 0x70
103  #define SYSCLK_DIV16 0x90
104  #define SYSCLK_DIV32 0xB0
105  #define SYSCLK_DIV64 0xD0
106  #define SYSCLK_DIV128 0xF0
107 
108 #endif
109 
114 typedef enum
115 {
116  TRIM0 = 0x00,
117  TRIM1 = 0x01,
118  TRIM2 = 0x02,
119  TRIM3 = 0x03
121 
122 
127 typedef enum
128 {
129  SCLK_OUT_P54 = 0x00,
130  SCLK_OUT_P16 = 0x01
132 
133 
138 typedef enum
139 {
140  AUTO = 0x00,
141  HIRC = 0x01,
142  LIRC = 0x02,
143  #if (PER_LIB_MCU_MUODEL == STC8Hx)
144  X32KSC = 0x03,
145  #endif
146  XOSC = 0x04
148 
149 
150 #if (PER_LIB_MCU_MUODEL == STC8Cx || PER_LIB_MCU_MUODEL == STC8Gx || PER_LIB_MCU_MUODEL == STC8Hx)
151 
156  typedef enum
157  {
158  IRC_Band_20MHz = 0x00,
159  #if (PER_LIB_MCU_MUODEL == STC8Cx || PER_LIB_MCU_MUODEL == STC8Gx)
160  IRC_Band_33MHz = 0x01
161  #elif (PER_LIB_MCU_MUODEL == STC8Hx)
162  IRC_Band_35MHz = 0x01
163  #endif
165 
166 #endif
167 
168 #if (PER_LIB_MCU_MUODEL == STC8Hx)
169 
174  typedef enum
175  {
179  XOSC_Filter_Null = 0x03
181 
182 #endif
183 
188 typedef struct
189 {
193  #if (PER_LIB_MCU_MUODEL == STC8Cx || PER_LIB_MCU_MUODEL == STC8Gx || PER_LIB_MCU_MUODEL == STC8Hx)
195  #endif
200 #if (PER_LIB_MCU_MUODEL == STC8Hx)
202 #endif
203 
205 
206 /*-----------------------------------------------------------------------
207 | API FUNCTION |
208 -----------------------------------------------------------------------*/
209 #if (PER_LIB_SYSCLK_CTRL == 1)
210 
211  #if (PER_LIB_SYSCLK_INIT_CTRL == 1)
212 
224 
225  #endif
226 
227  #if (PER_LIB_SYSCLK_WORK_CTRL == 1)
228 
238 
239  #endif
240 
241 #endif
242 
243 /*-----------------------------------------------------------------------
244 | END OF FLIE. (C) COPYRIGHT zeweni |
245 -----------------------------------------------------------------------*/
246 #endif
FSCSTATE
Definition: ELL_CORE.h:65
unsigned long uint32_t
Definition: ELL_TYPE.h:74
unsigned char uint8_t
Definition: ELL_TYPE.h:72
XOSCFilter_Type
外部晶振滤波频段枚举体。
Definition: STC8x_SYSCLK.h:175
@ XOSC_Filter_66MHz
Definition: STC8x_SYSCLK.h:178
@ XOSC_Filter_Null
Definition: STC8x_SYSCLK.h:179
@ XOSC_Filter_125MHz
Definition: STC8x_SYSCLK.h:177
@ XOSC_Filter_150MHz
Definition: STC8x_SYSCLK.h:176
FSCSTATE SYSCLK_Init(const SYSCLK_InitType *sysClkn)
系统时钟初始化函数。
SCLKOut_Type
系统时钟输出引脚枚举体。
Definition: STC8x_SYSCLK.h:128
@ SCLK_OUT_P16
Definition: STC8x_SYSCLK.h:130
@ SCLK_OUT_P54
Definition: STC8x_SYSCLK.h:129
LIRCTRIM_Type
IRC频率微调枚举体。
Definition: STC8x_SYSCLK.h:115
@ TRIM2
Definition: STC8x_SYSCLK.h:118
@ TRIM1
Definition: STC8x_SYSCLK.h:117
@ TRIM3
Definition: STC8x_SYSCLK.h:119
@ TRIM0
Definition: STC8x_SYSCLK.h:116
MCLKSrc_Type
系统主时钟源枚举体。
Definition: STC8x_SYSCLK.h:139
@ X32KSC
Definition: STC8x_SYSCLK.h:144
@ XOSC
Definition: STC8x_SYSCLK.h:146
@ LIRC
Definition: STC8x_SYSCLK.h:142
@ HIRC
Definition: STC8x_SYSCLK.h:141
@ AUTO
Definition: STC8x_SYSCLK.h:140
IRCBand_Type
IRC频段选择器枚举体。
Definition: STC8x_SYSCLK.h:157
@ IRC_Band_20MHz
Definition: STC8x_SYSCLK.h:158
@ IRC_Band_33MHz
Definition: STC8x_SYSCLK.h:160
uint32_t Get_SysClk_FRE(void)
获取系统时钟频率函数,用于定时器、串口、EEPROM等进行时钟计算。 这个函数只能获取内部IRC做时钟源时的系统频率,如果你使用的是外部晶振, 请在Lib_CFG....
系统时钟初始化结构体句柄,需要在函数初始化时定义它,并用其地址传参。
Definition: STC8x_SYSCLK.h:189
IRCBand_Type IRCBand
Definition: STC8x_SYSCLK.h:194
XOSCFilter_Type XOSCFilter
Definition: STC8x_SYSCLK.h:201
uint8_t SCLKDiv
Definition: STC8x_SYSCLK.h:198
uint8_t IRCTRIM
Definition: STC8x_SYSCLK.h:191
MCLKSrc_Type MCLKSrc
Definition: STC8x_SYSCLK.h:190
uint8_t MCLKDiv
Definition: STC8x_SYSCLK.h:196
LIRCTRIM_Type LIRCTRIM
Definition: STC8x_SYSCLK.h:192
SCLKOut_Type SCLKOutPin
Definition: STC8x_SYSCLK.h:199