stm32 encoder

https://blog.csdn.net/qq_45467083/article/details/108511584

首先打开timer2的encoder模式:
在这里插入图片描述
配置系统时钟。
在这里插入图片描述

配置具体定时器的参数:
选择的encoderMode是 TI1和TI2模式。这种模式下,AB两相的上升沿和下降沿都会计数,所以计数值是实际值的4倍,需要做分频。也就是第一个参数,分频值设为3,实际上是3+1=4分频。

还有个地方需要解释一下,我刚开始的时候就是把这里的设置没搞清楚,看Polarity参数设置的是Rising Edge。这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上升沿就只检测AB相的上升沿,下降沿还是同样会计数的。
  • 1

Input Filter滤波值是从1-15,看情况设定,是用来滤除一些杂波的。
在这里插入图片描述
这样基本就配置好了,生成mdk工程。

然后就是添加应用代码了。

在初始化中添加打开定时器的encoder模式:

HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL);
  • 1

然后定期调用下面这一句函数就可以获取到encoder编码器的计数值:

enc1 = (uint32_t)(__HAL_TIM_GET_COUNTER(&htim2));//获取定时器的值
posted @ 2021-04-22 00:26  braveheart007  阅读(129)  评论(0编辑  收藏  举报