先说点废话
编码器比电位器旋钮高级多了,可以无限旋转下去。正转数值增大,反转数值减小。
很多高级MP3还有相机在用,咯噔一下跳一下计数。工业上几乎所有的闭环电机都得有编码器,当然是光电或者磁的,旋钮这种咯噔一下只适合做手动的一个输入设备。
材料:
1.oled 1306 iic接口的
2.stm32 c8t6
3.正交编码器(三个脚,中间一个接地,也叫旋转编码器,也可以是鼠标编码器)
软件和开发环境:
Cube MX
KEIL MDK
电路图:
http://www.cnblogs.com/watson8544/p/5454086.html 图片来源如上
123是编码器的针脚,45是一个开关,独立编码器。不需要管。
针脚配置:管定时器的设计右侧的PA8/9.管oled的是PB7/6。如何点亮且显示数字在oled上,请看我的第一篇博客http://blog.csdn.net/geekker/article/details/56835628
CubeMX的定时器设置可以直接驱动编码器encoder模式
继续
PA8、PA9设置成上拉
60000说的是计数周期比如一个编码器一圈60个信号,这里设计成60000就是说它转个1000圈就成0了。
input filter应该是设置防抖。
设置成功,自动生成代码,把oled的第三方库该添加的都添加了。然后开始复制黏贴。
HAL_TIM_Encoder_Start(&htim1,TIM_CHANNEL_ALL);
这句话放到while(1){}前面
i = TIM1->CNT;
这个i只能在while里面被赋值,不像中断一样。我正在研究如何才能强制赋值