【STM32】HAL库自学记录-旋转编码器的使用

本文介绍了如何使用STM32HAL库配合STM32F103RCT6芯片操作旋转编码器,通过两种方法实现正反转检测:一是定时器中断方式,二是定时器方式。在CubeMX中配置时钟、引脚和中断,然后在主函数和中断服务函数中编写相应代码,实现编码器的输入捕获和计数功能,以此判断旋转方向。

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

前言

通过本文可学会两种实现判断旋转编码器正转反转的方法,可根据自己的应用场景来选择使用哪种方法。

使用工具

1、芯片:STM32F103RCT6
2、STM32CubeMx软件
3、IDE: MDK-Keil软件
4、旋转编码器模块
5、XCOM V1.4串口软件

旋转编码器原理介绍

在这里插入图片描述
图中C端为GND。
方向:A相和B相相差一个相位,一般来说是90°。A相信号在前表示正转,B相信号在前表示反转。
在这里插入图片描述
上图是模块的原理图,实物图如下:
在这里插入图片描述

方法一 定时器中断方式(实质就是外部中断)

cubeMX配置:
首先是时钟配置,我这边是有外部时钟的,所以选择了使用外部时钟,具体配置如下图:
在这里插入图片描述接下来选择自己要使用的引脚,外部中断和定时器输入捕获中断在这个实验中都是一个效果,偷懒就建一个工程吧。记得TIM4的combined channels要选择encoder mode,他就会默认使用了TIM4的channel1和channel2。记得选择NVIC把TIM4的中断打开。

我这个里面还配置了两个LED灯和一个PB5引脚,PB5引脚是为了连接旋转编码器的按键功能。此外还配置了一个串口,用来打印的。这里就不展开讲解了。
在这里插入图片描述
这边看下project manager的配置都没有问题的话就可以点击generate code来生成工程和代码了。

在这里插入图片描述在主函数中添加:

HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_1);//开启输入捕获且捕获后进入中断

在main.c中添加中断服务函数,我这边添加的定时器中断服务函数,要是使用外部中断就添加外部中断服务函数即可。

void HAL_TIM_IC_CaptureCallback(</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值