本帖最后由 lyhfight 于 2023-3-14 22:05 编辑
在 N32 系列中,高级定时器和通用定时器均集成了编码器接口模式。编码器输入信号
ti1、TI2 经过输入
滤波和边沿检测产生 TI1FP1、TI2FP2 接到定时器的正交解码模块。
通过TIM3来读取编码电机的速度,然后通过增量式pid来控电机保持在预期速度。
相关代码展示
TIM_TimeBaseInitType TIM_TimeBaseStructure;
TIM_ICInitType TIM_ICInitStructure;
TIM_DeInit(TIM3);
TIM_InitTimBaseStruct(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.Period = ENCODER_TIM_PERIOD - 1;
TIM_TimeBaseStructure.Prescaler = 0;
TIM_TimeBaseStructure.ClkDiv = TIM_CLK_DIV1;
TIM_TimeBaseStructure.CntMode = TIM_CNT_MODE_UP;
TIM_InitTimeBase(TIM3, &TIM_TimeBaseStructure);
TIM_ConfigEncoderInterface(TIM3, TIM_ENCODE_MODE_TI12, TIM_IC_POLARITY_RISING, TIM_IC_POLARITY_RISING);
TIM_InitIcStruct(&TIM_ICInitStructure);
TIM_ICInitStructure.IcPolarity = TIM_IC_POLARITY_RISING;
TIM_ICInitStructure.IcFilter = 6;
TIM_ICInitStructure.Channel = TIM_CH_1;
TIM_ICInit(TIM3, &TIM_ICInitStructure);
TIM_ICInitStructure.Channel = TIM_CH_2;
TIM_ICInit(TIM3, &TIM_ICInitStructure);
然后通过串口把电机的速度发送到电脑的上位机进行展示