]> git.sur5r.net Git - freertos/blob - Demo/ARM7_STR75x_IAR/STLibrary/inc/75x_tim.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / ARM7_STR75x_IAR / STLibrary / inc / 75x_tim.h
1 /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************\r
2 * File Name          : 75x_tim.h\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 03/10/2006\r
5 * Description        : This file contains all the functions prototypes for the \r
6 *                      TIM software library.\r
7 ********************************************************************************\r
8 * History:\r
9 * 07/17/2006 : V1.0\r
10 * 03/10/2006 : V0.1\r
11 ********************************************************************************\r
12 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
14 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
15 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
16 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
17 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18 *******************************************************************************/\r
19 \r
20 /* Define to prevent recursive inclusion -------------------------------------*/\r
21 #ifndef __75x_TIM_H\r
22 #define __75x_TIM_H\r
23 \r
24 /* Includes ------------------------------------------------------------------*/\r
25 #include "75x_map.h"\r
26 \r
27 /* Exported types ------------------------------------------------------------*/\r
28 typedef struct\r
29 {\r
30   u16 TIM_Mode;              /* Timer Mode */\r
31   u16 TIM_Prescaler;         /* Prescaler value */\r
32   u16 TIM_ClockSource;       /* Timer clock source */\r
33   u16 TIM_ExtCLKEdge;        /* External clock edge */\r
34   u16 TIM_CounterMode;       /* Counter mode: Up/Down, Edge aligned or center aligned */\r
35   u16 TIM_Period;            /* Period value */\r
36   u16 TIM_Channel;           /* Timer Channel: 1, 2 or All */\r
37   u16 TIM_Pulse1;            /* PWM or OCM Channel 1 pulse length */\r
38   u16 TIM_Pulse2;            /* PWM or OCM Channel 2 pulse length */\r
39   u16 TIM_RepetitivePulse;   /* OPM Repetitive pulse state: enable or disable */\r
40   u16 TIM_Polarity1;         /* PWM, OCM or OPM Channel 1 polarity */\r
41   u16 TIM_Polarity2;         /* PWM or OCM  Channel 2 polarity */\r
42   u16 TIM_IC1Selection;      /* Input Capture 1 selection: TI1 or TI2 */\r
43   u16 TIM_IC2Selection;      /* Input Capture 2 selection: TI1 or TI2 */\r
44   u16 TIM_IC1Polarity;       /* Input Capture 1 polarity */\r
45   u16 TIM_IC2Polarity;       /* Input Capture 2 polarity */\r
46   u16 TIM_PWMI_ICSelection;  /* PWM Input Capture selection: TI1 or TI2 */\r
47   u16 TIM_PWMI_ICPolarity;   /* PWM Input Capture Polarity */\r
48 } TIM_InitTypeDef;\r
49 \r
50 /* Master and slave synchronized Timer peripherals */\r
51 typedef enum\r
52 {\r
53   PWM_Master  = 0x01,\r
54   TIM0_Master,\r
55   TIM1_Master,\r
56   TIM2_Master\r
57 }Master_TypeDef;\r
58 \r
59 typedef enum\r
60 {\r
61   PWM_Slave  = 0x05,\r
62   TIM0_Slave,\r
63   TIM1_Slave,\r
64   TIM2_Slave\r
65 }Slave_TypeDef;\r
66 \r
67 /* Exported constants --------------------------------------------------------*/\r
68 /* TIM modes */\r
69 #define TIM_Mode_OCTiming    0x0001\r
70 #define TIM_Mode_OCActive    0x0002\r
71 #define TIM_Mode_OCInactive  0x0003\r
72 #define TIM_Mode_OCToggle    0x0004\r
73 #define TIM_Mode_PWM         0x0005\r
74 #define TIM_Mode_PWMI        0x0006\r
75 #define TIM_Mode_IC          0x0007\r
76 #define TIM_Mode_Encoder1    0x0008\r
77 #define TIM_Mode_Encoder2    0x0009\r
78 #define TIM_Mode_Encoder3    0x000A\r
79 #define TIM_Mode_OPM_PWM     0x000B\r
80 #define TIM_Mode_OPM_Toggle  0x000C\r
81 #define TIM_Mode_OPM_Active  0x000D\r
82 \r
83 /* TIM Clock Source */\r
84 #define TIM_ClockSource_Internal  0x0001\r
85 #define TIM_ClockSource_TI11      0x0002\r
86 #define TIM_ClockSource_TI12      0x0003\r
87 #define TIM_ClockSource_TI22      0x0004\r
88 #define TIM_ClockSource_TI21      0x0005\r
89 \r
90 /* TIM External Clock Edge */\r
91 #define TIM_ExtCLKEdge_Falling  0x0001\r
92 #define TIM_ExtCLKEdge_Rising   0x0002\r
93 \r
94 /* TIM Counter Mode */\r
95 #define TIM_CounterMode_Up              0x0000\r
96 #define TIM_CounterMode_Down            0x0010\r
97 #define TIM_CounterMode_CenterAligned1  0x0020\r
98 #define TIM_CounterMode_CenterAligned2  0x0040\r
99 #define TIM_CounterMode_CenterAligned3  0x0060\r
100 \r
101 /* TIM Channel */\r
102 #define TIM_Channel_1    0x0001\r
103 #define TIM_Channel_2    0x0002\r
104 #define TIM_Channel_ALL  0x0003\r
105 \r
106 /* TIM Polarity channel 1 */\r
107 #define TIM_Polarity1_High  0x0001\r
108 #define TIM_Polarity1_Low   0x0002\r
109 \r
110 /* TIM Polarity channel 2 */\r
111 #define TIM_Polarity2_High  0x0001\r
112 #define TIM_Polarity2_Low   0x0002\r
113 \r
114 #define TIM_RepetitivePulse_Disable  0x0005\r
115 #define TIM_RepetitivePulse_Enable   0x0006\r
116 \r
117 /* TIM Input Capture channel 1 Selection */\r
118 #define TIM_IC1Selection_TI1  0x0001\r
119 #define TIM_IC1Selection_TI2  0x0002\r
120 \r
121 /* TIM Input Capture channel 2 Selection */\r
122 #define TIM_IC2Selection_TI1  0x0001\r
123 #define TIM_IC2Selection_TI2  0x0002\r
124 \r
125 /* TIM Input Capture channel 1 Polarity */\r
126 #define  TIM_IC1Polarity_Falling  0x0001\r
127 #define  TIM_IC1Polarity_Rising   0x0002\r
128 \r
129 /* TIM Input Capture channel 2 Polarity */\r
130 #define  TIM_IC2Polarity_Falling  0x0001\r
131 #define  TIM_IC2Polarity_Rising   0x0002\r
132 \r
133 /* TIM PWM Input IC Selection */\r
134 #define TIM_PWMI_ICSelection_TI1  0x0001\r
135 #define TIM_PWMI_ICSelection_TI2  0x0002\r
136 \r
137 /*  TIM PWM Input IC Polarity */\r
138 #define TIM_PWMI_ICPolarity_Falling  0x0003\r
139 #define TIM_PWMI_ICPolarity_Rising   0x0004\r
140 \r
141 /* TIM interrupt sources */\r
142 #define TIM_IT_IC1           0x0004\r
143 #define TIM_IT_IC2           0x0008\r
144 #define TIM_IT_OC1           0x0100\r
145 #define TIM_IT_OC2           0x0200\r
146 #define TIM_IT_Update        0x0001\r
147 #define TIM_IT_GlobalUpdate  0x1001\r
148 \r
149 /* TIM DMA sources */\r
150 #define TIM_DMASource_IC1     0x0004\r
151 #define TIM_DMASource_IC2     0x0008\r
152 #define TIM_DMASource_OC1     0x0100\r
153 #define TIM_DMASource_OC2     0x0200\r
154 #define TIM_DMASource_Update  0x0001\r
155 \r
156 /* TIM DMA Base address */\r
157 #define TIM_DMABase_CR    0x0000\r
158 #define TIM_DMABase_SCR   0x0800\r
159 #define TIM_DMABase_IMCR  0x1000\r
160 #define TIM_DMABase_OMR1  0x1800\r
161 #define TIM_DMABase_RSR   0x3000\r
162 #define TIM_DMABase_RER   0x3800\r
163 #define TIM_DMABase_ISR   0x4000\r
164 #define TIM_DMABase_CNT   0x4800\r
165 #define TIM_DMABase_PSC   0x5000\r
166 #define TIM_DMABase_ARR   0x6000\r
167 #define TIM_DMABase_OCR1  0x6800\r
168 #define TIM_DMABase_OCR2  0x7000\r
169 #define TIM_DMABase_ICR1  0x9800\r
170 #define TIM_DMABase_ICR2  0xA000\r
171 \r
172 /* TIM Flags */\r
173 #define TIM_FLAG_IC1     0x0004\r
174 #define TIM_FLAG_IC2     0x0008\r
175 #define TIM_FLAG_OC1     0x0100\r
176 #define TIM_FLAG_OC2     0x0200\r
177 #define TIM_FLAG_Update  0x0001\r
178 \r
179 /*  TIM_ForcedAction */\r
180 #define TIM_ForcedAction_Active    0x000A\r
181 #define TIM_ForcedAction_InActive  0x0008\r
182 \r
183 /* TIM synchronization action */\r
184 #define TIM_SynchroAction_Enable  0x0100\r
185 #define TIM_SynchroAction_Update  0x0200\r
186 #define TIM_SynchroAction_Reset   0x0000\r
187 #define TIM_SynchroAction_OC      0x0300\r
188 \r
189 /* TIM synchronization mode */\r
190 #define TIM_SynchroMode_Gated    0x0010\r
191 #define TIM_SynchroMode_Trigger  0x0018\r
192 #define TIM_SynchroMode_External 0x0008\r
193 #define TIM_SynchroMode_Reset    0x0000\r
194 \r
195 /* OCRM bit states */\r
196 #define TIM_OCRMState_Enable   0x0005\r
197 #define TIM_OCRMState_Disable  0x0006\r
198 \r
199 /* Exported macro ------------------------------------------------------------*/\r
200 /* Exported functions --------------------------------------------------------*/\r
201 void TIM_DeInit(TIM_TypeDef *TIMx);\r
202 void TIM_Init(TIM_TypeDef* TIMx, TIM_InitTypeDef* TIM_InitStruct);\r
203 void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct);\r
204 void TIM_Cmd(TIM_TypeDef *TIMx, FunctionalState Newstate);\r
205 void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState Newstate);\r
206 void TIM_PreloadConfig(TIM_TypeDef* TIMx, u16 TIM_Channel, FunctionalState Newstate);\r
207 void TIM_DMAConfig(u16 TIM_DMASources, u16 TIM_OCRMState, u16 TIM_DMABase);\r
208 void TIM_DMACmd(u16 TIM_DMASources, FunctionalState Newstate);\r
209 void TIM_ClockSourceConfig(TIM_TypeDef *TIMx, u16 TIM_ClockSource,\r
210                            u16 TIM_ExtCLKEdge);\r
211 void TIM_SetPrescaler(TIM_TypeDef* TIMx, u16 Prescaler);\r
212 void TIM_SetPeriod(TIM_TypeDef* TIMx, u16 Period);\r
213 void TIM_SetPulse(TIM_TypeDef* TIMx, u16 TIM_Channel, u16 Pulse);\r
214 u16 TIM_GetICAP1(TIM_TypeDef *TIMx);\r
215 u16 TIM_GetICAP2(TIM_TypeDef *TIMx);\r
216 u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx);\r
217 u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx);\r
218 void TIM_DebugCmd(TIM_TypeDef *TIMx, FunctionalState Newstate);\r
219 void TIM_CounterModeConfig(TIM_TypeDef* TIMx, u16 TIM_CounterMode);\r
220 void TIM_ForcedOCConfig(TIM_TypeDef* TIMx, u16 TIM_Channel,\r
221                         u16 TIM_ForcedAction);\r
222 void TIM_ResetCounter(TIM_TypeDef* TIMx);\r
223 void TIM_SynchroConfig(Master_TypeDef Master, Slave_TypeDef Slave,\r
224                        u16 TIM_SynchroAction, u16 TIM_SynchroMode);\r
225 FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, u16 TIM_FLAG);\r
226 void TIM_ClearFlag(TIM_TypeDef* TIMx, u16 TIM_FLAG);\r
227 ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, u16 TIM_IT);\r
228 void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, u16 TIM_IT);\r
229 \r
230 #endif /* __75x_TIM_H */\r
231 \r
232 /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/\r