Subversion Repositories LedShow

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f1xx_hal_tim_ex.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of TIM HAL Extension module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
10
  *
11
  * Redistribution and use in source and binary forms, with or without modification,
12
  * are permitted provided that the following conditions are met:
13
  *   1. Redistributions of source code must retain the above copyright notice,
14
  *      this list of conditions and the following disclaimer.
15
  *   2. Redistributions in binary form must reproduce the above copyright notice,
16
  *      this list of conditions and the following disclaimer in the documentation
17
  *      and/or other materials provided with the distribution.
18
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
19
  *      may be used to endorse or promote products derived from this software
20
  *      without specific prior written permission.
21
  *
22
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
  *
33
  ******************************************************************************
34
  */
35
 
36
/* Define to prevent recursive inclusion -------------------------------------*/
37
#ifndef __STM32F1xx_HAL_TIM_EX_H
38
#define __STM32F1xx_HAL_TIM_EX_H
39
 
40
#ifdef __cplusplus
41
 extern "C" {
42
#endif
43
 
44
/* Includes ------------------------------------------------------------------*/
45
#include "stm32f1xx_hal_def.h"
46
 
47
/** @addtogroup STM32F1xx_HAL_Driver
48
  * @{
49
  */
50
 
51
/** @addtogroup TIMEx
52
  * @{
53
  */
54
 
55
/* Exported types ------------------------------------------------------------*/
56
/** @defgroup TIMEx_Exported_Types TIMEx Exported Types
57
  * @{
58
  */
59
 
60
 
61
/**
62
  * @brief  TIM Hall sensor Configuration Structure definition  
63
  */
64
 
65
typedef struct
66
{
67
 
68
  uint32_t IC1Polarity;            /*!< Specifies the active edge of the input signal.
69
                                        This parameter can be a value of @ref TIM_Input_Capture_Polarity */
70
 
71
  uint32_t IC1Prescaler;        /*!< Specifies the Input Capture Prescaler.
72
                                     This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
73
 
74
  uint32_t IC1Filter;           /*!< Specifies the input capture filter.
75
                                     This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */  
76
  uint32_t Commutation_Delay;  /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
77
                                    This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */
78
} TIM_HallSensor_InitTypeDef;
79
 
80
 
81
#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
82
    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
83
    defined (STM32F105xC) || defined (STM32F107xC)
84
 
85
/**
86
  * @brief  TIM Break and Dead time configuration Structure definition  
87
  */
88
typedef struct
89
{
90
  uint32_t OffStateRunMode;       /*!< TIM off state in run mode
91
                                     This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */
92
  uint32_t OffStateIDLEMode;      /*!< TIM off state in IDLE mode
93
                                     This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */
94
  uint32_t LockLevel;             /*!< TIM Lock level
95
                                     This parameter can be a value of @ref TIM_Lock_level */                            
96
  uint32_t DeadTime;              /*!< TIM dead Time
97
                                     This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */
98
  uint32_t BreakState;            /*!< TIM Break State
99
                                     This parameter can be a value of @ref TIM_Break_Input_enable_disable */
100
  uint32_t BreakPolarity;         /*!< TIM Break input polarity
101
                                     This parameter can be a value of @ref TIM_Break_Polarity */
102
  uint32_t AutomaticOutput;       /*!< TIM Automatic Output Enable state
103
                                     This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */          
104
} TIM_BreakDeadTimeConfigTypeDef;
105
 
106
#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
107
       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
108
       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
109
 
110
/**
111
  * @brief  TIM Master configuration Structure definition  
112
  */
113
typedef struct {
114
  uint32_t  MasterOutputTrigger;   /*!< Trigger output (TRGO) selection
115
                                      This parameter can be a value of @ref TIM_Master_Mode_Selection */
116
  uint32_t  MasterSlaveMode;       /*!< Master/slave mode selection
117
                                      This parameter can be a value of @ref TIM_Master_Slave_Mode */
118
}TIM_MasterConfigTypeDef;
119
 
120
/**
121
  * @}
122
  */
123
 
124
/* Exported constants --------------------------------------------------------*/
125
#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
126
    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
127
    defined (STM32F105xC) || defined (STM32F107xC)
128
/** @defgroup TIMEx_Exported_Constants TIMEx Exported Constants
129
  * @{
130
  */
131
 
132
/** @defgroup TIMEx_Clock_Filter TIMEx Clock Filter
133
  * @{
134
  */
135
#define IS_TIM_DEADTIME(DEADTIME)      ((DEADTIME) <= 0xFFU)          /*!< BreakDead Time */
136
/**
137
  * @}
138
  */
139
 
140
/**
141
  * @}
142
  */
143
#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
144
       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
145
       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
146
 
147
/* Exported macro ------------------------------------------------------------*/
148
/**
149
  * @brief  Sets the TIM Output compare preload.
150
  * @param  __HANDLE__: TIM handle.
151
  * @param  __CHANNEL__: TIM Channels to be configured.
152
  *          This parameter can be one of the following values:
153
  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
154
  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
155
  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
156
  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
157
  * @retval None
158
  */
159
#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__)    \
160
        (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
161
         ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
162
         ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
163
         ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE))
