8051-ELL库  beta 1.1.6
8051-ELL library API Document Center
STC8x_TIMER.h
浏览该文件的文档.
1 /*-----------------------------------------------------------------------
2 | FILE DESCRIPTION |
3 -----------------------------------------------------------------------*/
4 /*----------------------------------------------------------------------
5  - File name : STC8x_TIMER.h
6  - Author : zeweni
7  - Update date : 2020.05.11
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_TIMER_H_
33 #define __STC8x_TIMER_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 
68 #ifndef PER_LIB_TIMER_CTRL
71  #define PER_LIB_TIMER_CTRL 1
72 #endif
73 
74 
75 #ifndef PER_LIB_TIMER_INIT_CTRL
78  #define PER_LIB_TIMER_INIT_CTRL 1
79 #endif
80 
81 #ifndef PER_LIB_TIMER_WORK_CTRL
84  #define PER_LIB_TIMER_WORK_CTRL 1
85 #endif
86 
87 #ifndef PER_LIB_TIMER_NVIC_CTRL
90  #define PER_LIB_TIMER_NVIC_CTRL 1
91 #endif
92 
93 
99 typedef enum
100 {
102  TIMER_Type_Counter = 0x01
104 
105 
111 typedef enum
112 {
114  TIMER_16Bit = 0x01,
118 
119 
125 typedef enum
126 {
127  TIMER_TCY_1T = 0x00,
128  TIMER_TCY_12T = 0x01
130 
131 
139 typedef struct
140 {
141 #if (PER_LIB_MCU_MUODEL == STC8Cx ||PER_LIB_MCU_MUODEL == STC8Gx || PER_LIB_MCU_MUODEL == STC8Hx)
143 #endif
151 
152 
153 /*-----------------------------------------------------------------------
154 | API FUNCTION |
155 -----------------------------------------------------------------------*/
156 #if (PER_LIB_TIMER_CTRL == 1)
157 
158  #if (PER_LIB_TIMER_INIT_CTRL == 1)
159 
169 
170 
181 
182 
193 
194 
205 
206 
217 
218 
229 
230  #endif
231 
232  #if (PER_LIB_TIMER_NVIC_CTRL == 1)
233 
243 
244 
254 
255 
264 
265 
274 
275 
284 
285 
291  #define TIMER2_CLEAR_FLAG() do{ AUXINTIF &= 0xFE; }while(0)
292 
293 
299  #define TIMER3_CLEAR_FLAG() do{ AUXINTIF &= 0xFD; }while(0)
300 
301 
307  #define TIMER4_CLEAR_FLAG() do{ AUXINTIF &= 0xFB; }while(0)
308 
309 
315  #define NVIC_TIMER0_PRI(pri) \
316  do{ \
317  IPH = (IPH & 0xFD) | (pri & 0x02) ; \
318  IP = (IP & 0xFD) | ((pri & 0x01) << 1); \
319  }while(0)
320 
321 
327  #define NVIC_TIMER1_PRI(pri) \
328  do{ \
329  IPH = (IPH & 0xF7) | ((pri & 0x02) << 2); \
330  IP = (IP & 0xF7) | ((pri & 0x01) << 3); \
331  }while(0)
332 
333 
339  #define NVIC_TIMER0_CTRL(run) do{ ET0 = run; }while(0)
340 
341 
347  #define NVIC_TIMER1_CTRL(run) do{ ET1 = run; }while(0)
348 
349 
355  #define NVIC_TIMER2_CTRL(run) do{ IE2 = (IE2 & 0xFB) | (run << 2); }while(0)
356 
357 
363  #define NVIC_TIMER3_CTRL(run) do{ IE2 = (IE2 & 0xDF) | (run << 5); }while(0)
364 
365 
371  #define NVIC_TIMER4_CTRL(run) do{ IE2 = (IE2 & 0xBF) | (run << 6); }while(0)
372 
373  #endif
374 
375 
376  #if (PER_LIB_TIMER_WORK_CTRL == 1)
382  #define TIMER0_WORK_CTRL(run) do{ TR0 = run; }while(0)
383 
384 
390  #define TIMER1_WORK_CTRL(run) do{ TR1 = run; }while(0)
391 
392 
393 
399  #define TIMER2_WORK_CTRL(run) do{AUXR = (AUXR & 0xEF) | (run << 4); }while(0)
400 
401 
407  #define TIMER3_WORK_CTRL(run) do{ T4T3M = (T4T3M & 0xF7) | (run << 3)}while(0)
408 
409 
415  #define TIMER4_WORK_CTRL(run) do{ T4T3M = (T4T3M & 0x7F) | (run << 7)}while(0)
416 
421  #define TIMER0_CLEAR_CNT() do{T0L = 0; T0H = 0;}while(0)
422 
427  #define TIMER1_CLEAR_CNT() do{T1L = 0; T1H = 0;}while(0)
428 
433  #define TIMER2_CLEAR_CNT() do{T2L = 0; T2H = 0;}while(0)
434 
439  #define TIMER3_CLEAR_CNT() do{T3L = 0; T3H = 0;}while(0)
440 
445  #define TIMER4_CLEAR_CNT() do{T4L = 0; T4H = 0;}while(0)
446 
453  #define TIMER0_RELOAD_CNT() \
454  do{ \
455  T0L = (uint8_t)(G_Time0_CntValue); \
456  T0H = (uint8_t)(G_Time0_CntValue >> 8); \
457  }while(0)
458 
459 
466  #define TIMER1_RELOAD_CNT() \
467  do{ \
468  T1L = (uint8_t)(G_Time1_CntValue); \
469  T1H = (uint8_t)(G_Time1_CntValue >> 8); \
470  }while(0)
471 
472 
481 
482 
491 
499  #if (PER_LIB_MCU_MUODEL == STC8Ax || PER_LIB_MCU_MUODEL == STC8Fx)
501  #elif (PER_LIB_MCU_MUODEL == STC8Cx || PER_LIB_MCU_MUODEL == STC8Gx || PER_LIB_MCU_MUODEL == STC8Hx)
503  #endif
504 
505 
513  #if (PER_LIB_MCU_MUODEL == STC8Ax || PER_LIB_MCU_MUODEL == STC8Fx)
515  #elif (PER_LIB_MCU_MUODEL == STC8Cx || PER_LIB_MCU_MUODEL == STC8Gx || PER_LIB_MCU_MUODEL == STC8Hx)
517  #endif
518 
519 
527  #if (PER_LIB_MCU_MUODEL == STC8Ax || PER_LIB_MCU_MUODEL == STC8Fx)
529  #elif (PER_LIB_MCU_MUODEL == STC8Cx || PER_LIB_MCU_MUODEL == STC8Gx || PER_LIB_MCU_MUODEL == STC8Hx)
531  #endif
532 
533 
534  #endif
535 #endif
536 /*-----------------------------------------------------------------------
537 | END OF FLIE. (C) COPYRIGHT zeweni |
538 -----------------------------------------------------------------------*/
539 #endif
NVICPri_Type
Definition: ELL_CORE.h:99
BOOL
Definition: ELL_CORE.h:50
FSCSTATE
Definition: ELL_CORE.h:65
unsigned long uint32_t
Definition: ELL_TYPE.h:74
unsigned int uint16_t
Definition: ELL_TYPE.h:73
unsigned char uint8_t
Definition: ELL_TYPE.h:72
FSCSTATE TIMER3_Set_Time(uint32_t time)
定时器3设置定时时间函数。
FSCSTATE NVIC_TIMER3_Init(BOOL run)
定时器3中断初始化函数。
FSCSTATE TIMER2_Set_Time(uint32_t time)
定时器2设置定时时间函数。
FSCSTATE TIMER3_Init(const TIMER_InitType *timerx)
定时器3初始化函数。
TIMERMode_Type
Definition: STC8x_TIMER.h:112
@ TIMER_8BitAutoReload
Definition: STC8x_TIMER.h:115
@ TIMER_16BitAutoReloadNoMask
Definition: STC8x_TIMER.h:116
@ TIMER_16BitAutoReload
Definition: STC8x_TIMER.h:113
@ TIMER_16Bit
Definition: STC8x_TIMER.h:114
FSCSTATE TIMER5_Wake_Up_Power(uint16_t value, BOOL run)
调电唤醒定时器5初始化函数。
TIMERType_Type
Definition: STC8x_TIMER.h:100
@ TIMER_Type_Counter
Definition: STC8x_TIMER.h:102
@ TIMER_Type_Timer
Definition: STC8x_TIMER.h:101
TIMERTCycle_Type
Definition: STC8x_TIMER.h:126
@ TIMER_TCY_12T
Definition: STC8x_TIMER.h:128
@ TIMER_TCY_1T
Definition: STC8x_TIMER.h:127
FSCSTATE NVIC_TIMER2_Init(BOOL run)
定时器2中断初始化函数。
FSCSTATE NVIC_TIMER4_Init(BOOL run)
定时器4中断初始化函数。
FSCSTATE TIMER1_Init(const TIMER_InitType *timerx)
定时器1初始化函数。
FSCSTATE TIMER1_Set_Time(uint32_t time)
定时器1设置定时时间函数。
FSCSTATE TIMER0_Set_Time(uint32_t time)
定时器0设置定时时间函数。
FSCSTATE TIMER4_Init(const TIMER_InitType *timerx)
定时器4初始化函数。
FSCSTATE NVIC_TIMER1_Init(NVICPri_Type pri, BOOL run)
定时器1中断初始化函数。
FSCSTATE NVIC_TIMER0_Init(NVICPri_Type pri, BOOL run)
定时器0中断初始化函数。
FSCSTATE TIMER2_Init(const TIMER_InitType *timerx)
定时器2初始化函数。
FSCSTATE TIMER0_Init(const TIMER_InitType *timerx)
定时器0初始化函数。
FSCSTATE TIMER4_Set_Time(uint32_t time)
定时器4设置定时时间函数。
定时器初始化结构体句柄,初始化时请定义该句柄,并用其地址来传参。
Definition: STC8x_TIMER.h:140
TIMERTCycle_Type TCycle
Definition: STC8x_TIMER.h:146
BOOL Run
Definition: STC8x_TIMER.h:149
uint8_t SysClkDiv
Definition: STC8x_TIMER.h:142
BOOL ClkOut
Definition: STC8x_TIMER.h:147
TIMERType_Type Type
Definition: STC8x_TIMER.h:144
uint32_t Time
Definition: STC8x_TIMER.h:148
TIMERMode_Type Mode
Definition: STC8x_TIMER.h:145