summaryrefslogtreecommitdiffstats
path: root/uc_str912/prj_blinky_simple_startup/str91x_lib/include/91x_tim.h
blob: b587c27acc3f05189daf01153881a4236de898ec (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
153
154
155
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name          : 91x_tim.h
* Author             : MCD Application Team
* Date First Issued  : 05/18/2006 : Version 1.0
* Description        : This file contains all the functions prototypes for the
*                      TIM software library.
********************************************************************************
* History:
* 05/24/2006 : Version 1.1
* 05/18/2006 : Version 1.0
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS
* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __91x_TIM_H
#define __91x_TIM_H

/* Includes ------------------------------------------------------------------*/
#include "91x_map.h"
#include "91x_scu.h"

/* Exported types ----------------------------------------------------------- */

/* TIM Init structure define */
typedef struct
{             
  u16 TIM_Mode;            /* Timer mode                                    */
  u16 TIM_OC1_Modes;       /* Output Compare 1 Mode: Timing or Wave         */
  u16 TIM_OC2_Modes;       /* Output Compare 2 Mode: Timing or Wave         */
  u16 TIM_Clock_Source;    /* Timer Clock source APB/SCU/EXTERNAL           */
  u16 TIM_Clock_Edge;      /* Timer Clock Edge: Rising or Falling Edge      */
  u16 TIM_OPM_INPUT_Edge;  /* Timer Input Capture 1 Edge used in OPM Mode   */
  u16 TIM_ICAP1_Edge;      /* Timer Input Capture 1 Edge used in ICAP1 Mode */
  u16 TIM_ICAP2_Edge;      /* Timer Input Capture 2 Edge used in ICAP2 Mode */
  u8  TIM_Prescaler;       /* Timer Prescaler factor                        */
  u16 TIM_Pulse_Level_1;   /* Level applied on the Output Compare Pin 1     */
  u16 TIM_Pulse_Level_2;   /* Level applied on the Output Compare Pin 2     */
  u16 TIM_Period_Level;    /* Level applied during the Period of a PWM Mode */
  u16 TIM_Pulse_Length_1;  /* Pulse 1 Length used in Output Compare 1 Mode  */
  u16 TIM_Pulse_Length_2;  /* Pulse 2 Length used in Output Compare 2 Mode  */
  u16 TIM_Full_Period;     /* Period Length used in PWM Mode                */
} TIM_InitTypeDef;

typedef enum 
{
  TIM_START,
  TIM_STOP,
  TIM_CLEAR
} TIM_CounterOperations;

/* Exported constants --------------------------------------------------------*/

/* TIM MODE */
#define TIM_PWMI      	     0x4000   /* PWM INPUT Mode                     */
#define TIM_OCM_CHANNEL_1    0x0040   /* OUTPUT COMPARE CHANNEL 1 Mode      */
#define TIM_OCM_CHANNEL_2    0x0080   /* OUTPUT COMPARE CHANNEL 2 Mode      */
#define TIM_OCM_CHANNEL_12   0x00C0   /* OUTPUT COMPARE CHANNEL 1 & 2  Mode */
#define TIM_PWM              0x0010   /* PWM Mode                           */
#define TIM_OPM              0x0020   /* ONE PULSE Mode                     */
#define TIM_ICAP_CHANNEL_1   0x0400   /* INPUT CAPTURE 1 Mode               */
#define TIM_ICAP_CHANNEL_2   0x0500   /* INPUT CAPTURE 2 Mode               */
#define TIM_ICAP_CHANNEL_12  0x0600   /* INPUT CAPTURE 1 & 2 Mode           */

/* TIM OUTPUT COMPARE MODE */
#define TIM_WAVE       0x0001
#define TIM_TIMING     0x0002

/* TIM CLOCK SOURCE */
#define TIM_CLK_APB          0xFFFE
#define TIM_CLK_EXTERNAL     0x0001
#define TIM_CLK_SCU          0x0001

/* TIM CLOCK EDGE */
#define TIM_CLK_EDGE_FALLING  0xFFFD
#define TIM_CLK_EDGE_RISING   0x0002

/* TIM OPM INPUT EDGE */
#define TIM_OPM_EDGE_FALLING  0xFFFB
#define TIM_OPM_EDGE_RISING   0x0004

/* TIM ICAPA INPUT EDGE */
#define TIM_ICAP1_EDGE_FALLING  0xFFFB
#define TIM_ICAP1_EDGE_RISING   0x0004

/* TIM ICAPB INPUT EDGE */
#define TIM_ICAP2_EDGE_FALLING  0xFFF7
#define TIM_ICAP2_EDGE_RISING   0x0008

/* TIM OUTPUT LEVEL */
#define TIM_HIGH       0x0200
#define TIM_LOW        0x0300

/* TIM OUTPUT EDGE */
#define TIM_OUTPUT_EDGE_RISING     0x8000
#define TIM_OUTPUT_EDGE_FALLING    0x0800

/* TIM channels */
#define TIM_PWM_OC1_Channel    0x1     /* PWM/Output Compare 1 Channel */
#define TIM_OC2_Channel        0x2     /* Output Compare 2 Channel     */

/* TIM DMA SOURCE */
#define TIM_DMA_IC1        0x0000 /* Input Capture Channel 1 DMA Source  */
#define TIM_DMA_OC1        0x1000 /* OUTPUT Compare Channel 1 DMA Source */
#define TIM_DMA_IC2        0x2000 /* Input Capture Channel 2 DMA Source  */
#define TIM_DMA_OC2        0x3000 /* OUTPUT Compare Channel 2 DMA Source */

/* TIM DMA ENABLE or DISABLE */
#define TIM_DMA_ENABLE      0x0400 /* DMA Enable */
#define TIM_DMA_DISABLE     0xFBFF /* DMA Disable */

/* TIM Interruption Sources*/
#define TIM_IT_IC1   0x8000 /* Input Capture Channel 1 Interrupt Source  */
#define TIM_IT_OC1   0x4000 /* Output Compare Channel 1 Interrupt Source */
#define TIM_IT_TO    0x2000 /* Timer OverFlow Interrupt Source           */
#define TIM_IT_IC2   0x1000 /* Input Capture Channel 2 Interrupt Source  */
#define TIM_IT_OC2   0x0800 /* Output Compare Channel 2 Interrupt Source */

/* TIM Flags */
#define TIM_FLAG_IC1     0x8000 /* Input Capture Channel 1 Flag  */
#define TIM_FLAG_OC1     0x4000 /* Output Compare Channel 1 Flag */
#define TIM_FLAG_TO      0x2000 /* Timer OverFlow Flag           */
#define TIM_FLAG_IC2     0x1000 /* Input Capture Channel 2 Flag  */
#define TIM_FLAG_OC2     0x0800 /* Output Compare Channel 2 Flag */ 

/* Module private variables --------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
void TIM_Init(TIM_TypeDef *TIMx, TIM_InitTypeDef *TIM_InitStruct);
void TIM_DeInit(TIM_TypeDef *TIMx);
void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct);
void TIM_CounterCmd(TIM_TypeDef *TIMx, TIM_CounterOperations TIM_operation);
void TIM_PrescalerConfig(TIM_TypeDef *TIMx, u8 TIM_Prescaler);
u8 TIM_GetPrescalerValue(TIM_TypeDef *TIMx);
u16 TIM_GetCounterValue(TIM_TypeDef *TIMx);
u16 TIM_GetICAP1Value(TIM_TypeDef *TIMx);
u16 TIM_GetICAP2Value(TIM_TypeDef *TIMx);
void TIM_SetPulse(TIM_TypeDef *TIMx,u16 TIM_Channel ,u16 TIM_Pulse);
FlagStatus TIM_GetFlagStatus(TIM_TypeDef *TIMx, u16 TIM_Flag);
void TIM_ClearFlag(TIM_TypeDef *TIMx, u16 TIM_Flag);
u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx);
u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx);
void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState TIM_Newstate);
void TIM_DMAConfig(TIM_TypeDef *TIMx, u16 TIM_DMA_Sources);
void TIM_DMACmd(TIM_TypeDef *TIMx, FunctionalState TIM_Newstate);

#endif /* __91x_TIM_H */

/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/
OpenPOWER on IntegriCloud