source: rtems/c/src/lib/libbsp/arm/stm32f7x/hal/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h @ c20847a5

5
Last change on this file since c20847a5 was c20847a5, checked in by Isaac Gutekunst <isaac.gutekunst@…>, on 09/16/15 at 13:16:02

Add STM32F7 HAL Files

These files originated as:

+ STC32CubeF7 V1.1.0 from http://www.st.com/web/en/catalog/tools/PF261909

  • Property mode set to 100644
File size: 70.2 KB
Line 
1/**
2  ******************************************************************************
3  * @file    stm32f7xx_hal_tim.h
4  * @author  MCD Application Team
5  * @version V1.0.1
6  * @date    25-June-2015
7  * @brief   Header file of TIM HAL module.
8  ******************************************************************************
9  * @attention
10  *
11  * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
12  *
13  * Redistribution and use in source and binary forms, with or without modification,
14  * are permitted provided that the following conditions are met:
15  *   1. Redistributions of source code must retain the above copyright notice,
16  *      this list of conditions and the following disclaimer.
17  *   2. Redistributions in binary form must reproduce the above copyright notice,
18  *      this list of conditions and the following disclaimer in the documentation
19  *      and/or other materials provided with the distribution.
20  *   3. Neither the name of STMicroelectronics nor the names of its contributors
21  *      may be used to endorse or promote products derived from this software
22  *      without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  *
35  ******************************************************************************
36  */
37
38/* Define to prevent recursive inclusion -------------------------------------*/
39#ifndef __STM32F7xx_HAL_TIM_H
40#define __STM32F7xx_HAL_TIM_H
41
42#ifdef __cplusplus
43 extern "C" {
44#endif
45
46/* Includes ------------------------------------------------------------------*/
47#include "stm32f7xx_hal_def.h"
48
49/** @addtogroup STM32F7xx_HAL_Driver
50  * @{
51  */
52
53/** @addtogroup TIM
54  * @{
55  */
56
57/* Exported types ------------------------------------------------------------*/
58/** @defgroup TIM_Exported_Types TIM Exported Types
59  * @{
60  */
61
62/**
63  * @brief  TIM Time base Configuration Structure definition
64  */
65typedef struct
66{
67  uint32_t Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
68                                   This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
69
70  uint32_t CounterMode;       /*!< Specifies the counter mode.
71                                   This parameter can be a value of @ref TIM_Counter_Mode */
72
73  uint32_t Period;            /*!< Specifies the period value to be loaded into the active
74                                   Auto-Reload Register at the next update event.
75                                   This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.  */
76
77  uint32_t ClockDivision;     /*!< Specifies the clock division.
78                                   This parameter can be a value of @ref TIM_ClockDivision */
79
80  uint32_t RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
81                                    reaches zero, an update event is generated and counting restarts
82                                    from the RCR value (N).
83                                    This means in PWM mode that (N+1) corresponds to:
84                                        - the number of PWM periods in edge-aligned mode
85                                        - the number of half PWM period in center-aligned mode
86                                     This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
87                                     @note This parameter is valid only for TIM1 and TIM8. */
88} TIM_Base_InitTypeDef;
89
90/**
91  * @brief  TIM Output Compare Configuration Structure definition
92  */
93
94typedef struct
95{
96  uint32_t OCMode;        /*!< Specifies the TIM mode.
97                               This parameter can be a value of @ref TIMEx_Output_Compare_and_PWM_modes */
98
99  uint32_t Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
100                               This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
101
102  uint32_t OCPolarity;    /*!< Specifies the output polarity.
103                               This parameter can be a value of @ref TIM_Output_Compare_Polarity */
104
105  uint32_t OCNPolarity;   /*!< Specifies the complementary output polarity.
106                               This parameter can be a value of @ref TIM_Output_Compare_N_Polarity
107                               @note This parameter is valid only for TIM1 and TIM8. */
108
109  uint32_t OCFastMode;   /*!< Specifies the Fast mode state.
110                               This parameter can be a value of @ref TIM_Output_Fast_State
111                               @note This parameter is valid only in PWM1 and PWM2 mode. */
112
113
114  uint32_t OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
115                               This parameter can be a value of @ref TIM_Output_Compare_Idle_State
116                               @note This parameter is valid only for TIM1 and TIM8. */
117
118  uint32_t OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
119                               This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State
120                               @note This parameter is valid only for TIM1 and TIM8. */
121} TIM_OC_InitTypeDef;
122
123/**
124  * @brief  TIM One Pulse Mode Configuration Structure definition
125  */
126typedef struct
127{
128  uint32_t OCMode;        /*!< Specifies the TIM mode.
129                               This parameter can be a value of @ref TIMEx_Output_Compare_and_PWM_modes */
130
131  uint32_t Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
132                               This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
133
134  uint32_t OCPolarity;    /*!< Specifies the output polarity.
135                               This parameter can be a value of @ref TIM_Output_Compare_Polarity */
136
137  uint32_t OCNPolarity;   /*!< Specifies the complementary output polarity.
138                               This parameter can be a value of @ref TIM_Output_Compare_N_Polarity
139                               @note This parameter is valid only for TIM1 and TIM8. */
140
141  uint32_t OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
142                               This parameter can be a value of @ref TIM_Output_Compare_Idle_State
143                               @note This parameter is valid only for TIM1 and TIM8. */
144
145  uint32_t OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
146                               This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State
147                               @note This parameter is valid only for TIM1 and TIM8. */
148
149  uint32_t ICPolarity;    /*!< Specifies the active edge of the input signal.
150                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */
151
152  uint32_t ICSelection;   /*!< Specifies the input.
153                              This parameter can be a value of @ref TIM_Input_Capture_Selection */
154
155  uint32_t ICFilter;      /*!< Specifies the input capture filter.
156                              This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
157} TIM_OnePulse_InitTypeDef;
158
159
160/**
161  * @brief  TIM Input Capture Configuration Structure definition
162  */
163
164typedef struct
165{
166  uint32_t  ICPolarity;   /*!< Specifies the active edge of the input signal.
167                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */
168
169  uint32_t ICSelection;  /*!< Specifies the input.
170                              This parameter can be a value of @ref TIM_Input_Capture_Selection */
171
172  uint32_t ICPrescaler;  /*!< Specifies the Input Capture Prescaler.
173                              This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
174
175  uint32_t ICFilter;     /*!< Specifies the input capture filter.
176                              This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
177} TIM_IC_InitTypeDef;
178
179/**
180  * @brief  TIM Encoder Configuration Structure definition
181  */
182
183typedef struct
184{
185  uint32_t EncoderMode;   /*!< Specifies the active edge of the input signal.
186                               This parameter can be a value of @ref TIM_Encoder_Mode */
187
188  uint32_t IC1Polarity;   /*!< Specifies the active edge of the input signal.
189                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */
190
191  uint32_t IC1Selection;  /*!< Specifies the input.
192                               This parameter can be a value of @ref TIM_Input_Capture_Selection */
193
194  uint32_t IC1Prescaler;  /*!< Specifies the Input Capture Prescaler.
195                               This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
196
197  uint32_t IC1Filter;     /*!< Specifies the input capture filter.
198                               This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
199
200  uint32_t IC2Polarity;   /*!< Specifies the active edge of the input signal.
201                               This parameter can be a value of @ref TIM_Input_Capture_Polarity */
202
203  uint32_t IC2Selection;  /*!< Specifies the input.
204                              This parameter can be a value of @ref TIM_Input_Capture_Selection */
205
206  uint32_t IC2Prescaler;  /*!< Specifies the Input Capture Prescaler.
207                               This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
208
209  uint32_t IC2Filter;     /*!< Specifies the input capture filter.
210                               This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
211} TIM_Encoder_InitTypeDef;
212
213/**
214  * @brief  Clock Configuration Handle Structure definition
215  */
216typedef struct
217{
218  uint32_t ClockSource;     /*!< TIM clock sources.
219                                 This parameter can be a value of @ref TIM_Clock_Source */
220  uint32_t ClockPolarity;   /*!< TIM clock polarity.
221                                 This parameter can be a value of @ref TIM_Clock_Polarity */
222  uint32_t ClockPrescaler;  /*!< TIM clock prescaler.
223                                 This parameter can be a value of @ref TIM_Clock_Prescaler */
224  uint32_t ClockFilter;    /*!< TIM clock filter.
225                                This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
226}TIM_ClockConfigTypeDef;
227
228/**
229  * @brief  Clear Input Configuration Handle Structure definition
230  */
231typedef struct
232{
233  uint32_t ClearInputState;      /*!< TIM clear Input state.
234                                      This parameter can be ENABLE or DISABLE */
235  uint32_t ClearInputSource;     /*!< TIM clear Input sources.
236                                      This parameter can be a value of @ref TIMEx_ClearInput_Source */
237  uint32_t ClearInputPolarity;   /*!< TIM Clear Input polarity.
238                                      This parameter can be a value of @ref TIM_ClearInput_Polarity */
239  uint32_t ClearInputPrescaler;  /*!< TIM Clear Input prescaler.
240                                      This parameter can be a value of @ref TIM_ClearInput_Prescaler */
241  uint32_t ClearInputFilter;    /*!< TIM Clear Input filter.
242                                     This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
243}TIM_ClearInputConfigTypeDef;
244
245/**
246  * @brief  TIM Slave configuration Structure definition
247  */
248typedef struct {
249  uint32_t  SlaveMode;         /*!< Slave mode selection
250                                  This parameter can be a value of @ref TIMEx_Slave_Mode */
251  uint32_t  InputTrigger;      /*!< Input Trigger source
252                                  This parameter can be a value of @ref TIM_Trigger_Selection */
253  uint32_t  TriggerPolarity;   /*!< Input Trigger polarity
254                                  This parameter can be a value of @ref TIM_Trigger_Polarity */
255  uint32_t  TriggerPrescaler;  /*!< Input trigger prescaler
256                                  This parameter can be a value of @ref TIM_Trigger_Prescaler */
257  uint32_t  TriggerFilter;     /*!< Input trigger filter
258                                  This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
259
260}TIM_SlaveConfigTypeDef;
261
262/**
263  * @brief  HAL State structures definition
264  */
265typedef enum
266{
267  HAL_TIM_STATE_RESET             = 0x00,    /*!< Peripheral not yet initialized or disabled  */
268  HAL_TIM_STATE_READY             = 0x01,    /*!< Peripheral Initialized and ready for use    */
269  HAL_TIM_STATE_BUSY              = 0x02,    /*!< An internal process is ongoing              */
270  HAL_TIM_STATE_TIMEOUT           = 0x03,    /*!< Timeout state                               */
271  HAL_TIM_STATE_ERROR             = 0x04     /*!< Reception process is ongoing                */
272}HAL_TIM_StateTypeDef;
273
274/**
275  * @brief  HAL Active channel structures definition
276  */
277typedef enum
278{
279  HAL_TIM_ACTIVE_CHANNEL_1        = 0x01,    /*!< The active channel is 1     */
280  HAL_TIM_ACTIVE_CHANNEL_2        = 0x02,    /*!< The active channel is 2     */
281  HAL_TIM_ACTIVE_CHANNEL_3        = 0x04,    /*!< The active channel is 3     */
282  HAL_TIM_ACTIVE_CHANNEL_4        = 0x08,    /*!< The active channel is 4     */
283  HAL_TIM_ACTIVE_CHANNEL_CLEARED  = 0x00     /*!< All active channels cleared */
284}HAL_TIM_ActiveChannel;
285
286/**
287  * @brief  TIM Time Base Handle Structure definition
288  */
289typedef struct
290{
291  TIM_TypeDef                 *Instance;     /*!< Register base address             */
292  TIM_Base_InitTypeDef        Init;          /*!< TIM Time Base required parameters */
293  HAL_TIM_ActiveChannel       Channel;       /*!< Active channel                    */
294  DMA_HandleTypeDef           *hdma[7];      /*!< DMA Handlers array
295                                             This array is accessed by a @ref DMA_Handle_index */
296  HAL_LockTypeDef             Lock;          /*!< Locking object                    */
297  __IO HAL_TIM_StateTypeDef   State;         /*!< TIM operation state               */
298}TIM_HandleTypeDef;
299/**
300  * @}
301  */
302
303/* Exported constants --------------------------------------------------------*/
304/** @defgroup TIM_Exported_Constants  TIM Exported Constants
305  * @{
306  */
307
308/** @defgroup TIM_Input_Channel_Polarity TIM Input Channel Polarity
309  * @{
310  */
311#define  TIM_INPUTCHANNELPOLARITY_RISING      ((uint32_t)0x00000000)            /*!< Polarity for TIx source */
312#define  TIM_INPUTCHANNELPOLARITY_FALLING     (TIM_CCER_CC1P)                   /*!< Polarity for TIx source */
313#define  TIM_INPUTCHANNELPOLARITY_BOTHEDGE    (TIM_CCER_CC1P | TIM_CCER_CC1NP)  /*!< Polarity for TIx source */
314/**
315  * @}
316  */
317
318/** @defgroup TIM_ETR_Polarity  TIM ETR Polarity
319  * @{
320  */
321#define TIM_ETRPOLARITY_INVERTED              (TIM_SMCR_ETP)                    /*!< Polarity for ETR source */
322#define TIM_ETRPOLARITY_NONINVERTED           ((uint32_t)0x0000)                /*!< Polarity for ETR source */
323/**
324  * @}
325  */
326
327/** @defgroup TIM_ETR_Prescaler  TIM ETR Prescaler
328  * @{
329  */
330#define TIM_ETRPRESCALER_DIV1                 ((uint32_t)0x0000)                /*!< No prescaler is used */
331#define TIM_ETRPRESCALER_DIV2                 (TIM_SMCR_ETPS_0)                 /*!< ETR input source is divided by 2 */
332#define TIM_ETRPRESCALER_DIV4                 (TIM_SMCR_ETPS_1)                 /*!< ETR input source is divided by 4 */
333#define TIM_ETRPRESCALER_DIV8                 (TIM_SMCR_ETPS)                   /*!< ETR input source is divided by 8 */
334/**
335  * @}
336  */
337
338/** @defgroup TIM_Counter_Mode  TIM Counter Mode
339  * @{
340  */
341#define TIM_COUNTERMODE_UP                 ((uint32_t)0x0000)
342#define TIM_COUNTERMODE_DOWN               TIM_CR1_DIR
343#define TIM_COUNTERMODE_CENTERALIGNED1     TIM_CR1_CMS_0
344#define TIM_COUNTERMODE_CENTERALIGNED2     TIM_CR1_CMS_1
345#define TIM_COUNTERMODE_CENTERALIGNED3     TIM_CR1_CMS
346/**
347  * @}
348  */
349
350/** @defgroup TIM_ClockDivision TIM Clock Division
351  * @{
352  */
353#define TIM_CLOCKDIVISION_DIV1                       ((uint32_t)0x0000)
354#define TIM_CLOCKDIVISION_DIV2                       (TIM_CR1_CKD_0)
355#define TIM_CLOCKDIVISION_DIV4                       (TIM_CR1_CKD_1)
356/**
357  * @}
358  */
359
360/** @defgroup TIM_Output_Compare_State TIM Output Compare State
361  * @{
362  */
363#define TIM_OUTPUTSTATE_DISABLE            ((uint32_t)0x0000)
364#define TIM_OUTPUTSTATE_ENABLE             (TIM_CCER_CC1E)
365
366/**
367  * @}
368  */
369
370/** @defgroup TIM_Output_Fast_State  TIM Output Fast State
371  * @{
372  */
373#define TIM_OCFAST_DISABLE                ((uint32_t)0x0000)
374#define TIM_OCFAST_ENABLE                 (TIM_CCMR1_OC1FE)
375/**
376  * @}
377  */
378
379/** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State
380  * @{
381  */
382#define TIM_OUTPUTNSTATE_DISABLE            ((uint32_t)0x0000)
383#define TIM_OUTPUTNSTATE_ENABLE             (TIM_CCER_CC1NE)
384/**
385  * @}
386  */
387
388/** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity
389  * @{
390  */
391#define TIM_OCPOLARITY_HIGH                ((uint32_t)0x0000)
392#define TIM_OCPOLARITY_LOW                 (TIM_CCER_CC1P)
393/**
394  * @}
395  */
396
397/** @defgroup TIM_Output_Compare_N_Polarity TIM Complementary Output Compare Polarity
398  * @{
399  */
400#define TIM_OCNPOLARITY_HIGH               ((uint32_t)0x0000)
401#define TIM_OCNPOLARITY_LOW                (TIM_CCER_CC1NP)
402/**
403  * @}
404  */
405
406/** @defgroup TIM_Output_Compare_Idle_State  TIM Output Compare Idle State
407  * @{
408  */
409#define TIM_OCIDLESTATE_SET                (TIM_CR2_OIS1)
410#define TIM_OCIDLESTATE_RESET              ((uint32_t)0x0000)
411/**
412  * @}
413  */
414
415/** @defgroup TIM_Output_Compare_N_Idle_State  TIM Output Compare N Idle State
416  * @{
417  */
418#define TIM_OCNIDLESTATE_SET               (TIM_CR2_OIS1N)
419#define TIM_OCNIDLESTATE_RESET             ((uint32_t)0x0000)
420/**
421  * @}
422  */
423
424/** @defgroup TIM_Input_Capture_Polarity  TIM Input Capture Polarity
425  * @{
426  */
427#define  TIM_ICPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING
428#define  TIM_ICPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING
429#define  TIM_ICPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE
430/**
431  * @}
432  */
433
434/** @defgroup TIM_Input_Capture_Selection  TIM Input Capture Selection
435  * @{
436  */
437#define TIM_ICSELECTION_DIRECTTI           (TIM_CCMR1_CC1S_0)   /*!< TIM Input 1, 2, 3 or 4 is selected to be
438                                                                     connected to IC1, IC2, IC3 or IC4, respectively */
439#define TIM_ICSELECTION_INDIRECTTI         (TIM_CCMR1_CC1S_1)   /*!< TIM Input 1, 2, 3 or 4 is selected to be
440                                                                     connected to IC2, IC1, IC4 or IC3, respectively */
441#define TIM_ICSELECTION_TRC                (TIM_CCMR1_CC1S)     /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */
442
443/**
444  * @}
445  */
446
447/** @defgroup TIM_Input_Capture_Prescaler  TIM Input Capture Prescaler
448  * @{
449  */
450#define TIM_ICPSC_DIV1                     ((uint32_t)0x0000)       /*!< Capture performed each time an edge is detected on the capture input */
451#define TIM_ICPSC_DIV2                     (TIM_CCMR1_IC1PSC_0)     /*!< Capture performed once every 2 events */
452#define TIM_ICPSC_DIV4                     (TIM_CCMR1_IC1PSC_1)     /*!< Capture performed once every 4 events */
453#define TIM_ICPSC_DIV8                     (TIM_CCMR1_IC1PSC)       /*!< Capture performed once every 8 events */
454/**
455  * @}
456  */
457
458/** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode
459  * @{
460  */
461#define TIM_OPMODE_SINGLE                  (TIM_CR1_OPM)
462#define TIM_OPMODE_REPETITIVE              ((uint32_t)0x0000)
463/**
464  * @}
465  */
466
467/** @defgroup TIM_Encoder_Mode TIM Encoder Mode
468  * @{
469  */
470#define TIM_ENCODERMODE_TI1                (TIM_SMCR_SMS_0)
471#define TIM_ENCODERMODE_TI2                (TIM_SMCR_SMS_1)
472#define TIM_ENCODERMODE_TI12               (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)
473
474/**
475  * @}
476  */
477
478/** @defgroup TIM_Interrupt_definition  TIM Interrupt definition
479  * @{
480  */
481#define TIM_IT_UPDATE           (TIM_DIER_UIE)
482#define TIM_IT_CC1              (TIM_DIER_CC1IE)
483#define TIM_IT_CC2              (TIM_DIER_CC2IE)
484#define TIM_IT_CC3              (TIM_DIER_CC3IE)
485#define TIM_IT_CC4              (TIM_DIER_CC4IE)
486#define TIM_IT_COM              (TIM_DIER_COMIE)
487#define TIM_IT_TRIGGER          (TIM_DIER_TIE)
488#define TIM_IT_BREAK            (TIM_DIER_BIE)
489/**
490  * @}
491  */
492
493/** @defgroup TIM_Commutation_Source  TIM Commutation Source
494  * @{
495  */
496#define TIM_COMMUTATION_TRGI              (TIM_CR2_CCUS)
497#define TIM_COMMUTATION_SOFTWARE          ((uint32_t)0x0000)
498/**
499  * @}
500  */
501
502/** @defgroup TIM_DMA_sources  TIM DMA sources
503  * @{
504  */
505#define TIM_DMA_UPDATE                     (TIM_DIER_UDE)
506#define TIM_DMA_CC1                        (TIM_DIER_CC1DE)
507#define TIM_DMA_CC2                        (TIM_DIER_CC2DE)
508#define TIM_DMA_CC3                        (TIM_DIER_CC3DE)
509#define TIM_DMA_CC4                        (TIM_DIER_CC4DE)
510#define TIM_DMA_COM                        (TIM_DIER_COMDE)
511#define TIM_DMA_TRIGGER                    (TIM_DIER_TDE)
512/**
513  * @}
514  */
515
516/** @defgroup TIM_Event_Source  TIM Event Source
517  * @{
518  */
519#define TIM_EVENTSOURCE_UPDATE              TIM_EGR_UG
520#define TIM_EVENTSOURCE_CC1                 TIM_EGR_CC1G
521#define TIM_EVENTSOURCE_CC2                 TIM_EGR_CC2G
522#define TIM_EVENTSOURCE_CC3                 TIM_EGR_CC3G
523#define TIM_EVENTSOURCE_CC4                 TIM_EGR_CC4G
524#define TIM_EVENTSOURCE_COM                 TIM_EGR_COMG
525#define TIM_EVENTSOURCE_TRIGGER             TIM_EGR_TG
526#define TIM_EVENTSOURCE_BREAK               TIM_EGR_BG
527#define TIM_EVENTSOURCE_BREAK2              TIM_EGR_B2G
528/**
529  * @}
530  */
531
532/** @defgroup TIM_Flag_definition  TIM Flag definition
533  * @{
534  */
535#define TIM_FLAG_UPDATE                    (TIM_SR_UIF)
536#define TIM_FLAG_CC1                       (TIM_SR_CC1IF)
537#define TIM_FLAG_CC2                       (TIM_SR_CC2IF)
538#define TIM_FLAG_CC3                       (TIM_SR_CC3IF)
539#define TIM_FLAG_CC4                       (TIM_SR_CC4IF)
540#define TIM_FLAG_COM                       (TIM_SR_COMIF)
541#define TIM_FLAG_TRIGGER                   (TIM_SR_TIF)
542#define TIM_FLAG_BREAK                     (TIM_SR_BIF)
543#define TIM_FLAG_BREAK2                    (TIM_SR_B2IF)
544#define TIM_FLAG_CC1OF                     (TIM_SR_CC1OF)
545#define TIM_FLAG_CC2OF                     (TIM_SR_CC2OF)
546#define TIM_FLAG_CC3OF                     (TIM_SR_CC3OF)
547#define TIM_FLAG_CC4OF                     (TIM_SR_CC4OF)
548/**
549  * @}
550  */
551
552/** @defgroup TIM_Clock_Source  TIM Clock Source
553  * @{
554  */
555#define TIM_CLOCKSOURCE_ETRMODE2    (TIM_SMCR_ETPS_1)
556#define TIM_CLOCKSOURCE_INTERNAL    (TIM_SMCR_ETPS_0)
557#define TIM_CLOCKSOURCE_ITR0        ((uint32_t)0x0000)
558#define TIM_CLOCKSOURCE_ITR1        (TIM_SMCR_TS_0)
559#define TIM_CLOCKSOURCE_ITR2        (TIM_SMCR_TS_1)
560#define TIM_CLOCKSOURCE_ITR3        (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)
561#define TIM_CLOCKSOURCE_TI1ED       (TIM_SMCR_TS_2)
562#define TIM_CLOCKSOURCE_TI1         (TIM_SMCR_TS_0 | TIM_SMCR_TS_2)
563#define TIM_CLOCKSOURCE_TI2         (TIM_SMCR_TS_1 | TIM_SMCR_TS_2)
564#define TIM_CLOCKSOURCE_ETRMODE1    (TIM_SMCR_TS)
565/**
566  * @}
567  */
568
569/** @defgroup TIM_Clock_Polarity  TIM Clock Polarity
570  * @{
571  */
572#define TIM_CLOCKPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED          /*!< Polarity for ETRx clock sources */
573#define TIM_CLOCKPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED       /*!< Polarity for ETRx clock sources */
574#define TIM_CLOCKPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING   /*!< Polarity for TIx clock sources */
575#define TIM_CLOCKPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING   /*!< Polarity for TIx clock sources */
576#define TIM_CLOCKPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE  /*!< Polarity for TIx clock sources */
577/**
578  * @}
579  */
580
581/** @defgroup TIM_Clock_Prescaler  TIM Clock Prescaler
582  * @{
583  */
584#define TIM_CLOCKPRESCALER_DIV1              TIM_ETRPRESCALER_DIV1     /*!< No prescaler is used */
585#define TIM_CLOCKPRESCALER_DIV2              TIM_ETRPRESCALER_DIV2     /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */
586#define TIM_CLOCKPRESCALER_DIV4              TIM_ETRPRESCALER_DIV4     /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */
587#define TIM_CLOCKPRESCALER_DIV8              TIM_ETRPRESCALER_DIV8     /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */
588/**
589  * @}
590  */
591
592/** @defgroup TIM_ClearInput_Polarity  TIM Clear Input Polarity
593  * @{
594  */
595#define TIM_CLEARINPUTPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED                    /*!< Polarity for ETRx pin */
596#define TIM_CLEARINPUTPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED                 /*!< Polarity for ETRx pin */
597/**
598  * @}
599  */
600
601/** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler
602  * @{
603  */
604#define TIM_CLEARINPUTPRESCALER_DIV1                    TIM_ETRPRESCALER_DIV1      /*!< No prescaler is used */
605#define TIM_CLEARINPUTPRESCALER_DIV2                    TIM_ETRPRESCALER_DIV2      /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */
606#define TIM_CLEARINPUTPRESCALER_DIV4                    TIM_ETRPRESCALER_DIV4      /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */
607#define TIM_CLEARINPUTPRESCALER_DIV8                    TIM_ETRPRESCALER_DIV8        /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */
608/**
609  * @}
610  */
611
612/** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state TIM OSSR OffState Selection for Run mode state
613  * @{
614  */
615#define TIM_OSSR_ENABLE               (TIM_BDTR_OSSR)
616#define TIM_OSSR_DISABLE          ((uint32_t)0x0000)
617/**
618  * @}
619  */
620
621/** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state TIM OSSI OffState Selection for Idle mode state
622  * @{
623  */
624#define TIM_OSSI_ENABLE             (TIM_BDTR_OSSI)
625#define TIM_OSSI_DISABLE            ((uint32_t)0x0000)
626/**
627  * @}
628  */
629
630/** @defgroup TIM_Lock_level  TIM Lock level
631  * @{
632  */
633#define TIM_LOCKLEVEL_OFF          ((uint32_t)0x0000)
634#define TIM_LOCKLEVEL_1            (TIM_BDTR_LOCK_0)
635#define TIM_LOCKLEVEL_2            (TIM_BDTR_LOCK_1)
636#define TIM_LOCKLEVEL_3            (TIM_BDTR_LOCK)
637/**
638  * @}
639  */
640/** @defgroup TIM_Break_Input_enable_disable  TIM Break Input State
641  * @{
642  */
643#define TIM_BREAK_ENABLE          (TIM_BDTR_BKE)
644#define TIM_BREAK_DISABLE         ((uint32_t)0x0000)
645/**
646  * @}
647  */
648
649/** @defgroup TIM_Break_Polarity  TIM Break Polarity
650  * @{
651  */
652#define TIM_BREAKPOLARITY_LOW        ((uint32_t)0x0000)
653#define TIM_BREAKPOLARITY_HIGH       (TIM_BDTR_BKP)
654/**
655  * @}
656  */
657
658/** @defgroup TIM_AOE_Bit_Set_Reset  TIM AOE Bit State
659  * @{
660  */
661#define TIM_AUTOMATICOUTPUT_ENABLE           (TIM_BDTR_AOE)
662#define TIM_AUTOMATICOUTPUT_DISABLE          ((uint32_t)0x0000)
663/**
664  * @}
665  */
666
667/** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection
668  * @{
669  */
670#define TIM_TRGO_RESET            ((uint32_t)0x0000)
671#define TIM_TRGO_ENABLE           (TIM_CR2_MMS_0)
672#define TIM_TRGO_UPDATE           (TIM_CR2_MMS_1)
673#define TIM_TRGO_OC1              ((TIM_CR2_MMS_1 | TIM_CR2_MMS_0))
674#define TIM_TRGO_OC1REF           (TIM_CR2_MMS_2)
675#define TIM_TRGO_OC2REF           ((TIM_CR2_MMS_2 | TIM_CR2_MMS_0))
676#define TIM_TRGO_OC3REF           ((TIM_CR2_MMS_2 | TIM_CR2_MMS_1))
677#define TIM_TRGO_OC4REF           ((TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0))
678/**
679  * @}
680  */
681
682/** @defgroup TIM_Master_Slave_Mode  TIM Master Slave Mode
683  * @{
684  */
685#define TIM_MASTERSLAVEMODE_ENABLE          ((uint32_t)0x0080)
686#define TIM_MASTERSLAVEMODE_DISABLE         ((uint32_t)0x0000)
687/**
688  * @}
689  */
690
691/** @defgroup TIM_Trigger_Selection  TIM Trigger Selection
692  * @{
693  */
694#define TIM_TS_ITR0                        ((uint32_t)0x0000)
695#define TIM_TS_ITR1                        ((uint32_t)0x0010)
696#define TIM_TS_ITR2                        ((uint32_t)0x0020)
697#define TIM_TS_ITR3                        ((uint32_t)0x0030)
698#define TIM_TS_TI1F_ED                     ((uint32_t)0x0040)
699#define TIM_TS_TI1FP1                      ((uint32_t)0x0050)
700#define TIM_TS_TI2FP2                      ((uint32_t)0x0060)
701#define TIM_TS_ETRF                        ((uint32_t)0x0070)
702#define TIM_TS_NONE                        ((uint32_t)0xFFFF)
703/**
704  * @}
705  */
706
707/** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity
708  * @{
709  */
710#define TIM_TRIGGERPOLARITY_INVERTED           TIM_ETRPOLARITY_INVERTED      /*!< Polarity for ETRx trigger sources */
711#define TIM_TRIGGERPOLARITY_NONINVERTED        TIM_ETRPOLARITY_NONINVERTED   /*!< Polarity for ETRx trigger sources */
712#define TIM_TRIGGERPOLARITY_RISING             TIM_INPUTCHANNELPOLARITY_RISING        /*!< Polarity for TIxFPx or TI1_ED trigger sources */
713#define TIM_TRIGGERPOLARITY_FALLING            TIM_INPUTCHANNELPOLARITY_FALLING       /*!< Polarity for TIxFPx or TI1_ED trigger sources */
714#define TIM_TRIGGERPOLARITY_BOTHEDGE           TIM_INPUTCHANNELPOLARITY_BOTHEDGE      /*!< Polarity for TIxFPx or TI1_ED trigger sources */
715/**
716  * @}
717  */
718
719/** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler
720  * @{
721  */
722#define TIM_TRIGGERPRESCALER_DIV1             TIM_ETRPRESCALER_DIV1     /*!< No prescaler is used */
723#define TIM_TRIGGERPRESCALER_DIV2             TIM_ETRPRESCALER_DIV2     /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */
724#define TIM_TRIGGERPRESCALER_DIV4             TIM_ETRPRESCALER_DIV4     /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */
725#define TIM_TRIGGERPRESCALER_DIV8             TIM_ETRPRESCALER_DIV8     /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */
726/**
727  * @}
728  */
729
730
731/** @defgroup TIM_TI1_Selection TIM TI1 Selection
732  * @{
733  */
734#define TIM_TI1SELECTION_CH1                ((uint32_t)0x0000)
735#define TIM_TI1SELECTION_XORCOMBINATION     (TIM_CR2_TI1S)
736/**
737  * @}
738  */
739
740/** @defgroup TIM_DMA_Base_address  TIM DMA Base address
741  * @{
742  */
743#define TIM_DMABASE_CR1                    (0x00000000)
744#define TIM_DMABASE_CR2                    (0x00000001)
745#define TIM_DMABASE_SMCR                   (0x00000002)
746#define TIM_DMABASE_DIER                   (0x00000003)
747#define TIM_DMABASE_SR                     (0x00000004)
748#define TIM_DMABASE_EGR                    (0x00000005)
749#define TIM_DMABASE_CCMR1                  (0x00000006)
750#define TIM_DMABASE_CCMR2                  (0x00000007)
751#define TIM_DMABASE_CCER                   (0x00000008)
752#define TIM_DMABASE_CNT                    (0x00000009)
753#define TIM_DMABASE_PSC                    (0x0000000A)
754#define TIM_DMABASE_ARR                    (0x0000000B)
755#define TIM_DMABASE_RCR                    (0x0000000C)
756#define TIM_DMABASE_CCR1                   (0x0000000D)
757#define TIM_DMABASE_CCR2                   (0x0000000E)
758#define TIM_DMABASE_CCR3                   (0x0000000F)
759#define TIM_DMABASE_CCR4                   (0x00000010)
760#define TIM_DMABASE_BDTR                   (0x00000011)
761#define TIM_DMABASE_DCR                    (0x00000012)
762#define TIM_DMABASE_OR                     (0x00000013)
763/**
764  * @}
765  */
766
767/** @defgroup TIM_DMA_Burst_Length  TIM DMA Burst Length
768  * @{
769  */
770#define TIM_DMABURSTLENGTH_1TRANSFER           (0x00000000)
771#define TIM_DMABURSTLENGTH_2TRANSFERS          (0x00000100)
772#define TIM_DMABURSTLENGTH_3TRANSFERS          (0x00000200)
773#define TIM_DMABURSTLENGTH_4TRANSFERS          (0x00000300)
774#define TIM_DMABURSTLENGTH_5TRANSFERS          (0x00000400)
775#define TIM_DMABURSTLENGTH_6TRANSFERS          (0x00000500)
776#define TIM_DMABURSTLENGTH_7TRANSFERS          (0x00000600)
777#define TIM_DMABURSTLENGTH_8TRANSFERS          (0x00000700)
778#define TIM_DMABURSTLENGTH_9TRANSFERS          (0x00000800)
779#define TIM_DMABURSTLENGTH_10TRANSFERS         (0x00000900)
780#define TIM_DMABURSTLENGTH_11TRANSFERS         (0x00000A00)
781#define TIM_DMABURSTLENGTH_12TRANSFERS         (0x00000B00)
782#define TIM_DMABURSTLENGTH_13TRANSFERS         (0x00000C00)
783#define TIM_DMABURSTLENGTH_14TRANSFERS         (0x00000D00)
784#define TIM_DMABURSTLENGTH_15TRANSFERS         (0x00000E00)
785#define TIM_DMABURSTLENGTH_16TRANSFERS         (0x00000F00)
786#define TIM_DMABURSTLENGTH_17TRANSFERS         (0x00001000)
787#define TIM_DMABURSTLENGTH_18TRANSFERS         (0x00001100)
788/**
789  * @}
790  */
791
792/** @defgroup DMA_Handle_index  DMA Handle index
793  * @{
794  */
795#define TIM_DMA_ID_UPDATE                ((uint16_t) 0x0)       /*!< Index of the DMA handle used for Update DMA requests */
796#define TIM_DMA_ID_CC1                   ((uint16_t) 0x1)       /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */
797#define TIM_DMA_ID_CC2                   ((uint16_t) 0x2)       /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */
798#define TIM_DMA_ID_CC3                   ((uint16_t) 0x3)       /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */
799#define TIM_DMA_ID_CC4                   ((uint16_t) 0x4)       /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */
800#define TIM_DMA_ID_COMMUTATION           ((uint16_t) 0x5)       /*!< Index of the DMA handle used for Commutation DMA requests */
801#define TIM_DMA_ID_TRIGGER               ((uint16_t) 0x6)       /*!< Index of the DMA handle used for Trigger DMA requests */
802/**
803  * @}
804  */
805
806/** @defgroup Channel_CC_State  Channel CC State
807  * @{
808  */
809#define TIM_CCx_ENABLE                   ((uint32_t)0x0001)
810#define TIM_CCx_DISABLE                  ((uint32_t)0x0000)
811#define TIM_CCxN_ENABLE                  ((uint32_t)0x0004)
812#define TIM_CCxN_DISABLE                 ((uint32_t)0x0000)
813/**
814  * @}
815  */
816
817/**
818  * @}
819  */
820
821/* Exported macro ------------------------------------------------------------*/
822/** @defgroup TIM_Exported_Macros TIM Exported Macros
823  * @{
824  */
825/** @brief Reset TIM handle state
826  * @param  __HANDLE__: TIM handle
827  * @retval None
828  */
829#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_TIM_STATE_RESET)
830
831/**
832  * @brief  Enable the TIM peripheral.
833  * @param  __HANDLE__: TIM handle
834  * @retval None
835 */
836#define __HAL_TIM_ENABLE(__HANDLE__)                 ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN))
837
838/**
839  * @brief  Enable the TIM update source request.
840  * @param  __HANDLE__: TIM handle
841  * @retval None
842 */
843#define __HAL_TIM_URS_ENABLE(__HANDLE__)             ((__HANDLE__)->Instance->CR1|=(TIM_CR1_URS))
844
845/**
846  * @brief  Enable the TIM main Output.
847  * @param  __HANDLE__: TIM handle
848  * @retval None
849  */
850#define __HAL_TIM_MOE_ENABLE(__HANDLE__)             ((__HANDLE__)->Instance->BDTR|=(TIM_BDTR_MOE))
851
852
853/* The counter of a timer instance is disabled only if all the CCx and CCxN
854   channels have been disabled */
855#define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E))
856#define TIM_CCER_CCxNE_MASK ((uint32_t)(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE))
857
858/**
859  * @brief  Disable the TIM peripheral.
860  * @param  __HANDLE__: TIM handle
861  * @retval None
862  */
863#define __HAL_TIM_DISABLE(__HANDLE__) \
864                        do { \
865                          if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0) \
866                          { \
867                            if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0) \
868                            { \
869                              (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
870                            } \
871                          } \
872                        } while(0)
873
874/**
875  * @brief  Disable the TIM update source request.
876  * @param  __HANDLE__: TIM handle
877  * @retval None
878 */
879#define __HAL_TIM_URS_DISABLE(__HANDLE__)            ((__HANDLE__)->Instance->CR1&=~(TIM_CR1_URS))
880
881
882/* The Main Output of a timer instance is disabled only if all the CCx and CCxN
883   channels have been disabled */
884/**
885  * @brief  Disable the TIM main Output.
886  * @param  __HANDLE__: TIM handle
887  * @retval None
888  */
889#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
890                        do { \
891                          if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0) \
892                          { \
893                            if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0) \
894                            { \
895                              (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
896                            } \
897                          } \
898                        } while(0)
899
900#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__))
901#define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__)         ((__HANDLE__)->Instance->DIER |= (__DMA__))
902#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__))
903#define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__)        ((__HANDLE__)->Instance->DIER &= ~(__DMA__))
904#define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__)          (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__))
905#define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__)        ((__HANDLE__)->Instance->SR = ~(__FLAG__))
906
907#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
908#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__)     ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
909
910#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__)            (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))
911#define __HAL_TIM_SET_PRESCALER (__HANDLE__, __PRESC__)       ((__HANDLE__)->Instance->PSC = (__PRESC__))
912
913#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
914(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
915 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8)) :\
916 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
917 ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8)))
918
919#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
920(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC1PSC) :\
921 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC2PSC) :\
922 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC3PSC) :\
923 ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC4PSC))
924
925#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
926(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
927 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4)) :\
928 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8)) :\
929 ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12) & TIM_CCER_CC4P)))
930
931#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
932(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
933 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
934 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
935 ((__HANDLE__)->Instance->CCER &= (uint16_t)~TIM_CCER_CC4P))
936
937/**
938  * @brief  Sets the TIM Counter Register value on runtime.
939  * @param  __HANDLE__: TIM handle.
940  * @param  __COUNTER__: specifies the Counter register new value.
941  * @retval None
942  */
943#define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->CNT = (__COUNTER__))
944
945/**
946  * @brief  Gets the TIM Counter Register value on runtime.
947  * @param  __HANDLE__: TIM handle.
948  * @retval None
949  */
950#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
951
952/**
953  * @brief  Sets the TIM Autoreload Register value on runtime without calling
954  *         another time any Init function.
955  * @param  __HANDLE__: TIM handle.
956  * @param  __AUTORELOAD__: specifies the Counter register new value.
957  * @retval None
958  */
959#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__)                  \
960                        do{                                                  \
961                            (__HANDLE__)->Instance->ARR = (__AUTORELOAD__);  \
962                            (__HANDLE__)->Init.Period = (__AUTORELOAD__);    \
963                          } while(0)
964/**
965  * @brief  Gets the TIM Autoreload Register value on runtime
966  * @param  __HANDLE__: TIM handle.
967  * @retval None
968  */
969#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR)
970
971/**
972  * @brief  Sets the TIM Clock Division value on runtime without calling
973  *         another time any Init function.
974  * @param  __HANDLE__: TIM handle.
975  * @param  __CKD__: specifies the clock division value.
976  *          This parameter can be one of the following value:
977  *            @arg TIM_CLOCKDIVISION_DIV1
978  *            @arg TIM_CLOCKDIVISION_DIV2
979  *            @arg TIM_CLOCKDIVISION_DIV4
980  * @retval None
981  */
982#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
983                        do{                                                             \
984                              (__HANDLE__)->Instance->CR1 &= (uint16_t)(~TIM_CR1_CKD);  \
985                              (__HANDLE__)->Instance->CR1 |= (__CKD__);                 \
986                              (__HANDLE__)->Init.ClockDivision = (__CKD__);             \
987                          } while(0)
988/**
989  * @brief  Gets the TIM Clock Division value on runtime
990  * @param  __HANDLE__: TIM handle.
991  * @retval None
992  */
993#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
994
995/**
996  * @brief  Sets the TIM Input Capture prescaler on runtime without calling
997  *         another time HAL_TIM_IC_ConfigChannel() function.
998  * @param  __HANDLE__: TIM handle.
999  * @param  __CHANNEL__ : TIM Channels to be configured.
1000  *          This parameter can be one of the following values:
1001  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
1002  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
1003  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
1004  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
1005  * @param  __ICPSC__: specifies the Input Capture4 prescaler new value.
1006  *          This parameter can be one of the following values:
1007  *            @arg TIM_ICPSC_DIV1: no prescaler
1008  *            @arg TIM_ICPSC_DIV2: capture is done once every 2 events
1009  *            @arg TIM_ICPSC_DIV4: capture is done once every 4 events
1010  *            @arg TIM_ICPSC_DIV8: capture is done once every 8 events
1011  * @retval None
1012  */
1013#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
1014                        do{                                                    \
1015                              TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__));  \
1016                              TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
1017                          } while(0)
1018
1019/**
1020  * @brief  Gets the TIM Input Capture prescaler on runtime
1021  * @param  __HANDLE__: TIM handle.
1022  * @param  __CHANNEL__ : TIM Channels to be configured.
1023  *          This parameter can be one of the following values:
1024  *            @arg TIM_CHANNEL_1: get input capture 1 prescaler value
1025  *            @arg TIM_CHANNEL_2: get input capture 2 prescaler value
1026  *            @arg TIM_CHANNEL_3: get input capture 3 prescaler value
1027  *            @arg TIM_CHANNEL_4: get input capture 4 prescaler value
1028  * @retval None
1029  */
1030#define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__)  \
1031  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\
1032   ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8) :\
1033   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\
1034   (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8)
1035
1036/**
1037  * @brief  Sets the TIM Capture x input polarity on runtime.
1038  * @param  __HANDLE__: TIM handle.
1039  * @param  __CHANNEL__: TIM Channels to be configured.
1040  *          This parameter can be one of the following values:
1041  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
1042  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
1043  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
1044  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
1045  * @param  __POLARITY__: Polarity for TIx source
1046  *            @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge
1047  *            @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge
1048  *            @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge
1049  * @note  The polarity TIM_INPUTCHANNELPOLARITY_BOTHEDGE is not authorized  for TIM Channel 4.
1050  * @retval None
1051  */
1052#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__)                          \
1053                       do{                                                                            \
1054                           TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__));               \
1055                           TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
1056                         }while(0)
1057
1058/**
1059  * @}
1060  */
1061
1062/* Include TIM HAL Extension module */
1063#include "stm32f7xx_hal_tim_ex.h"
1064
1065/* Exported functions --------------------------------------------------------*/
1066/** @addtogroup TIM_Exported_Functions
1067  * @{
1068  */
1069
1070/** @addtogroup TIM_Exported_Functions_Group1
1071  * @{
1072  */
1073
1074/* Time Base functions ********************************************************/
1075HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim);
1076HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim);
1077void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
1078void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim);
1079/* Blocking mode: Polling */
1080HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);
1081HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim);
1082/* Non-Blocking mode: Interrupt */
1083HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
1084HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);
1085/* Non-Blocking mode: DMA */
1086HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
1087HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim);
1088/**
1089  * @}
1090  */
1091
1092/** @addtogroup TIM_Exported_Functions_Group2
1093  * @{
1094  */
1095/* Timer Output Compare functions **********************************************/
1096HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim);
1097HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim);
1098void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim);
1099void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim);
1100/* Blocking mode: Polling */
1101HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
1102HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
1103/* Non-Blocking mode: Interrupt */
1104HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
1105HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
1106/* Non-Blocking mode: DMA */
1107HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
1108HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
1109
1110/**
1111  * @}
1112  */
1113
1114/** @addtogroup TIM_Exported_Functions_Group3
1115  * @{
1116  */
1117/* Timer PWM functions *********************************************************/
1118HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim);
1119HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim);
1120void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim);
1121void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim);
1122/* Blocking mode: Polling */
1123HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
1124HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
1125/* Non-Blocking mode: Interrupt */
1126HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
1127HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
1128/* Non-Blocking mode: DMA */
1129HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
1130HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
1131
1132/**
1133  * @}
1134  */
1135
1136/** @addtogroup TIM_Exported_Functions_Group4
1137  * @{
1138  */
1139/* Timer Input Capture functions ***********************************************/
1140HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim);
1141HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim);
1142void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim);
1143void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim);
1144/* Blocking mode: Polling */
1145HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
1146HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
1147/* Non-Blocking mode: Interrupt */
1148HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
1149HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
1150/* Non-Blocking mode: DMA */
1151HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
1152HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
1153
1154/**
1155  * @}
1156  */
1157
1158/** @addtogroup TIM_Exported_Functions_Group5
1159  * @{
1160  */
1161/* Timer One Pulse functions ***************************************************/
1162HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode);
1163HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim);
1164void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim);
1165void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim);
1166/* Blocking mode: Polling */
1167HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
1168HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
1169
1170/* Non-Blocking mode: Interrupt */
1171HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
1172HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
1173
1174/**
1175  * @}
1176  */
1177
1178/** @addtogroup TIM_Exported_Functions_Group6
1179  * @{
1180  */
1181/* Timer Encoder functions *****************************************************/
1182HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef* sConfig);
1183HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim);
1184void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim);
1185void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim);
1186 /* Blocking mode: Polling */
1187HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
1188HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
1189/* Non-Blocking mode: Interrupt */
1190HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
1191HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
1192/* Non-Blocking mode: DMA */
1193HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length);
1194HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
1195
1196/**
1197  * @}
1198  */
1199
1200/** @addtogroup TIM_Exported_Functions_Group7
1201  * @{
1202  */
1203/* Interrupt Handler functions  **********************************************/
1204void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim);
1205
1206/**
1207  * @}
1208  */
1209
1210/** @addtogroup TIM_Exported_Functions_Group8
1211  * @{
1212  */
1213/* Control functions  *********************************************************/
1214HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel);
1215HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef* sConfig, uint32_t Channel);
1216HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef* sConfig, uint32_t Channel);
1217HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef* sConfig, uint32_t OutputChannel,  uint32_t InputChannel);
1218HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef * sClearInputConfig, uint32_t Channel);
1219HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef * sClockSourceConfig);
1220HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
1221HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchronization(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef * sSlaveConfig);
1222HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchronization_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef * sSlaveConfig);
1223HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
1224                                              uint32_t  *BurstBuffer, uint32_t  BurstLength);
1225HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
1226HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
1227                                              uint32_t  *BurstBuffer, uint32_t  BurstLength);
1228HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
1229HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
1230uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
1231
1232/**
1233  * @}
1234  */
1235
1236/** @addtogroup TIM_Exported_Functions_Group9
1237  * @{
1238  */
1239/* Callback in non blocking modes (Interrupt and DMA) *************************/
1240void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
1241void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);
1242void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);
1243void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim);
1244void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);
1245void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);
1246
1247/**
1248  * @}
1249  */
1250
1251/** @addtogroup TIM_Exported_Functions_Group10
1252  * @{
1253  */
1254/* Peripheral State functions  **************************************************/
1255HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim);
1256HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim);
1257HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim);
1258HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim);
1259HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim);
1260HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim);
1261
1262/**
1263  * @}
1264  */
1265
1266/**
1267  * @}
1268  */
1269
1270/* Private macros ------------------------------------------------------------*/
1271/** @defgroup TIM_Private_Macros TIM Private Macros
1272  * @{
1273  */
1274
1275/** @defgroup TIM_IS_TIM_Definitions TIM Private macros to check input parameters
1276  * @{
1277  */
1278#define IS_TIM_COUNTER_MODE(__MODE__) (((__MODE__) == TIM_COUNTERMODE_UP)              || \
1279                                       ((__MODE__) == TIM_COUNTERMODE_DOWN)            || \
1280                                       ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1)  || \
1281                                       ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2)  || \
1282                                       ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
1283
1284#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
1285                                           ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
1286                                           ((__DIV__) == TIM_CLOCKDIVISION_DIV4))
1287
1288#define IS_TIM_FAST_STATE(__STATE__) (((__STATE__) == TIM_OCFAST_DISABLE) || \
1289                                      ((__STATE__) == TIM_OCFAST_ENABLE))
1290
1291#define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OUTPUTSTATE_DISABLE) || \
1292                                    ((STATE) == TIM_OUTPUTSTATE_ENABLE))
1293
1294#define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OUTPUTNSTATE_DISABLE) || \
1295                                     ((STATE) == TIM_OUTPUTNSTATE_ENABLE))
1296
1297#define IS_TIM_OC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \
1298                                          ((__POLARITY__) == TIM_OCPOLARITY_LOW))
1299
1300#define IS_TIM_OCN_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCNPOLARITY_HIGH) || \
1301                                           ((__POLARITY__) == TIM_OCNPOLARITY_LOW))
1302
1303#define IS_TIM_OCIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCIDLESTATE_SET) || \
1304                                        ((__STATE__) == TIM_OCIDLESTATE_RESET))
1305
1306#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \
1307                                         ((__STATE__) == TIM_OCNIDLESTATE_RESET))
1308
1309#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING)   || \
1310                                          ((__POLARITY__) == TIM_ICPOLARITY_FALLING)  || \
1311                                          ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
1312
1313#define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \
1314                                            ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \
1315                                            ((__SELECTION__) == TIM_ICSELECTION_TRC))
1316
1317#define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \
1318                                            ((__PRESCALER__) == TIM_ICPSC_DIV2) || \
1319                                            ((__PRESCALER__) == TIM_ICPSC_DIV4) || \
1320                                            ((__PRESCALER__) == TIM_ICPSC_DIV8))
1321
1322#define IS_TIM_OPM_MODE(__MODE__) (((__MODE__) == TIM_OPMODE_SINGLE) || \
1323                                   ((__MODE__) == TIM_OPMODE_REPETITIVE))
1324
1325#define IS_TIM_ENCODER_MODE(__MODE__) (((__MODE__) == TIM_ENCODERMODE_TI1) || \
1326                                       ((__MODE__) == TIM_ENCODERMODE_TI2) || \
1327                                       ((__MODE__) == TIM_ENCODERMODE_TI12))
1328
1329#define IS_TIM_IT(__IT__) ((((__IT__) & 0xFFFFFF00) == 0x00000000) && ((__IT__) != 0x00000000))
1330
1331
1332#define IS_TIM_GET_IT(__IT__) (((__IT__) == TIM_IT_UPDATE)  || \
1333                               ((__IT__) == TIM_IT_CC1)     || \
1334                               ((__IT__) == TIM_IT_CC2)     || \
1335                               ((__IT__) == TIM_IT_CC3)     || \
1336                               ((__IT__) == TIM_IT_CC4)     || \
1337                               ((__IT__) == TIM_IT_COM)     || \
1338                               ((__IT__) == TIM_IT_TRIGGER) || \
1339                               ((__IT__) == TIM_IT_BREAK))
1340
1341#define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFF80FF) == 0x00000000) && ((__SOURCE__) != 0x00000000))
1342
1343#define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFE00) == 0x00000000) && ((__SOURCE__) != 0x00000000))
1344
1345#define IS_TIM_FLAG(__FLAG__) (((__FLAG__) == TIM_FLAG_UPDATE) || \
1346                               ((__FLAG__) == TIM_FLAG_CC1)     || \
1347                               ((__FLAG__) == TIM_FLAG_CC2)     || \
1348                               ((__FLAG__) == TIM_FLAG_CC3)     || \
1349                               ((__FLAG__) == TIM_FLAG_CC4)     || \
1350                               ((__FLAG__) == TIM_FLAG_COM)     || \
1351                               ((__FLAG__) == TIM_FLAG_TRIGGER) || \
1352                               ((__FLAG__) == TIM_FLAG_BREAK)   || \
1353                               ((__FLAG__) == TIM_FLAG_BREAK2)  || \
1354                               ((__FLAG__) == TIM_FLAG_CC1OF)   || \
1355                               ((__FLAG__) == TIM_FLAG_CC2OF)   || \
1356                               ((__FLAG__) == TIM_FLAG_CC3OF)   || \
1357                               ((__FLAG__) == TIM_FLAG_CC4OF))
1358
1359#define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \
1360                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \
1361                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0)     || \
1362                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1)     || \
1363                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2)     || \
1364                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3)     || \
1365                                       ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED)    || \
1366                                       ((__CLOCK__) == TIM_CLOCKSOURCE_TI1)      || \
1367                                       ((__CLOCK__) == TIM_CLOCKSOURCE_TI2)      || \
1368                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1))
1369
1370#define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED)    || \
1371                                        ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \
1372                                        ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING)      || \
1373                                        ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING)     || \
1374                                        ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE))
1375
1376#define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \
1377                                              ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \
1378                                              ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \
1379                                              ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8))
1380
1381#define IS_TIM_CLOCKFILTER(__ICFILTER__)      ((__ICFILTER__) <= 0xF)
1382
1383#define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__)   (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \
1384                                                    ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED))
1385
1386#define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__)   (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \
1387                                                 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \
1388                                                 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \
1389                                                 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8))
1390
1391#define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xF)
1392
1393#define IS_TIM_OSSR_STATE(__STATE__) (((__STATE__) == TIM_OSSR_ENABLE) || \
1394                                      ((__STATE__) == TIM_OSSR_DISABLE))
1395
1396#define IS_TIM_OSSI_STATE(__STATE__) (((__STATE__) == TIM_OSSI_ENABLE) || \
1397                                      ((__STATE__) == TIM_OSSI_DISABLE))
1398
1399#define IS_TIM_LOCK_LEVEL(__LEVEL__) (((__LEVEL__) == TIM_LOCKLEVEL_OFF) || \
1400                                      ((__LEVEL__) == TIM_LOCKLEVEL_1) || \
1401                                      ((__LEVEL__) == TIM_LOCKLEVEL_2) || \
1402                                      ((__LEVEL__) == TIM_LOCKLEVEL_3))
1403
1404#define IS_TIM_BREAK_STATE(__STATE__) (((__STATE__) == TIM_BREAK_ENABLE) || \
1405                                       ((__STATE__) == TIM_BREAK_DISABLE))
1406
1407#define IS_TIM_BREAK_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKPOLARITY_LOW) || \
1408                                             ((__POLARITY__) == TIM_BREAKPOLARITY_HIGH))
1409
1410#define IS_TIM_AUTOMATIC_OUTPUT_STATE(__STATE__) (((__STATE__) == TIM_AUTOMATICOUTPUT_ENABLE) || \
1411                                                  ((__STATE__) == TIM_AUTOMATICOUTPUT_DISABLE))
1412
1413#define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET) || \
1414                                        ((__SOURCE__) == TIM_TRGO_ENABLE) || \
1415                                        ((__SOURCE__) == TIM_TRGO_UPDATE) || \
1416                                        ((__SOURCE__) == TIM_TRGO_OC1) || \
1417                                        ((__SOURCE__) == TIM_TRGO_OC1REF) || \
1418                                        ((__SOURCE__) == TIM_TRGO_OC2REF) || \
1419                                        ((__SOURCE__) == TIM_TRGO_OC3REF) || \
1420                                        ((__SOURCE__) == TIM_TRGO_OC4REF))
1421
1422#define IS_TIM_MSM_STATE(__STATE__) (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \
1423                                     ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE))
1424
1425#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \
1426                                                 ((__SELECTION__) == TIM_TS_ITR1) || \
1427                                                 ((__SELECTION__) == TIM_TS_ITR2) || \
1428                                                 ((__SELECTION__) == TIM_TS_ITR3) || \
1429                                                 ((__SELECTION__) == TIM_TS_TI1F_ED) || \
1430                                                 ((__SELECTION__) == TIM_TS_TI1FP1) || \
1431                                                 ((__SELECTION__) == TIM_TS_TI2FP2) || \
1432                                                 ((__SELECTION__) == TIM_TS_ETRF))
1433
1434#define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
1435                                                      ((SELECTION) == TIM_TS_ITR1) || \
1436                                                      ((SELECTION) == TIM_TS_ITR2) || \
1437                                                      ((SELECTION) == TIM_TS_ITR3))
1438
1439#define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \
1440                                                               ((__SELECTION__) == TIM_TS_ITR1) || \
1441                                                               ((__SELECTION__) == TIM_TS_ITR2) || \
1442                                                               ((__SELECTION__) == TIM_TS_ITR3) || \
1443                                                               ((__SELECTION__) == TIM_TS_NONE))
1444
1445#define IS_TIM_TRIGGERPOLARITY(__POLARITY__)     (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED   ) || \
1446                                                  ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \
1447                                                  ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING     ) || \
1448                                                  ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING    ) || \
1449                                                  ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE   ))
1450
1451#define IS_TIM_TRIGGERPRESCALER(__PRESCALER__)  (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \
1452                                                 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \
1453                                                 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \
1454                                                 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8))
1455
1456#define IS_TIM_TRIGGERFILTER(__ICFILTER__)     ((__ICFILTER__) <= 0xF)
1457
1458#define IS_TIM_TI1SELECTION(__TI1SELECTION__)   (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \
1459                                                 ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION))
1460
1461#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
1462                                   ((__BASE__) == TIM_DMABASE_CR2) || \
1463                                   ((__BASE__) == TIM_DMABASE_SMCR) || \
1464                                   ((__BASE__) == TIM_DMABASE_DIER) || \
1465                                   ((__BASE__) == TIM_DMABASE_SR) || \
1466                                   ((__BASE__) == TIM_DMABASE_EGR) || \
1467                                   ((__BASE__) == TIM_DMABASE_CCMR1) || \
1468                                   ((__BASE__) == TIM_DMABASE_CCMR2) || \
1469                                   ((__BASE__) == TIM_DMABASE_CCER) || \
1470                                   ((__BASE__) == TIM_DMABASE_CNT) || \
1471                                   ((__BASE__) == TIM_DMABASE_PSC) || \
1472                                   ((__BASE__) == TIM_DMABASE_ARR) || \
1473                                   ((__BASE__) == TIM_DMABASE_RCR) || \
1474                                   ((__BASE__) == TIM_DMABASE_CCR1) || \
1475                                   ((__BASE__) == TIM_DMABASE_CCR2) || \
1476                                   ((__BASE__) == TIM_DMABASE_CCR3) || \
1477                                   ((__BASE__) == TIM_DMABASE_CCR4) || \
1478                                   ((__BASE__) == TIM_DMABASE_BDTR) || \
1479                                   ((__BASE__) == TIM_DMABASE_DCR) || \
1480                                   ((__BASE__) == TIM_DMABASE_OR))
1481
1482#define IS_TIM_DMA_LENGTH(__LENGTH__) (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER) || \
1483                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS) || \
1484                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS) || \
1485                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS) || \
1486                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS) || \
1487                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS) || \
1488                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS) || \
1489                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS) || \
1490                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS) || \
1491                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \
1492                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \
1493                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \
1494                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \
1495                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \
1496                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \
1497                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \
1498                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \
1499                                       ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS))
1500
1501#define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF)
1502
1503
1504/**
1505  * @}
1506  */
1507
1508/**
1509  * @}
1510  */
1511
1512/* Private functions ---------------------------------------------------------*/
1513/** @defgroup TIM_Private_Functions TIM Private Functions
1514  * @{
1515  */
1516void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
1517void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
1518void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
1519void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
1520void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
1521void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
1522void TIM_ETR_SetConfig(TIM_TypeDef* TIMx, uint32_t TIM_ExtTRGPrescaler, uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter);
1523
1524void HAL_TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma);
1525void HAL_TIM_DMAError(DMA_HandleTypeDef *hdma);
1526void HAL_TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma);
1527void TIM_CCxChannelCmd(TIM_TypeDef* TIMx, uint32_t Channel, uint32_t ChannelState);
1528/**
1529  * @}
1530  */
1531
1532/**
1533  * @}
1534  */
1535
1536/**
1537  * @}
1538  */
1539
1540#ifdef __cplusplus
1541}
1542#endif
1543
1544#endif /* __STM32F7xx_HAL_TIM_H */
1545
1546/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Note: See TracBrowser for help on using the repository browser.