本文主要是介绍HAL库驱动EC11 利用STM32encode解码 编码器中断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关于EC11的原理就不说了,网上有很多资料,但是大都采用轮询去调用,有的除了开了编码器TIMER外还开了一个TIMER去轮询,工程大了之后很浪费资源,但是编码器其实也是基于TIMER的,那么编码器中断也是基于定时器的中断,本篇博客利用编码器的定时器溢出中断,相当于只在EC11动作的时候触发中断,具体HAL库配置如下:
第一步开启外部晶振:
第二步设置调试方式,这里我用的STLINK。
第三步设置TIM2Encode编码器,这里注意只能是ch1ch2才有硬件解码功能。
分频值之所以设置为2,是因为下图中的边沿极性设置的是上升沿,以为着捕获到两个上升沿认为是一个脉冲(ch1和ch2的上升沿)。计数值设为1的意思就是捕获到1个脉冲就触发溢出中断。
配置好Encode之后做两个工作,首先将ch1和ch2对应的引脚设置为上拉(pull-up),因为我的EC11没有接上拉引脚。
然后设置TIM2的中断:
同时注意TIM2的NVIC设置中要使能:
这样就全部设置好了,生成文件之后需要在主函数中添加:
while中没有任何函数,处理程序放在回调函数中实现:
这个函数可以放在任意位置。全部设置好之后run在单片机上试一试吧!
这篇关于HAL库驱动EC11 利用STM32encode解码 编码器中断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!