Subversion Repositories DashDisplay

Rev

Rev 56 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 56 Rev 61
Line 144... Line 144...
144
typedef struct
144
typedef struct
145
{
145
{
146
  uint16_t Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
146
  uint16_t Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
147
                                   This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
147
                                   This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
148
 
148
 
149
                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetPrescaler().*/
149
                                   This feature can be modified afterwards using unitary function
-
 
150
                                   @ref LL_TIM_SetPrescaler().*/
150
 
151
 
151
  uint32_t CounterMode;       /*!< Specifies the counter mode.
152
  uint32_t CounterMode;       /*!< Specifies the counter mode.
152
                                   This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE.
153
                                   This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE.
153
 
154
 
154
                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetCounterMode().*/
155
                                   This feature can be modified afterwards using unitary function
-
 
156
                                   @ref LL_TIM_SetCounterMode().*/
155
 
157
 
156
  uint32_t Autoreload;        /*!< Specifies the auto reload value to be loaded into the active
158
  uint32_t Autoreload;        /*!< Specifies the auto reload value to be loaded into the active
157
                                   Auto-Reload Register at the next update event.
159
                                   Auto-Reload Register at the next update event.
158
                                   This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
160
                                   This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
159
                                   Some timer instances may support 32 bits counters. In that case this parameter must be a number between 0x0000 and 0xFFFFFFFF.
161
                                   Some timer instances may support 32 bits counters. In that case this parameter must
-
 
162
                                   be a number between 0x0000 and 0xFFFFFFFF.
160
 
163
 
161
                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetAutoReload().*/
164
                                   This feature can be modified afterwards using unitary function
-
 
165
                                   @ref LL_TIM_SetAutoReload().*/
162
 
166
 
163
  uint32_t ClockDivision;     /*!< Specifies the clock division.
167
  uint32_t ClockDivision;     /*!< Specifies the clock division.
164
                                   This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION.
168
                                   This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION.
165
 
169
 
166
                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetClockDivision().*/
170
                                   This feature can be modified afterwards using unitary function
-
 
171
                                   @ref LL_TIM_SetClockDivision().*/
167
} LL_TIM_InitTypeDef;
172
} LL_TIM_InitTypeDef;
168
 
173
 
169
/**
174
/**
170
  * @brief  TIM Output Compare configuration structure definition.
175
  * @brief  TIM Output Compare configuration structure definition.
171
  */
176
  */
172
typedef struct
177
typedef struct
173
{
178
{
174
  uint32_t OCMode;        /*!< Specifies the output mode.
179
  uint32_t OCMode;        /*!< Specifies the output mode.
175
                               This parameter can be a value of @ref TIM_LL_EC_OCMODE.
180
                               This parameter can be a value of @ref TIM_LL_EC_OCMODE.
176
 
181
 
177
                               This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetMode().*/
182
                               This feature can be modified afterwards using unitary function
-
 
183
                               @ref LL_TIM_OC_SetMode().*/
178
 
184
 
179
  uint32_t OCState;       /*!< Specifies the TIM Output Compare state.
185
  uint32_t OCState;       /*!< Specifies the TIM Output Compare state.
180
                               This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
186
                               This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
181
 
187
 
-
 
188
                               This feature can be modified afterwards using unitary functions
182
                               This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
189
                               @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
183
 
190
 
184
  uint32_t CompareValue;  /*!< Specifies the Compare value to be loaded into the Capture Compare Register.
191
  uint32_t CompareValue;  /*!< Specifies the Compare value to be loaded into the Capture Compare Register.
185
                               This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
192
                               This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
186
 
193
 
187
                               This feature can be modified afterwards using unitary function LL_TIM_OC_SetCompareCHx (x=1..6).*/
194
                               This feature can be modified afterwards using unitary function
-
 
195
                               LL_TIM_OC_SetCompareCHx (x=1..6).*/
188
 
196
 
189
  uint32_t OCPolarity;    /*!< Specifies the output polarity.
197
  uint32_t OCPolarity;    /*!< Specifies the output polarity.
190
                               This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
198
                               This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
191
 
199
 
192
                               This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/
200
                               This feature can be modified afterwards using unitary function
-
 
201
                               @ref LL_TIM_OC_SetPolarity().*/
193
 
202
 
194
 
203
 
195
} LL_TIM_OC_InitTypeDef;
204
} LL_TIM_OC_InitTypeDef;
196
 
