旋转编码器产生A B两个脉冲信号,通过STM32配置定时器检测编码器的速度及正反转。通过软件的方法实现四倍频,A B脉冲相差90度,A脉冲占据4个单位时间,B脉冲占据4个单位时间,当定时器同时检测A B脉冲,会提高分辨率,周期变为2个单位时间。
配置HAL的TIM模式及编码器模式。
敲代码
编写int getTimEncoder(void)接收定时器的数字。在一个时间段内,检测编码器脉冲数后,需定时器要重新置零。
重点:正反转需要强制类型转换(short)(__HAL_TIM_GET_COUNTER(&htim1)),变成一个有符号类型。如反转是会输出65500多的数字,强制类型转换后变成一个负数。
int getTimEncoder(void)
{
int iTimerEncoder = 0