前言
承接上一篇的水温控制,这一篇我们把控制设定温度的旋转编码器EC11讲一下.
EC11预备知识
EC11旋转编码器是一种小型高精度旋转式编码器,在结构上,由编码器部分和按键部分组合而成,这里我用到了EC11A相和B相与一个按键.我们需要编写的就是如何判断旋转的方向与按键的检测.
从图中我们可以看出, `假设检测A相上升沿,我们只需判断B相的高低电平就可以知道旋转的是正向或是逆向,知道了如何检测,配置就方便多了,接下来我们讲一下如何配置.
EC11配置
时钟配置这边由于我的A相B相和按键所在IO都在PA上,所以我打开了GPIOA的时钟,由于需要映射中断管脚,所以开启了SYSCFG时钟.
管脚配置这边,直接配置IO为上拉输入,这里有别与F1系列的我上一篇已经讲过了.这里就不多说了
中断,要映射管脚,这里我用的是PA10,所以映射了中断线10,配置好中断,我们就只需要在中断函数里检测另一相的电平就可以了,这里我就不在多说了.
最后设置一下中断优先级就可以了.
按键配置
按键的配置其实上面已经有了,这里我们讲一下如何检测按键,通常扫按键的方法都是延时10ms,但是这种方式延时,不一定能达到我们要的效果.所以这里我介绍一下状态机按键消抖的方式.
通过上面的状态跳转,实现判断按键抬起、长按、连按,相比延时扫描按键的方法,好了很多.
结语
这里简单的讲了EC11AB相的检测以及按键的扫描方法,如果文中有哪些错误,希望你能给我发邮件告知,感激不尽.
最后在推一下我的博客:https://syydnrycx.github.io/
领取专属 10元无门槛券
私享最新 技术干货