205
 
197
/**
206
/**
Line 202... Line 211...
202
{
211
{
203
 
212
 
204
  uint32_t ICPolarity;    /*!< Specifies the active edge of the input signal.
213
  uint32_t ICPolarity;    /*!< Specifies the active edge of the input signal.
205
                               This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
214
                               This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
206
 
215
 
207
                               This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
216
                               This feature can be modified afterwards using unitary function
-
 
217
                               @ref LL_TIM_IC_SetPolarity().*/
208
 
218
 
209
  uint32_t ICActiveInput; /*!< Specifies the input.
219
  uint32_t ICActiveInput; /*!< Specifies the input.
210
                               This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
220
                               This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
211
 
221
 
212
                               This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
222
                               This feature can be modified afterwards using unitary function
-
 
223
                               @ref LL_TIM_IC_SetActiveInput().*/
213
 
224
 
214
  uint32_t ICPrescaler;   /*!< Specifies the Input Capture Prescaler.
225
  uint32_t ICPrescaler;   /*!< Specifies the Input Capture Prescaler.
215
                               This parameter can be a value of @ref TIM_LL_EC_ICPSC.
226
                               This parameter can be a value of @ref TIM_LL_EC_ICPSC.
216
 
227
 
217
                               This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
228
                               This feature can be modified afterwards using unitary function
-
 
229
                               @ref LL_TIM_IC_SetPrescaler().*/
218
 
230
 
219
  uint32_t ICFilter;      /*!< Specifies the input capture filter.
231
  uint32_t ICFilter;      /*!< Specifies the input capture filter.
220
                               This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
232
                               This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
221
 
233
 
222
                               This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
234
                               This feature can be modified afterwards using unitary function
-
 
235
                               @ref LL_TIM_IC_SetFilter().*/
223
} LL_TIM_IC_InitTypeDef;
236
} LL_TIM_IC_InitTypeDef;
224
 
237
 
225
 
238
 
226
/**
239
/**
227
  * @brief  TIM Encoder interface configuration structure definition.
240
  * @brief  TIM Encoder interface configuration structure definition.
Line 229... Line 242...
229
typedef struct
242
typedef struct
230
{
243
{
231
  uint32_t EncoderMode;     /*!< Specifies the encoder resolution (x2 or x4).
244
  uint32_t EncoderMode;     /*!< Specifies the encoder resolution (x2 or x4).
232
                                 This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE.
245
                                 This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE.
233
 
246
 
234
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_SetEncoderMode().*/
247
                                 This feature can be modified afterwards using unitary function
-
 
248
                                 @ref LL_TIM_SetEncoderMode().*/
235
 
249
 
236
  uint32_t IC1Polarity;     /*!< Specifies the active edge of TI1 input.
250
  uint32_t IC1Polarity;     /*!< Specifies the active edge of TI1 input.
237
                                 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
251
                                 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
238
 
252
 
239
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
253
                                 This feature can be modified afterwards using unitary function
-
 
254
                                 @ref LL_TIM_IC_SetPolarity().*/
240
 
255
 
241
  uint32_t IC1ActiveInput;  /*!< Specifies the TI1 input source
256
  uint32_t IC1ActiveInput;  /*!< Specifies the TI1 input source
242
                                 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
257
                                 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
243
 
258
 
244
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
259
                                 This feature can be modified afterwards using unitary function
-
 
260
                                 @ref LL_TIM_IC_SetActiveInput().*/
245
 
261
 
246
  uint32_t IC1Prescaler;    /*!< Specifies the TI1 input prescaler value.
262
  uint32_t IC1Prescaler;    /*!< Specifies the TI1 input prescaler value.
247
                                 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
263
                                 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
248
 
264
 
249
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
265
                                 This feature can be modified afterwards using unitary function
-
 
266
                                 @ref LL_TIM_IC_SetPrescaler().*/
250
 
267
 
