File indexing completed on 2025-05-11 08:23:10
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #if defined(USE_FULL_LL_DRIVER) || defined(__rtems__)
0019
0020
0021 #include "stm32h7xx_ll_tim.h"
0022 #include "stm32h7xx_ll_bus.h"
0023
0024 #ifdef USE_FULL_ASSERT
0025 #include "stm32_assert.h"
0026 #else
0027 #define assert_param(expr) ((void)0U)
0028 #endif
0029
0030
0031
0032
0033
0034 #if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM15) || defined (TIM16) || defined (TIM17) || defined (TIM23) || defined (TIM24)
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 #define IS_LL_TIM_COUNTERMODE(__VALUE__) (((__VALUE__) == LL_TIM_COUNTERMODE_UP) \
0048 || ((__VALUE__) == LL_TIM_COUNTERMODE_DOWN) \
0049 || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP) \
0050 || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_DOWN) \
0051 || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP_DOWN))
0052
0053 #define IS_LL_TIM_CLOCKDIVISION(__VALUE__) (((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV1) \
0054 || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV2) \
0055 || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV4))
0056
0057 #define IS_LL_TIM_OCMODE(__VALUE__) (((__VALUE__) == LL_TIM_OCMODE_FROZEN) \
0058 || ((__VALUE__) == LL_TIM_OCMODE_ACTIVE) \
0059 || ((__VALUE__) == LL_TIM_OCMODE_INACTIVE) \
0060 || ((__VALUE__) == LL_TIM_OCMODE_TOGGLE) \
0061 || ((__VALUE__) == LL_TIM_OCMODE_FORCED_INACTIVE) \
0062 || ((__VALUE__) == LL_TIM_OCMODE_FORCED_ACTIVE) \
0063 || ((__VALUE__) == LL_TIM_OCMODE_PWM1) \
0064 || ((__VALUE__) == LL_TIM_OCMODE_PWM2) \
0065 || ((__VALUE__) == LL_TIM_OCMODE_RETRIG_OPM1) \
0066 || ((__VALUE__) == LL_TIM_OCMODE_RETRIG_OPM2) \
0067 || ((__VALUE__) == LL_TIM_OCMODE_COMBINED_PWM1) \
0068 || ((__VALUE__) == LL_TIM_OCMODE_COMBINED_PWM2) \
0069 || ((__VALUE__) == LL_TIM_OCMODE_ASYMMETRIC_PWM1) \
0070 || ((__VALUE__) == LL_TIM_OCMODE_ASYMMETRIC_PWM2))
0071
0072 #define IS_LL_TIM_OCSTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCSTATE_DISABLE) \
0073 || ((__VALUE__) == LL_TIM_OCSTATE_ENABLE))
0074
0075 #define IS_LL_TIM_OCPOLARITY(__VALUE__) (((__VALUE__) == LL_TIM_OCPOLARITY_HIGH) \
0076 || ((__VALUE__) == LL_TIM_OCPOLARITY_LOW))
0077
0078 #define IS_LL_TIM_OCIDLESTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCIDLESTATE_LOW) \
0079 || ((__VALUE__) == LL_TIM_OCIDLESTATE_HIGH))
0080
0081 #define IS_LL_TIM_ACTIVEINPUT(__VALUE__) (((__VALUE__) == LL_TIM_ACTIVEINPUT_DIRECTTI) \
0082 || ((__VALUE__) == LL_TIM_ACTIVEINPUT_INDIRECTTI) \
0083 || ((__VALUE__) == LL_TIM_ACTIVEINPUT_TRC))
0084
0085 #define IS_LL_TIM_ICPSC(__VALUE__) (((__VALUE__) == LL_TIM_ICPSC_DIV1) \
0086 || ((__VALUE__) == LL_TIM_ICPSC_DIV2) \
0087 || ((__VALUE__) == LL_TIM_ICPSC_DIV4) \
0088 || ((__VALUE__) == LL_TIM_ICPSC_DIV8))
0089
0090 #define IS_LL_TIM_IC_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_IC_FILTER_FDIV1) \
0091 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N2) \
0092 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N4) \
0093 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N8) \
0094 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N6) \
0095 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N8) \
0096 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N6) \
0097 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N8) \
0098 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N6) \
0099 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N8) \
0100 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N5) \
0101 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N6) \
0102 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N8) \
0103 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N5) \
0104 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N6) \
0105 || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N8))
0106
0107 #define IS_LL_TIM_IC_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \
0108 || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING) \
0109 || ((__VALUE__) == LL_TIM_IC_POLARITY_BOTHEDGE))
0110
0111 #define IS_LL_TIM_ENCODERMODE(__VALUE__) (((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI1) \
0112 || ((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI2) \
0113 || ((__VALUE__) == LL_TIM_ENCODERMODE_X4_TI12))
0114
0115 #define IS_LL_TIM_IC_POLARITY_ENCODER(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \
0116 || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING))
0117
0118 #define IS_LL_TIM_OSSR_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSR_DISABLE) \
0119 || ((__VALUE__) == LL_TIM_OSSR_ENABLE))
0120
0121 #define IS_LL_TIM_OSSI_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSI_DISABLE) \
0122 || ((__VALUE__) == LL_TIM_OSSI_ENABLE))
0123
0124 #define IS_LL_TIM_LOCK_LEVEL(__VALUE__) (((__VALUE__) == LL_TIM_LOCKLEVEL_OFF) \
0125 || ((__VALUE__) == LL_TIM_LOCKLEVEL_1) \
0126 || ((__VALUE__) == LL_TIM_LOCKLEVEL_2) \
0127 || ((__VALUE__) == LL_TIM_LOCKLEVEL_3))
0128
0129 #define IS_LL_TIM_BREAK_STATE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_DISABLE) \
0130 || ((__VALUE__) == LL_TIM_BREAK_ENABLE))
0131
0132 #define IS_LL_TIM_BREAK_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_POLARITY_LOW) \
0133 || ((__VALUE__) == LL_TIM_BREAK_POLARITY_HIGH))
0134
0135 #define IS_LL_TIM_BREAK_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1) \
0136 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N2) \
0137 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N4) \
0138 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N8) \
0139 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV2_N6) \
0140 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV2_N8) \
0141 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV4_N6) \
0142 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV4_N8) \
0143 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV8_N6) \
0144 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV8_N8) \
0145 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N5) \
0146 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N6) \
0147 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N8) \
0148 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N5) \
0149 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N6) \
0150 || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N8))
0151 #if defined(TIM_BDTR_BKBID)
0152
0153 #define IS_LL_TIM_BREAK_AFMODE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_AFMODE_INPUT) \
0154 || ((__VALUE__) == LL_TIM_BREAK_AFMODE_BIDIRECTIONAL))
0155 #endif
0156
0157 #define IS_LL_TIM_BREAK2_STATE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_DISABLE) \
0158 || ((__VALUE__) == LL_TIM_BREAK2_ENABLE))
0159
0160 #define IS_LL_TIM_BREAK2_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_POLARITY_LOW) \
0161 || ((__VALUE__) == LL_TIM_BREAK2_POLARITY_HIGH))
0162
0163 #define IS_LL_TIM_BREAK2_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1) \
0164 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N2) \
0165 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N4) \
0166 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N8) \
0167 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV2_N6) \
0168 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV2_N8) \
0169 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV4_N6) \
0170 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV4_N8) \
0171 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV8_N6) \
0172 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV8_N8) \
0173 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N5) \
0174 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N6) \
0175 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N8) \
0176 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N5) \
0177 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N6) \
0178 || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N8))
0179 #if defined(TIM_BDTR_BKBID)
0180
0181 #define IS_LL_TIM_BREAK2_AFMODE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_AFMODE_INPUT) \
0182 || ((__VALUE__) == LL_TIM_BREAK2_AFMODE_BIDIRECTIONAL))
0183 #endif
0184
0185 #define IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(__VALUE__) (((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_DISABLE) \
0186 || ((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_ENABLE))
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197 static ErrorStatus OC1Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct);
0198 static ErrorStatus OC2Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct);
0199 static ErrorStatus OC3Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct);
0200 static ErrorStatus OC4Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct);
0201 static ErrorStatus OC5Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct);
0202 static ErrorStatus OC6Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct);
0203 static ErrorStatus IC1Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct);
0204 static ErrorStatus IC2Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct);
0205 static ErrorStatus IC3Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct);
0206 static ErrorStatus IC4Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct);
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227 ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx)
0228 {
0229 ErrorStatus result = SUCCESS;
0230
0231
0232 assert_param(IS_TIM_INSTANCE(TIMx));
0233
0234 if (TIMx == TIM1)
0235 {
0236 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM1);
0237 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM1);
0238 }
0239 #if defined(TIM2)
0240 else if (TIMx == TIM2)
0241 {
0242 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM2);
0243 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM2);
0244 }
0245 #endif
0246 #if defined(TIM3)
0247 else if (TIMx == TIM3)
0248 {
0249 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM3);
0250 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM3);
0251 }
0252 #endif
0253 #if defined(TIM4)
0254 else if (TIMx == TIM4)
0255 {
0256 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM4);
0257 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM4);
0258 }
0259 #endif
0260 #if defined(TIM5)
0261 else if (TIMx == TIM5)
0262 {
0263 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM5);
0264 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM5);
0265 }
0266 #endif
0267 #if defined(TIM6)
0268 else if (TIMx == TIM6)
0269 {
0270 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM6);
0271 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM6);
0272 }
0273 #endif
0274 #if defined (TIM7)
0275 else if (TIMx == TIM7)
0276 {
0277 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM7);
0278 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM7);
0279 }
0280 #endif
0281 #if defined(TIM8)
0282 else if (TIMx == TIM8)
0283 {
0284 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM8);
0285 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM8);
0286 }
0287 #endif
0288 #if defined(TIM12)
0289 else if (TIMx == TIM12)
0290 {
0291 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM12);
0292 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM12);
0293 }
0294 #endif
0295 #if defined(TIM13)
0296 else if (TIMx == TIM13)
0297 {
0298 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM13);
0299 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM13);
0300 }
0301 #endif
0302 #if defined(TIM14)
0303 else if (TIMx == TIM14)
0304 {
0305 LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM14);
0306 LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM14);
0307 }
0308 #endif
0309 #if defined(TIM15)
0310 else if (TIMx == TIM15)
0311 {
0312 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM15);
0313 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM15);
0314 }
0315 #endif
0316 #if defined(TIM16)
0317 else if (TIMx == TIM16)
0318 {
0319 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM16);
0320 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM16);
0321 }
0322 #endif
0323 #if defined(TIM17)
0324 else if (TIMx == TIM17)
0325 {
0326 LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM17);
0327 LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM17);
0328 }
0329 #endif
0330 else
0331 {
0332 result = ERROR;
0333 }
0334
0335 return result;
0336 }
0337
0338
0339
0340
0341
0342
0343
0344 void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct)
0345 {
0346
0347 TIM_InitStruct->Prescaler = (uint16_t)0x0000;
0348 TIM_InitStruct->CounterMode = LL_TIM_COUNTERMODE_UP;
0349 TIM_InitStruct->Autoreload = 0xFFFFFFFFU;
0350 TIM_InitStruct->ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
0351 TIM_InitStruct->RepetitionCounter = 0x00000000U;
0352 }
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363 ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct)
0364 {
0365 uint32_t tmpcr1;
0366
0367
0368 assert_param(IS_TIM_INSTANCE(TIMx));
0369 assert_param(IS_LL_TIM_COUNTERMODE(TIM_InitStruct->CounterMode));
0370 assert_param(IS_LL_TIM_CLOCKDIVISION(TIM_InitStruct->ClockDivision));
0371
0372 tmpcr1 = LL_TIM_ReadReg(TIMx, CR1);
0373
0374 if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
0375 {
0376
0377 MODIFY_REG(tmpcr1, (TIM_CR1_DIR | TIM_CR1_CMS), TIM_InitStruct->CounterMode);
0378 }
0379
0380 if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
0381 {
0382
0383 MODIFY_REG(tmpcr1, TIM_CR1_CKD, TIM_InitStruct->ClockDivision);
0384 }
0385
0386
0387 LL_TIM_WriteReg(TIMx, CR1, tmpcr1);
0388
0389
0390 LL_TIM_SetAutoReload(TIMx, TIM_InitStruct->Autoreload);
0391
0392
0393 LL_TIM_SetPrescaler(TIMx, TIM_InitStruct->Prescaler);
0394
0395 if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
0396 {
0397
0398 LL_TIM_SetRepetitionCounter(TIMx, TIM_InitStruct->RepetitionCounter);
0399 }
0400
0401
0402
0403 LL_TIM_GenerateEvent_UPDATE(TIMx);
0404
0405 return SUCCESS;
0406 }
0407
0408
0409
0410
0411
0412
0413
0414
0415 void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct)
0416 {
0417
0418 TIM_OC_InitStruct->OCMode = LL_TIM_OCMODE_FROZEN;
0419 TIM_OC_InitStruct->OCState = LL_TIM_OCSTATE_DISABLE;
0420 TIM_OC_InitStruct->OCNState = LL_TIM_OCSTATE_DISABLE;
0421 TIM_OC_InitStruct->CompareValue = 0x00000000U;
0422 TIM_OC_InitStruct->OCPolarity = LL_TIM_OCPOLARITY_HIGH;
0423 TIM_OC_InitStruct->OCNPolarity = LL_TIM_OCPOLARITY_HIGH;
0424 TIM_OC_InitStruct->OCIdleState = LL_TIM_OCIDLESTATE_LOW;
0425 TIM_OC_InitStruct->OCNIdleState = LL_TIM_OCIDLESTATE_LOW;
0426 }
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440
0441
0442
0443
0444 ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct)
0445 {
0446 ErrorStatus result = ERROR;
0447
0448 switch (Channel)
0449 {
0450 case LL_TIM_CHANNEL_CH1:
0451 result = OC1Config(TIMx, TIM_OC_InitStruct);
0452 break;
0453 case LL_TIM_CHANNEL_CH2:
0454 result = OC2Config(TIMx, TIM_OC_InitStruct);
0455 break;
0456 case LL_TIM_CHANNEL_CH3:
0457 result = OC3Config(TIMx, TIM_OC_InitStruct);
0458 break;
0459 case LL_TIM_CHANNEL_CH4:
0460 result = OC4Config(TIMx, TIM_OC_InitStruct);
0461 break;
0462 case LL_TIM_CHANNEL_CH5:
0463 result = OC5Config(TIMx, TIM_OC_InitStruct);
0464 break;
0465 case LL_TIM_CHANNEL_CH6:
0466 result = OC6Config(TIMx, TIM_OC_InitStruct);
0467 break;
0468 default:
0469 break;
0470 }
0471
0472 return result;
0473 }
0474
0475
0476
0477
0478
0479
0480
0481
0482 void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct)
0483 {
0484
0485 TIM_ICInitStruct->ICPolarity = LL_TIM_IC_POLARITY_RISING;
0486 TIM_ICInitStruct->ICActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI;
0487 TIM_ICInitStruct->ICPrescaler = LL_TIM_ICPSC_DIV1;
0488 TIM_ICInitStruct->ICFilter = LL_TIM_IC_FILTER_FDIV1;
0489 }
0490
0491
0492
0493
0494
0495
0496
0497
0498
0499
0500
0501
0502
0503
0504
0505 ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct)
0506 {
0507 ErrorStatus result = ERROR;
0508
0509 switch (Channel)
0510 {
0511 case LL_TIM_CHANNEL_CH1:
0512 result = IC1Config(TIMx, TIM_IC_InitStruct);
0513 break;
0514 case LL_TIM_CHANNEL_CH2:
0515 result = IC2Config(TIMx, TIM_IC_InitStruct);
0516 break;
0517 case LL_TIM_CHANNEL_CH3:
0518 result = IC3Config(TIMx, TIM_IC_InitStruct);
0519 break;
0520 case LL_TIM_CHANNEL_CH4:
0521 result = IC4Config(TIMx, TIM_IC_InitStruct);
0522 break;
0523 default:
0524 break;
0525 }
0526
0527 return result;
0528 }
0529
0530
0531
0532
0533
0534
0535
0536 void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct)
0537 {
0538
0539 TIM_EncoderInitStruct->EncoderMode = LL_TIM_ENCODERMODE_X2_TI1;
0540 TIM_EncoderInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING;
0541 TIM_EncoderInitStruct->IC1ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI;
0542 TIM_EncoderInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1;
0543 TIM_EncoderInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1;
0544 TIM_EncoderInitStruct->IC2Polarity = LL_TIM_IC_POLARITY_RISING;
0545 TIM_EncoderInitStruct->IC2ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI;
0546 TIM_EncoderInitStruct->IC2Prescaler = LL_TIM_ICPSC_DIV1;
0547 TIM_EncoderInitStruct->IC2Filter = LL_TIM_IC_FILTER_FDIV1;
0548 }
0549
0550
0551
0552
0553
0554
0555
0556
0557
0558
0559 ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct)
0560 {
0561 uint32_t tmpccmr1;
0562 uint32_t tmpccer;
0563
0564
0565 assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx));
0566 assert_param(IS_LL_TIM_ENCODERMODE(TIM_EncoderInitStruct->EncoderMode));
0567 assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC1Polarity));
0568 assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC1ActiveInput));
0569 assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC1Prescaler));
0570 assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC1Filter));
0571 assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC2Polarity));
0572 assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC2ActiveInput));
0573 assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC2Prescaler));
0574 assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC2Filter));
0575
0576
0577 TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E);
0578
0579
0580 tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1);
0581
0582
0583 tmpccer = LL_TIM_ReadReg(TIMx, CCER);
0584
0585
0586 tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC);
0587 tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1ActiveInput >> 16U);
0588 tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Filter >> 16U);
0589 tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Prescaler >> 16U);
0590
0591
0592 tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC);
0593 tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2ActiveInput >> 8U);
0594 tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Filter >> 8U);
0595 tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Prescaler >> 8U);
0596
0597
0598 tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP);
0599 tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC1Polarity);
0600 tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC2Polarity << 4U);
0601 tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E);
0602
0603
0604 LL_TIM_SetEncoderMode(TIMx, TIM_EncoderInitStruct->EncoderMode);
0605
0606
0607 LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1);
0608
0609
0610 LL_TIM_WriteReg(TIMx, CCER, tmpccer);
0611
0612 return SUCCESS;
0613 }
0614
0615
0616
0617
0618
0619
0620
0621
0622 void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct)
0623 {
0624
0625 TIM_HallSensorInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING;
0626 TIM_HallSensorInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1;
0627 TIM_HallSensorInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1;
0628 TIM_HallSensorInitStruct->CommutationDelay = 0U;
0629 }
0630
0631
0632
0633
0634
0635
0636
0637
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649
0650
0651
0652 ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, const LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct)
0653 {
0654 uint32_t tmpcr2;
0655 uint32_t tmpccmr1;
0656 uint32_t tmpccer;
0657 uint32_t tmpsmcr;
0658
0659
0660 assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(TIMx));
0661 assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_HallSensorInitStruct->IC1Polarity));
0662 assert_param(IS_LL_TIM_ICPSC(TIM_HallSensorInitStruct->IC1Prescaler));
0663 assert_param(IS_LL_TIM_IC_FILTER(TIM_HallSensorInitStruct->IC1Filter));
0664
0665
0666 TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E);
0667
0668
0669 tmpcr2 = LL_TIM_ReadReg(TIMx, CR2);
0670
0671
0672 tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1);
0673
0674
0675 tmpccer = LL_TIM_ReadReg(TIMx, CCER);
0676
0677
0678 tmpsmcr = LL_TIM_ReadReg(TIMx, SMCR);
0679
0680
0681 tmpcr2 |= TIM_CR2_TI1S;
0682
0683
0684 tmpcr2 |= LL_TIM_TRGO_OC2REF;
0685
0686
0687 tmpsmcr &= (uint32_t)~(TIM_SMCR_TS | TIM_SMCR_SMS);
0688 tmpsmcr |= LL_TIM_TS_TI1F_ED;
0689 tmpsmcr |= LL_TIM_SLAVEMODE_RESET;
0690
0691
0692 tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC);
0693 tmpccmr1 |= (uint32_t)(LL_TIM_ACTIVEINPUT_TRC >> 16U);
0694 tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Filter >> 16U);
0695 tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Prescaler >> 16U);
0696
0697
0698 tmpccmr1 &= (uint32_t)~(TIM_CCMR1_OC2M | TIM_CCMR1_OC2FE | TIM_CCMR1_OC2PE | TIM_CCMR1_OC2CE);
0699 tmpccmr1 |= (uint32_t)(LL_TIM_OCMODE_PWM2 << 8U);
0700
0701
0702 tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP);
0703 tmpccer |= (uint32_t)(TIM_HallSensorInitStruct->IC1Polarity);
0704 tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E);
0705
0706
0707 LL_TIM_WriteReg(TIMx, CR2, tmpcr2);
0708
0709
0710 LL_TIM_WriteReg(TIMx, SMCR, tmpsmcr);
0711
0712
0713 LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1);
0714
0715
0716 LL_TIM_WriteReg(TIMx, CCER, tmpccer);
0717
0718
0719 LL_TIM_OC_SetCompareCH2(TIMx, TIM_HallSensorInitStruct->CommutationDelay);
0720
0721 return SUCCESS;
0722 }
0723
0724
0725
0726
0727
0728
0729
0730
0731 void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct)
0732 {
0733
0734 TIM_BDTRInitStruct->OSSRState = LL_TIM_OSSR_DISABLE;
0735 TIM_BDTRInitStruct->OSSIState = LL_TIM_OSSI_DISABLE;
0736 TIM_BDTRInitStruct->LockLevel = LL_TIM_LOCKLEVEL_OFF;
0737 TIM_BDTRInitStruct->DeadTime = (uint8_t)0x00;
0738 TIM_BDTRInitStruct->BreakState = LL_TIM_BREAK_DISABLE;
0739 TIM_BDTRInitStruct->BreakPolarity = LL_TIM_BREAK_POLARITY_LOW;
0740 TIM_BDTRInitStruct->BreakFilter = LL_TIM_BREAK_FILTER_FDIV1;
0741 #if defined(TIM_BDTR_BKBID)
0742 TIM_BDTRInitStruct->BreakAFMode = LL_TIM_BREAK_AFMODE_INPUT;
0743 #endif
0744 TIM_BDTRInitStruct->Break2State = LL_TIM_BREAK2_DISABLE;
0745 TIM_BDTRInitStruct->Break2Polarity = LL_TIM_BREAK2_POLARITY_LOW;
0746 TIM_BDTRInitStruct->Break2Filter = LL_TIM_BREAK2_FILTER_FDIV1;
0747 #if defined(TIM_BDTR_BKBID)
0748 TIM_BDTRInitStruct->Break2AFMode = LL_TIM_BREAK2_AFMODE_INPUT;
0749 #endif
0750 TIM_BDTRInitStruct->AutomaticOutput = LL_TIM_AUTOMATICOUTPUT_DISABLE;
0751 }
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
0765
0766
0767
0768
0769
0770 ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, const LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct)
0771 {
0772 uint32_t tmpbdtr = 0;
0773
0774
0775 assert_param(IS_TIM_BREAK_INSTANCE(TIMx));
0776 assert_param(IS_LL_TIM_OSSR_STATE(TIM_BDTRInitStruct->OSSRState));
0777 assert_param(IS_LL_TIM_OSSI_STATE(TIM_BDTRInitStruct->OSSIState));
0778 assert_param(IS_LL_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->LockLevel));
0779 assert_param(IS_LL_TIM_BREAK_STATE(TIM_BDTRInitStruct->BreakState));
0780 assert_param(IS_LL_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->BreakPolarity));
0781 assert_param(IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->AutomaticOutput));
0782 assert_param(IS_LL_TIM_BREAK_FILTER(TIM_BDTRInitStruct->BreakFilter));
0783 #if defined(TIM_BDTR_BKBID)
0784 assert_param(IS_LL_TIM_BREAK_AFMODE(TIM_BDTRInitStruct->BreakAFMode));
0785 #endif
0786
0787
0788
0789
0790
0791 MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, TIM_BDTRInitStruct->DeadTime);
0792 MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, TIM_BDTRInitStruct->LockLevel);
0793 MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, TIM_BDTRInitStruct->OSSIState);
0794 MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, TIM_BDTRInitStruct->OSSRState);
0795 MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState);
0796 MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity);
0797 MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput);
0798 MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, TIM_BDTRInitStruct->BreakFilter);
0799 #if defined(TIM_BDTR_BKBID)
0800 MODIFY_REG(tmpbdtr, TIM_BDTR_BKBID, TIM_BDTRInitStruct->BreakAFMode);
0801 #endif
0802
0803 if (IS_TIM_BKIN2_INSTANCE(TIMx))
0804 {
0805 assert_param(IS_LL_TIM_BREAK2_STATE(TIM_BDTRInitStruct->Break2State));
0806 assert_param(IS_LL_TIM_BREAK2_POLARITY(TIM_BDTRInitStruct->Break2Polarity));
0807 assert_param(IS_LL_TIM_BREAK2_FILTER(TIM_BDTRInitStruct->Break2Filter));
0808 #if defined(TIM_BDTR_BKBID)
0809 assert_param(IS_LL_TIM_BREAK2_AFMODE(TIM_BDTRInitStruct->Break2AFMode));
0810 #endif
0811
0812
0813 MODIFY_REG(tmpbdtr, TIM_BDTR_BK2F, (TIM_BDTRInitStruct->Break2Filter));
0814 MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, TIM_BDTRInitStruct->Break2State);
0815 MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, TIM_BDTRInitStruct->Break2Polarity);
0816 #if defined(TIM_BDTR_BKBID)
0817 MODIFY_REG(tmpbdtr, TIM_BDTR_BK2BID, TIM_BDTRInitStruct->Break2AFMode);
0818 #endif
0819 }
0820
0821
0822 LL_TIM_WriteReg(TIMx, BDTR, tmpbdtr);
0823
0824 return SUCCESS;
0825 }
0826
0827
0828
0829
0830
0831
0832
0833
0834
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845
0846 static ErrorStatus OC1Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct)
0847 {
0848 uint32_t tmpccmr1;
0849 uint32_t tmpccer;
0850 uint32_t tmpcr2;
0851
0852
0853 assert_param(IS_TIM_CC1_INSTANCE(TIMx));
0854 assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
0855 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
0856 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
0857
0858
0859 CLEAR_BIT(TIMx->CCER, TIM_CCER_CC1E);
0860
0861
0862 tmpccer = LL_TIM_ReadReg(TIMx, CCER);
0863
0864
0865 tmpcr2 = LL_TIM_ReadReg(TIMx, CR2);
0866
0867
0868 tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1);
0869
0870
0871 CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC1S);
0872
0873
0874 MODIFY_REG(tmpccmr1, TIM_CCMR1_OC1M, TIM_OCInitStruct->OCMode);
0875
0876
0877 MODIFY_REG(tmpccer, TIM_CCER_CC1P, TIM_OCInitStruct->OCPolarity);
0878
0879
0880 MODIFY_REG(tmpccer, TIM_CCER_CC1E, TIM_OCInitStruct->OCState);
0881
0882 if (IS_TIM_BREAK_INSTANCE(TIMx))
0883 {
0884 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
0885 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
0886 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
0887 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
0888
0889
0890 MODIFY_REG(tmpccer, TIM_CCER_CC1NP, TIM_OCInitStruct->OCNPolarity << 2U);
0891
0892
0893 MODIFY_REG(tmpccer, TIM_CCER_CC1NE, TIM_OCInitStruct->OCNState << 2U);
0894
0895
0896 MODIFY_REG(tmpcr2, TIM_CR2_OIS1, TIM_OCInitStruct->OCIdleState);
0897
0898
0899 MODIFY_REG(tmpcr2, TIM_CR2_OIS1N, TIM_OCInitStruct->OCNIdleState << 1U);
0900 }
0901
0902
0903 LL_TIM_WriteReg(TIMx, CR2, tmpcr2);
0904
0905
0906 LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1);
0907
0908
0909 LL_TIM_OC_SetCompareCH1(TIMx, TIM_OCInitStruct->CompareValue);
0910
0911
0912 LL_TIM_WriteReg(TIMx, CCER, tmpccer);
0913
0914 return SUCCESS;
0915 }
0916
0917
0918
0919
0920
0921
0922
0923
0924
0925 static ErrorStatus OC2Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct)
0926 {
0927 uint32_t tmpccmr1;
0928 uint32_t tmpccer;
0929 uint32_t tmpcr2;
0930
0931
0932 assert_param(IS_TIM_CC2_INSTANCE(TIMx));
0933 assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
0934 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
0935 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
0936
0937
0938 CLEAR_BIT(TIMx->CCER, TIM_CCER_CC2E);
0939
0940
0941 tmpccer = LL_TIM_ReadReg(TIMx, CCER);
0942
0943
0944 tmpcr2 = LL_TIM_ReadReg(TIMx, CR2);
0945
0946
0947 tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1);
0948
0949
0950 CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC2S);
0951
0952
0953 MODIFY_REG(tmpccmr1, TIM_CCMR1_OC2M, TIM_OCInitStruct->OCMode << 8U);
0954
0955
0956 MODIFY_REG(tmpccer, TIM_CCER_CC2P, TIM_OCInitStruct->OCPolarity << 4U);
0957
0958
0959 MODIFY_REG(tmpccer, TIM_CCER_CC2E, TIM_OCInitStruct->OCState << 4U);
0960
0961 if (IS_TIM_BREAK_INSTANCE(TIMx))
0962 {
0963 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
0964 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
0965 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
0966 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
0967
0968
0969 MODIFY_REG(tmpccer, TIM_CCER_CC2NP, TIM_OCInitStruct->OCNPolarity << 6U);
0970
0971
0972 MODIFY_REG(tmpccer, TIM_CCER_CC2NE, TIM_OCInitStruct->OCNState << 6U);
0973
0974
0975 MODIFY_REG(tmpcr2, TIM_CR2_OIS2, TIM_OCInitStruct->OCIdleState << 2U);
0976
0977
0978 MODIFY_REG(tmpcr2, TIM_CR2_OIS2N, TIM_OCInitStruct->OCNIdleState << 3U);
0979 }
0980
0981
0982 LL_TIM_WriteReg(TIMx, CR2, tmpcr2);
0983
0984
0985 LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1);
0986
0987
0988 LL_TIM_OC_SetCompareCH2(TIMx, TIM_OCInitStruct->CompareValue);
0989
0990
0991 LL_TIM_WriteReg(TIMx, CCER, tmpccer);
0992
0993 return SUCCESS;
0994 }
0995
0996
0997
0998
0999
1000
1001
1002
1003
1004 static ErrorStatus OC3Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct)
1005 {
1006 uint32_t tmpccmr2;
1007 uint32_t tmpccer;
1008 uint32_t tmpcr2;
1009
1010
1011 assert_param(IS_TIM_CC3_INSTANCE(TIMx));
1012 assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
1013 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
1014 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
1015
1016
1017 CLEAR_BIT(TIMx->CCER, TIM_CCER_CC3E);
1018
1019
1020 tmpccer = LL_TIM_ReadReg(TIMx, CCER);
1021
1022
1023 tmpcr2 = LL_TIM_ReadReg(TIMx, CR2);
1024
1025
1026 tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2);
1027
1028
1029 CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC3S);
1030
1031
1032 MODIFY_REG(tmpccmr2, TIM_CCMR2_OC3M, TIM_OCInitStruct->OCMode);
1033
1034
1035 MODIFY_REG(tmpccer, TIM_CCER_CC3P, TIM_OCInitStruct->OCPolarity << 8U);
1036
1037
1038 MODIFY_REG(tmpccer, TIM_CCER_CC3E, TIM_OCInitStruct->OCState << 8U);
1039
1040 if (IS_TIM_BREAK_INSTANCE(TIMx))
1041 {
1042 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
1043 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
1044 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
1045 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
1046
1047
1048 MODIFY_REG(tmpccer, TIM_CCER_CC3NP, TIM_OCInitStruct->OCNPolarity << 10U);
1049
1050
1051 MODIFY_REG(tmpccer, TIM_CCER_CC3NE, TIM_OCInitStruct->OCNState << 10U);
1052
1053
1054 MODIFY_REG(tmpcr2, TIM_CR2_OIS3, TIM_OCInitStruct->OCIdleState << 4U);
1055
1056
1057 MODIFY_REG(tmpcr2, TIM_CR2_OIS3N, TIM_OCInitStruct->OCNIdleState << 5U);
1058 }
1059
1060
1061 LL_TIM_WriteReg(TIMx, CR2, tmpcr2);
1062
1063
1064 LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2);
1065
1066
1067 LL_TIM_OC_SetCompareCH3(TIMx, TIM_OCInitStruct->CompareValue);
1068
1069
1070 LL_TIM_WriteReg(TIMx, CCER, tmpccer);
1071
1072 return SUCCESS;
1073 }
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083 static ErrorStatus OC4Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct)
1084 {
1085 uint32_t tmpccmr2;
1086 uint32_t tmpccer;
1087 uint32_t tmpcr2;
1088
1089
1090 assert_param(IS_TIM_CC4_INSTANCE(TIMx));
1091 assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
1092 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
1093 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
1094
1095
1096 CLEAR_BIT(TIMx->CCER, TIM_CCER_CC4E);
1097
1098
1099 tmpccer = LL_TIM_ReadReg(TIMx, CCER);
1100
1101
1102 tmpcr2 = LL_TIM_ReadReg(TIMx, CR2);
1103
1104
1105 tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2);
1106
1107
1108 CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC4S);
1109
1110
1111 MODIFY_REG(tmpccmr2, TIM_CCMR2_OC4M, TIM_OCInitStruct->OCMode << 8U);
1112
1113
1114 MODIFY_REG(tmpccer, TIM_CCER_CC4P, TIM_OCInitStruct->OCPolarity << 12U);
1115
1116
1117 MODIFY_REG(tmpccer, TIM_CCER_CC4E, TIM_OCInitStruct->OCState << 12U);
1118
1119 if (IS_TIM_BREAK_INSTANCE(TIMx))
1120 {
1121 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
1122
1123
1124 MODIFY_REG(tmpcr2, TIM_CR2_OIS4, TIM_OCInitStruct->OCIdleState << 6U);
1125 }
1126
1127
1128 LL_TIM_WriteReg(TIMx, CR2, tmpcr2);
1129
1130
1131 LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2);
1132
1133
1134 LL_TIM_OC_SetCompareCH4(TIMx, TIM_OCInitStruct->CompareValue);
1135
1136
1137 LL_TIM_WriteReg(TIMx, CCER, tmpccer);
1138
1139 return SUCCESS;
1140 }
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150 static ErrorStatus OC5Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct)
1151 {
1152 uint32_t tmpccmr3;
1153 uint32_t tmpccer;
1154
1155
1156 assert_param(IS_TIM_CC5_INSTANCE(TIMx));
1157 assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
1158 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
1159 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
1160 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
1161 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
1162
1163
1164 CLEAR_BIT(TIMx->CCER, TIM_CCER_CC5E);
1165
1166
1167 tmpccer = LL_TIM_ReadReg(TIMx, CCER);
1168
1169
1170 tmpccmr3 = LL_TIM_ReadReg(TIMx, CCMR3);
1171
1172
1173 MODIFY_REG(tmpccmr3, TIM_CCMR3_OC5M, TIM_OCInitStruct->OCMode);
1174
1175
1176 MODIFY_REG(tmpccer, TIM_CCER_CC5P, TIM_OCInitStruct->OCPolarity << 16U);
1177
1178
1179 MODIFY_REG(tmpccer, TIM_CCER_CC5E, TIM_OCInitStruct->OCState << 16U);
1180
1181 if (IS_TIM_BREAK_INSTANCE(TIMx))
1182 {
1183 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
1184 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
1185
1186
1187 MODIFY_REG(TIMx->CR2, TIM_CR2_OIS5, TIM_OCInitStruct->OCIdleState << 8U);
1188
1189 }
1190
1191
1192 LL_TIM_WriteReg(TIMx, CCMR3, tmpccmr3);
1193
1194
1195 LL_TIM_OC_SetCompareCH5(TIMx, TIM_OCInitStruct->CompareValue);
1196
1197
1198 LL_TIM_WriteReg(TIMx, CCER, tmpccer);
1199
1200 return SUCCESS;
1201 }
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211 static ErrorStatus OC6Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct)
1212 {
1213 uint32_t tmpccmr3;
1214 uint32_t tmpccer;
1215
1216
1217 assert_param(IS_TIM_CC6_INSTANCE(TIMx));
1218 assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
1219 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
1220 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
1221 assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
1222 assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
1223
1224
1225 CLEAR_BIT(TIMx->CCER, TIM_CCER_CC6E);
1226
1227
1228 tmpccer = LL_TIM_ReadReg(TIMx, CCER);
1229
1230
1231 tmpccmr3 = LL_TIM_ReadReg(TIMx, CCMR3);
1232
1233
1234 MODIFY_REG(tmpccmr3, TIM_CCMR3_OC6M, TIM_OCInitStruct->OCMode << 8U);
1235
1236
1237 MODIFY_REG(tmpccer, TIM_CCER_CC6P, TIM_OCInitStruct->OCPolarity << 20U);
1238
1239
1240 MODIFY_REG(tmpccer, TIM_CCER_CC6E, TIM_OCInitStruct->OCState << 20U);
1241
1242 if (IS_TIM_BREAK_INSTANCE(TIMx))
1243 {
1244 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
1245 assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
1246
1247
1248 MODIFY_REG(TIMx->CR2, TIM_CR2_OIS6, TIM_OCInitStruct->OCIdleState << 10U);
1249 }
1250
1251
1252 LL_TIM_WriteReg(TIMx, CCMR3, tmpccmr3);
1253
1254
1255 LL_TIM_OC_SetCompareCH6(TIMx, TIM_OCInitStruct->CompareValue);
1256
1257
1258 LL_TIM_WriteReg(TIMx, CCER, tmpccer);
1259
1260 return SUCCESS;
1261 }
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271 static ErrorStatus IC1Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct)
1272 {
1273
1274 assert_param(IS_TIM_CC1_INSTANCE(TIMx));
1275 assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity));
1276 assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput));
1277 assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler));
1278 assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter));
1279
1280
1281 TIMx->CCER &= (uint32_t)~TIM_CCER_CC1E;
1282
1283
1284 MODIFY_REG(TIMx->CCMR1,
1285 (TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC),
1286 (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 16U);
1287
1288
1289 MODIFY_REG(TIMx->CCER,
1290 (TIM_CCER_CC1P | TIM_CCER_CC1NP),
1291 (TIM_ICInitStruct->ICPolarity | TIM_CCER_CC1E));
1292
1293 return SUCCESS;
1294 }
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304 static ErrorStatus IC2Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct)
1305 {
1306
1307 assert_param(IS_TIM_CC2_INSTANCE(TIMx));
1308 assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity));
1309 assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput));
1310 assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler));
1311 assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter));
1312
1313
1314 TIMx->CCER &= (uint32_t)~TIM_CCER_CC2E;
1315
1316
1317 MODIFY_REG(TIMx->CCMR1,
1318 (TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC),
1319 (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U);
1320
1321
1322 MODIFY_REG(TIMx->CCER,
1323 (TIM_CCER_CC2P | TIM_CCER_CC2NP),
1324 ((TIM_ICInitStruct->ICPolarity << 4U) | TIM_CCER_CC2E));
1325
1326 return SUCCESS;
1327 }
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337 static ErrorStatus IC3Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct)
1338 {
1339
1340 assert_param(IS_TIM_CC3_INSTANCE(TIMx));
1341 assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity));
1342 assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput));
1343 assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler));
1344 assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter));
1345
1346
1347 TIMx->CCER &= (uint32_t)~TIM_CCER_CC3E;
1348
1349
1350 MODIFY_REG(TIMx->CCMR2,
1351 (TIM_CCMR2_CC3S | TIM_CCMR2_IC3F | TIM_CCMR2_IC3PSC),
1352 (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 16U);
1353
1354
1355 MODIFY_REG(TIMx->CCER,
1356 (TIM_CCER_CC3P | TIM_CCER_CC3NP),
1357 ((TIM_ICInitStruct->ICPolarity << 8U) | TIM_CCER_CC3E));
1358
1359 return SUCCESS;
1360 }
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370 static ErrorStatus IC4Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct)
1371 {
1372
1373 assert_param(IS_TIM_CC4_INSTANCE(TIMx));
1374 assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity));
1375 assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput));
1376 assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler));
1377 assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter));
1378
1379
1380 TIMx->CCER &= (uint32_t)~TIM_CCER_CC4E;
1381
1382
1383 MODIFY_REG(TIMx->CCMR2,
1384 (TIM_CCMR2_CC4S | TIM_CCMR2_IC4F | TIM_CCMR2_IC4PSC),
1385 (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U);
1386
1387
1388 MODIFY_REG(TIMx->CCER,
1389 (TIM_CCER_CC4P | TIM_CCER_CC4NP),
1390 ((TIM_ICInitStruct->ICPolarity << 12U) | TIM_CCER_CC4E));
1391
1392 return SUCCESS;
1393 }
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404 #endif
1405
1406
1407
1408
1409
1410 #endif
1411