164
 
165
/**
166
  * @brief  Resets the TIM Output compare preload.
167
  * @param  __HANDLE__: TIM handle.
168
  * @param  __CHANNEL__: TIM Channels to be configured.
169
  *          This parameter can be one of the following values:
170
  *            @arg TIM_CHANNEL_1: TIM Channel 1 selected
171
  *            @arg TIM_CHANNEL_2: TIM Channel 2 selected
172
  *            @arg TIM_CHANNEL_3: TIM Channel 3 selected
173
  *            @arg TIM_CHANNEL_4: TIM Channel 4 selected
174
  * @retval None
175
  */
176
#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__)    \
177
        (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC1PE) :\
178
         ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC2PE) :\
179
         ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC3PE) :\
180
         ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC4PE))
181
 
182
/* Exported functions --------------------------------------------------------*/
183
/** @addtogroup TIMEx_Exported_Functions
184
  * @{
185
  */
186
 
187
/** @addtogroup TIMEx_Exported_Functions_Group1
188
  * @{
189
 */
190
/* Timer Hall Sensor functions  **********************************************/
191
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef* sConfig);
192
HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);
193
 
194
void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim);
195
void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim);
196
 
197
 /* Blocking mode: Polling */
198
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim);
199
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim);
200
/* Non-Blocking mode: Interrupt */
201
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim);
202
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim);
203
/* Non-Blocking mode: DMA */
204
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length);
205
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim);
206
/**
207
  * @}
208
  */
209
 
210
#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
211
    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
212
    defined (STM32F105xC) || defined (STM32F107xC)
213
 
214
/** @addtogroup TIMEx_Exported_Functions_Group2
215
 * @{
216
 */
217
/* Timer Complementary Output Compare functions  *****************************/
218
/* Blocking mode: Polling */
219
HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
220
HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
221
 
222
/* Non-Blocking mode: Interrupt */
223
HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
224
HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
225
 
226
/* Non-Blocking mode: DMA */
227
HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
228
HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
229
/**
230
  * @}
231
  */
232
 
233
/** @addtogroup TIMEx_Exported_Functions_Group3
234
 * @{
235
 */
236
/* Timer Complementary PWM functions  ****************************************/
237
/* Blocking mode: Polling */
238
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
239
HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
240
 
241
/* Non-Blocking mode: Interrupt */
242
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
243
HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
244
/* Non-Blocking mode: DMA */
245
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
246
HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
247
/**
248
  * @}
249
  */
250
 
251
/** @addtogroup TIMEx_Exported_Functions_Group4
252
 * @{
253
 */
254
/* Timer Complementary One Pulse functions  **********************************/
255
/* Blocking mode: Polling */
256
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
257
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
258
 
259
/* Non-Blocking mode: Interrupt */
260
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
261
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
262
/**
263
  * @}
264
  */
265
#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
266
       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
267
       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
268
 
269
/** @addtogroup TIMEx_Exported_Functions_Group5
270
 * @{
271
 */
272
/* Extended Control functions  ************************************************/
273
#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
274
    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
275
    defined (STM32F105xC) || defined (STM32F107xC)
276
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource);
277
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_IT(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource);
278
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutationEvent_DMA(TIM_HandleTypeDef *htim, uint32_t  InputTrigger, uint32_t  CommutationSource);
279
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
280
#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
281
       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
282
       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
283
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef * sMasterConfig);
284
/**
285
  * @}
286
  */
287
 
288
/** @addtogroup TIMEx_Exported_Functions_Group6
289
  * @{
290
  */
291
/* Extension Callback *********************************************************/
292
void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef *htim);
293
void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim);
294
/**
295
  * @}
296
  */
297
 
298
#if defined (STM32F100xB) || defined (STM32F100xE) ||                                                   \
299
    defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F103xE) || defined (STM32F103xG) || \
300
    defined (STM32F105xC) || defined (STM32F107xC)
301
/** @addtogroup TIMEx_Exported_Functions_Group7
302
  * @{
303
  */
304
/* Extension Peripheral State functions  **************************************/
305
HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim);
306
/**
307
  * @}
308
  */
309
#endif /* defined(STM32F100xB) || defined(STM32F100xE) ||                                                 */
310
       /* defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || */
311
       /* defined(STM32F105xC) || defined(STM32F107xC)                                                    */
312
 
313
/**
314
  * @}
315
  */
316
/* End of exported functions -------------------------------------------------*/
317
 
318
/* Private functions----------------------------------------------------------*/
319
/** @defgroup TIMEx_Private_Functions TIMEx Private Functions
320
* @{
321
*/
322
void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
323
/**
324
* @}
325
*/
326
/* End of private functions --------------------------------------------------*/
327
 
328
/**
329
  * @}
330
  */
331
 
332
/**
333
  * @}
334
  */
335
 
336
#ifdef __cplusplus
337
}
338
#endif
339
 
340
 
341
#endif /* __STM32F1xx_HAL_TIM_EX_H */
342
 
343
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/