251
  uint32_t IC1Filter;       /*!< Specifies the TI1 input filter.
268
  uint32_t IC1Filter;       /*!< Specifies the TI1 input filter.
252
                                 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
269
                                 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
253
 
270
 
254
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
271
                                 This feature can be modified afterwards using unitary function
-
 
272
                                 @ref LL_TIM_IC_SetFilter().*/
255
 
273
 
256
  uint32_t IC2Polarity;      /*!< Specifies the active edge of TI2 input.
274
  uint32_t IC2Polarity;      /*!< Specifies the active edge of TI2 input.
257
                                 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
275
                                 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
258
 
276
 
259
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
277
                                 This feature can be modified afterwards using unitary function
-
 
278
                                 @ref LL_TIM_IC_SetPolarity().*/
260
 
279
 
261
  uint32_t IC2ActiveInput;  /*!< Specifies the TI2 input source
280
  uint32_t IC2ActiveInput;  /*!< Specifies the TI2 input source
262
                                 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
281
                                 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
263
 
282
 
264
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
283
                                 This feature can be modified afterwards using unitary function
-
 
284
                                 @ref LL_TIM_IC_SetActiveInput().*/
265
 
285
 
266
  uint32_t IC2Prescaler;    /*!< Specifies the TI2 input prescaler value.
286
  uint32_t IC2Prescaler;    /*!< Specifies the TI2 input prescaler value.
267
                                 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
287
                                 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
268
 
288
 
269
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
289
                                 This feature can be modified afterwards using unitary function
-
 
290
                                 @ref LL_TIM_IC_SetPrescaler().*/
270
 
291
 
271
  uint32_t IC2Filter;       /*!< Specifies the TI2 input filter.
292
  uint32_t IC2Filter;       /*!< Specifies the TI2 input filter.
272
                                 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
293
                                 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
273
 
294
 
274
                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
295
                                 This feature can be modified afterwards using unitary function
-
 
296
                                 @ref LL_TIM_IC_SetFilter().*/
275
 
297
 
276
} LL_TIM_ENCODER_InitTypeDef;
298
} LL_TIM_ENCODER_InitTypeDef;
277
 
299
 
278
 
300
 
279
/**
301
/**
Line 328... Line 350...
328
  */
350
  */
329
 
351
 
330
/** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode
352
/** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode
331
  * @{
353
  * @{
332
  */
354
  */
333
#define LL_TIM_ONEPULSEMODE_SINGLE             TIM_CR1_OPM          /*!< Counter is not stopped at update event */
355
#define LL_TIM_ONEPULSEMODE_SINGLE             TIM_CR1_OPM          /*!< Counter stops counting at the next update event */
334
#define LL_TIM_ONEPULSEMODE_REPETITIVE         0x00000000U          /*!< Counter stops counting at the next update event */
356
#define LL_TIM_ONEPULSEMODE_REPETITIVE         0x00000000U          /*!< Counter is not stopped at update event */
335
/**
357
/**
336
  * @}
358
  * @}
337
  */
359
  */
338
 
360
 
339
/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode
361
/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode
Line 802... Line 824...
802
  */
824
  */
803
#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \
825
#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \
804
  ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U)
826
  ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U)
805
 
827
 
806
/**
828
/**
807
  * @brief  HELPER macro calculating the compare value required to achieve the required timer output compare active/inactive delay.
829
  * @brief  HELPER macro calculating the compare value required to achieve the required timer output compare
-
 
830
  *         active/inactive delay.
808
  * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10);
831
  * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10);
809
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
832
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
810
  * @param  __PSC__ prescaler
833
  * @param  __PSC__ prescaler
811
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
834
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
812
  * @retval Compare value  (between Min_Data=0 and Max_Data=65535)
835
  * @retval Compare value  (between Min_Data=0 and Max_Data=65535)
Line 814... Line 837...
814
#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__)  \
837
#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__)  \
815
  ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \
838
  ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \
816
              / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
839
              / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
817
 
840
 
818
/**
841
/**
819
  * @brief  HELPER macro calculating the auto-reload value to achieve the required pulse duration (when the timer operates in one pulse mode).
842
  * @brief  HELPER macro calculating the auto-reload value to achieve the required pulse duration
-
 
843
  *         (when the timer operates in one pulse mode).
820
  * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20);
844
  * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20);
821
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
845
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
822
  * @param  __PSC__ prescaler
846
  * @param  __PSC__ prescaler
823
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
847
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
824
  * @param  __PULSE__ pulse duration (in us)
848
  * @param  __PULSE__ pulse duration (in us)
Line 1025... Line 1049...
1025
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN
1049
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN
1026
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
1050
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
1027
  */
