CubeMX+KEIL+stm32 c8t6驱动正交编码器显示在OLED1306上

时间:2021-07-18 08:47:29

先说点废话

编码器比电位器旋钮高级多了,可以无限旋转下去。正转数值增大,反转数值减小。

很多高级MP3还有相机在用,咯噔一下跳一下计数。工业上几乎所有的闭环电机都得有编码器,当然是光电或者磁的,旋钮这种咯噔一下只适合做手动的一个输入设备。


材料:

1.oled 1306 iic接口的

2.stm32 c8t6 

3.正交编码器(三个脚,中间一个接地,也叫旋转编码器,也可以是鼠标编码器)

软件和开发环境:

Cube MX

KEIL MDK


电路图:CubeMX+KEIL+stm32 c8t6驱动正交编码器显示在OLED1306上

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+KEIL+stm32 c8t6驱动正交编码器显示在OLED1306上


CubeMX的定时器设置可以直接驱动编码器encoder模式

CubeMX+KEIL+stm32 c8t6驱动正交编码器显示在OLED1306上


继续


CubeMX+KEIL+stm32 c8t6驱动正交编码器显示在OLED1306上

PA8、PA9设置成上拉

CubeMX+KEIL+stm32 c8t6驱动正交编码器显示在OLED1306上

60000说的是计数周期比如一个编码器一圈60个信号,这里设计成60000就是说它转个1000圈就成0了。

input filter应该是设置防抖。



设置成功,自动生成代码,把oled的第三方库该添加的都添加了。然后开始复制黏贴。


 HAL_TIM_Encoder_Start(&htim1,TIM_CHANNEL_ALL);

这句话放到while(1){}前面

 i = TIM1->CNT;



这个i只能在while里面被赋值,不像中断一样。我正在研究如何才能强制赋值