STM32 EC11旋转编码器扫描读取
EC11电路如下

扫描代码如下,经测试靠谱
uint32_t wait_t = 0;
bool encoder_switch = 0;
uint8_t encoder_a_pre = HAL_GPIO_ReadPin(GPIOA, EC11_A_Input_Pin);
int32_t steps = 0;
uint8_t encoder_a_temp ;
/* Infinite loop */
while (1)
{
uint32_t t = HAL_GetTick();
uint8_t encoder_a = HAL_GPIO_ReadPin(GPIOC, EC11_A_Input_Pin);
uint8_t encoder_b = HAL_GPIO_ReadPin(GPIOC, EC11_B_Input_Pin);
if (encoder_a_pre != encoder_a && !encoder_switch)
{
wait_t = HAL_GetTick();
encoder_a_temp = encoder_a;
encoder_switch = true;
}
if (encoder_switch && ((t - wait_t) >= 1))
{
if (encoder_a_temp != encoder_a)
{
encoder_a_pre = encoder_a;
encoder_a_temp = encoder_a;
encoder_switch = false;
continue;
}
//a 0->1, b 0 Clockwise; b 1 AntiClockwise
if (encoder_a == 1)
{
if (encoder_b == 0)
{
steps++;
}
else
{
steps--;
}
}
//a 1->0, b 1 Clockwise; b 0 AntiClockwise
else
{
if (encoder_b == 1)
{
steps++;
}
else
{
steps--;
}
}
encoder_a = HAL_GPIO_ReadPin(GPIOC, EC11_A_Input_Pin);
encoder_b = HAL_GPIO_ReadPin(GPIOC, EC11_B_Input_Pin);
encoder_switch = false;
encoder_a_pre = encoder_a;
}
}
原文地址:https://blog.csdn.net/alongsxmx/article/details/153048991
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!
