机械旋钮开关使用

来源:互联网 发布:大脚插件mac版6.2 编辑:程序博客网 时间:2024/05/02 00:35

简单旋钮编码开关—机械型

昨天单片机项目更换旋钮编码器:之前使用6脚编码器,1pin电源,5pin编码,编码值范围为0-31,由于有绝对编码值,调试十分简单好用;现在换成机械型AB信号旋转编码器,调试过程中遇到点问题,记录如下:

机械型旋钮编码器介绍
除了电源和地,有A和B两个信号脚,旋转时,AB输出脉冲信号,左旋时A信号超前B信号90度,右旋时B信号超前A信号90度。

识别转动主要代码

//把A脚配置输入中断,下降沿触发CODE_A:读取A叫状态,不转时高电平输出CODE_B:读取B脚状态,不转时高电平输出//A脚中断函数中void EXTI3_IRQHandler(void){  if(EXTI_GetITStatus(EXTI_Line3) != RESET)//EXTI_Line3根据A脚连接到单片机的引脚而定  {    EXTI_ClearITPendingBit(EXTI_Line3);    //这段代码很重要,为了消除抖动和杂波信号    Delay(n);//这里    if(CODE_A)    {        return;    }//下面这段延时处理用于优化(有些旋钮编码器选择一个刻度会触//发几个中断),实际使用中根据应用而定,在本项目中需要一个//刻度对应一个操作,有必要优化处理,delay_nms在配置成1毫秒//时基中断函数SysTick_Handler中计时delay_nms++    if(delay_nms)    {        delay_nms = 0;        return;    }    if(CODE_B)    {        printf("R\r\n");        //下面做处理    }    else    {        printf("L\r\n");        //下面做处理    }    delay_nms = 0;  }}

over.

0 0