43 tim(TIMER::
HW(conf.tim, 0, 0xffff)),
44 dFactor(conf.factor) {
46 TIM_HandleTypeDef *htim = &tim.
handle;
47 TIM_Encoder_InitTypeDef sConfig = {
48 .EncoderMode = TIM_ENCODERMODE_TI12,
49 .IC1Polarity = TIM_ICPOLARITY_RISING,
50 .IC1Selection = TIM_ICSELECTION_DIRECTTI,
51 .IC1Prescaler = TIM_ICPSC_DIV1,
52 .IC1Filter = conf.filter,
53 .IC2Polarity = TIM_ICPOLARITY_RISING,
54 .IC2Selection = TIM_ICSELECTION_DIRECTTI,
55 .IC2Prescaler = TIM_ICPSC_DIV1,
56 .IC2Filter = conf.filter,
58 while (HAL_TIM_Encoder_Init(htim, &sConfig) != HAL_OK);
59 while (HAL_TIM_Encoder_Start(htim, TIM_CHANNEL_ALL) != HAL_OK);
68 int16_t iCurrEnc = __HAL_TIM_GET_COUNTER(&tim.
handle);
69 double dDiff = (int16_t) (iCurrEnc - iLastVal) * dFactor;
95 __HAL_TIM_SET_COUNTER(&tim.
handle, 0);
103 int16_t iLastVal = 0;
105 double dPosition = 0;