#define ROTATE_A PAin(2)
#define ROTATE_B PAin(3)
s16 DATA=0;
void EXTI2_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line2) != RESET)
{
if(ROTATE_A!=ROTATE_B)
{
DATA++;
}
else DATA--;
EXTI_ClearITPendingBit(EXTI_Line2);
}
}
void main(void)
{
SystemInit();
delay_init(72);
NVIC_Configuration();
KEY_Init();
while(1)
{
;
}
}
大家可以观察图片,当顺时针时,A下降沿时, A!=B;当逆时针时,A下降沿时,A=B,从而来判断顺时针,还是逆时针。而且这样实现简单,只要一个中断就行了。其实我在别的地方看的思路,然后复制过来改的。如果遇到AB 输出的编码器,大家可以参考下啊。有问题可以提出来,互相学习啊、
原文链接:https://www.eeworld.com.cn/mcu/article_2016071427570.html