1051
  */
1028
__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(TIM_TypeDef *TIMx)
1052
__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(TIM_TypeDef *TIMx)
1029
{
1053
{
-
 
1054
  uint32_t counter_mode;
-
 
1055
 
1030
  return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR | TIM_CR1_CMS));
1056
  counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS));
-
 
1057
 
-
 
1058
  if (counter_mode == 0U)
-
 
1059
  {
-
 
1060
    counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR));
-
 
1061
  }
-
 
1062
 
-
 
1063
  return counter_mode;
1031
}
1064
}
1032
 
1065
 
1033
/**
1066
/**
1034
  * @brief  Enable auto-reload (ARR) preload.
1067
  * @brief  Enable auto-reload (ARR) preload.
1035
  * @rmtoll CR1          ARPE          LL_TIM_EnableARRPreload
1068
  * @rmtoll CR1          ARPE          LL_TIM_EnableARRPreload
Line 1062... Line 1095...
1062
{
1095
{
1063
  return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL);
1096
  return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL);
1064
}
1097
}
1065
 
1098
 
1066
/**
1099
/**
1067
  * @brief  Set the division ratio between the timer clock  and the sampling clock used by the dead-time generators (when supported) and the digital filters.
1100
  * @brief  Set the division ratio between the timer clock  and the sampling clock used by the dead-time generators
-
 
1101
  *         (when supported) and the digital filters.
1068
  * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1102
  * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1069
  *       whether or not the clock division feature is supported by the timer
1103
  *       whether or not the clock division feature is supported by the timer
1070
  *       instance.
1104
  *       instance.
1071
  * @rmtoll CR1          CKD           LL_TIM_SetClockDivision
1105
  * @rmtoll CR1          CKD           LL_TIM_SetClockDivision
1072
  * @param  TIMx Timer instance
1106
  * @param  TIMx Timer instance
Line 1080... Line 1114...
1080
{
1114
{
1081
  MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision);
1115
  MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision);
1082
}
1116
}
1083
 
1117
 
1084
/**
1118
/**
1085
  * @brief  Get the actual division ratio between the timer clock  and the sampling clock used by the dead-time generators (when supported) and the digital filters.
1119
  * @brief  Get the actual division ratio between the timer clock  and the sampling clock used by the dead-time
-
 
1120
  *         generators (when supported) and the digital filters.
1086
  * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1121
  * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1087
  *       whether or not the clock division feature is supported by the timer
1122
  *       whether or not the clock division feature is supported by the timer
1088
  *       instance.
1123
  *       instance.
1089
  * @rmtoll CR1          CKD           LL_TIM_GetClockDivision
1124
  * @rmtoll CR1          CKD           LL_TIM_GetClockDivision
1090
  * @param  TIMx Timer instance
1125
  * @param  TIMx Timer instance
Line 1312... Line 1347...
1312
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW
1347
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW
1313
  * @retval None
1348
  * @retval None
1314
  */
1349
  */
1315
__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1350
__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1316
{
1351
{
1317
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1352
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1318
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1353
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1319
  CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel]));
1354
  CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel]));
1320
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),
1355
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),
1321
             (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]);
1356
             (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]);
1322
}
1357
}
1323
 
1358
 
Line 1345... Line 1380...
1345
  *         @arg @ref LL_TIM_OCMODE_PWM2
1380
  *         @arg @ref LL_TIM_OCMODE_PWM2
1346
  * @retval None
1381
  * @retval None
1347
  */
1382
  */
1348
__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode)
1383
__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode)
1349
{
1384
{
1350
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1385
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1351
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1386
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1352
  MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]),  Mode << SHIFT_TAB_OCxx[iChannel]);
