1 /** 2 ****************************************************************************** 3 * @file stm32l0xx_hal_tim.h 4 * @author MCD Application Team 5 * @brief Header file of TIM HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2016 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32L0xx_HAL_TIM_H 21 #define STM32L0xx_HAL_TIM_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32l0xx_hal_def.h" 29 30 /** @addtogroup STM32L0xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @addtogroup TIM 35 * @{ 36 */ 37 38 /* Exported types ------------------------------------------------------------*/ 39 /** @defgroup TIM_Exported_Types TIM Exported Types 40 * @{ 41 */ 42 43 /** 44 * @brief TIM Time base Configuration Structure definition 45 */ 46 typedef struct 47 { 48 uint32_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. 49 This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ 50 51 uint32_t CounterMode; /*!< Specifies the counter mode. 52 This parameter can be a value of @ref TIM_Counter_Mode */ 53 54 uint32_t Period; /*!< Specifies the period value to be loaded into the active 55 Auto-Reload Register at the next update event. 56 This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ 57 58 uint32_t ClockDivision; /*!< Specifies the clock division. 59 This parameter can be a value of @ref TIM_ClockDivision */ 60 61 uint32_t AutoReloadPreload; /*!< Specifies the auto-reload preload. 62 This parameter can be a value of @ref TIM_AutoReloadPreload */ 63 } TIM_Base_InitTypeDef; 64 65 /** 66 * @brief TIM Output Compare Configuration Structure definition 67 */ 68 typedef struct 69 { 70 uint32_t OCMode; /*!< Specifies the TIM mode. 71 This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ 72 73 uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. 74 This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ 75 76 uint32_t OCPolarity; /*!< Specifies the output polarity. 77 This parameter can be a value of @ref TIM_Output_Compare_Polarity */ 78 79 uint32_t OCFastMode; /*!< Specifies the Fast mode state. 80 This parameter can be a value of @ref TIM_Output_Fast_State 81 @note This parameter is valid only in PWM1 and PWM2 mode. */ 82 } TIM_OC_InitTypeDef; 83 84 /** 85 * @brief TIM One Pulse Mode Configuration Structure definition 86 */ 87 typedef struct 88 { 89 uint32_t OCMode; /*!< Specifies the TIM mode. 90 This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ 91 92 uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. 93 This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ 94 95 uint32_t OCPolarity; /*!< Specifies the output polarity. 96 This parameter can be a value of @ref TIM_Output_Compare_Polarity */ 97 98 uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. 99 This parameter can be a value of @ref TIM_Input_Capture_Polarity */ 100 101 uint32_t ICSelection; /*!< Specifies the input. 102 This parameter can be a value of @ref TIM_Input_Capture_Selection */ 103 104 uint32_t ICFilter; /*!< Specifies the input capture filter. 105 This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ 106 } TIM_OnePulse_InitTypeDef; 107 108 /** 109 * @brief TIM Input Capture Configuration Structure definition 110 */ 111 typedef struct 112 { 113 uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. 114 This parameter can be a value of @ref TIM_Input_Capture_Polarity */ 115 116 uint32_t ICSelection; /*!< Specifies the input. 117 This parameter can be a value of @ref TIM_Input_Capture_Selection */ 118 119 uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. 120 This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ 121 122 uint32_t ICFilter; /*!< Specifies the input capture filter. 123 This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ 124 } TIM_IC_InitTypeDef; 125 126 /** 127 * @brief TIM Encoder Configuration Structure definition 128 */ 129 typedef struct 130 { 131 uint32_t EncoderMode; /*!< Specifies the active edge of the input signal. 132 This parameter can be a value of @ref TIM_Encoder_Mode */ 133 134 uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal. 135 This parameter can be a value of @ref TIM_Encoder_Input_Polarity */ 136 137 uint32_t IC1Selection; /*!< Specifies the input. 138 This parameter can be a value of @ref TIM_Input_Capture_Selection */ 139 140 uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler. 141 This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ 142 143 uint32_t IC1Filter; /*!< Specifies the input capture filter. 144 This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ 145 146 uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal. 147 This parameter can be a value of @ref TIM_Encoder_Input_Polarity */ 148 149 uint32_t IC2Selection; /*!< Specifies the input. 150 This parameter can be a value of @ref TIM_Input_Capture_Selection */ 151 152 uint32_t IC2Prescaler; /*!< Specifies the Input Capture Prescaler. 153 This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ 154 155 uint32_t IC2Filter; /*!< Specifies the input capture filter. 156 This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ 157 } TIM_Encoder_InitTypeDef; 158 159 /** 160 * @brief Clock Configuration Handle Structure definition 161 */ 162 typedef struct 163 { 164 uint32_t ClockSource; /*!< TIM clock sources 165 This parameter can be a value of @ref TIM_Clock_Source */ 166 uint32_t ClockPolarity; /*!< TIM clock polarity 167 This parameter can be a value of @ref TIM_Clock_Polarity */ 168 uint32_t ClockPrescaler; /*!< TIM clock prescaler 169 This parameter can be a value of @ref TIM_Clock_Prescaler */ 170 uint32_t ClockFilter; /*!< TIM clock filter 171 This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ 172 } TIM_ClockConfigTypeDef; 173 174 /** 175 * @brief TIM Clear Input Configuration Handle Structure definition 176 */ 177 typedef struct 178 { 179 uint32_t ClearInputState; /*!< TIM clear Input state 180 This parameter can be ENABLE or DISABLE */ 181 uint32_t ClearInputSource; /*!< TIM clear Input sources 182 This parameter can be a value of @ref TIM_ClearInput_Source */ 183 uint32_t ClearInputPolarity; /*!< TIM Clear Input polarity 184 This parameter can be a value of @ref TIM_ClearInput_Polarity */ 185 uint32_t ClearInputPrescaler; /*!< TIM Clear Input prescaler 186 This parameter must be 0: When OCRef clear feature is used with ETR source, 187 ETR prescaler must be off */ 188 uint32_t ClearInputFilter; /*!< TIM Clear Input filter 189 This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ 190 } TIM_ClearInputConfigTypeDef; 191 192 /** 193 * @brief TIM Master configuration Structure definition 194 */ 195 typedef struct 196 { 197 uint32_t MasterOutputTrigger; /*!< Trigger output (TRGO) selection 198 This parameter can be a value of @ref TIM_Master_Mode_Selection */ 199 uint32_t MasterSlaveMode; /*!< Master/slave mode selection 200 This parameter can be a value of @ref TIM_Master_Slave_Mode 201 @note When the Master/slave mode is enabled, the effect of 202 an event on the trigger input (TRGI) is delayed to allow a 203 perfect synchronization between the current timer and its 204 slaves (through TRGO). It is not mandatory in case of timer 205 synchronization mode. */ 206 } TIM_MasterConfigTypeDef; 207 208 /** 209 * @brief TIM Slave configuration Structure definition 210 */ 211 typedef struct 212 { 213 uint32_t SlaveMode; /*!< Slave mode selection 214 This parameter can be a value of @ref TIM_Slave_Mode */ 215 uint32_t InputTrigger; /*!< Input Trigger source 216 This parameter can be a value of @ref TIM_Trigger_Selection */ 217 uint32_t TriggerPolarity; /*!< Input Trigger polarity 218 This parameter can be a value of @ref TIM_Trigger_Polarity */ 219 uint32_t TriggerPrescaler; /*!< Input trigger prescaler 220 This parameter can be a value of @ref TIM_Trigger_Prescaler */ 221 uint32_t TriggerFilter; /*!< Input trigger filter 222 This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ 223 224 } TIM_SlaveConfigTypeDef; 225 226 /** 227 * @brief HAL State structures definition 228 */ 229 typedef enum 230 { 231 HAL_TIM_STATE_RESET = 0x00U, /*!< Peripheral not yet initialized or disabled */ 232 HAL_TIM_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */ 233 HAL_TIM_STATE_BUSY = 0x02U, /*!< An internal process is ongoing */ 234 HAL_TIM_STATE_TIMEOUT = 0x03U, /*!< Timeout state */ 235 HAL_TIM_STATE_ERROR = 0x04U /*!< Reception process is ongoing */ 236 } HAL_TIM_StateTypeDef; 237 238 /** 239 * @brief TIM Channel States definition 240 */ 241 typedef enum 242 { 243 HAL_TIM_CHANNEL_STATE_RESET = 0x00U, /*!< TIM Channel initial state */ 244 HAL_TIM_CHANNEL_STATE_READY = 0x01U, /*!< TIM Channel ready for use */ 245 HAL_TIM_CHANNEL_STATE_BUSY = 0x02U, /*!< An internal process is ongoing on the TIM channel */ 246 } HAL_TIM_ChannelStateTypeDef; 247 248 /** 249 * @brief DMA Burst States definition 250 */ 251 typedef enum 252 { 253 HAL_DMA_BURST_STATE_RESET = 0x00U, /*!< DMA Burst initial state */ 254 HAL_DMA_BURST_STATE_READY = 0x01U, /*!< DMA Burst ready for use */ 255 HAL_DMA_BURST_STATE_BUSY = 0x02U, /*!< Ongoing DMA Burst */ 256 } HAL_TIM_DMABurstStateTypeDef; 257 258 /** 259 * @brief HAL Active channel structures definition 260 */ 261 typedef enum 262 { 263 HAL_TIM_ACTIVE_CHANNEL_1 = 0x01U, /*!< The active channel is 1 */ 264 HAL_TIM_ACTIVE_CHANNEL_2 = 0x02U, /*!< The active channel is 2 */ 265 HAL_TIM_ACTIVE_CHANNEL_3 = 0x04U, /*!< The active channel is 3 */ 266 HAL_TIM_ACTIVE_CHANNEL_4 = 0x08U, /*!< The active channel is 4 */ 267 HAL_TIM_ACTIVE_CHANNEL_CLEARED = 0x00U /*!< All active channels cleared */ 268 } HAL_TIM_ActiveChannel; 269 270 /** 271 * @brief TIM Time Base Handle Structure definition 272 */ 273 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) 274 typedef struct __TIM_HandleTypeDef 275 #else 276 typedef struct 277 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ 278 { 279 TIM_TypeDef *Instance; /*!< Register base address */ 280 TIM_Base_InitTypeDef Init; /*!< TIM Time Base required parameters */ 281 HAL_TIM_ActiveChannel Channel; /*!< Active channel */ 282 DMA_HandleTypeDef *hdma[7]; /*!< DMA Handlers array 283 This array is accessed by a @ref DMA_Handle_index */ 284 HAL_LockTypeDef Lock; /*!< Locking object */ 285 __IO HAL_TIM_StateTypeDef State; /*!< TIM operation state */ 286 __IO HAL_TIM_ChannelStateTypeDef ChannelState[4]; /*!< TIM channel operation state */ 287 __IO HAL_TIM_DMABurstStateTypeDef DMABurstState; /*!< DMA burst operation state */ 288 289 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) 290 void (* Base_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp Init Callback */ 291 void (* Base_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp DeInit Callback */ 292 void (* IC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp Init Callback */ 293 void (* IC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp DeInit Callback */ 294 void (* OC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp Init Callback */ 295 void (* OC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp DeInit Callback */ 296 void (* PWM_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp Init Callback */ 297 void (* PWM_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp DeInit Callback */ 298 void (* OnePulse_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp Init Callback */ 299 void (* OnePulse_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp DeInit Callback */ 300 void (* Encoder_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp Init Callback */ 301 void (* Encoder_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp DeInit Callback */ 302 void (* PeriodElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed Callback */ 303 void (* PeriodElapsedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed half complete Callback */ 304 void (* TriggerCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger Callback */ 305 void (* TriggerHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger half complete Callback */ 306 void (* IC_CaptureCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture Callback */ 307 void (* IC_CaptureHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture half complete Callback */ 308 void (* OC_DelayElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Output Compare Delay Elapsed Callback */ 309 void (* PWM_PulseFinishedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished Callback */ 310 void (* PWM_PulseFinishedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished half complete Callback */ 311 void (* ErrorCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Error Callback */ 312 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ 313 } TIM_HandleTypeDef; 314 315 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) 316 /** 317 * @brief HAL TIM Callback ID enumeration definition 318 */ 319 typedef enum 320 { 321 HAL_TIM_BASE_MSPINIT_CB_ID = 0x00U /*!< TIM Base MspInit Callback ID */ 322 , HAL_TIM_BASE_MSPDEINIT_CB_ID = 0x01U /*!< TIM Base MspDeInit Callback ID */ 323 , HAL_TIM_IC_MSPINIT_CB_ID = 0x02U /*!< TIM IC MspInit Callback ID */ 324 , HAL_TIM_IC_MSPDEINIT_CB_ID = 0x03U /*!< TIM IC MspDeInit Callback ID */ 325 , HAL_TIM_OC_MSPINIT_CB_ID = 0x04U /*!< TIM OC MspInit Callback ID */ 326 , HAL_TIM_OC_MSPDEINIT_CB_ID = 0x05U /*!< TIM OC MspDeInit Callback ID */ 327 , HAL_TIM_PWM_MSPINIT_CB_ID = 0x06U /*!< TIM PWM MspInit Callback ID */ 328 , HAL_TIM_PWM_MSPDEINIT_CB_ID = 0x07U /*!< TIM PWM MspDeInit Callback ID */ 329 , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID = 0x08U /*!< TIM One Pulse MspInit Callback ID */ 330 , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID = 0x09U /*!< TIM One Pulse MspDeInit Callback ID */ 331 , HAL_TIM_ENCODER_MSPINIT_CB_ID = 0x0AU /*!< TIM Encoder MspInit Callback ID */ 332 , HAL_TIM_ENCODER_MSPDEINIT_CB_ID = 0x0BU /*!< TIM Encoder MspDeInit Callback ID */ 333 , HAL_TIM_PERIOD_ELAPSED_CB_ID = 0x0EU /*!< TIM Period Elapsed Callback ID */ 334 , HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID = 0x0FU /*!< TIM Period Elapsed half complete Callback ID */ 335 , HAL_TIM_TRIGGER_CB_ID = 0x10U /*!< TIM Trigger Callback ID */ 336 , HAL_TIM_TRIGGER_HALF_CB_ID = 0x11U /*!< TIM Trigger half complete Callback ID */ 337 338 , HAL_TIM_IC_CAPTURE_CB_ID = 0x12U /*!< TIM Input Capture Callback ID */ 339 , HAL_TIM_IC_CAPTURE_HALF_CB_ID = 0x13U /*!< TIM Input Capture half complete Callback ID */ 340 , HAL_TIM_OC_DELAY_ELAPSED_CB_ID = 0x14U /*!< TIM Output Compare Delay Elapsed Callback ID */ 341 , HAL_TIM_PWM_PULSE_FINISHED_CB_ID = 0x15U /*!< TIM PWM Pulse Finished Callback ID */ 342 , HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U /*!< TIM PWM Pulse Finished half complete Callback ID */ 343 , HAL_TIM_ERROR_CB_ID = 0x17U /*!< TIM Error Callback ID */ 344 } HAL_TIM_CallbackIDTypeDef; 345 346 /** 347 * @brief HAL TIM Callback pointer definition 348 */ 349 typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to the TIM callback function */ 350 351 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ 352 353 /** 354 * @} 355 */ 356 /* End of exported types -----------------------------------------------------*/ 357 358 /* Exported constants --------------------------------------------------------*/ 359 /** @defgroup TIM_Exported_Constants TIM Exported Constants 360 * @{ 361 */ 362 363 /** @defgroup TIM_ClearInput_Source TIM Clear Input Source 364 * @{ 365 */ 366 #define TIM_CLEARINPUTSOURCE_NONE 0x00000000U /*!< OCREF_CLR is disabled */ 367 #define TIM_CLEARINPUTSOURCE_ETR 0x00000001U /*!< OCREF_CLR is connected to ETRF input */ 368 /** 369 * @} 370 */ 371 372 /** @defgroup TIM_DMA_Base_address TIM DMA Base Address 373 * @{ 374 */ 375 #define TIM_DMABASE_CR1 0x00000000U 376 #define TIM_DMABASE_CR2 0x00000001U 377 #define TIM_DMABASE_SMCR 0x00000002U 378 #define TIM_DMABASE_DIER 0x00000003U 379 #define TIM_DMABASE_SR 0x00000004U 380 #define TIM_DMABASE_EGR 0x00000005U 381 #define TIM_DMABASE_CCMR1 0x00000006U 382 #define TIM_DMABASE_CCMR2 0x00000007U 383 #define TIM_DMABASE_CCER 0x00000008U 384 #define TIM_DMABASE_CNT 0x00000009U 385 #define TIM_DMABASE_PSC 0x0000000AU 386 #define TIM_DMABASE_ARR 0x0000000BU 387 #define TIM_DMABASE_CCR1 0x0000000DU 388 #define TIM_DMABASE_CCR2 0x0000000EU 389 #define TIM_DMABASE_CCR3 0x0000000FU 390 #define TIM_DMABASE_CCR4 0x00000010U 391 #define TIM_DMABASE_DCR 0x00000012U 392 #define TIM_DMABASE_DMAR 0x00000013U 393 #define TIM_DMABASE_OR 0x00000014U 394 /** 395 * @} 396 */ 397 398 /** @defgroup TIM_Event_Source TIM Event Source 399 * @{ 400 */ 401 #define TIM_EVENTSOURCE_UPDATE TIM_EGR_UG /*!< Reinitialize the counter and generates an update of the registers */ 402 #define TIM_EVENTSOURCE_CC1 TIM_EGR_CC1G /*!< A capture/compare event is generated on channel 1 */ 403 #define TIM_EVENTSOURCE_CC2 TIM_EGR_CC2G /*!< A capture/compare event is generated on channel 2 */ 404 #define TIM_EVENTSOURCE_CC3 TIM_EGR_CC3G /*!< A capture/compare event is generated on channel 3 */ 405 #define TIM_EVENTSOURCE_CC4 TIM_EGR_CC4G /*!< A capture/compare event is generated on channel 4 */ 406 #define TIM_EVENTSOURCE_TRIGGER TIM_EGR_TG /*!< A trigger event is generated */ 407 /** 408 * @} 409 */ 410 411 /** @defgroup TIM_Input_Channel_Polarity TIM Input Channel polarity 412 * @{ 413 */ 414 #define TIM_INPUTCHANNELPOLARITY_RISING 0x00000000U /*!< Polarity for TIx source */ 415 #define TIM_INPUTCHANNELPOLARITY_FALLING TIM_CCER_CC1P /*!< Polarity for TIx source */ 416 #define TIM_INPUTCHANNELPOLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP) /*!< Polarity for TIx source */ 417 /** 418 * @} 419 */ 420 421 /** @defgroup TIM_ETR_Polarity TIM ETR Polarity 422 * @{ 423 */ 424 #define TIM_ETRPOLARITY_INVERTED TIM_SMCR_ETP /*!< Polarity for ETR source */ 425 #define TIM_ETRPOLARITY_NONINVERTED 0x00000000U /*!< Polarity for ETR source */ 426 /** 427 * @} 428 */ 429 430 /** @defgroup TIM_ETR_Prescaler TIM ETR Prescaler 431 * @{ 432 */ 433 #define TIM_ETRPRESCALER_DIV1 0x00000000U /*!< No prescaler is used */ 434 #define TIM_ETRPRESCALER_DIV2 TIM_SMCR_ETPS_0 /*!< ETR input source is divided by 2 */ 435 #define TIM_ETRPRESCALER_DIV4 TIM_SMCR_ETPS_1 /*!< ETR input source is divided by 4 */ 436 #define TIM_ETRPRESCALER_DIV8 TIM_SMCR_ETPS /*!< ETR input source is divided by 8 */ 437 /** 438 * @} 439 */ 440 441 /** @defgroup TIM_Counter_Mode TIM Counter Mode 442 * @{ 443 */ 444 #define TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as up-counter */ 445 #define TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as down-counter */ 446 #define TIM_COUNTERMODE_CENTERALIGNED1 TIM_CR1_CMS_0 /*!< Center-aligned mode 1 */ 447 #define TIM_COUNTERMODE_CENTERALIGNED2 TIM_CR1_CMS_1 /*!< Center-aligned mode 2 */ 448 #define TIM_COUNTERMODE_CENTERALIGNED3 TIM_CR1_CMS /*!< Center-aligned mode 3 */ 449 /** 450 * @} 451 */ 452 453 /** @defgroup TIM_ClockDivision TIM Clock Division 454 * @{ 455 */ 456 #define TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< Clock division: tDTS=tCK_INT */ 457 #define TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< Clock division: tDTS=2*tCK_INT */ 458 #define TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< Clock division: tDTS=4*tCK_INT */ 459 /** 460 * @} 461 */ 462 463 /** @defgroup TIM_Output_Compare_State TIM Output Compare State 464 * @{ 465 */ 466 #define TIM_OUTPUTSTATE_DISABLE 0x00000000U /*!< Capture/Compare 1 output disabled */ 467 #define TIM_OUTPUTSTATE_ENABLE TIM_CCER_CC1E /*!< Capture/Compare 1 output enabled */ 468 /** 469 * @} 470 */ 471 472 /** @defgroup TIM_AutoReloadPreload TIM Auto-Reload Preload 473 * @{ 474 */ 475 #define TIM_AUTORELOAD_PRELOAD_DISABLE 0x00000000U /*!< TIMx_ARR register is not buffered */ 476 #define TIM_AUTORELOAD_PRELOAD_ENABLE TIM_CR1_ARPE /*!< TIMx_ARR register is buffered */ 477 478 /** 479 * @} 480 */ 481 482 /** @defgroup TIM_Output_Fast_State TIM Output Fast State 483 * @{ 484 */ 485 #define TIM_OCFAST_DISABLE 0x00000000U /*!< Output Compare fast disable */ 486 #define TIM_OCFAST_ENABLE TIM_CCMR1_OC1FE /*!< Output Compare fast enable */ 487 /** 488 * @} 489 */ 490 491 /** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State 492 * @{ 493 */ 494 #define TIM_OUTPUTNSTATE_DISABLE 0x00000000U /*!< OCxN is disabled */ 495 #define TIM_OUTPUTNSTATE_ENABLE TIM_CCER_CC1NE /*!< OCxN is enabled */ 496 /** 497 * @} 498 */ 499 500 /** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity 501 * @{ 502 */ 503 #define TIM_OCPOLARITY_HIGH 0x00000000U /*!< Capture/Compare output polarity */ 504 #define TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< Capture/Compare output polarity */ 505 /** 506 * @} 507 */ 508 509 /** @defgroup TIM_Input_Capture_Polarity TIM Input Capture Polarity 510 * @{ 511 */ 512 #define TIM_ICPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Capture triggered by rising edge on timer input */ 513 #define TIM_ICPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Capture triggered by falling edge on timer input */ 514 #define TIM_ICPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Capture triggered by both rising and falling edges on timer input*/ 515 /** 516 * @} 517 */ 518 519 /** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity 520 * @{ 521 */ 522 #define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Encoder input with rising edge polarity */ 523 #define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Encoder input with falling edge polarity */ 524 /** 525 * @} 526 */ 527 528 /** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection 529 * @{ 530 */ 531 #define TIM_ICSELECTION_DIRECTTI TIM_CCMR1_CC1S_0 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC1, IC2, IC3 or IC4, respectively */ 532 #define TIM_ICSELECTION_INDIRECTTI TIM_CCMR1_CC1S_1 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC2, IC1, IC4 or IC3, respectively */ 533 #define TIM_ICSELECTION_TRC TIM_CCMR1_CC1S /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */ 534 /** 535 * @} 536 */ 537 538 /** @defgroup TIM_Input_Capture_Prescaler TIM Input Capture Prescaler 539 * @{ 540 */ 541 #define TIM_ICPSC_DIV1 0x00000000U /*!< Capture performed each time an edge is detected on the capture input */ 542 #define TIM_ICPSC_DIV2 TIM_CCMR1_IC1PSC_0 /*!< Capture performed once every 2 events */ 543 #define TIM_ICPSC_DIV4 TIM_CCMR1_IC1PSC_1 /*!< Capture performed once every 4 events */ 544 #define TIM_ICPSC_DIV8 TIM_CCMR1_IC1PSC /*!< Capture performed once every 8 events */ 545 /** 546 * @} 547 */ 548 549 /** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode 550 * @{ 551 */ 552 #define TIM_OPMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */ 553 #define TIM_OPMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */ 554 /** 555 * @} 556 */ 557 558 /** @defgroup TIM_Encoder_Mode TIM Encoder Mode 559 * @{ 560 */ 561 #define TIM_ENCODERMODE_TI1 TIM_SMCR_SMS_0 /*!< Quadrature encoder mode 1, x2 mode, counts up/down on TI1FP1 edge depending on TI2FP2 level */ 562 #define TIM_ENCODERMODE_TI2 TIM_SMCR_SMS_1 /*!< Quadrature encoder mode 2, x2 mode, counts up/down on TI2FP2 edge depending on TI1FP1 level. */ 563 #define TIM_ENCODERMODE_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Quadrature encoder mode 3, x4 mode, counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. */ 564 /** 565 * @} 566 */ 567 568 /** @defgroup TIM_Interrupt_definition TIM interrupt Definition 569 * @{ 570 */ 571 #define TIM_IT_UPDATE TIM_DIER_UIE /*!< Update interrupt */ 572 #define TIM_IT_CC1 TIM_DIER_CC1IE /*!< Capture/Compare 1 interrupt */ 573 #define TIM_IT_CC2 TIM_DIER_CC2IE /*!< Capture/Compare 2 interrupt */ 574 #define TIM_IT_CC3 TIM_DIER_CC3IE /*!< Capture/Compare 3 interrupt */ 575 #define TIM_IT_CC4 TIM_DIER_CC4IE /*!< Capture/Compare 4 interrupt */ 576 #define TIM_IT_TRIGGER TIM_DIER_TIE /*!< Trigger interrupt */ 577 /** 578 * @} 579 */ 580 581 /** @defgroup TIM_DMA_sources TIM DMA Sources 582 * @{ 583 */ 584 #define TIM_DMA_UPDATE TIM_DIER_UDE /*!< DMA request is triggered by the update event */ 585 #define TIM_DMA_CC1 TIM_DIER_CC1DE /*!< DMA request is triggered by the capture/compare macth 1 event */ 586 #define TIM_DMA_CC2 TIM_DIER_CC2DE /*!< DMA request is triggered by the capture/compare macth 2 event event */ 587 #define TIM_DMA_CC3 TIM_DIER_CC3DE /*!< DMA request is triggered by the capture/compare macth 3 event event */ 588 #define TIM_DMA_CC4 TIM_DIER_CC4DE /*!< DMA request is triggered by the capture/compare macth 4 event event */ 589 #define TIM_DMA_TRIGGER TIM_DIER_TDE /*!< DMA request is triggered by the trigger event */ 590 /** 591 * @} 592 */ 593 594 /** @defgroup TIM_CC_DMA_Request CCx DMA request selection 595 * @{ 596 */ 597 #define TIM_CCDMAREQUEST_CC 0x00000000U /*!< CCx DMA request sent when capture or compare match event occurs */ 598 #define TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS /*!< CCx DMA requests sent when update event occurs */ 599 /** 600 * @} 601 */ 602 603 /** @defgroup TIM_Flag_definition TIM Flag Definition 604 * @{ 605 */ 606 #define TIM_FLAG_UPDATE TIM_SR_UIF /*!< Update interrupt flag */ 607 #define TIM_FLAG_CC1 TIM_SR_CC1IF /*!< Capture/Compare 1 interrupt flag */ 608 #define TIM_FLAG_CC2 TIM_SR_CC2IF /*!< Capture/Compare 2 interrupt flag */ 609 #define TIM_FLAG_CC3 TIM_SR_CC3IF /*!< Capture/Compare 3 interrupt flag */ 610 #define TIM_FLAG_CC4 TIM_SR_CC4IF /*!< Capture/Compare 4 interrupt flag */ 611 #define TIM_FLAG_TRIGGER TIM_SR_TIF /*!< Trigger interrupt flag */ 612 #define TIM_FLAG_CC1OF TIM_SR_CC1OF /*!< Capture 1 overcapture flag */ 613 #define TIM_FLAG_CC2OF TIM_SR_CC2OF /*!< Capture 2 overcapture flag */ 614 #define TIM_FLAG_CC3OF TIM_SR_CC3OF /*!< Capture 3 overcapture flag */ 615 #define TIM_FLAG_CC4OF TIM_SR_CC4OF /*!< Capture 4 overcapture flag */ 616 /** 617 * @} 618 */ 619 620 /** @defgroup TIM_Channel TIM Channel 621 * @{ 622 */ 623 #define TIM_CHANNEL_1 0x00000000U /*!< Capture/compare channel 1 identifier */ 624 #define TIM_CHANNEL_2 0x00000004U /*!< Capture/compare channel 2 identifier */ 625 #define TIM_CHANNEL_3 0x00000008U /*!< Capture/compare channel 3 identifier */ 626 #define TIM_CHANNEL_4 0x0000000CU /*!< Capture/compare channel 4 identifier */ 627 #define TIM_CHANNEL_ALL 0x0000003CU /*!< Global Capture/compare channel identifier */ 628 /** 629 * @} 630 */ 631 632 /** @defgroup TIM_Clock_Source TIM Clock Source 633 * @{ 634 */ 635 #define TIM_CLOCKSOURCE_INTERNAL TIM_SMCR_ETPS_0 /*!< Internal clock source */ 636 #define TIM_CLOCKSOURCE_ETRMODE1 TIM_TS_ETRF /*!< External clock source mode 1 (ETRF) */ 637 #define TIM_CLOCKSOURCE_ETRMODE2 TIM_SMCR_ETPS_1 /*!< External clock source mode 2 */ 638 #define TIM_CLOCKSOURCE_TI1ED TIM_TS_TI1F_ED /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */ 639 #define TIM_CLOCKSOURCE_TI1 TIM_TS_TI1FP1 /*!< External clock source mode 1 (TTI1FP1) */ 640 #define TIM_CLOCKSOURCE_TI2 TIM_TS_TI2FP2 /*!< External clock source mode 1 (TTI2FP2) */ 641 #define TIM_CLOCKSOURCE_ITR0 TIM_TS_ITR0 /*!< External clock source mode 1 (ITR0) */ 642 #define TIM_CLOCKSOURCE_ITR1 TIM_TS_ITR1 /*!< External clock source mode 1 (ITR1) */ 643 #define TIM_CLOCKSOURCE_ITR2 TIM_TS_ITR2 /*!< External clock source mode 1 (ITR2) */ 644 #define TIM_CLOCKSOURCE_ITR3 TIM_TS_ITR3 /*!< External clock source mode 1 (ITR3) */ 645 /** 646 * @} 647 */ 648 649 /** @defgroup TIM_Clock_Polarity TIM Clock Polarity 650 * @{ 651 */ 652 #define TIM_CLOCKPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx clock sources */ 653 #define TIM_CLOCKPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx clock sources */ 654 #define TIM_CLOCKPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIx clock sources */ 655 #define TIM_CLOCKPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIx clock sources */ 656 #define TIM_CLOCKPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIx clock sources */ 657 /** 658 * @} 659 */ 660 661 /** @defgroup TIM_Clock_Prescaler TIM Clock Prescaler 662 * @{ 663 */ 664 #define TIM_CLOCKPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ 665 #define TIM_CLOCKPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */ 666 #define TIM_CLOCKPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */ 667 #define TIM_CLOCKPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */ 668 /** 669 * @} 670 */ 671 672 /** @defgroup TIM_ClearInput_Polarity TIM Clear Input Polarity 673 * @{ 674 */ 675 #define TIM_CLEARINPUTPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx pin */ 676 #define TIM_CLEARINPUTPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx pin */ 677 /** 678 * @} 679 */ 680 681 /** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler 682 * @{ 683 */ 684 #define TIM_CLEARINPUTPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ 685 #define TIM_CLEARINPUTPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */ 686 #define TIM_CLEARINPUTPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */ 687 #define TIM_CLEARINPUTPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */ 688 /** 689 * @} 690 */ 691 692 /** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection 693 * @{ 694 */ 695 #define TIM_TRGO_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO) */ 696 #define TIM_TRGO_ENABLE TIM_CR2_MMS_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO) */ 697 #define TIM_TRGO_UPDATE TIM_CR2_MMS_1 /*!< Update event is used as trigger output (TRGO) */ 698 #define TIM_TRGO_OC1 (TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO) */ 699 #define TIM_TRGO_OC1REF TIM_CR2_MMS_2 /*!< OC1REF signal is used as trigger output (TRGO) */ 700 #define TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0) /*!< OC2REF signal is used as trigger output(TRGO) */ 701 #define TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1) /*!< OC3REF signal is used as trigger output(TRGO) */ 702 #define TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output(TRGO) */ 703 /** 704 * @} 705 */ 706 707 /** @defgroup TIM_Master_Slave_Mode TIM Master/Slave Mode 708 * @{ 709 */ 710 #define TIM_MASTERSLAVEMODE_ENABLE TIM_SMCR_MSM /*!< No action */ 711 #define TIM_MASTERSLAVEMODE_DISABLE 0x00000000U /*!< Master/slave mode is selected */ 712 /** 713 * @} 714 */ 715 716 /** @defgroup TIM_Slave_Mode TIM Slave mode 717 * @{ 718 */ 719 #define TIM_SLAVEMODE_DISABLE 0x00000000U /*!< Slave mode disabled */ 720 #define TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2 /*!< Reset Mode */ 721 #define TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0) /*!< Gated Mode */ 722 #define TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1) /*!< Trigger Mode */ 723 #define TIM_SLAVEMODE_EXTERNAL1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< External Clock Mode 1 */ 724 /** 725 * @} 726 */ 727 728 /** @defgroup TIM_Output_Compare_and_PWM_modes TIM Output Compare and PWM Modes 729 * @{ 730 */ 731 #define TIM_OCMODE_TIMING 0x00000000U /*!< Frozen */ 732 #define TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 /*!< Set channel to active level on match */ 733 #define TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 /*!< Set channel to inactive level on match */ 734 #define TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< Toggle */ 735 #define TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) /*!< PWM mode 1 */ 736 #define TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< PWM mode 2 */ 737 #define TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) /*!< Force active level */ 738 #define TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 /*!< Force inactive level */ 739 /** 740 * @} 741 */ 742 743 /** @defgroup TIM_Trigger_Selection TIM Trigger Selection 744 * @{ 745 */ 746 #define TIM_TS_ITR0 0x00000000U /*!< Internal Trigger 0 (ITR0) */ 747 #define TIM_TS_ITR1 TIM_SMCR_TS_0 /*!< Internal Trigger 1 (ITR1) */ 748 #define TIM_TS_ITR2 TIM_SMCR_TS_1 /*!< Internal Trigger 2 (ITR2) */ 749 #define TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1) /*!< Internal Trigger 3 (ITR3) */ 750 #define TIM_TS_TI1F_ED TIM_SMCR_TS_2 /*!< TI1 Edge Detector (TI1F_ED) */ 751 #define TIM_TS_TI1FP1 (TIM_SMCR_TS_0 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 1 (TI1FP1) */ 752 #define TIM_TS_TI2FP2 (TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 2 (TI2FP2) */ 753 #define TIM_TS_ETRF (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered External Trigger input (ETRF) */ 754 #define TIM_TS_NONE 0x0000FFFFU /*!< No trigger selected */ 755 /** 756 * @} 757 */ 758 759 /** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity 760 * @{ 761 */ 762 #define TIM_TRIGGERPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx trigger sources */ 763 #define TIM_TRIGGERPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx trigger sources */ 764 #define TIM_TRIGGERPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIxFPx or TI1_ED trigger sources */ 765 #define TIM_TRIGGERPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIxFPx or TI1_ED trigger sources */ 766 #define TIM_TRIGGERPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIxFPx or TI1_ED trigger sources */ 767 /** 768 * @} 769 */ 770 771 /** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler 772 * @{ 773 */ 774 #define TIM_TRIGGERPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ 775 #define TIM_TRIGGERPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */ 776 #define TIM_TRIGGERPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */ 777 #define TIM_TRIGGERPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */ 778 /** 779 * @} 780 */ 781 782 /** @defgroup TIM_TI1_Selection TIM TI1 Input Selection 783 * @{ 784 */ 785 #define TIM_TI1SELECTION_CH1 0x00000000U /*!< The TIMx_CH1 pin is connected to TI1 input */ 786 #define TIM_TI1SELECTION_XORCOMBINATION TIM_CR2_TI1S /*!< The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) */ 787 /** 788 * @} 789 */ 790 791 /** @defgroup TIM_DMA_Burst_Length TIM DMA Burst Length 792 * @{ 793 */ 794 #define TIM_DMABURSTLENGTH_1TRANSFER 0x00000000U /*!< The transfer is done to 1 register starting from TIMx_CR1 + TIMx_DCR.DBA */ 795 #define TIM_DMABURSTLENGTH_2TRANSFERS 0x00000100U /*!< The transfer is done to 2 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 796 #define TIM_DMABURSTLENGTH_3TRANSFERS 0x00000200U /*!< The transfer is done to 3 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 797 #define TIM_DMABURSTLENGTH_4TRANSFERS 0x00000300U /*!< The transfer is done to 4 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 798 #define TIM_DMABURSTLENGTH_5TRANSFERS 0x00000400U /*!< The transfer is done to 5 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 799 #define TIM_DMABURSTLENGTH_6TRANSFERS 0x00000500U /*!< The transfer is done to 6 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 800 #define TIM_DMABURSTLENGTH_7TRANSFERS 0x00000600U /*!< The transfer is done to 7 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 801 #define TIM_DMABURSTLENGTH_8TRANSFERS 0x00000700U /*!< The transfer is done to 8 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 802 #define TIM_DMABURSTLENGTH_9TRANSFERS 0x00000800U /*!< The transfer is done to 9 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 803 #define TIM_DMABURSTLENGTH_10TRANSFERS 0x00000900U /*!< The transfer is done to 10 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 804 #define TIM_DMABURSTLENGTH_11TRANSFERS 0x00000A00U /*!< The transfer is done to 11 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 805 #define TIM_DMABURSTLENGTH_12TRANSFERS 0x00000B00U /*!< The transfer is done to 12 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 806 #define TIM_DMABURSTLENGTH_13TRANSFERS 0x00000C00U /*!< The transfer is done to 13 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 807 #define TIM_DMABURSTLENGTH_14TRANSFERS 0x00000D00U /*!< The transfer is done to 14 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 808 #define TIM_DMABURSTLENGTH_15TRANSFERS 0x00000E00U /*!< The transfer is done to 15 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 809 #define TIM_DMABURSTLENGTH_16TRANSFERS 0x00000F00U /*!< The transfer is done to 16 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 810 #define TIM_DMABURSTLENGTH_17TRANSFERS 0x00001000U /*!< The transfer is done to 17 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 811 #define TIM_DMABURSTLENGTH_18TRANSFERS 0x00001100U /*!< The transfer is done to 18 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ 812 /** 813 * @} 814 */ 815 816 /** @defgroup DMA_Handle_index TIM DMA Handle Index 817 * @{ 818 */ 819 #define TIM_DMA_ID_UPDATE ((uint16_t) 0x0000) /*!< Index of the DMA handle used for Update DMA requests */ 820 #define TIM_DMA_ID_CC1 ((uint16_t) 0x0001) /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */ 821 #define TIM_DMA_ID_CC2 ((uint16_t) 0x0002) /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */ 822 #define TIM_DMA_ID_CC3 ((uint16_t) 0x0003) /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */ 823 #define TIM_DMA_ID_CC4 ((uint16_t) 0x0004) /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */ 824 #define TIM_DMA_ID_TRIGGER ((uint16_t) 0x0006) /*!< Index of the DMA handle used for Trigger DMA requests */ 825 /** 826 * @} 827 */ 828 829 /** @defgroup Channel_CC_State TIM Capture/Compare Channel State 830 * @{ 831 */ 832 #define TIM_CCx_ENABLE 0x00000001U /*!< Input or output channel is enabled */ 833 #define TIM_CCx_DISABLE 0x00000000U /*!< Input or output channel is disabled */ 834 /** 835 * @} 836 */ 837 838 /** 839 * @} 840 */ 841 /* End of exported constants -------------------------------------------------*/ 842 843 /* Exported macros -----------------------------------------------------------*/ 844 /** @defgroup TIM_Exported_Macros TIM Exported Macros 845 * @{ 846 */ 847 848 /** @brief Reset TIM handle state. 849 * @param __HANDLE__ TIM handle. 850 * @retval None 851 */ 852 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) 853 #define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \ 854 (__HANDLE__)->State = HAL_TIM_STATE_RESET; \ 855 (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ 856 (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ 857 (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ 858 (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ 859 (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \ 860 (__HANDLE__)->Base_MspInitCallback = NULL; \ 861 (__HANDLE__)->Base_MspDeInitCallback = NULL; \ 862 (__HANDLE__)->IC_MspInitCallback = NULL; \ 863 (__HANDLE__)->IC_MspDeInitCallback = NULL; \ 864 (__HANDLE__)->OC_MspInitCallback = NULL; \ 865 (__HANDLE__)->OC_MspDeInitCallback = NULL; \ 866 (__HANDLE__)->PWM_MspInitCallback = NULL; \ 867 (__HANDLE__)->PWM_MspDeInitCallback = NULL; \ 868 (__HANDLE__)->OnePulse_MspInitCallback = NULL; \ 869 (__HANDLE__)->OnePulse_MspDeInitCallback = NULL; \ 870 (__HANDLE__)->Encoder_MspInitCallback = NULL; \ 871 (__HANDLE__)->Encoder_MspDeInitCallback = NULL; \ 872 } while(0) 873 #else 874 #define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \ 875 (__HANDLE__)->State = HAL_TIM_STATE_RESET; \ 876 (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ 877 (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ 878 (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ 879 (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ 880 (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \ 881 } while(0) 882 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ 883 884 /** 885 * @brief Enable the TIM peripheral. 886 * @param __HANDLE__ TIM handle 887 * @retval None 888 */ 889 #define __HAL_TIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN)) 890 891 /** 892 * @brief Disable the TIM peripheral. 893 * @param __HANDLE__ TIM handle 894 * @retval None 895 */ 896 #define __HAL_TIM_DISABLE(__HANDLE__) \ 897 do { \ 898 if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \ 899 { \ 900 (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \ 901 } \ 902 } while(0) 903 904 /** @brief Enable the specified TIM interrupt. 905 * @param __HANDLE__ specifies the TIM Handle. 906 * @param __INTERRUPT__ specifies the TIM interrupt source to enable. 907 * This parameter can be one of the following values: 908 * @arg TIM_IT_UPDATE: Update interrupt 909 * @arg TIM_IT_CC1: Capture/Compare 1 interrupt 910 * @arg TIM_IT_CC2: Capture/Compare 2 interrupt 911 * @arg TIM_IT_CC3: Capture/Compare 3 interrupt 912 * @arg TIM_IT_CC4: Capture/Compare 4 interrupt 913 * @arg TIM_IT_TRIGGER: Trigger interrupt 914 * @retval None 915 */ 916 #define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__)) 917 918 /** @brief Disable the specified TIM interrupt. 919 * @param __HANDLE__ specifies the TIM Handle. 920 * @param __INTERRUPT__ specifies the TIM interrupt source to disable. 921 * This parameter can be one of the following values: 922 * @arg TIM_IT_UPDATE: Update interrupt 923 * @arg TIM_IT_CC1: Capture/Compare 1 interrupt 924 * @arg TIM_IT_CC2: Capture/Compare 2 interrupt 925 * @arg TIM_IT_CC3: Capture/Compare 3 interrupt 926 * @arg TIM_IT_CC4: Capture/Compare 4 interrupt 927 * @arg TIM_IT_TRIGGER: Trigger interrupt 928 * @retval None 929 */ 930 #define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__)) 931 932 /** @brief Enable the specified DMA request. 933 * @param __HANDLE__ specifies the TIM Handle. 934 * @param __DMA__ specifies the TIM DMA request to enable. 935 * This parameter can be one of the following values: 936 * @arg TIM_DMA_UPDATE: Update DMA request 937 * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request 938 * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request 939 * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request 940 * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request 941 * @arg TIM_DMA_TRIGGER: Trigger DMA request 942 * @retval None 943 */ 944 #define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER |= (__DMA__)) 945 946 /** @brief Disable the specified DMA request. 947 * @param __HANDLE__ specifies the TIM Handle. 948 * @param __DMA__ specifies the TIM DMA request to disable. 949 * This parameter can be one of the following values: 950 * @arg TIM_DMA_UPDATE: Update DMA request 951 * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request 952 * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request 953 * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request 954 * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request 955 * @arg TIM_DMA_TRIGGER: Trigger DMA request 956 * @retval None 957 */ 958 #define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER &= ~(__DMA__)) 959 960 /** @brief Check whether the specified TIM interrupt flag is set or not. 961 * @param __HANDLE__ specifies the TIM Handle. 962 * @param __FLAG__ specifies the TIM interrupt flag to check. 963 * This parameter can be one of the following values: 964 * @arg TIM_FLAG_UPDATE: Update interrupt flag 965 * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag 966 * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag 967 * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag 968 * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag 969 * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag 970 * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag 971 * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag 972 * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag 973 * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag 974 * @retval The new state of __FLAG__ (TRUE or FALSE). 975 */ 976 #define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__)) 977 978 /** @brief Clear the specified TIM interrupt flag. 979 * @param __HANDLE__ specifies the TIM Handle. 980 * @param __FLAG__ specifies the TIM interrupt flag to clear. 981 * This parameter can be one of the following values: 982 * @arg TIM_FLAG_UPDATE: Update interrupt flag 983 * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag 984 * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag 985 * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag 986 * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag 987 * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag 988 * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag 989 * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag 990 * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag 991 * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag 992 * @retval The new state of __FLAG__ (TRUE or FALSE). 993 */ 994 #define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__)) 995 996 /** 997 * @brief Check whether the specified TIM interrupt source is enabled or not. 998 * @param __HANDLE__ TIM handle 999 * @param __INTERRUPT__ specifies the TIM interrupt source to check. 1000 * This parameter can be one of the following values: 1001 * @arg TIM_IT_UPDATE: Update interrupt 1002 * @arg TIM_IT_CC1: Capture/Compare 1 interrupt 1003 * @arg TIM_IT_CC2: Capture/Compare 2 interrupt 1004 * @arg TIM_IT_CC3: Capture/Compare 3 interrupt 1005 * @arg TIM_IT_CC4: Capture/Compare 4 interrupt 1006 * @arg TIM_IT_TRIGGER: Trigger interrupt 1007 * @retval The state of TIM_IT (SET or RESET). 1008 */ 1009 #define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \ 1010 == (__INTERRUPT__)) ? SET : RESET) 1011 1012 /** @brief Clear the TIM interrupt pending bits. 1013 * @param __HANDLE__ TIM handle 1014 * @param __INTERRUPT__ specifies the interrupt pending bit to clear. 1015 * This parameter can be one of the following values: 1016 * @arg TIM_IT_UPDATE: Update interrupt 1017 * @arg TIM_IT_CC1: Capture/Compare 1 interrupt 1018 * @arg TIM_IT_CC2: Capture/Compare 2 interrupt 1019 * @arg TIM_IT_CC3: Capture/Compare 3 interrupt 1020 * @arg TIM_IT_CC4: Capture/Compare 4 interrupt 1021 * @arg TIM_IT_TRIGGER: Trigger interrupt 1022 * @retval None 1023 */ 1024 #define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__)) 1025 1026 /** 1027 * @brief Indicates whether or not the TIM Counter is used as downcounter. 1028 * @param __HANDLE__ TIM handle. 1029 * @retval False (Counter used as upcounter) or True (Counter used as downcounter) 1030 * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode 1031 * or Encoder mode. 1032 */ 1033 #define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR)) 1034 1035 /** 1036 * @brief Set the TIM Prescaler on runtime. 1037 * @param __HANDLE__ TIM handle. 1038 * @param __PRESC__ specifies the Prescaler new value. 1039 * @retval None 1040 */ 1041 #define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) ((__HANDLE__)->Instance->PSC = (__PRESC__)) 1042 1043 /** 1044 * @brief Set the TIM Counter Register value on runtime. 1045 * @param __HANDLE__ TIM handle. 1046 * @param __COUNTER__ specifies the Counter register new value. 1047 * @retval None 1048 */ 1049 #define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->CNT = (__COUNTER__)) 1050 1051 /** 1052 * @brief Get the TIM Counter Register value on runtime. 1053 * @param __HANDLE__ TIM handle. 1054 * @retval 16-bit value of the timer counter register (TIMx_CNT) 1055 */ 1056 #define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT) 1057 1058 /** 1059 * @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function. 1060 * @param __HANDLE__ TIM handle. 1061 * @param __AUTORELOAD__ specifies the Counter register new value. 1062 * @retval None 1063 */ 1064 #define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \ 1065 do{ \ 1066 (__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \ 1067 (__HANDLE__)->Init.Period = (__AUTORELOAD__); \ 1068 } while(0) 1069 1070 /** 1071 * @brief Get the TIM Autoreload Register value on runtime. 1072 * @param __HANDLE__ TIM handle. 1073 * @retval 16-bit value of the timer auto-reload register(TIMx_ARR) 1074 */ 1075 #define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR) 1076 1077 /** 1078 * @brief Set the TIM Clock Division value on runtime without calling another time any Init function. 1079 * @param __HANDLE__ TIM handle. 1080 * @param __CKD__ specifies the clock division value. 1081 * This parameter can be one of the following value: 1082 * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT 1083 * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT 1084 * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT 1085 * @retval None 1086 */ 1087 #define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \ 1088 do{ \ 1089 (__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \ 1090 (__HANDLE__)->Instance->CR1 |= (__CKD__); \ 1091 (__HANDLE__)->Init.ClockDivision = (__CKD__); \ 1092 } while(0) 1093 1094 /** 1095 * @brief Get the TIM Clock Division value on runtime. 1096 * @param __HANDLE__ TIM handle. 1097 * @retval The clock division can be one of the following values: 1098 * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT 1099 * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT 1100 * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT 1101 */ 1102 #define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD) 1103 1104 /** 1105 * @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() 1106 * function. 1107 * @param __HANDLE__ TIM handle. 1108 * @param __CHANNEL__ TIM Channels to be configured. 1109 * This parameter can be one of the following values: 1110 * @arg TIM_CHANNEL_1: TIM Channel 1 selected 1111 * @arg TIM_CHANNEL_2: TIM Channel 2 selected 1112 * @arg TIM_CHANNEL_3: TIM Channel 3 selected 1113 * @arg TIM_CHANNEL_4: TIM Channel 4 selected 1114 * @param __ICPSC__ specifies the Input Capture4 prescaler new value. 1115 * This parameter can be one of the following values: 1116 * @arg TIM_ICPSC_DIV1: no prescaler 1117 * @arg TIM_ICPSC_DIV2: capture is done once every 2 events 1118 * @arg TIM_ICPSC_DIV4: capture is done once every 4 events 1119 * @arg TIM_ICPSC_DIV8: capture is done once every 8 events 1120 * @retval None 1121 */ 1122 #define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \ 1123 do{ \ 1124 TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \ 1125 TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \ 1126 } while(0) 1127 1128 /** 1129 * @brief Get the TIM Input Capture prescaler on runtime. 1130 * @param __HANDLE__ TIM handle. 1131 * @param __CHANNEL__ TIM Channels to be configured. 1132 * This parameter can be one of the following values: 1133 * @arg TIM_CHANNEL_1: get input capture 1 prescaler value 1134 * @arg TIM_CHANNEL_2: get input capture 2 prescaler value 1135 * @arg TIM_CHANNEL_3: get input capture 3 prescaler value 1136 * @arg TIM_CHANNEL_4: get input capture 4 prescaler value 1137 * @retval The input capture prescaler can be one of the following values: 1138 * @arg TIM_ICPSC_DIV1: no prescaler 1139 * @arg TIM_ICPSC_DIV2: capture is done once every 2 events 1140 * @arg TIM_ICPSC_DIV4: capture is done once every 4 events 1141 * @arg TIM_ICPSC_DIV8: capture is done once every 8 events 1142 */ 1143 #define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__) \ 1144 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\ 1145 ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8U) :\ 1146 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\ 1147 (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8U) 1148 1149 /** 1150 * @brief Set the TIM Capture Compare Register value on runtime without calling another time ConfigChannel function. 1151 * @param __HANDLE__ TIM handle. 1152 * @param __CHANNEL__ TIM Channels to be configured. 1153 * This parameter can be one of the following values: 1154 * @arg TIM_CHANNEL_1: TIM Channel 1 selected 1155 * @arg TIM_CHANNEL_2: TIM Channel 2 selected 1156 * @arg TIM_CHANNEL_3: TIM Channel 3 selected 1157 * @arg TIM_CHANNEL_4: TIM Channel 4 selected 1158 * @param __COMPARE__ specifies the Capture Compare register new value. 1159 * @retval None 1160 */ 1161 #define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \ 1162 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\ 1163 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\ 1164 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\ 1165 ((__HANDLE__)->Instance->CCR4 = (__COMPARE__))) 1166 1167 /** 1168 * @brief Get the TIM Capture Compare Register value on runtime. 1169 * @param __HANDLE__ TIM handle. 1170 * @param __CHANNEL__ TIM Channel associated with the capture compare register 1171 * This parameter can be one of the following values: 1172 * @arg TIM_CHANNEL_1: get capture/compare 1 register value 1173 * @arg TIM_CHANNEL_2: get capture/compare 2 register value 1174 * @arg TIM_CHANNEL_3: get capture/compare 3 register value 1175 * @arg TIM_CHANNEL_4: get capture/compare 4 register value 1176 * @retval 16-bit value of the capture/compare register (TIMx_CCRy) 1177 */ 1178 #define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \ 1179 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\ 1180 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\ 1181 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\ 1182 ((__HANDLE__)->Instance->CCR4)) 1183 1184 /** 1185 * @brief Set the TIM Output compare preload. 1186 * @param __HANDLE__ TIM handle. 1187 * @param __CHANNEL__ TIM Channels to be configured. 1188 * This parameter can be one of the following values: 1189 * @arg TIM_CHANNEL_1: TIM Channel 1 selected 1190 * @arg TIM_CHANNEL_2: TIM Channel 2 selected 1191 * @arg TIM_CHANNEL_3: TIM Channel 3 selected 1192 * @arg TIM_CHANNEL_4: TIM Channel 4 selected 1193 * @retval None 1194 */ 1195 #define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \ 1196 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\ 1197 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\ 1198 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\ 1199 ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE)) 1200 1201 /** 1202 * @brief Reset the TIM Output compare preload. 1203 * @param __HANDLE__ TIM handle. 1204 * @param __CHANNEL__ TIM Channels to be configured. 1205 * This parameter can be one of the following values: 1206 * @arg TIM_CHANNEL_1: TIM Channel 1 selected 1207 * @arg TIM_CHANNEL_2: TIM Channel 2 selected 1208 * @arg TIM_CHANNEL_3: TIM Channel 3 selected 1209 * @arg TIM_CHANNEL_4: TIM Channel 4 selected 1210 * @retval None 1211 */ 1212 #define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \ 1213 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\ 1214 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\ 1215 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\ 1216 ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE)) 1217 1218 /** 1219 * @brief Enable fast mode for a given channel. 1220 * @param __HANDLE__ TIM handle. 1221 * @param __CHANNEL__ TIM Channels to be configured. 1222 * This parameter can be one of the following values: 1223 * @arg TIM_CHANNEL_1: TIM Channel 1 selected 1224 * @arg TIM_CHANNEL_2: TIM Channel 2 selected 1225 * @arg TIM_CHANNEL_3: TIM Channel 3 selected 1226 * @arg TIM_CHANNEL_4: TIM Channel 4 selected 1227 * @note When fast mode is enabled an active edge on the trigger input acts 1228 * like a compare match on CCx output. Delay to sample the trigger 1229 * input and to activate CCx output is reduced to 3 clock cycles. 1230 * @note Fast mode acts only if the channel is configured in PWM1 or PWM2 mode. 1231 * @retval None 1232 */ 1233 #define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \ 1234 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\ 1235 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\ 1236 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\ 1237 ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE)) 1238 1239 /** 1240 * @brief Disable fast mode for a given channel. 1241 * @param __HANDLE__ TIM handle. 1242 * @param __CHANNEL__ TIM Channels to be configured. 1243 * This parameter can be one of the following values: 1244 * @arg TIM_CHANNEL_1: TIM Channel 1 selected 1245 * @arg TIM_CHANNEL_2: TIM Channel 2 selected 1246 * @arg TIM_CHANNEL_3: TIM Channel 3 selected 1247 * @arg TIM_CHANNEL_4: TIM Channel 4 selected 1248 * @note When fast mode is disabled CCx output behaves normally depending 1249 * on counter and CCRx values even when the trigger is ON. The minimum 1250 * delay to activate CCx output when an active edge occurs on the 1251 * trigger input is 5 clock cycles. 1252 * @retval None 1253 */ 1254 #define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \ 1255 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\ 1256 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\ 1257 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\ 1258 ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE)) 1259 1260 /** 1261 * @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register. 1262 * @param __HANDLE__ TIM handle. 1263 * @note When the URS bit of the TIMx_CR1 register is set, only counter 1264 * overflow/underflow generates an update interrupt or DMA request (if 1265 * enabled) 1266 * @retval None 1267 */ 1268 #define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS) 1269 1270 /** 1271 * @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register. 1272 * @param __HANDLE__ TIM handle. 1273 * @note When the URS bit of the TIMx_CR1 register is reset, any of the 1274 * following events generate an update interrupt or DMA request (if 1275 * enabled): 1276 * _ Counter overflow underflow 1277 * _ Setting the UG bit 1278 * _ Update generation through the slave mode controller 1279 * @retval None 1280 */ 1281 #define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS) 1282 1283 /** 1284 * @brief Set the TIM Capture x input polarity on runtime. 1285 * @param __HANDLE__ TIM handle. 1286 * @param __CHANNEL__ TIM Channels to be configured. 1287 * This parameter can be one of the following values: 1288 * @arg TIM_CHANNEL_1: TIM Channel 1 selected 1289 * @arg TIM_CHANNEL_2: TIM Channel 2 selected 1290 * @arg TIM_CHANNEL_3: TIM Channel 3 selected 1291 * @arg TIM_CHANNEL_4: TIM Channel 4 selected 1292 * @param __POLARITY__ Polarity for TIx source 1293 * @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge 1294 * @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge 1295 * @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge 1296 * @retval None 1297 */ 1298 #define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ 1299 do{ \ 1300 TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \ 1301 TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \ 1302 }while(0) 1303 1304 /** @brief Select the Capture/compare DMA request source. 1305 * @param __HANDLE__ specifies the TIM Handle. 1306 * @param __CCDMA__ specifies Capture/compare DMA request source 1307 * This parameter can be one of the following values: 1308 * @arg TIM_CCDMAREQUEST_CC: CCx DMA request generated on Capture/Compare event 1309 * @arg TIM_CCDMAREQUEST_UPDATE: CCx DMA request generated on Update event 1310 * @retval None 1311 */ 1312 #define __HAL_TIM_SELECT_CCDMAREQUEST(__HANDLE__, __CCDMA__) \ 1313 MODIFY_REG((__HANDLE__)->Instance->CR2, TIM_CR2_CCDS, (__CCDMA__)) 1314 1315 /** 1316 * @} 1317 */ 1318 /* End of exported macros ----------------------------------------------------*/ 1319 1320 /* Private constants ---------------------------------------------------------*/ 1321 /** @defgroup TIM_Private_Constants TIM Private Constants 1322 * @{ 1323 */ 1324 /* The counter of a timer instance is disabled only if all the CCx and CCxN 1325 channels have been disabled */ 1326 #define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E)) 1327 /** 1328 * @} 1329 */ 1330 /* End of private constants --------------------------------------------------*/ 1331 1332 /* Private macros ------------------------------------------------------------*/ 1333 /** @defgroup TIM_Private_Macros TIM Private Macros 1334 * @{ 1335 */ 1336 #define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_NONE) || \ 1337 ((__MODE__) == TIM_CLEARINPUTSOURCE_ETR)) 1338 1339 #define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \ 1340 ((__BASE__) == TIM_DMABASE_CR2) || \ 1341 ((__BASE__) == TIM_DMABASE_SMCR) || \ 1342 ((__BASE__) == TIM_DMABASE_DIER) || \ 1343 ((__BASE__) == TIM_DMABASE_SR) || \ 1344 ((__BASE__) == TIM_DMABASE_EGR) || \ 1345 ((__BASE__) == TIM_DMABASE_CCMR1) || \ 1346 ((__BASE__) == TIM_DMABASE_CCMR2) || \ 1347 ((__BASE__) == TIM_DMABASE_CCER) || \ 1348 ((__BASE__) == TIM_DMABASE_CNT) || \ 1349 ((__BASE__) == TIM_DMABASE_PSC) || \ 1350 ((__BASE__) == TIM_DMABASE_ARR) || \ 1351 ((__BASE__) == TIM_DMABASE_CCR1) || \ 1352 ((__BASE__) == TIM_DMABASE_CCR2) || \ 1353 ((__BASE__) == TIM_DMABASE_CCR3) || \ 1354 ((__BASE__) == TIM_DMABASE_CCR4) || \ 1355 ((__BASE__) == TIM_DMABASE_OR)) 1356 1357 #define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFFA0U) == 0x00000000U) && ((__SOURCE__) != 0x00000000U)) 1358 1359 #define IS_TIM_COUNTER_MODE(__MODE__) (((__MODE__) == TIM_COUNTERMODE_UP) || \ 1360 ((__MODE__) == TIM_COUNTERMODE_DOWN) || \ 1361 ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1) || \ 1362 ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \ 1363 ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3)) 1364 1365 #define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \ 1366 ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \ 1367 ((__DIV__) == TIM_CLOCKDIVISION_DIV4)) 1368 1369 #define IS_TIM_AUTORELOAD_PRELOAD(PRELOAD) (((PRELOAD) == TIM_AUTORELOAD_PRELOAD_DISABLE) || \ 1370 ((PRELOAD) == TIM_AUTORELOAD_PRELOAD_ENABLE)) 1371 1372 #define IS_TIM_FAST_STATE(__STATE__) (((__STATE__) == TIM_OCFAST_DISABLE) || \ 1373 ((__STATE__) == TIM_OCFAST_ENABLE)) 1374 1375 #define IS_TIM_OC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \ 1376 ((__POLARITY__) == TIM_OCPOLARITY_LOW)) 1377 1378 #define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \ 1379 ((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING)) 1380 1381 #define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \ 1382 ((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \ 1383 ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE)) 1384 1385 #define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \ 1386 ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \ 1387 ((__SELECTION__) == TIM_ICSELECTION_TRC)) 1388 1389 #define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \ 1390 ((__PRESCALER__) == TIM_ICPSC_DIV2) || \ 1391 ((__PRESCALER__) == TIM_ICPSC_DIV4) || \ 1392 ((__PRESCALER__) == TIM_ICPSC_DIV8)) 1393 1394 #define IS_TIM_OPM_MODE(__MODE__) (((__MODE__) == TIM_OPMODE_SINGLE) || \ 1395 ((__MODE__) == TIM_OPMODE_REPETITIVE)) 1396 1397 #define IS_TIM_ENCODER_MODE(__MODE__) (((__MODE__) == TIM_ENCODERMODE_TI1) || \ 1398 ((__MODE__) == TIM_ENCODERMODE_TI2) || \ 1399 ((__MODE__) == TIM_ENCODERMODE_TI12)) 1400 1401 #define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFA0FFU) == 0x00000000U) && ((__SOURCE__) != 0x00000000U)) 1402 1403 #define IS_TIM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ 1404 ((__CHANNEL__) == TIM_CHANNEL_2) || \ 1405 ((__CHANNEL__) == TIM_CHANNEL_3) || \ 1406 ((__CHANNEL__) == TIM_CHANNEL_4) || \ 1407 ((__CHANNEL__) == TIM_CHANNEL_ALL)) 1408 1409 #define IS_TIM_OPM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ 1410 ((__CHANNEL__) == TIM_CHANNEL_2)) 1411 1412 #define IS_TIM_PERIOD(__PERIOD__) (((__PERIOD__) > 0U) && ((__PERIOD__) <= 0xFFFFU)) 1413 1414 #define IS_TIM_PRESCALER(__PRESCALER__) ((__PRESCALER__) <= 0xFFFFU) 1415 1416 #define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \ 1417 ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1) || \ 1418 ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \ 1419 ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED) || \ 1420 ((__CLOCK__) == TIM_CLOCKSOURCE_TI1) || \ 1421 ((__CLOCK__) == TIM_CLOCKSOURCE_TI2) || \ 1422 ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0) || \ 1423 ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1) || \ 1424 ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2) || \ 1425 ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3)) 1426 1427 #define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED) || \ 1428 ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \ 1429 ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING) || \ 1430 ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING) || \ 1431 ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE)) 1432 1433 #define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \ 1434 ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \ 1435 ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \ 1436 ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8)) 1437 1438 #define IS_TIM_CLOCKFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) 1439 1440 #define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \ 1441 ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED)) 1442 1443 #define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \ 1444 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \ 1445 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \ 1446 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8)) 1447 1448 #define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) 1449 1450 #define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET) || \ 1451 ((__SOURCE__) == TIM_TRGO_ENABLE) || \ 1452 ((__SOURCE__) == TIM_TRGO_UPDATE) || \ 1453 ((__SOURCE__) == TIM_TRGO_OC1) || \ 1454 ((__SOURCE__) == TIM_TRGO_OC1REF) || \ 1455 ((__SOURCE__) == TIM_TRGO_OC2REF) || \ 1456 ((__SOURCE__) == TIM_TRGO_OC3REF) || \ 1457 ((__SOURCE__) == TIM_TRGO_OC4REF)) 1458 1459 #define IS_TIM_MSM_STATE(__STATE__) (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \ 1460 ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE)) 1461 1462 #define IS_TIM_SLAVE_MODE(__MODE__) (((__MODE__) == TIM_SLAVEMODE_DISABLE) || \ 1463 ((__MODE__) == TIM_SLAVEMODE_RESET) || \ 1464 ((__MODE__) == TIM_SLAVEMODE_GATED) || \ 1465 ((__MODE__) == TIM_SLAVEMODE_TRIGGER) || \ 1466 ((__MODE__) == TIM_SLAVEMODE_EXTERNAL1)) 1467 1468 #define IS_TIM_PWM_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_PWM1) || \ 1469 ((__MODE__) == TIM_OCMODE_PWM2)) 1470 1471 #define IS_TIM_OC_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_TIMING) || \ 1472 ((__MODE__) == TIM_OCMODE_ACTIVE) || \ 1473 ((__MODE__) == TIM_OCMODE_INACTIVE) || \ 1474 ((__MODE__) == TIM_OCMODE_TOGGLE) || \ 1475 ((__MODE__) == TIM_OCMODE_FORCED_ACTIVE) || \ 1476 ((__MODE__) == TIM_OCMODE_FORCED_INACTIVE)) 1477 1478 #define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ 1479 ((__SELECTION__) == TIM_TS_ITR1) || \ 1480 ((__SELECTION__) == TIM_TS_ITR2) || \ 1481 ((__SELECTION__) == TIM_TS_ITR3) || \ 1482 ((__SELECTION__) == TIM_TS_TI1F_ED) || \ 1483 ((__SELECTION__) == TIM_TS_TI1FP1) || \ 1484 ((__SELECTION__) == TIM_TS_TI2FP2) || \ 1485 ((__SELECTION__) == TIM_TS_ETRF)) 1486 1487 #define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ 1488 ((__SELECTION__) == TIM_TS_ITR1) || \ 1489 ((__SELECTION__) == TIM_TS_ITR2) || \ 1490 ((__SELECTION__) == TIM_TS_ITR3) || \ 1491 ((__SELECTION__) == TIM_TS_NONE)) 1492 1493 #define IS_TIM_TRIGGERPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED ) || \ 1494 ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \ 1495 ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING ) || \ 1496 ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING ) || \ 1497 ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE )) 1498 1499 #define IS_TIM_TRIGGERPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \ 1500 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \ 1501 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \ 1502 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8)) 1503 1504 #define IS_TIM_TRIGGERFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) 1505 1506 #define IS_TIM_TI1SELECTION(__TI1SELECTION__) (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \ 1507 ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION)) 1508 1509 #define IS_TIM_DMA_LENGTH(__LENGTH__) (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER) || \ 1510 ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS) || \ 1511 ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS) || \ 1512 ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS) || \ 1513 ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS) || \ 1514 ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS) || \ 1515 ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS) || \ 1516 ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS) || \ 1517 ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS) || \ 1518 ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \ 1519 ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \ 1520 ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \ 1521 ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \ 1522 ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \ 1523 ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \ 1524 ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \ 1525 ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \ 1526 ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS)) 1527 1528 #define IS_TIM_DMA_DATA_LENGTH(LENGTH) (((LENGTH) >= 0x1U) && ((LENGTH) < 0x10000U)) 1529 1530 #define IS_TIM_IC_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) 1531 1532 #define IS_TIM_SLAVEMODE_TRIGGER_ENABLED(__TRIGGER__) ((__TRIGGER__) == TIM_SLAVEMODE_TRIGGER) 1533 1534 #define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \ 1535 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\ 1536 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\ 1537 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\ 1538 ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U))) 1539 1540 #define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \ 1541 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\ 1542 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\ 1543 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\ 1544 ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC)) 1545 1546 #define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ 1547 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\ 1548 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\ 1549 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\ 1550 ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U)))) 1551 1552 #define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \ 1553 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\ 1554 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\ 1555 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\ 1556 ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP))) 1557 1558 #define TIM_CHANNEL_STATE_GET(__HANDLE__, __CHANNEL__)\ 1559 (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelState[0] :\ 1560 ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelState[1] :\ 1561 ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelState[2] :\ 1562 (__HANDLE__)->ChannelState[3]) 1563 1564 #define TIM_CHANNEL_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \ 1565 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__)) :\ 1566 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__)) :\ 1567 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__)) :\ 1568 ((__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__))) 1569 1570 #define TIM_CHANNEL_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \ 1571 (__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__); \ 1572 (__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__); \ 1573 (__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__); \ 1574 (__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__); \ 1575 } while(0) 1576 1577 /** 1578 * @} 1579 */ 1580 /* End of private macros -----------------------------------------------------*/ 1581 1582 /* Include TIM HAL Extended module */ 1583 #include "stm32l0xx_hal_tim_ex.h" 1584 1585 /* Exported functions --------------------------------------------------------*/ 1586 /** @addtogroup TIM_Exported_Functions TIM Exported Functions 1587 * @{ 1588 */ 1589 1590 /** @addtogroup TIM_Exported_Functions_Group1 TIM Time Base functions 1591 * @brief Time Base functions 1592 * @{ 1593 */ 1594 /* Time Base functions ********************************************************/ 1595 HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim); 1596 HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim); 1597 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim); 1598 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim); 1599 /* Blocking mode: Polling */ 1600 HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim); 1601 HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim); 1602 /* Non-Blocking mode: Interrupt */ 1603 HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim); 1604 HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim); 1605 /* Non-Blocking mode: DMA */ 1606 HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length); 1607 HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim); 1608 /** 1609 * @} 1610 */ 1611 1612 /** @addtogroup TIM_Exported_Functions_Group2 TIM Output Compare functions 1613 * @brief TIM Output Compare functions 1614 * @{ 1615 */ 1616 /* Timer Output Compare functions *********************************************/ 1617 HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim); 1618 HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim); 1619 void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim); 1620 void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim); 1621 /* Blocking mode: Polling */ 1622 HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); 1623 HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); 1624 /* Non-Blocking mode: Interrupt */ 1625 HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); 1626 HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); 1627 /* Non-Blocking mode: DMA */ 1628 HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, 1629 uint16_t Length); 1630 HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); 1631 /** 1632 * @} 1633 */ 1634 1635 /** @addtogroup TIM_Exported_Functions_Group3 TIM PWM functions 1636 * @brief TIM PWM functions 1637 * @{ 1638 */ 1639 /* Timer PWM functions ********************************************************/ 1640 HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim); 1641 HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim); 1642 void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim); 1643 void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim); 1644 /* Blocking mode: Polling */ 1645 HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel); 1646 HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); 1647 /* Non-Blocking mode: Interrupt */ 1648 HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); 1649 HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); 1650 /* Non-Blocking mode: DMA */ 1651 HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, 1652 uint16_t Length); 1653 HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); 1654 /** 1655 * @} 1656 */ 1657 1658 /** @addtogroup TIM_Exported_Functions_Group4 TIM Input Capture functions 1659 * @brief TIM Input Capture functions 1660 * @{ 1661 */ 1662 /* Timer Input Capture functions **********************************************/ 1663 HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim); 1664 HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim); 1665 void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim); 1666 void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim); 1667 /* Blocking mode: Polling */ 1668 HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); 1669 HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); 1670 /* Non-Blocking mode: Interrupt */ 1671 HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); 1672 HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); 1673 /* Non-Blocking mode: DMA */ 1674 HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length); 1675 HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); 1676 /** 1677 * @} 1678 */ 1679 1680 /** @addtogroup TIM_Exported_Functions_Group5 TIM One Pulse functions 1681 * @brief TIM One Pulse functions 1682 * @{ 1683 */ 1684 /* Timer One Pulse functions **************************************************/ 1685 HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode); 1686 HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim); 1687 void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim); 1688 void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim); 1689 /* Blocking mode: Polling */ 1690 HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel); 1691 HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel); 1692 /* Non-Blocking mode: Interrupt */ 1693 HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); 1694 HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); 1695 /** 1696 * @} 1697 */ 1698 1699 /** @addtogroup TIM_Exported_Functions_Group6 TIM Encoder functions 1700 * @brief TIM Encoder functions 1701 * @{ 1702 */ 1703 /* Timer Encoder functions ****************************************************/ 1704 HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, const TIM_Encoder_InitTypeDef *sConfig); 1705 HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim); 1706 void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim); 1707 void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim); 1708 /* Blocking mode: Polling */ 1709 HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel); 1710 HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); 1711 /* Non-Blocking mode: Interrupt */ 1712 HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); 1713 HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); 1714 /* Non-Blocking mode: DMA */ 1715 HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, 1716 uint32_t *pData2, uint16_t Length); 1717 HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); 1718 /** 1719 * @} 1720 */ 1721 1722 /** @addtogroup TIM_Exported_Functions_Group7 TIM IRQ handler management 1723 * @brief IRQ handler management 1724 * @{ 1725 */ 1726 /* Interrupt Handler functions ***********************************************/ 1727 void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim); 1728 /** 1729 * @} 1730 */ 1731 1732 /** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions 1733 * @brief Peripheral Control functions 1734 * @{ 1735 */ 1736 /* Control functions *********************************************************/ 1737 HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, 1738 uint32_t Channel); 1739 HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, 1740 uint32_t Channel); 1741 HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_IC_InitTypeDef *sConfig, 1742 uint32_t Channel); 1743 HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, 1744 uint32_t OutputChannel, uint32_t InputChannel); 1745 HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, 1746 const TIM_ClearInputConfigTypeDef *sClearInputConfig, 1747 uint32_t Channel); 1748 HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig); 1749 HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection); 1750 HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig); 1751 HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig); 1752 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, 1753 uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, uint32_t BurstLength); 1754 HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, 1755 uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, 1756 uint32_t BurstLength, uint32_t DataLength); 1757 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc); 1758 HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, 1759 uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength); 1760 HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, 1761 uint32_t BurstRequestSrc, uint32_t *BurstBuffer, 1762 uint32_t BurstLength, uint32_t DataLength); 1763 HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc); 1764 HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource); 1765 uint32_t HAL_TIM_ReadCapturedValue(const TIM_HandleTypeDef *htim, uint32_t Channel); 1766 /** 1767 * @} 1768 */ 1769 1770 /** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions 1771 * @brief TIM Callbacks functions 1772 * @{ 1773 */ 1774 /* Callback in non blocking modes (Interrupt and DMA) *************************/ 1775 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim); 1776 void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim); 1777 void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim); 1778 void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim); 1779 void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim); 1780 void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim); 1781 void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim); 1782 void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim); 1783 void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim); 1784 void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim); 1785 1786 /* Callbacks Register/UnRegister functions ***********************************/ 1787 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) 1788 HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, 1789 pTIM_CallbackTypeDef pCallback); 1790 HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID); 1791 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ 1792 1793 /** 1794 * @} 1795 */ 1796 1797 /** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions 1798 * @brief Peripheral State functions 1799 * @{ 1800 */ 1801 /* Peripheral State functions ************************************************/ 1802 HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(const TIM_HandleTypeDef *htim); 1803 HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(const TIM_HandleTypeDef *htim); 1804 HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(const TIM_HandleTypeDef *htim); 1805 HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(const TIM_HandleTypeDef *htim); 1806 HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(const TIM_HandleTypeDef *htim); 1807 HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(const TIM_HandleTypeDef *htim); 1808 1809 /* Peripheral Channel state functions ************************************************/ 1810 HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(const TIM_HandleTypeDef *htim); 1811 HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(const TIM_HandleTypeDef *htim, uint32_t Channel); 1812 HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(const TIM_HandleTypeDef *htim); 1813 /** 1814 * @} 1815 */ 1816 1817 /** 1818 * @} 1819 */ 1820 /* End of exported functions -------------------------------------------------*/ 1821 1822 /* Private functions----------------------------------------------------------*/ 1823 /** @defgroup TIM_Private_Functions TIM Private Functions 1824 * @{ 1825 */ 1826 void TIM_DMAError(DMA_HandleTypeDef *hdma); 1827 void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma); 1828 void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma); 1829 1830 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) 1831 void TIM_ResetCallback(TIM_HandleTypeDef *htim); 1832 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ 1833 1834 /** 1835 * @} 1836 */ 1837 /* End of private functions --------------------------------------------------*/ 1838 1839 /** 1840 * @} 1841 */ 1842 1843 /** 1844 * @} 1845 */ 1846 1847 #ifdef __cplusplus 1848 } 1849 #endif 1850 1851 #endif /* STM32L0xx_HAL_TIM_H */ 1852