stm32cubeMx配置使用encoder编码器 F407

本文详细介绍了STM32微控制器中增量式编码器的应用,重点讲解了使用定时器2配置编码器模式的方法,包括如何正确设置参数以实现方向判断和计数,并通过实例演示了如何读取编码器计数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

stm32 的Encoder 使用

增量式编码器在实际应用中还是很常见。
stm32的定时器带的也有编码器模式。
所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号。
AB相根据旋转的方向不同,输出的波形如下图所示:在这里插入图片描述
从图上可以看出来,cw方向A相会超前B相90度左右,相反CCW方向,B相会超前A相90度左右。不过方向判断stm32自己是可以完成的。下面是使用stm32cubeMx配置的过程。

环境

软件:stm32cubemx mdk 芯片型号:stm32F407IGH6 使用的是定时器2

步骤

1 首先打开timer2的encoder模式:
在这里插入图片描述
2 下面才是重点,配置具体定时器的参数:
选择的encoderMode是 **TI1和TI2模式。这种模式下,AB两相的上升沿和下降沿都会计数,所以计数值是实际值的4倍,需要做分频。**也就是第一个参数,分频值设为3,实际上是3+1=4分频。

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

Input Filter滤波值是从1-15,看情况设定,是用来滤除一些杂波的。
在这里插入图片描述
3 生成代码
这样基本就配置好了,生成mdk工程。
然后就是添加应用代码了。
在初始化中添加打开定时器的encoder模式:

HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL);

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

enc1 = (uint32_t)(__HAL_TIM_GET_COUNTER(&htim2));//获取定时器的值

开始瞅瞅测出的速度吧~

ᕦ(・ㅂ・)ᕤ

### 使用STM32CubeMX配置编码器模式 #### 配置定时器以启用编码器模式 在STM32CubeMX中设置定时器进入编码器模式涉及几个关键步骤。通过图形界面工具可以简化硬件初始化过程,但仍需手动调整部分参数来适应特定需求。 对于想要利用STM32微控制器处理来自增量式编码器(具有A、B和Z通道)的数据而言,在项目创建初期就应考虑这些因素[^1]。当涉及到具体操作时: - 打开STM32CubeMX并加载目标设备。 - 寻找TIM外设,并点击它以便访问其属性窗口。 - 在高级控制选项卡下找到`Input Capture`功能区;这里可以选择输入捕获源作为TI1/ETRFF或TI2,这取决于哪一个GPIO引脚连接到了编码器的相应输出线路上。 - 接下来切换到“Clock Configuration”,确保选择了合适的APB频率给定时间基础单元供电。 - 转向“Timer Channel”标签页,指定用于接收脉冲序列的具体信道组合——通常是全部四个即TIM_CHANNEL_ALL被激活。 - 设置好上述各项之后,记得保存更改并将生成的初始化代码集成至应用程序框架内[^3]。 #### 启动编码器接口 完成前期准备工作后,还需编写少量软件逻辑才能使能该特性。通常情况下只需调用一次API函数即可实现这一点: ```c HAL_TIM_Encoder_Start(&htimX, TIM_CHANNEL_ALL); ``` 这里的`&htimX`代表之前定义好的句柄对象实例名称,而第二个参数指示参与工作的所有可用通道。 #### 获取当前位置信息 为了读取出当前累积步数,可借助宏定义辅助获取最新计数值: ```c int32_t position = (int32_t)__HAL_TIM_GET_COUNTER(&htimX); ``` 注意此处采用了显式的类型转换`(int32_t)`,因为原始返回值可能是一个无符号整型变量,无法直接表示反方向运动产生的负偏移量。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值