1387
  MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]);
1353
}
1388
}
1354
 
1389
 
1355
/**
1390
/**
1356
  * @brief  Get the output compare mode of an output channel.
1391
  * @brief  Get the output compare mode of an output channel.
1357
  * @rmtoll CCMR1        OC1M          LL_TIM_OC_GetMode\n
1392
  * @rmtoll CCMR1        OC1M          LL_TIM_OC_GetMode\n
Line 1374... Line 1409...
1374
  *         @arg @ref LL_TIM_OCMODE_PWM1
1409
  *         @arg @ref LL_TIM_OCMODE_PWM1
1375
  *         @arg @ref LL_TIM_OCMODE_PWM2
1410
  *         @arg @ref LL_TIM_OCMODE_PWM2
1376
  */
1411
  */
1377
__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(TIM_TypeDef *TIMx, uint32_t Channel)
1412
__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(TIM_TypeDef *TIMx, uint32_t Channel)
1378
{
1413
{
1379
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1414
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1380
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1415
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1381
  return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
1416
  return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
1382
}
1417
}
1383
 
1418
 
1384
/**
1419
/**
1385
  * @brief  Set the polarity of an output channel.
1420
  * @brief  Set the polarity of an output channel.
1386
  * @rmtoll CCER         CC1P          LL_TIM_OC_SetPolarity\n
1421
  * @rmtoll CCER         CC1P          LL_TIM_OC_SetPolarity\n
Line 1398... Line 1433...
1398
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1433
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1399
  * @retval None
1434
  * @retval None
1400
  */
1435
  */
1401
__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity)
1436
__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity)
1402
{
1437
{
1403
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1438
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1404
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),  Polarity << SHIFT_TAB_CCxP[iChannel]);
1439
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),  Polarity << SHIFT_TAB_CCxP[iChannel]);
1405
}
1440
}
1406
 
1441
 
1407
/**
1442
/**
1408
  * @brief  Get the polarity of an output channel.
1443
  * @brief  Get the polarity of an output channel.
Line 1420... Line 1455...
1420
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH
1455
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH
1421
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1456
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1422
  */
1457
  */
1423
__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
1458
__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
1424
{
1459
{
1425
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1460
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1426
  return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]);
1461
  return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]);
1427
}
1462
}
1428
 
1463
 
1429
/**
1464
/**
1430
  * @brief  Enable fast mode for the output channel.
1465
  * @brief  Enable fast mode for the output channel.
Line 1441... Line 1476...
1441
  *         @arg @ref LL_TIM_CHANNEL_CH4
1476
  *         @arg @ref LL_TIM_CHANNEL_CH4
1442
  * @retval None
1477
  * @retval None
1443
  */
1478
  */
1444
__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1479
__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1445
{
1480
{
1446
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1481
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1447
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1482
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1448
  SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1483
  SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1449
 
1484
 
1450
}
1485
}
1451
 
1486
 
1452
/**
1487
/**
Line 1463... Line 1498...
1463
  *         @arg @ref LL_TIM_CHANNEL_CH4
1498
  *         @arg @ref LL_TIM_CHANNEL_CH4
1464
  * @retval None
1499
  * @retval None
1465
  */
1500
  */
1466
__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1501
__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1467
{
1502
{
1468
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1503
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1469
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1504
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1470
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1505
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1471
 
1506
 
1472
}
1507
}
1473
 
1508
 
1474
/**
1509
/**
Line 1485... Line 1520...
1485
  *         @arg @ref LL_TIM_CHANNEL_CH4
1520
  *         @arg @ref LL_TIM_CHANNEL_CH4
1486
  * @retval State of bit (1 or 0).
1521
  * @retval State of bit (1 or 0).
1487
  */
1522
  */
1488
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel)
1523
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel)
1489
{
1524
{
1490
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1525
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1491
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1526
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1492
   uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel];
1527
  uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel];
1493
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1528
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1494
}
1529
}
1495
 
1530
 
