高级会员

- 积分
- 844
- 金钱
- 844
- 注册时间
- 2020-6-12
- 在线时间
- 303 小时
|
发表于 2021-11-1 10:41:19
|
显示全部楼层
本帖最后由 rektito 于 2021-11-1 10:44 编辑
比较像是编码器配置错误。 导致下落时 上下计数。 首先TIM3 IC应该不存在bothedge的硬件。 不能这样配置。 其次TIM_ICInit会覆盖前面TIM_EncoderInterfaceConfig中的一些配置, (IC中真正有效的只有filter,可以考虑用寄存器配置。或者把encoderconfig挪到后面去。) )
然后给一个我的例程。 (当然计数方向可能与你期望不一致 在这个基础上再修改就可以)(可以先手动步进机(如果可以动的话)测试整个码盘程序的正反转是否正常)
TIM_DeInit(ENCODER_TIM);
TIM_TimeBaseStructure.TIM_Period = ENCODER_PER;
TIM_TimeBaseStructure.TIM_Prescaler = 1-1;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(ENCODER_TIM, &TIM_TimeBaseStructure);
TIM_ICInitStruct.TIM_ICFilter = 4;
TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;
TIM_ICInit(ENCODER_TIM, &TIM_ICInitStruct);
TIM_ICInitStruct.TIM_Channel = TIM_Channel_2;
TIM_ICInit(ENCODER_TIM, &TIM_ICInitStruct);
TIM_EncoderInterfaceConfig( ENCODER_TIM, //ÅäÖÃÕy½»±àÂëÆ÷½ó¿ú
TIM_EncoderMode_TI12,
TIM_ICPolarity_Rising, //IC1¼«DÔ
TIM_ICPolarity_Rising ); //IC2¼«DÔ
TIM_SetCounter(ENCODER_TIM,ENCODER_INI);
TIM_Cmd(ENCODER_TIM, ENABLE);
|
|