STM32F4xx HAL Documentation
Hardware Abstraction Layer for STM32F4 familiy
Loading...
Searching...
No Matches
stm32f4xx_hal_tim.h
Go to the documentation of this file.
1
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32F4xx_HAL_TIM_H
21#define STM32F4xx_HAL_TIM_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32f4xx_hal_def.h"
29
38/* Exported types ------------------------------------------------------------*/
46typedef struct
47{
48 uint32_t Prescaler;
51 uint32_t CounterMode;
54 uint32_t Period;
58 uint32_t ClockDivision;
75
79typedef struct
80{
81 uint32_t OCMode;
84 uint32_t Pulse;
87 uint32_t OCPolarity;
90 uint32_t OCNPolarity;
94 uint32_t OCFastMode;
99 uint32_t OCIdleState;
103 uint32_t OCNIdleState;
107
111typedef struct
112{
113 uint32_t OCMode;
116 uint32_t Pulse;
119 uint32_t OCPolarity;
122 uint32_t OCNPolarity;
126 uint32_t OCIdleState;
130 uint32_t OCNIdleState;
134 uint32_t ICPolarity;
137 uint32_t ICSelection;
140 uint32_t ICFilter;
143
147typedef struct
148{
149 uint32_t ICPolarity;
152 uint32_t ICSelection;
155 uint32_t ICPrescaler;
158 uint32_t ICFilter;
161
165typedef struct
166{
167 uint32_t EncoderMode;
170 uint32_t IC1Polarity;
173 uint32_t IC1Selection;
176 uint32_t IC1Prescaler;
179 uint32_t IC1Filter;
182 uint32_t IC2Polarity;
185 uint32_t IC2Selection;
188 uint32_t IC2Prescaler;
191 uint32_t IC2Filter;
194
198typedef struct
199{
200 uint32_t ClockSource;
202 uint32_t ClockPolarity;
204 uint32_t ClockPrescaler;
206 uint32_t ClockFilter;
209
227
231typedef struct
232{
243
247typedef struct
248{
249 uint32_t SlaveMode;
251 uint32_t InputTrigger;
257 uint32_t TriggerFilter;
261
267typedef struct
268{
273 uint32_t LockLevel;
275 uint32_t DeadTime;
277 uint32_t BreakState;
279 uint32_t BreakPolarity;
281 uint32_t BreakFilter;
286
298
308
318
330
334#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
335typedef struct __TIM_HandleTypeDef
336#else
337typedef struct
338#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
339{
340 TIM_TypeDef *Instance;
347 __IO HAL_TIM_ChannelStateTypeDef ChannelState[4];
348 __IO HAL_TIM_ChannelStateTypeDef ChannelNState[4];
351#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
352 void (* Base_MspInitCallback)(struct __TIM_HandleTypeDef *htim);
353 void (* Base_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);
354 void (* IC_MspInitCallback)(struct __TIM_HandleTypeDef *htim);
355 void (* IC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);
356 void (* OC_MspInitCallback)(struct __TIM_HandleTypeDef *htim);
357 void (* OC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);
358 void (* PWM_MspInitCallback)(struct __TIM_HandleTypeDef *htim);
359 void (* PWM_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);
360 void (* OnePulse_MspInitCallback)(struct __TIM_HandleTypeDef *htim);
361 void (* OnePulse_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);
362 void (* Encoder_MspInitCallback)(struct __TIM_HandleTypeDef *htim);
363 void (* Encoder_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);
364 void (* HallSensor_MspInitCallback)(struct __TIM_HandleTypeDef *htim);
365 void (* HallSensor_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim);
366 void (* PeriodElapsedCallback)(struct __TIM_HandleTypeDef *htim);
367 void (* PeriodElapsedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);
368 void (* TriggerCallback)(struct __TIM_HandleTypeDef *htim);
369 void (* TriggerHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);
370 void (* IC_CaptureCallback)(struct __TIM_HandleTypeDef *htim);
371 void (* IC_CaptureHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);
372 void (* OC_DelayElapsedCallback)(struct __TIM_HandleTypeDef *htim);
373 void (* PWM_PulseFinishedCallback)(struct __TIM_HandleTypeDef *htim);
374 void (* PWM_PulseFinishedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);
375 void (* ErrorCallback)(struct __TIM_HandleTypeDef *htim);
376 void (* CommutationCallback)(struct __TIM_HandleTypeDef *htim);
377 void (* CommutationHalfCpltCallback)(struct __TIM_HandleTypeDef *htim);
378 void (* BreakCallback)(struct __TIM_HandleTypeDef *htim);
379#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
381
382#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
386typedef enum
387{
388 HAL_TIM_BASE_MSPINIT_CB_ID = 0x00U
389 , HAL_TIM_BASE_MSPDEINIT_CB_ID = 0x01U
390 , HAL_TIM_IC_MSPINIT_CB_ID = 0x02U
391 , HAL_TIM_IC_MSPDEINIT_CB_ID = 0x03U
392 , HAL_TIM_OC_MSPINIT_CB_ID = 0x04U
393 , HAL_TIM_OC_MSPDEINIT_CB_ID = 0x05U
394 , HAL_TIM_PWM_MSPINIT_CB_ID = 0x06U
395 , HAL_TIM_PWM_MSPDEINIT_CB_ID = 0x07U
396 , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID = 0x08U
397 , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID = 0x09U
398 , HAL_TIM_ENCODER_MSPINIT_CB_ID = 0x0AU
399 , HAL_TIM_ENCODER_MSPDEINIT_CB_ID = 0x0BU
400 , HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID = 0x0CU
401 , HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID = 0x0DU
402 , HAL_TIM_PERIOD_ELAPSED_CB_ID = 0x0EU
403 , HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID = 0x0FU
404 , HAL_TIM_TRIGGER_CB_ID = 0x10U
405 , HAL_TIM_TRIGGER_HALF_CB_ID = 0x11U
406 , HAL_TIM_IC_CAPTURE_CB_ID = 0x12U
407 , HAL_TIM_IC_CAPTURE_HALF_CB_ID = 0x13U
408 , HAL_TIM_OC_DELAY_ELAPSED_CB_ID = 0x14U
409 , HAL_TIM_PWM_PULSE_FINISHED_CB_ID = 0x15U
410 , HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U
411 , HAL_TIM_ERROR_CB_ID = 0x17U
412 , HAL_TIM_COMMUTATION_CB_ID = 0x18U
413 , HAL_TIM_COMMUTATION_HALF_CB_ID = 0x19U
414 , HAL_TIM_BREAK_CB_ID = 0x1AU
415} HAL_TIM_CallbackIDTypeDef;
416
420typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim);
422#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
423
427/* End of exported types -----------------------------------------------------*/
428
429/* Exported constants --------------------------------------------------------*/
437#define TIM_CLEARINPUTSOURCE_NONE 0x00000000U
438#define TIM_CLEARINPUTSOURCE_ETR 0x00000001U
446#define TIM_DMABASE_CR1 0x00000000U
447#define TIM_DMABASE_CR2 0x00000001U
448#define TIM_DMABASE_SMCR 0x00000002U
449#define TIM_DMABASE_DIER 0x00000003U
450#define TIM_DMABASE_SR 0x00000004U
451#define TIM_DMABASE_EGR 0x00000005U
452#define TIM_DMABASE_CCMR1 0x00000006U
453#define TIM_DMABASE_CCMR2 0x00000007U
454#define TIM_DMABASE_CCER 0x00000008U
455#define TIM_DMABASE_CNT 0x00000009U
456#define TIM_DMABASE_PSC 0x0000000AU
457#define TIM_DMABASE_ARR 0x0000000BU
458#define TIM_DMABASE_RCR 0x0000000CU
459#define TIM_DMABASE_CCR1 0x0000000DU
460#define TIM_DMABASE_CCR2 0x0000000EU
461#define TIM_DMABASE_CCR3 0x0000000FU
462#define TIM_DMABASE_CCR4 0x00000010U
463#define TIM_DMABASE_BDTR 0x00000011U
464#define TIM_DMABASE_DCR 0x00000012U
465#define TIM_DMABASE_DMAR 0x00000013U
473#define TIM_EVENTSOURCE_UPDATE TIM_EGR_UG
474#define TIM_EVENTSOURCE_CC1 TIM_EGR_CC1G
475#define TIM_EVENTSOURCE_CC2 TIM_EGR_CC2G
476#define TIM_EVENTSOURCE_CC3 TIM_EGR_CC3G
477#define TIM_EVENTSOURCE_CC4 TIM_EGR_CC4G
478#define TIM_EVENTSOURCE_COM TIM_EGR_COMG
479#define TIM_EVENTSOURCE_TRIGGER TIM_EGR_TG
480#define TIM_EVENTSOURCE_BREAK TIM_EGR_BG
488#define TIM_INPUTCHANNELPOLARITY_RISING 0x00000000U
489#define TIM_INPUTCHANNELPOLARITY_FALLING TIM_CCER_CC1P
490#define TIM_INPUTCHANNELPOLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP)
498#define TIM_ETRPOLARITY_INVERTED TIM_SMCR_ETP
499#define TIM_ETRPOLARITY_NONINVERTED 0x00000000U
507#define TIM_ETRPRESCALER_DIV1 0x00000000U
508#define TIM_ETRPRESCALER_DIV2 TIM_SMCR_ETPS_0
509#define TIM_ETRPRESCALER_DIV4 TIM_SMCR_ETPS_1
510#define TIM_ETRPRESCALER_DIV8 TIM_SMCR_ETPS
518#define TIM_COUNTERMODE_UP 0x00000000U
519#define TIM_COUNTERMODE_DOWN TIM_CR1_DIR
520#define TIM_COUNTERMODE_CENTERALIGNED1 TIM_CR1_CMS_0
521#define TIM_COUNTERMODE_CENTERALIGNED2 TIM_CR1_CMS_1
522#define TIM_COUNTERMODE_CENTERALIGNED3 TIM_CR1_CMS
530#define TIM_CLOCKDIVISION_DIV1 0x00000000U
531#define TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0
532#define TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1
540#define TIM_OUTPUTSTATE_DISABLE 0x00000000U
541#define TIM_OUTPUTSTATE_ENABLE TIM_CCER_CC1E
549#define TIM_AUTORELOAD_PRELOAD_DISABLE 0x00000000U
550#define TIM_AUTORELOAD_PRELOAD_ENABLE TIM_CR1_ARPE
559#define TIM_OCFAST_DISABLE 0x00000000U
560#define TIM_OCFAST_ENABLE TIM_CCMR1_OC1FE
568#define TIM_OUTPUTNSTATE_DISABLE 0x00000000U
569#define TIM_OUTPUTNSTATE_ENABLE TIM_CCER_CC1NE
577#define TIM_OCPOLARITY_HIGH 0x00000000U
578#define TIM_OCPOLARITY_LOW TIM_CCER_CC1P
586#define TIM_OCNPOLARITY_HIGH 0x00000000U
587#define TIM_OCNPOLARITY_LOW TIM_CCER_CC1NP
595#define TIM_OCIDLESTATE_SET TIM_CR2_OIS1
596#define TIM_OCIDLESTATE_RESET 0x00000000U
604#define TIM_OCNIDLESTATE_SET TIM_CR2_OIS1N
605#define TIM_OCNIDLESTATE_RESET 0x00000000U
613#define TIM_ICPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING
614#define TIM_ICPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING
615#define TIM_ICPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE
623#define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING
624#define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING
632#define TIM_ICSELECTION_DIRECTTI TIM_CCMR1_CC1S_0
633#define TIM_ICSELECTION_INDIRECTTI TIM_CCMR1_CC1S_1
634#define TIM_ICSELECTION_TRC TIM_CCMR1_CC1S
642#define TIM_ICPSC_DIV1 0x00000000U
643#define TIM_ICPSC_DIV2 TIM_CCMR1_IC1PSC_0
644#define TIM_ICPSC_DIV4 TIM_CCMR1_IC1PSC_1
645#define TIM_ICPSC_DIV8 TIM_CCMR1_IC1PSC
653#define TIM_OPMODE_SINGLE TIM_CR1_OPM
654#define TIM_OPMODE_REPETITIVE 0x00000000U
662#define TIM_ENCODERMODE_TI1 TIM_SMCR_SMS_0
663#define TIM_ENCODERMODE_TI2 TIM_SMCR_SMS_1
664#define TIM_ENCODERMODE_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)
672#define TIM_IT_UPDATE TIM_DIER_UIE
673#define TIM_IT_CC1 TIM_DIER_CC1IE
674#define TIM_IT_CC2 TIM_DIER_CC2IE
675#define TIM_IT_CC3 TIM_DIER_CC3IE
676#define TIM_IT_CC4 TIM_DIER_CC4IE
677#define TIM_IT_COM TIM_DIER_COMIE
678#define TIM_IT_TRIGGER TIM_DIER_TIE
679#define TIM_IT_BREAK TIM_DIER_BIE
687#define TIM_COMMUTATION_TRGI TIM_CR2_CCUS
688#define TIM_COMMUTATION_SOFTWARE 0x00000000U
696#define TIM_DMA_UPDATE TIM_DIER_UDE
697#define TIM_DMA_CC1 TIM_DIER_CC1DE
698#define TIM_DMA_CC2 TIM_DIER_CC2DE
699#define TIM_DMA_CC3 TIM_DIER_CC3DE
700#define TIM_DMA_CC4 TIM_DIER_CC4DE
701#define TIM_DMA_COM TIM_DIER_COMDE
702#define TIM_DMA_TRIGGER TIM_DIER_TDE
710#define TIM_CCDMAREQUEST_CC 0x00000000U
711#define TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS
719#define TIM_FLAG_UPDATE TIM_SR_UIF
720#define TIM_FLAG_CC1 TIM_SR_CC1IF
721#define TIM_FLAG_CC2 TIM_SR_CC2IF
722#define TIM_FLAG_CC3 TIM_SR_CC3IF
723#define TIM_FLAG_CC4 TIM_SR_CC4IF
724#define TIM_FLAG_COM TIM_SR_COMIF
725#define TIM_FLAG_TRIGGER TIM_SR_TIF
726#define TIM_FLAG_BREAK TIM_SR_BIF
727#define TIM_FLAG_CC1OF TIM_SR_CC1OF
728#define TIM_FLAG_CC2OF TIM_SR_CC2OF
729#define TIM_FLAG_CC3OF TIM_SR_CC3OF
730#define TIM_FLAG_CC4OF TIM_SR_CC4OF
738#define TIM_CHANNEL_1 0x00000000U
739#define TIM_CHANNEL_2 0x00000004U
740#define TIM_CHANNEL_3 0x00000008U
741#define TIM_CHANNEL_4 0x0000000CU
742#define TIM_CHANNEL_ALL 0x0000003CU
750#define TIM_CLOCKSOURCE_INTERNAL TIM_SMCR_ETPS_0
751#define TIM_CLOCKSOURCE_ETRMODE1 TIM_TS_ETRF
752#define TIM_CLOCKSOURCE_ETRMODE2 TIM_SMCR_ETPS_1
753#define TIM_CLOCKSOURCE_TI1ED TIM_TS_TI1F_ED
754#define TIM_CLOCKSOURCE_TI1 TIM_TS_TI1FP1
755#define TIM_CLOCKSOURCE_TI2 TIM_TS_TI2FP2
756#define TIM_CLOCKSOURCE_ITR0 TIM_TS_ITR0
757#define TIM_CLOCKSOURCE_ITR1 TIM_TS_ITR1
758#define TIM_CLOCKSOURCE_ITR2 TIM_TS_ITR2
759#define TIM_CLOCKSOURCE_ITR3 TIM_TS_ITR3
767#define TIM_CLOCKPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED
768#define TIM_CLOCKPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED
769#define TIM_CLOCKPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING
770#define TIM_CLOCKPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING
771#define TIM_CLOCKPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE
779#define TIM_CLOCKPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1
780#define TIM_CLOCKPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2
781#define TIM_CLOCKPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4
782#define TIM_CLOCKPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8
790#define TIM_CLEARINPUTPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED
791#define TIM_CLEARINPUTPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED
799#define TIM_CLEARINPUTPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1
800#define TIM_CLEARINPUTPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2
801#define TIM_CLEARINPUTPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4
802#define TIM_CLEARINPUTPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8
810#define TIM_OSSR_ENABLE TIM_BDTR_OSSR
811#define TIM_OSSR_DISABLE 0x00000000U
819#define TIM_OSSI_ENABLE TIM_BDTR_OSSI
820#define TIM_OSSI_DISABLE 0x00000000U
827#define TIM_LOCKLEVEL_OFF 0x00000000U
828#define TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0
829#define TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1
830#define TIM_LOCKLEVEL_3 TIM_BDTR_LOCK
838#define TIM_BREAK_ENABLE TIM_BDTR_BKE
839#define TIM_BREAK_DISABLE 0x00000000U
847#define TIM_BREAKPOLARITY_LOW 0x00000000U
848#define TIM_BREAKPOLARITY_HIGH TIM_BDTR_BKP
856#define TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U
857#define TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE
865#define TIM_TRGO_RESET 0x00000000U
866#define TIM_TRGO_ENABLE TIM_CR2_MMS_0
867#define TIM_TRGO_UPDATE TIM_CR2_MMS_1
868#define TIM_TRGO_OC1 (TIM_CR2_MMS_1 | TIM_CR2_MMS_0)
869#define TIM_TRGO_OC1REF TIM_CR2_MMS_2
870#define TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0)
871#define TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1)
872#define TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0)
880#define TIM_MASTERSLAVEMODE_ENABLE TIM_SMCR_MSM
881#define TIM_MASTERSLAVEMODE_DISABLE 0x00000000U
889#define TIM_SLAVEMODE_DISABLE 0x00000000U
890#define TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2
891#define TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0)
892#define TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1)
893#define TIM_SLAVEMODE_EXTERNAL1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)
901#define TIM_OCMODE_TIMING 0x00000000U
902#define TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0
903#define TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1
904#define TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)
905#define TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1)
906#define TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)
907#define TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)
908#define TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2
916#define TIM_TS_ITR0 0x00000000U
917#define TIM_TS_ITR1 TIM_SMCR_TS_0
918#define TIM_TS_ITR2 TIM_SMCR_TS_1
919#define TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)
920#define TIM_TS_TI1F_ED TIM_SMCR_TS_2
921#define TIM_TS_TI1FP1 (TIM_SMCR_TS_0 | TIM_SMCR_TS_2)
922#define TIM_TS_TI2FP2 (TIM_SMCR_TS_1 | TIM_SMCR_TS_2)
923#define TIM_TS_ETRF (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2)
924#define TIM_TS_NONE 0x0000FFFFU
932#define TIM_TRIGGERPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED
933#define TIM_TRIGGERPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED
934#define TIM_TRIGGERPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING
935#define TIM_TRIGGERPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING
936#define TIM_TRIGGERPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE
944#define TIM_TRIGGERPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1
945#define TIM_TRIGGERPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2
946#define TIM_TRIGGERPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4
947#define TIM_TRIGGERPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8
955#define TIM_TI1SELECTION_CH1 0x00000000U
956#define TIM_TI1SELECTION_XORCOMBINATION TIM_CR2_TI1S
964#define TIM_DMABURSTLENGTH_1TRANSFER 0x00000000U
965#define TIM_DMABURSTLENGTH_2TRANSFERS 0x00000100U
966#define TIM_DMABURSTLENGTH_3TRANSFERS 0x00000200U
967#define TIM_DMABURSTLENGTH_4TRANSFERS 0x00000300U
968#define TIM_DMABURSTLENGTH_5TRANSFERS 0x00000400U
969#define TIM_DMABURSTLENGTH_6TRANSFERS 0x00000500U
970#define TIM_DMABURSTLENGTH_7TRANSFERS 0x00000600U
971#define TIM_DMABURSTLENGTH_8TRANSFERS 0x00000700U
972#define TIM_DMABURSTLENGTH_9TRANSFERS 0x00000800U
973#define TIM_DMABURSTLENGTH_10TRANSFERS 0x00000900U
974#define TIM_DMABURSTLENGTH_11TRANSFERS 0x00000A00U
975#define TIM_DMABURSTLENGTH_12TRANSFERS 0x00000B00U
976#define TIM_DMABURSTLENGTH_13TRANSFERS 0x00000C00U
977#define TIM_DMABURSTLENGTH_14TRANSFERS 0x00000D00U
978#define TIM_DMABURSTLENGTH_15TRANSFERS 0x00000E00U
979#define TIM_DMABURSTLENGTH_16TRANSFERS 0x00000F00U
980#define TIM_DMABURSTLENGTH_17TRANSFERS 0x00001000U
981#define TIM_DMABURSTLENGTH_18TRANSFERS 0x00001100U
989#define TIM_DMA_ID_UPDATE ((uint16_t) 0x0000)
990#define TIM_DMA_ID_CC1 ((uint16_t) 0x0001)
991#define TIM_DMA_ID_CC2 ((uint16_t) 0x0002)
992#define TIM_DMA_ID_CC3 ((uint16_t) 0x0003)
993#define TIM_DMA_ID_CC4 ((uint16_t) 0x0004)
994#define TIM_DMA_ID_COMMUTATION ((uint16_t) 0x0005)
995#define TIM_DMA_ID_TRIGGER ((uint16_t) 0x0006)
1003#define TIM_CCx_ENABLE 0x00000001U
1004#define TIM_CCx_DISABLE 0x00000000U
1005#define TIM_CCxN_ENABLE 0x00000004U
1006#define TIM_CCxN_DISABLE 0x00000000U
1014/* End of exported constants -------------------------------------------------*/
1015
1016/* Exported macros -----------------------------------------------------------*/
1025#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
1026#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \
1027 (__HANDLE__)->State = HAL_TIM_STATE_RESET; \
1028 (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \
1029 (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \
1030 (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \
1031 (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \
1032 (__HANDLE__)->ChannelNState[0] = HAL_TIM_CHANNEL_STATE_RESET; \
1033 (__HANDLE__)->ChannelNState[1] = HAL_TIM_CHANNEL_STATE_RESET; \
1034 (__HANDLE__)->ChannelNState[2] = HAL_TIM_CHANNEL_STATE_RESET; \
1035 (__HANDLE__)->ChannelNState[3] = HAL_TIM_CHANNEL_STATE_RESET; \
1036 (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \
1037 (__HANDLE__)->Base_MspInitCallback = NULL; \
1038 (__HANDLE__)->Base_MspDeInitCallback = NULL; \
1039 (__HANDLE__)->IC_MspInitCallback = NULL; \
1040 (__HANDLE__)->IC_MspDeInitCallback = NULL; \
1041 (__HANDLE__)->OC_MspInitCallback = NULL; \
1042 (__HANDLE__)->OC_MspDeInitCallback = NULL; \
1043 (__HANDLE__)->PWM_MspInitCallback = NULL; \
1044 (__HANDLE__)->PWM_MspDeInitCallback = NULL; \
1045 (__HANDLE__)->OnePulse_MspInitCallback = NULL; \
1046 (__HANDLE__)->OnePulse_MspDeInitCallback = NULL; \
1047 (__HANDLE__)->Encoder_MspInitCallback = NULL; \
1048 (__HANDLE__)->Encoder_MspDeInitCallback = NULL; \
1049 (__HANDLE__)->HallSensor_MspInitCallback = NULL; \
1050 (__HANDLE__)->HallSensor_MspDeInitCallback = NULL; \
1051 } while(0)
1052#else
1053#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \
1054 (__HANDLE__)->State = HAL_TIM_STATE_RESET; \
1055 (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \
1056 (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \
1057 (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \
1058 (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \
1059 (__HANDLE__)->ChannelNState[0] = HAL_TIM_CHANNEL_STATE_RESET; \
1060 (__HANDLE__)->ChannelNState[1] = HAL_TIM_CHANNEL_STATE_RESET; \
1061 (__HANDLE__)->ChannelNState[2] = HAL_TIM_CHANNEL_STATE_RESET; \
1062 (__HANDLE__)->ChannelNState[3] = HAL_TIM_CHANNEL_STATE_RESET; \
1063 (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \
1064 } while(0)
1065#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
1066
1072#define __HAL_TIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN))
1073
1079#define __HAL_TIM_MOE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->BDTR|=(TIM_BDTR_MOE))
1080
1086#define __HAL_TIM_DISABLE(__HANDLE__) \
1087 do { \
1088 if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
1089 { \
1090 if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
1091 { \
1092 (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
1093 } \
1094 } \
1095 } while(0)
1096
1104#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
1105 do { \
1106 if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
1107 { \
1108 if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
1109 { \
1110 (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
1111 } \
1112 } \
1113 } while(0)
1114
1121#define __HAL_TIM_MOE_DISABLE_UNCONDITIONALLY(__HANDLE__) (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE)
1122
1137#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__))
1138
1153#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__))
1154
1168#define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER |= (__DMA__))
1169
1183#define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER &= ~(__DMA__))
1184
1203#define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__))
1204
1223#define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__))
1224
1240#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \
1241 == (__INTERRUPT__)) ? SET : RESET)
1242
1257#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
1258
1266#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))
1267
1274#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) ((__HANDLE__)->Instance->PSC = (__PRESC__))
1275
1282#define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->CNT = (__COUNTER__))
1283
1289#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
1290
1297#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
1298 do{ \
1299 (__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \
1300 (__HANDLE__)->Init.Period = (__AUTORELOAD__); \
1301 } while(0)
1302
1308#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR)
1309
1320#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
1321 do{ \
1322 (__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \
1323 (__HANDLE__)->Instance->CR1 |= (__CKD__); \
1324 (__HANDLE__)->Init.ClockDivision = (__CKD__); \
1325 } while(0)
1326
1335#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
1336
1355#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
1356 do{ \
1357 TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \
1358 TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
1359 } while(0)
1360
1376#define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__) \
1377 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\
1378 ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8U) :\
1379 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\
1380 (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8U)
1381
1394#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
1395 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
1396 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
1397 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
1398 ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)))
1399
1411#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
1412 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
1413 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
1414 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
1415 ((__HANDLE__)->Instance->CCR4))
1416
1428#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
1429 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
1430 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
1431 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
1432 ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE))
1433
1445#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
1446 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\
1447 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\
1448 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\
1449 ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE))
1450
1466#define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
1467 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\
1468 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\
1469 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\
1470 ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE))
1471
1487#define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
1488 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\
1489 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\
1490 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\
1491 ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE))
1492
1501#define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)
1502
1514#define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)
1515
1531#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
1532 do{ \
1533 TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \
1534 TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
1535 }while(0)
1536
1545#define __HAL_TIM_SELECT_CCDMAREQUEST(__HANDLE__, __CCDMA__) \
1546 MODIFY_REG((__HANDLE__)->Instance->CR2, TIM_CR2_CCDS, (__CCDMA__))
1547
1551/* End of exported macros ----------------------------------------------------*/
1552
1553/* Private constants ---------------------------------------------------------*/
1557/* The counter of a timer instance is disabled only if all the CCx and CCxN
1558 channels have been disabled */
1559#define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E))
1560#define TIM_CCER_CCxNE_MASK ((uint32_t)(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE))
1564/* End of private constants --------------------------------------------------*/
1565
1566/* Private macros ------------------------------------------------------------*/
1570#define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_NONE) || \
1571 ((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))
1572
1573#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
1574 ((__BASE__) == TIM_DMABASE_CR2) || \
1575 ((__BASE__) == TIM_DMABASE_SMCR) || \
1576 ((__BASE__) == TIM_DMABASE_DIER) || \
1577 ((__BASE__) == TIM_DMABASE_SR) || \
1578 ((__BASE__) == TIM_DMABASE_EGR) || \
1579 ((__BASE__) == TIM_DMABASE_CCMR1) || \
1580 ((__BASE__) == TIM_DMABASE_CCMR2) || \
1581 ((__BASE__) == TIM_DMABASE_CCER) || \
1582 ((__BASE__) == TIM_DMABASE_CNT) || \
1583 ((__BASE__) == TIM_DMABASE_PSC) || \
1584 ((__BASE__) == TIM_DMABASE_ARR) || \
1585 ((__BASE__) == TIM_DMABASE_RCR) || \
1586 ((__BASE__) == TIM_DMABASE_CCR1) || \
1587 ((__BASE__) == TIM_DMABASE_CCR2) || \
1588 ((__BASE__) == TIM_DMABASE_CCR3) || \
1589 ((__BASE__) == TIM_DMABASE_CCR4) || \
1590 ((__BASE__) == TIM_DMABASE_BDTR))
1591
1592#define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFF00U) == 0x00000000U) && ((__SOURCE__) != 0x00000000U))
1593
1594#define IS_TIM_COUNTER_MODE(__MODE__) (((__MODE__) == TIM_COUNTERMODE_UP) || \
1595 ((__MODE__) == TIM_COUNTERMODE_DOWN) || \
1596 ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1) || \
1597 ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \
1598 ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
1599
1600#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
1601 ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
1602 ((__DIV__) == TIM_CLOCKDIVISION_DIV4))
1603
1604#define IS_TIM_AUTORELOAD_PRELOAD(PRELOAD) (((PRELOAD) == TIM_AUTORELOAD_PRELOAD_DISABLE) || \
1605 ((PRELOAD) == TIM_AUTORELOAD_PRELOAD_ENABLE))
1606
1607#define IS_TIM_FAST_STATE(__STATE__) (((__STATE__) == TIM_OCFAST_DISABLE) || \
1608 ((__STATE__) == TIM_OCFAST_ENABLE))
1609
1610#define IS_TIM_OC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \
1611 ((__POLARITY__) == TIM_OCPOLARITY_LOW))
1612
1613#define IS_TIM_OCN_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCNPOLARITY_HIGH) || \
1614 ((__POLARITY__) == TIM_OCNPOLARITY_LOW))
1615
1616#define IS_TIM_OCIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCIDLESTATE_SET) || \
1617 ((__STATE__) == TIM_OCIDLESTATE_RESET))
1618
1619#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \
1620 ((__STATE__) == TIM_OCNIDLESTATE_RESET))
1621
1622#define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \
1623 ((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING))
1624
1625#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \
1626 ((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \
1627 ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
1628
1629#define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \
1630 ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \
1631 ((__SELECTION__) == TIM_ICSELECTION_TRC))
1632
1633#define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \
1634 ((__PRESCALER__) == TIM_ICPSC_DIV2) || \
1635 ((__PRESCALER__) == TIM_ICPSC_DIV4) || \
1636 ((__PRESCALER__) == TIM_ICPSC_DIV8))
1637
1638#define IS_TIM_OPM_MODE(__MODE__) (((__MODE__) == TIM_OPMODE_SINGLE) || \
1639 ((__MODE__) == TIM_OPMODE_REPETITIVE))
1640
1641#define IS_TIM_ENCODER_MODE(__MODE__) (((__MODE__) == TIM_ENCODERMODE_TI1) || \
1642 ((__MODE__) == TIM_ENCODERMODE_TI2) || \
1643 ((__MODE__) == TIM_ENCODERMODE_TI12))
1644
1645#define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFF80FFU) == 0x00000000U) && ((__SOURCE__) != 0x00000000U))
1646
1647#define IS_TIM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \
1648 ((__CHANNEL__) == TIM_CHANNEL_2) || \
1649 ((__CHANNEL__) == TIM_CHANNEL_3) || \
1650 ((__CHANNEL__) == TIM_CHANNEL_4) || \
1651 ((__CHANNEL__) == TIM_CHANNEL_ALL))
1652
1653#define IS_TIM_OPM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \
1654 ((__CHANNEL__) == TIM_CHANNEL_2))
1655
1656#define IS_TIM_PERIOD(__HANDLE__, __PERIOD__) ((IS_TIM_32B_COUNTER_INSTANCE(((__HANDLE__)->Instance)) == 0U) ? \
1657 (((__PERIOD__) > 0U) && ((__PERIOD__) <= 0x0000FFFFU)) : \
1658 ((__PERIOD__) > 0U))
1659
1660#define IS_TIM_COMPLEMENTARY_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \
1661 ((__CHANNEL__) == TIM_CHANNEL_2) || \
1662 ((__CHANNEL__) == TIM_CHANNEL_3))
1663
1664#define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \
1665 ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1) || \
1666 ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \
1667 ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED) || \
1668 ((__CLOCK__) == TIM_CLOCKSOURCE_TI1) || \
1669 ((__CLOCK__) == TIM_CLOCKSOURCE_TI2) || \
1670 ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0) || \
1671 ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1) || \
1672 ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2) || \
1673 ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3))
1674
1675#define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED) || \
1676 ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \
1677 ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING) || \
1678 ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING) || \
1679 ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE))
1680
1681#define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \
1682 ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \
1683 ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \
1684 ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8))
1685
1686#define IS_TIM_CLOCKFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)
1687
1688#define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \
1689 ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED))
1690
1691#define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \
1692 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \
1693 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \
1694 ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8))
1695
1696#define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)
1697
1698#define IS_TIM_OSSR_STATE(__STATE__) (((__STATE__) == TIM_OSSR_ENABLE) || \
1699 ((__STATE__) == TIM_OSSR_DISABLE))
1700
1701#define IS_TIM_OSSI_STATE(__STATE__) (((__STATE__) == TIM_OSSI_ENABLE) || \
1702 ((__STATE__) == TIM_OSSI_DISABLE))
1703
1704#define IS_TIM_LOCK_LEVEL(__LEVEL__) (((__LEVEL__) == TIM_LOCKLEVEL_OFF) || \
1705 ((__LEVEL__) == TIM_LOCKLEVEL_1) || \
1706 ((__LEVEL__) == TIM_LOCKLEVEL_2) || \
1707 ((__LEVEL__) == TIM_LOCKLEVEL_3))
1708
1709#define IS_TIM_BREAK_FILTER(__BRKFILTER__) ((__BRKFILTER__) <= 0xFUL)
1710
1711#define IS_TIM_BREAK_STATE(__STATE__) (((__STATE__) == TIM_BREAK_ENABLE) || \
1712 ((__STATE__) == TIM_BREAK_DISABLE))
1713
1714#define IS_TIM_BREAK_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKPOLARITY_LOW) || \
1715 ((__POLARITY__) == TIM_BREAKPOLARITY_HIGH))
1716
1717#define IS_TIM_AUTOMATIC_OUTPUT_STATE(__STATE__) (((__STATE__) == TIM_AUTOMATICOUTPUT_ENABLE) || \
1718 ((__STATE__) == TIM_AUTOMATICOUTPUT_DISABLE))
1719
1720#define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET) || \
1721 ((__SOURCE__) == TIM_TRGO_ENABLE) || \
1722 ((__SOURCE__) == TIM_TRGO_UPDATE) || \
1723 ((__SOURCE__) == TIM_TRGO_OC1) || \
1724 ((__SOURCE__) == TIM_TRGO_OC1REF) || \
1725 ((__SOURCE__) == TIM_TRGO_OC2REF) || \
1726 ((__SOURCE__) == TIM_TRGO_OC3REF) || \
1727 ((__SOURCE__) == TIM_TRGO_OC4REF))
1728
1729#define IS_TIM_MSM_STATE(__STATE__) (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \
1730 ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE))
1731
1732#define IS_TIM_SLAVE_MODE(__MODE__) (((__MODE__) == TIM_SLAVEMODE_DISABLE) || \
1733 ((__MODE__) == TIM_SLAVEMODE_RESET) || \
1734 ((__MODE__) == TIM_SLAVEMODE_GATED) || \
1735 ((__MODE__) == TIM_SLAVEMODE_TRIGGER) || \
1736 ((__MODE__) == TIM_SLAVEMODE_EXTERNAL1))
1737
1738#define IS_TIM_PWM_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_PWM1) || \
1739 ((__MODE__) == TIM_OCMODE_PWM2))
1740
1741#define IS_TIM_OC_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_TIMING) || \
1742 ((__MODE__) == TIM_OCMODE_ACTIVE) || \
1743 ((__MODE__) == TIM_OCMODE_INACTIVE) || \
1744 ((__MODE__) == TIM_OCMODE_TOGGLE) || \
1745 ((__MODE__) == TIM_OCMODE_FORCED_ACTIVE) || \
1746 ((__MODE__) == TIM_OCMODE_FORCED_INACTIVE))
1747
1748#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \
1749 ((__SELECTION__) == TIM_TS_ITR1) || \
1750 ((__SELECTION__) == TIM_TS_ITR2) || \
1751 ((__SELECTION__) == TIM_TS_ITR3) || \
1752 ((__SELECTION__) == TIM_TS_TI1F_ED) || \
1753 ((__SELECTION__) == TIM_TS_TI1FP1) || \
1754 ((__SELECTION__) == TIM_TS_TI2FP2) || \
1755 ((__SELECTION__) == TIM_TS_ETRF))
1756
1757#define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \
1758 ((__SELECTION__) == TIM_TS_ITR1) || \
1759 ((__SELECTION__) == TIM_TS_ITR2) || \
1760 ((__SELECTION__) == TIM_TS_ITR3) || \
1761 ((__SELECTION__) == TIM_TS_NONE))
1762
1763#define IS_TIM_TRIGGERPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED ) || \
1764 ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \
1765 ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING ) || \
1766 ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING ) || \
1767 ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE ))
1768
1769#define IS_TIM_TRIGGERPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \
1770 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \
1771 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \
1772 ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8))
1773
1774#define IS_TIM_TRIGGERFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)
1775
1776#define IS_TIM_TI1SELECTION(__TI1SELECTION__) (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \
1777 ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION))
1778
1779#define IS_TIM_DMA_LENGTH(__LENGTH__) (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER) || \
1780 ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS) || \
1781 ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS) || \
1782 ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS) || \
1783 ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS) || \
1784 ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS) || \
1785 ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS) || \
1786 ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS) || \
1787 ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS) || \
1788 ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \
1789 ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \
1790 ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \
1791 ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \
1792 ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \
1793 ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \
1794 ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \
1795 ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \
1796 ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS))
1797
1798#define IS_TIM_DMA_DATA_LENGTH(LENGTH) (((LENGTH) >= 0x1U) && ((LENGTH) < 0x10000U))
1799
1800#define IS_TIM_IC_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU)
1801
1802#define IS_TIM_DEADTIME(__DEADTIME__) ((__DEADTIME__) <= 0xFFU)
1803
1804#define IS_TIM_SLAVEMODE_TRIGGER_ENABLED(__TRIGGER__) ((__TRIGGER__) == TIM_SLAVEMODE_TRIGGER)
1805
1806#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
1807 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
1808 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\
1809 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
1810 ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))
1811
1812#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
1813 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\
1814 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\
1815 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\
1816 ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC))
1817
1818#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
1819 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
1820 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\
1821 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\
1822 ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))
1823
1824#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
1825 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
1826 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
1827 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
1828 ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))
1829
1830#define TIM_CHANNEL_STATE_GET(__HANDLE__, __CHANNEL__)\
1831 (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelState[0] :\
1832 ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelState[1] :\
1833 ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelState[2] :\
1834 (__HANDLE__)->ChannelState[3])
1835
1836#define TIM_CHANNEL_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \
1837 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__)) :\
1838 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__)) :\
1839 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__)) :\
1840 ((__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__)))
1841
1842#define TIM_CHANNEL_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \
1843 (__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__); \
1844 (__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__); \
1845 (__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__); \
1846 (__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__); \
1847 } while(0)
1848
1849#define TIM_CHANNEL_N_STATE_GET(__HANDLE__, __CHANNEL__)\
1850 (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelNState[0] :\
1851 ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelNState[1] :\
1852 ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelNState[2] :\
1853 (__HANDLE__)->ChannelNState[3])
1854
1855#define TIM_CHANNEL_N_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \
1856 (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelNState[0] = (__CHANNEL_STATE__)) :\
1857 ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelNState[1] = (__CHANNEL_STATE__)) :\
1858 ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelNState[2] = (__CHANNEL_STATE__)) :\
1859 ((__HANDLE__)->ChannelNState[3] = (__CHANNEL_STATE__)))
1860
1861#define TIM_CHANNEL_N_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \
1862 (__HANDLE__)->ChannelNState[0] = \
1863 (__CHANNEL_STATE__); \
1864 (__HANDLE__)->ChannelNState[1] = \
1865 (__CHANNEL_STATE__); \
1866 (__HANDLE__)->ChannelNState[2] = \
1867 (__CHANNEL_STATE__); \
1868 (__HANDLE__)->ChannelNState[3] = \
1869 (__CHANNEL_STATE__); \
1870 } while(0)
1871
1875/* End of private macros -----------------------------------------------------*/
1876
1877/* Include TIM HAL Extended module */
1878#include "stm32f4xx_hal_tim_ex.h"
1879
1880/* Exported functions --------------------------------------------------------*/
1889/* Time Base functions ********************************************************/
1894/* Blocking mode: Polling */
1897/* Non-Blocking mode: Interrupt */
1900/* Non-Blocking mode: DMA */
1901HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length);
1911/* Timer Output Compare functions *********************************************/
1916/* Blocking mode: Polling */
1918HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
1919/* Non-Blocking mode: Interrupt */
1922/* Non-Blocking mode: DMA */
1923HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData,
1924 uint16_t Length);
1934/* Timer PWM functions ********************************************************/
1939/* Blocking mode: Polling */
1942/* Non-Blocking mode: Interrupt */
1945/* Non-Blocking mode: DMA */
1946HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData,
1947 uint16_t Length);
1957/* Timer Input Capture functions **********************************************/
1962/* Blocking mode: Polling */
1964HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
1965/* Non-Blocking mode: Interrupt */
1968/* Non-Blocking mode: DMA */
1969HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length);
1979/* Timer One Pulse functions **************************************************/
1980HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode);
1984/* Blocking mode: Polling */
1985HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
1986HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
1987/* Non-Blocking mode: Interrupt */
1989HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
1998/* Timer Encoder functions ****************************************************/
2003/* Blocking mode: Polling */
2006/* Non-Blocking mode: Interrupt */
2009/* Non-Blocking mode: DMA */
2010HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,
2011 uint32_t *pData2, uint16_t Length);
2021/* Interrupt Handler functions ***********************************************/
2031/* Control functions *********************************************************/
2033 uint32_t Channel);
2035 uint32_t Channel);
2037 uint32_t Channel);
2039 uint32_t OutputChannel, uint32_t InputChannel);
2041 const TIM_ClearInputConfigTypeDef *sClearInputConfig,
2042 uint32_t Channel);
2044HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
2047HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
2048 uint32_t BurstRequestSrc, const uint32_t *BurstBuffer,
2049 uint32_t BurstLength);
2051 uint32_t BurstRequestSrc, const uint32_t *BurstBuffer,
2052 uint32_t BurstLength, uint32_t DataLength);
2053HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
2054HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
2055 uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
2057 uint32_t BurstRequestSrc, uint32_t *BurstBuffer,
2058 uint32_t BurstLength, uint32_t DataLength);
2059HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
2060HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
2061uint32_t HAL_TIM_ReadCapturedValue(const TIM_HandleTypeDef *htim, uint32_t Channel);
2070/* Callback in non blocking modes (Interrupt and DMA) *************************/
2081
2082/* Callbacks Register/UnRegister functions ***********************************/
2083#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
2084HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,
2085 pTIM_CallbackTypeDef pCallback);
2086HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);
2087#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
2088
2097/* Peripheral State functions ************************************************/
2104
2105/* Peripheral Channel state functions ************************************************/
2116/* End of exported functions -------------------------------------------------*/
2117
2118/* Private functions----------------------------------------------------------*/
2122void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure);
2123void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
2124void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config);
2125void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler,
2126 uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter);
2127
2132void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState);
2133
2134#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
2135void TIM_ResetCallback(TIM_HandleTypeDef *htim);
2136#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
2137
2141/* End of private functions --------------------------------------------------*/
2142
2151#ifdef __cplusplus
2152}
2153#endif
2154
2155#endif /* STM32F4xx_HAL_TIM_H */
HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(const TIM_HandleTypeDef *htim)
Return the TIM One Pulse Mode handle state.
HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(const TIM_HandleTypeDef *htim)
Return the TIM Input Capture handle state.
HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(const TIM_HandleTypeDef *htim, uint32_t Channel)
Return actual state of the TIM channel.
HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(const TIM_HandleTypeDef *htim)
Return the TIM Base handle state.
HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(const TIM_HandleTypeDef *htim)
Return the TIM Encoder Mode handle state.
HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(const TIM_HandleTypeDef *htim)
Return the TIM PWM handle state.
HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(const TIM_HandleTypeDef *htim)
Return the TIM Encoder Mode handle state.
HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(const TIM_HandleTypeDef *htim)
Return actual state of a DMA burst operation.
HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(const TIM_HandleTypeDef *htim)
Return the TIM OC handle state.
HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim)
Stops the TIM Base generation in interrupt mode.
HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)
Initializes the TIM Time base Unit according to the specified parameters in the TIM_HandleTypeDef and...
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
Initializes the TIM Base MSP.
HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length)
Starts the TIM Base generation in DMA mode.
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim)
DeInitializes TIM Base MSP.
HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim)
Stops the TIM Base generation in DMA mode.
HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim)
Stops the TIM Base generation.
HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim)
DeInitializes the TIM Base peripheral.
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)
Starts the TIM Base generation in interrupt mode.
HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)
Starts the TIM Base generation.
void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim)
DeInitializes TIM Output Compare MSP.
HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, uint16_t Length)
Starts the TIM Output Compare signal generation in DMA mode.
HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Output Compare signal generation in DMA mode.
HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
Starts the TIM Output Compare signal generation.
HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim)
Initializes the TIM Output Compare according to the specified parameters in the TIM_HandleTypeDef and...
HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim)
DeInitializes the TIM peripheral.
HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Output Compare signal generation.
void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)
Initializes the TIM Output Compare MSP.
HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Output Compare signal generation in interrupt mode.
HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
Starts the TIM Output Compare signal generation in interrupt mode.
HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the PWM signal generation in interrupt mode.
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
Starts the PWM signal generation.
HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim)
Initializes the TIM PWM Time Base according to the specified parameters in the TIM_HandleTypeDef and ...
HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, uint16_t Length)
Starts the TIM PWM signal generation in DMA mode.
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
Initializes the TIM PWM MSP.
HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim)
DeInitializes the TIM peripheral.
void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim)
DeInitializes TIM PWM MSP.
HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
Starts the PWM signal generation in interrupt mode.
HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM PWM signal generation in DMA mode.
HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the PWM signal generation.
HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Input Capture measurement.
void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)
Initializes the TIM Input Capture MSP.
HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim)
DeInitializes the TIM peripheral.
HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim)
Initializes the TIM Input Capture Time base according to the specified parameters in the TIM_HandleTy...
HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Input Capture measurement in DMA mode.
HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
Starts the TIM Input Capture measurement.
HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
Starts the TIM Input Capture measurement in interrupt mode.
HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
Starts the TIM Input Capture measurement in DMA mode.
void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim)
DeInitializes TIM Input Capture MSP.
HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Input Capture measurement in interrupt mode.
HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
Starts the TIM One Pulse signal generation.
HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode)
Initializes the TIM One Pulse Time Base according to the specified parameters in the TIM_HandleTypeDe...
void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim)
DeInitializes TIM One Pulse MSP.
HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
Stops the TIM One Pulse signal generation in interrupt mode.
void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim)
Initializes the TIM One Pulse MSP.
HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
Stops the TIM One Pulse signal generation.
HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim)
DeInitializes the TIM One Pulse.
HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel)
Starts the TIM One Pulse signal generation in interrupt mode.
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Encoder Interface in DMA mode.
HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Encoder Interface.
HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
Starts the TIM Encoder Interface.
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length)
Starts the TIM Encoder Interface in DMA mode.
void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim)
Initializes the TIM Encoder Interface MSP.
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
Starts the TIM Encoder Interface in interrupt mode.
void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim)
DeInitializes TIM Encoder Interface MSP.
HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim)
DeInitializes the TIM Encoder interface.
HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, const TIM_Encoder_InitTypeDef *sConfig)
Initializes the TIM Encoder Interface and initialize the associated handle.
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
Stops the TIM Encoder Interface in interrupt mode.
void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
This function handles TIM interrupts requests.
HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_IC_InitTypeDef *sConfig, uint32_t Channel)
Initializes the TIM Input Capture Channels according to the specified parameters in the TIM_IC_InitTy...
HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, uint32_t BurstLength, uint32_t DataLength)
Configure the DMA Burst to transfer multiple Data from the memory to the TIM peripheral.
HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, uint32_t Channel)
Initializes the TIM PWM channels according to the specified parameters in the TIM_OC_InitTypeDef.
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, uint32_t BurstLength)
Configure the DMA Burst to transfer Data from the memory to the TIM peripheral.
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength)
Configure the DMA Burst to transfer Data from the TIM peripheral to the memory.
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)
Stop the DMA burst reading.
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig)
Configures the TIM in Slave mode.
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig)
Configures the TIM in Slave mode in interrupt mode.
uint32_t HAL_TIM_ReadCapturedValue(const TIM_HandleTypeDef *htim, uint32_t Channel)
Read the captured value from Capture Compare unit.
HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength, uint32_t DataLength)
Configure the DMA Burst to transfer Data from the TIM peripheral to the memory.
HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection)
Selects the signal connected to the TI1 input: direct from CH1_input or a XOR combination between CH1...
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)
Stops the TIM DMA Burst mode.
HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, uint32_t Channel)
Initializes the TIM Output Compare Channels according to the specified parameters in the TIM_OC_InitT...
HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig)
Configures the clock source to be used.
HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource)
Generate a software event.
HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, const TIM_ClearInputConfigTypeDef *sClearInputConfig, uint32_t Channel)
Configures the OCRef clear feature.
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel)
Initializes the TIM One Pulse Channels according to the specified parameters in the TIM_OnePulse_Init...
void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim)
Hall Trigger detection half complete callback in non-blocking mode.
void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim)
Input Capture half complete callback in non-blocking mode.
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
Output Compare callback in non-blocking mode.
void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim)
PWM Pulse finished half complete callback in non-blocking mode.
void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim)
Timer error callback in non-blocking mode.
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
PWM Pulse finished callback in non-blocking mode.
void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim)
Hall Trigger detection callback in non-blocking mode.
void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim)
Period elapsed half complete callback in non-blocking mode.
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
Period elapsed callback in non-blocking mode.
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
Input Capture callback in non-blocking mode.
HAL_TIM_ChannelStateTypeDef
TIM Channel States definition.
HAL_TIM_DMABurstStateTypeDef
DMA Burst States definition.
HAL_TIM_ActiveChannel
HAL Active channel structures definition.
HAL_TIM_StateTypeDef
HAL State structures definition.
@ HAL_TIM_CHANNEL_STATE_READY
@ HAL_TIM_CHANNEL_STATE_RESET
@ HAL_TIM_CHANNEL_STATE_BUSY
@ HAL_DMA_BURST_STATE_BUSY
@ HAL_DMA_BURST_STATE_READY
@ HAL_DMA_BURST_STATE_RESET
@ HAL_TIM_ACTIVE_CHANNEL_1
@ HAL_TIM_ACTIVE_CHANNEL_CLEARED
@ HAL_TIM_ACTIVE_CHANNEL_4
@ HAL_TIM_ACTIVE_CHANNEL_3
@ HAL_TIM_ACTIVE_CHANNEL_2
@ HAL_TIM_STATE_TIMEOUT
@ HAL_TIM_STATE_BUSY
@ HAL_TIM_STATE_RESET
@ HAL_TIM_STATE_ERROR
@ HAL_TIM_STATE_READY
void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter)
Configures the TIMx External Trigger (ETR).
void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma)
TIM DMA Capture half complete callback.
void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config)
Timer Output Compare 2 configuration.
void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma)
TIM DMA Capture complete callback.
void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState)
Enables or disables the TIM Capture Compare Channel x.
void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter)
Configure the TI1 as Input.
void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma)
TIM DMA Delay Pulse half complete callback.
void TIM_DMAError(DMA_HandleTypeDef *hdma)
TIM DMA error callback.
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure)
Time Base configuration.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition
HAL_LockTypeDef
HAL Lock structures definition
Header file of TIM HAL Extended module.
TIM Time base Configuration Structure definition.
TIM Break input(s) and Dead time configuration Structure definition.
TIM Clear Input Configuration Handle Structure definition.
Clock Configuration Handle Structure definition.
TIM Encoder Configuration Structure definition.
TIM Time Base Handle Structure definition.
HAL_LockTypeDef Lock
__IO HAL_TIM_StateTypeDef State
TIM_Base_InitTypeDef Init
__IO HAL_TIM_DMABurstStateTypeDef DMABurstState
HAL_TIM_ActiveChannel Channel
TIM Input Capture Configuration Structure definition.
TIM Master configuration Structure definition.
TIM Output Compare Configuration Structure definition.
TIM One Pulse Mode Configuration Structure definition.
TIM Slave configuration Structure definition.
DMA handle Structure definition.