1496
/**
1531
/**
1497
  * @brief  Enable compare register (TIMx_CCRx) preload for the output channel.
1532
  * @brief  Enable compare register (TIMx_CCRx) preload for the output channel.
Line 1507... Line 1542...
1507
  *         @arg @ref LL_TIM_CHANNEL_CH4
1542
  *         @arg @ref LL_TIM_CHANNEL_CH4
1508
  * @retval None
1543
  * @retval None
1509
  */
1544
  */
1510
__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1545
__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1511
{
1546
{
1512
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1547
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1513
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1548
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1514
  SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1549
  SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1515
}
1550
}
1516
 
1551
 
1517
/**
1552
/**
1518
  * @brief  Disable compare register (TIMx_CCRx) preload for the output channel.
1553
  * @brief  Disable compare register (TIMx_CCRx) preload for the output channel.
Line 1528... Line 1563...
1528
  *         @arg @ref LL_TIM_CHANNEL_CH4
1563
  *         @arg @ref LL_TIM_CHANNEL_CH4
1529
  * @retval None
1564
  * @retval None
1530
  */
1565
  */
1531
__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1566
__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1532
{
1567
{
1533
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1568
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1534
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1569
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1535
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1570
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1536
}
1571
}
1537
 
1572
 
1538
/**
1573
/**
1539
  * @brief  Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel.
1574
  * @brief  Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel.
Line 1549... Line 1584...
1549
  *         @arg @ref LL_TIM_CHANNEL_CH4
1584
  *         @arg @ref LL_TIM_CHANNEL_CH4
1550
  * @retval State of bit (1 or 0).
1585
  * @retval State of bit (1 or 0).
1551
  */
1586
  */
1552
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel)
1587
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel)
1553
{
1588
{
1554
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1589
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1555
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1590
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1556
   uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel];
1591
  uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel];
1557
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1592
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1558
}
1593
}
1559
 
1594
 
1560
/**
1595
/**
1561
  * @brief  Enable clearing the output channel on an external event.
1596
  * @brief  Enable clearing the output channel on an external event.
Line 1574... Line 1609...
1574
  *         @arg @ref LL_TIM_CHANNEL_CH4
1609
  *         @arg @ref LL_TIM_CHANNEL_CH4
1575
  * @retval None
1610
  * @retval None
1576
  */
1611
  */
1577
__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1612
__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1578
{
1613
{
1579
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1614
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1580
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1615
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1581
  SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1616
  SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1582
}
1617
}
1583
 
1618
 
1584
/**
1619
/**
1585
  * @brief  Disable clearing the output channel on an external event.
1620
  * @brief  Disable clearing the output channel on an external event.
Line 1597... Line 1632...
1597
  *         @arg @ref LL_TIM_CHANNEL_CH4
1632
  *         @arg @ref LL_TIM_CHANNEL_CH4
1598
  * @retval None
1633
  * @retval None
1599
  */
1634
  */
1600
__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1635
__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1601
{
1636
{
1602
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1637
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1603
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1638
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1604
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1639
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1605
}
1640
}
1606
 
1641
 
1607
/**
1642
/**
1608
  * @brief  Indicates clearing the output channel on an external event is enabled for the output channel.
1643
  * @brief  Indicates clearing the output channel on an external event is enabled for the output channel.
Line 1622... Line 1657...
1622
  *         @arg @ref LL_TIM_CHANNEL_CH4
1657
  *         @arg @ref LL_TIM_CHANNEL_CH4
1623
  * @retval State of bit (1 or 0).
1658
  * @retval State of bit (1 or 0).
1624
  */
1659
  */
1625
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel)
1660
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel)
1626
{
1661
{
1627
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1662
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1628
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1663
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1629
   uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel];
1664
  uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel];
1630
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1665
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1631
}
1666
}
1632
 
1667
 
1633
/**
1668
/**
1634
  * @brief  Set compare value for output channel 1 (TIMx_CCR1).
1669
  * @brief  Set compare value for output channel 1 (TIMx_CCR1).
Line 1804... Line 1839...
1804
  *         @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_IC_POLARITY_BOTHEDGE
1839
  *         @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_IC_POLARITY_BOTHEDGE
1805
  * @retval None
1840
  * @retval None
1806
  */
1841
  */
