]> git.sur5r.net Git - freertos/blob - Demo/ARM9_STR91X_IAR/Library/include/91x_tim.h
Update to V4.0.4. Add in STR912 port and demo.
[freertos] / Demo / ARM9_STR91X_IAR / Library / include / 91x_tim.h
1 /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************\r
2 * File Name          : 91x_tim.h\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 05/18/2006 : Version 1.0\r
5 * Description        : This file contains all the functions prototypes for the\r
6 *                      TIM software library.\r
7 ********************************************************************************\r
8 * History:\r
9 * 05/24/2006 : Version 1.1\r
10 * 05/18/2006 : Version 1.0\r
11 ********************************************************************************\r
12 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH\r
13 * CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS\r
14 * A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT\r
15 * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT\r
16 * OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION\r
17 * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18 *******************************************************************************/\r
19 \r
20 /* Define to prevent recursive inclusion -------------------------------------*/\r
21 #ifndef __91x_TIM_H\r
22 #define __91x_TIM_H\r
23 \r
24 /* Includes ------------------------------------------------------------------*/\r
25 #include "91x_map.h"\r
26 #include "91x_scu.h"\r
27 \r
28 /* Exported types ----------------------------------------------------------- */\r
29 \r
30 /* TIM Init structure define */\r
31 typedef struct\r
32 {             \r
33   u16 TIM_Mode;            /* Timer mode                                    */\r
34   u16 TIM_OC1_Modes;       /* Output Compare 1 Mode: Timing or Wave         */\r
35   u16 TIM_OC2_Modes;       /* Output Compare 2 Mode: Timing or Wave         */\r
36   u16 TIM_Clock_Source;    /* Timer Clock source APB/SCU/EXTERNAL           */\r
37   u16 TIM_Clock_Edge;      /* Timer Clock Edge: Rising or Falling Edge      */\r
38   u16 TIM_OPM_INPUT_Edge;  /* Timer Input Capture 1 Edge used in OPM Mode   */\r
39   u16 TIM_ICAP1_Edge;      /* Timer Input Capture 1 Edge used in ICAP1 Mode */\r
40   u16 TIM_ICAP2_Edge;      /* Timer Input Capture 2 Edge used in ICAP2 Mode */\r
41   u8  TIM_Prescaler;       /* Timer Prescaler factor                        */\r
42   u16 TIM_Pulse_Level_1;   /* Level applied on the Output Compare Pin 1     */\r
43   u16 TIM_Pulse_Level_2;   /* Level applied on the Output Compare Pin 2     */\r
44   u16 TIM_Period_Level;    /* Level applied during the Period of a PWM Mode */\r
45   u16 TIM_Pulse_Length_1;  /* Pulse 1 Length used in Output Compare 1 Mode  */\r
46   u16 TIM_Pulse_Length_2;  /* Pulse 2 Length used in Output Compare 2 Mode  */\r
47   u16 TIM_Full_Period;     /* Period Length used in PWM Mode                */\r
48 } TIM_InitTypeDef;\r
49 \r
50 typedef enum \r
51 {\r
52   TIM_START,\r
53   TIM_STOP,\r
54   TIM_CLEAR\r
55 } TIM_CounterOperations;\r
56 \r
57 /* Exported constants --------------------------------------------------------*/\r
58 \r
59 /* TIM MODE */\r
60 #define TIM_PWMI             0x4000   /* PWM INPUT Mode                     */\r
61 #define TIM_OCM_CHANNEL_1    0x0040   /* OUTPUT COMPARE CHANNEL 1 Mode      */\r
62 #define TIM_OCM_CHANNEL_2    0x0080   /* OUTPUT COMPARE CHANNEL 2 Mode      */\r
63 #define TIM_OCM_CHANNEL_12   0x00C0   /* OUTPUT COMPARE CHANNEL 1 & 2  Mode */\r
64 #define TIM_PWM              0x0010   /* PWM Mode                           */\r
65 #define TIM_OPM              0x0020   /* ONE PULSE Mode                     */\r
66 #define TIM_ICAP_CHANNEL_1   0x0400   /* INPUT CAPTURE 1 Mode               */\r
67 #define TIM_ICAP_CHANNEL_2   0x0500   /* INPUT CAPTURE 2 Mode               */\r
68 #define TIM_ICAP_CHANNEL_12  0x0600   /* INPUT CAPTURE 1 & 2 Mode           */\r
69 \r
70 /* TIM OUTPUT COMPARE MODE */\r
71 #define TIM_WAVE       0x0001\r
72 #define TIM_TIMING     0x0002\r
73 \r
74 /* TIM CLOCK SOURCE */\r
75 #define TIM_CLK_APB          0xFFFE\r
76 #define TIM_CLK_EXTERNAL     0x0001\r
77 #define TIM_CLK_SCU          0x0001\r
78 \r
79 /* TIM CLOCK EDGE */\r
80 #define TIM_CLK_EDGE_FALLING  0xFFFD\r
81 #define TIM_CLK_EDGE_RISING   0x0002\r
82 \r
83 /* TIM OPM INPUT EDGE */\r
84 #define TIM_OPM_EDGE_FALLING  0xFFFB\r
85 #define TIM_OPM_EDGE_RISING   0x0004\r
86 \r
87 /* TIM ICAPA INPUT EDGE */\r
88 #define TIM_ICAP1_EDGE_FALLING  0xFFFB\r
89 #define TIM_ICAP1_EDGE_RISING   0x0004\r
90 \r
91 /* TIM ICAPB INPUT EDGE */\r
92 #define TIM_ICAP2_EDGE_FALLING  0xFFF7\r
93 #define TIM_ICAP2_EDGE_RISING   0x0008\r
94 \r
95 /* TIM OUTPUT LEVEL */\r
96 #define TIM_HIGH       0x0200\r
97 #define TIM_LOW        0x0300\r
98 \r
99 /* TIM OUTPUT EDGE */\r
100 #define TIM_OUTPUT_EDGE_RISING     0x8000\r
101 #define TIM_OUTPUT_EDGE_FALLING    0x0800\r
102 \r
103 /* TIM channels */\r
104 #define TIM_PWM_OC1_Channel    0x1     /* PWM/Output Compare 1 Channel */\r
105 #define TIM_OC2_Channel        0x2     /* Output Compare 2 Channel     */\r
106 \r
107 /* TIM DMA SOURCE */\r
108 #define TIM_DMA_IC1        0x0000 /* Input Capture Channel 1 DMA Source  */\r
109 #define TIM_DMA_OC1        0x1000 /* OUTPUT Compare Channel 1 DMA Source */\r
110 #define TIM_DMA_IC2        0x2000 /* Input Capture Channel 2 DMA Source  */\r
111 #define TIM_DMA_OC2        0x3000 /* OUTPUT Compare Channel 2 DMA Source */\r
112 \r
113 /* TIM DMA ENABLE or DISABLE */\r
114 #define TIM_DMA_ENABLE      0x0400 /* DMA Enable */\r
115 #define TIM_DMA_DISABLE     0xFBFF /* DMA Disable */\r
116 \r
117 /* TIM Interruption Sources*/\r
118 #define TIM_IT_IC1   0x8000 /* Input Capture Channel 1 Interrupt Source  */\r
119 #define TIM_IT_OC1   0x4000 /* Output Compare Channel 1 Interrupt Source */\r
120 #define TIM_IT_TO    0x2000 /* Timer OverFlow Interrupt Source           */\r
121 #define TIM_IT_IC2   0x1000 /* Input Capture Channel 2 Interrupt Source  */\r
122 #define TIM_IT_OC2   0x0800 /* Output Compare Channel 2 Interrupt Source */\r
123 \r
124 /* TIM Flags */\r
125 #define TIM_FLAG_IC1     0x8000 /* Input Capture Channel 1 Flag  */\r
126 #define TIM_FLAG_OC1     0x4000 /* Output Compare Channel 1 Flag */\r
127 #define TIM_FLAG_TO      0x2000 /* Timer OverFlow Flag           */\r
128 #define TIM_FLAG_IC2     0x1000 /* Input Capture Channel 2 Flag  */\r
129 #define TIM_FLAG_OC2     0x0800 /* Output Compare Channel 2 Flag */ \r
130 \r
131 /* Module private variables --------------------------------------------------*/\r
132 /* Exported macro ------------------------------------------------------------*/\r
133 /* Private functions ---------------------------------------------------------*/\r
134 /* Exported functions ------------------------------------------------------- */\r
135 void TIM_Init(TIM_TypeDef *TIMx, TIM_InitTypeDef *TIM_InitStruct);\r
136 void TIM_DeInit(TIM_TypeDef *TIMx);\r
137 void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct);\r
138 void TIM_CounterCmd(TIM_TypeDef *TIMx, TIM_CounterOperations TIM_operation);\r
139 void TIM_PrescalerConfig(TIM_TypeDef *TIMx, u8 TIM_Prescaler);\r
140 u8 TIM_GetPrescalerValue(TIM_TypeDef *TIMx);\r
141 u16 TIM_GetCounterValue(TIM_TypeDef *TIMx);\r
142 u16 TIM_GetICAP1Value(TIM_TypeDef *TIMx);\r
143 u16 TIM_GetICAP2Value(TIM_TypeDef *TIMx);\r
144 void TIM_SetPulse(TIM_TypeDef *TIMx,u16 TIM_Channel ,u16 TIM_Pulse);\r
145 FlagStatus TIM_GetFlagStatus(TIM_TypeDef *TIMx, u16 TIM_Flag);\r
146 void TIM_ClearFlag(TIM_TypeDef *TIMx, u16 TIM_Flag);\r
147 u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx);\r
148 u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx);\r
149 void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState TIM_Newstate);\r
150 void TIM_DMAConfig(TIM_TypeDef *TIMx, u16 TIM_DMA_Sources);\r
151 void TIM_DMACmd(TIM_TypeDef *TIMx, FunctionalState TIM_Newstate);\r
152 \r
153 #endif /* __91x_TIM_H */\r
154 \r
155 /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/\r