1807
__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1842
__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1808
{
1843
{
1809
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1844
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1810
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1845
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1811
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
1846
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
1812
             ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S))  << SHIFT_TAB_ICxx[iChannel]);
1847
             ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S))                \
-
 
1848
             << SHIFT_TAB_ICxx[iChannel]);
1813
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
1849
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
1814
             (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
1850
             (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
1815
}
1851
}
1816
 
1852
 
1817
/**
1853
/**
Line 1832... Line 1868...
1832
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
1868
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
1833
  * @retval None
1869
  * @retval None
1834
  */
1870
  */
1835
__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput)
1871
__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput)
1836
{
1872
{
1837
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1873
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1838
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1874
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1839
  MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1875
  MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1840
}
1876
}
1841
 
1877
 
1842
/**
1878
/**
1843
  * @brief  Get the current active input.
1879
  * @brief  Get the current active input.
Line 1856... Line 1892...
1856
  *         @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
1892
  *         @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
1857
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
1893
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
1858
  */
1894
  */
1859
__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel)
1895
__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel)
1860
{
1896
{
1861
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1897
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1862
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1898
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1863
  return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
1899
  return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
1864
}
1900
}
1865
 
1901
 
1866
/**
1902
/**
1867
  * @brief  Set the prescaler of input channel.
1903
  * @brief  Set the prescaler of input channel.
Line 1882... Line 1918...
1882
  *         @arg @ref LL_TIM_ICPSC_DIV8
1918
  *         @arg @ref LL_TIM_ICPSC_DIV8
1883
  * @retval None
1919
  * @retval None
1884
  */
1920
  */
1885
__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler)
1921
__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler)
1886
{
1922
{
1887
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1923
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1888
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1924
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1889
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1925
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1890
}
1926
}
1891
 
1927
 
1892
/**
1928
/**
1893
  * @brief  Get the current prescaler value acting on an  input channel.
1929
  * @brief  Get the current prescaler value acting on an  input channel.
Line 1907... Line 1943...
1907
  *         @arg @ref LL_TIM_ICPSC_DIV4
1943
  *         @arg @ref LL_TIM_ICPSC_DIV4
1908
  *         @arg @ref LL_TIM_ICPSC_DIV8
1944
  *         @arg @ref LL_TIM_ICPSC_DIV8
1909
  */
1945
  */
1910
__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel)
1946
__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel)
1911
{
1947
{
1912
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1948
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1913
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1949
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1914
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
1950
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
1915
}
1951
}
1916
 
1952
 
1917
/**
1953
/**
1918
  * @brief  Set the input filter duration.
1954
  * @brief  Set the input filter duration.
Line 1945... Line 1981...
1945
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
1981
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
1946
  * @retval None
1982
  * @retval None
1947
  */
1983
  */
1948
__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter)
1984
__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter)
1949
{
1985
{
1950
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1986
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1951
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1987
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1952
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1988
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1953
}
1989
}
1954
 
1990
 
1955
/**
1991
/**
1956
  * @brief  Get the input filter duration.
1992
  * @brief  Get the input filter duration.
Line 1982... Line 2018...
1982
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
2018
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
1983
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
2019
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
1984
  */
2020
  */
1985
__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(TIM_TypeDef *TIMx, uint32_t Channel)
2021
__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(TIM_TypeDef *TIMx, uint32_t Channel)
1986
{
2022
{
1987
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2023
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1988
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2024
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1989
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2025
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
1990
}
2026
}
1991
 
2027
 
1992
/**
2028
/**
1993
  * @brief  Set the input channel polarity.
2029
  * @brief  Set the input channel polarity.
Line 2011... Line 2047...
2011
  *         @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
2047
  *         @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
2012
  * @retval None
2048
  * @retval None
2013
  */
2049
  */
2014
__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity)
2050
__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity)
2015
{
2051
{
2016
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2052
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2017
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2053
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2018
             ICPolarity << SHIFT_TAB_CCxP[iChannel]);
2054
             ICPolarity << SHIFT_TAB_CCxP[iChannel]);
2019
}
2055
}
2020
 
2056
 
2021
/**
2057
/**
Line 2039... Line 2075...
2039
  *         @arg @ref LL_TIM_IC_POLARITY_FALLING
2075
  *         @arg @ref LL_TIM_IC_POLARITY_FALLING
2040
  *         @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
2076
  *         @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
2041
  */
2077
  */
2042
__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
2078
__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
2043
{
2079
{
2044
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2080
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2045
  return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >>
2081
  return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >>
2046
          SHIFT_TAB_CCxP[iChannel]);
2082
          SHIFT_TAB_CCxP[iChannel]);
2047
}
2083
}
2048
 
2084
 
2049
/**
2085
/**
Line 2706... Line 2742...
2706
{
2742
{
2707
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF));
2743
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF));
2708
}
2744
}
2709
 
2745
 
2710
/**
2746
/**
2711
  * @brief  Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set (Capture/Compare 1 interrupt is pending).
2747
  * @brief  Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set
-
 
2748
  *         (Capture/Compare 1 interrupt is pending).
2712
  * @rmtoll SR           CC1OF         LL_TIM_IsActiveFlag_CC1OVR
2749
  * @rmtoll SR           CC1OF         LL_TIM_IsActiveFlag_CC1OVR
2713
  * @param  TIMx Timer instance
2750
  * @param  TIMx Timer instance
2714
  * @retval State of bit (1 or 0).
2751
  * @retval State of bit (1 or 0).
2715
  */
2752
  */
2716
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(TIM_TypeDef *TIMx)
2753
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(TIM_TypeDef *TIMx)
Line 2728... Line 2765...
2728
{
2765
{
2729
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF));
2766
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF));
2730
}
2767
}
2731
 
2768
 
2732
/**
2769
/**
2733
  * @brief  Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set (Capture/Compare 2 over-capture interrupt is pending).
2770
  * @brief  Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set
-
 
2771
  *         (Capture/Compare 2 over-capture interrupt is pending).
2734
  * @rmtoll SR           CC2OF         LL_TIM_IsActiveFlag_CC2OVR
2772
  * @rmtoll SR           CC2OF         LL_TIM_IsActiveFlag_CC2OVR
2735
  * @param  TIMx Timer instance
2773
  * @param  TIMx Timer instance
2736
  * @retval State of bit (1 or 0).
2774
  * @retval State of bit (1 or 0).
2737
  */
2775
  */
2738
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(TIM_TypeDef *TIMx)
2776
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(TIM_TypeDef *TIMx)
Line 2750... Line 2788...
2750
{
2788
{
2751
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF));
2789
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF));
2752
}
2790
}
2753
 
2791
 
2754
/**
2792
/**
2755
  * @brief  Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set (Capture/Compare 3 over-capture interrupt is pending).
2793
  * @brief  Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set
-
 
2794
  *         (Capture/Compare 3 over-capture interrupt is pending).
2756
  * @rmtoll SR           CC3OF         LL_TIM_IsActiveFlag_CC3OVR
2795
  * @rmtoll SR           CC3OF         LL_TIM_IsActiveFlag_CC3OVR
2757
  * @param  TIMx Timer instance
2796
  * @param  TIMx Timer instance
2758
  * @retval State of bit (1 or 0).
2797
  * @retval State of bit (1 or 0).
2759
  */
2798
  */
2760
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(TIM_TypeDef *TIMx)
2799
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(TIM_TypeDef *TIMx)
Line 2772... Line 2811...
2772
{
2811
{
2773
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF));
2812
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF));
2774
}
2813
}
2775
 
2814
 
2776
/**
2815
/**
2777
  * @brief  Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set (Capture/Compare 4 over-capture interrupt is pending).
2816
  * @brief  Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set
-
 
2817
  *         (Capture/Compare 4 over-capture interrupt is pending).
2778
  * @rmtoll SR           CC4OF         LL_TIM_IsActiveFlag_CC4OVR
2818
  * @rmtoll SR           CC4OF         LL_TIM_IsActiveFlag_CC4OVR
2779
  * @param  TIMx Timer instance
2819
  * @param  TIMx Timer instance
2780
  * @retval State of bit (1 or 0).
2820
  * @retval State of bit (1 or 0).
2781
  */
2821
  */
2782
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(TIM_TypeDef *TIMx)
2822
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(TIM_TypeDef *TIMx)