【STM32F4系列】【HAL库】旋转编码器(EC11)
目录
概述
电气连接
波形分析
思路
HAL初始化
代码
成品
概述
EC11是一种增量型AB相旋转编码器
旋转编码器是一种可以无限旋转的旋钮,常被作为各种需要大量数据范围的情况(如收音机选台,音量选择等)
增量型是与绝对性做的区分,意味着输出的信号与当前的位置没有关系,与旋转的方向和角度有关
AB相指的是一种输出模式(也可以认为是一种协议)
有两个线输出根据相位判断方向,根据高低电平数量判断走过度数
电气连接
原理图
EC11常见额定电压是5V,实测3.3V也可以驱动,但不建议使用3.3V(会出现杂波)
阻容是为了进行上拉输出和硬件滤波
A,B为旋转信息的输出(两相)
C为接地
SW为内部的开关,可以当作轻触按键使用(注意加软件滤波)
波形分析
数据手册的截图
实测顺时针转动一格
实测逆时针转动一格
解释:
每转动一格(拿到实物自己实验下很容易理解什么叫一格),AB相会出现一个持续10-150ms的低电平,默认为高电平状态
顺时针转动时A相的低电平会比B相提前
逆时针转动时A相的低电平会比B相延后
思路
很明显可以看出,只需要在A(或B)相的一个边沿(上升下降均可),检测另一相的电平高低即可
因此需要的外设有:
- 外部中断
- 一个输入状态的GPIO
注意:
- 因为要直接接入5V的电压,因此需要GPIO耐压为5V(即为数据手册表FT的管脚)
- 未避免干扰,输入状态和外部中断的GPIO设置为上拉模式(不知道为啥浮空输入干扰贼大)
- 外部中断上升沿和下降沿均可(这里以下降沿为例)
HAL初始化
外部中断和NVIC
GPIO
代码
为了便于后期的调用,这边做了一个回调函数,可以在触发顺时针或者逆时针的旋转的时候自动调用这个函数
头文件
//外部中断
#define EC11_A_GPIO_Group GPIOA
#define EC11_A_GPIO_PIN GPIO_PIN_0// GPIO输入
#define EC11_B_GPIO_Group GPIOA
#define EC11_B_GPIO_PIN GPIO_PIN_1
void EC11_Decode(void (*Clockwise)(void), void (*Anticlockwise)(void));
C文件
void EC11_Decode(void (*Clockwise)(void), void (*Anticlockwise)(void))
{//Delay_ms(1);if (HAL_GPIO_ReadPin(EC11_B_GPIO_Group, EC11_B_GPIO_PIN) == GPIO_PIN_SET){Anticlockwise();}else{Clockwise();}
}
成品
GitHubhttps://github.com/HZ1213825/HAL_STM32F4_EC11/settings百度网盘https://pan.baidu.com/s/1TTc5ARIb-szfsha9MoE_lA?pwd=cwi9%C2%A0
【STM32F4系列】【HAL库】旋转编码器(EC11)相关推荐
- STM32F4系列HAL库配置定时器实验——输入捕获
STM32F4系列HAL库配置定时器实验--输入捕获 输入捕获简单讲解 输入捕获模式可以用来测量脉冲宽度或者测量频率.我们以测量周期和频率为例,用一个简图来说明输入捕获的原理 假定定时器工作在向上计数 ...
- STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例)
STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例) 目录 STM32CubeMX | STM32 F1系列HAL库低功耗 ...
- STM32F1系列HAL库配置系统时钟
STM32F1系列HAL库配置系统时钟 其实一开始对于时钟我也是知之甚少,在MSP432中我就一直忽视时钟配置,其实也是在STM32学习时落下的病根,现在趁有空补一下. 时钟简单讲解 对于时钟系统,在 ...
- STM32系列(HAL库)——F103C8T6通过MFRC522、RFID射频卡、门禁卡模块读取卡片ID(二)
本文继上一篇:STM32系列(HAL库)--F103C8T6通过MFRC522.RFID射频卡.门禁卡模块读取卡片ID 本文介绍在运用RC522模块时,运用链表结构存储数据的操作 Let's go! ...
- 旋钮编码器c代码_旋转编码器EC11驱动
旋转编码器EC11驱动 /*-------->>>>>>>>--------注意事项:EC11旋转编码器的扫描时间间隔控制在1~4ms之间, 否则5ms ...
- STM32 HAL库实现编码器测速
STM32 HAL库实现编码器测速 (还开了串口1用来调试,下文没写:然后那个short的用法就是看平衡小车之家(就是喵呜实验室的文档里头的,用法确实惊艳),文末贴了工程) 编码器接口模式 TI1和T ...
- 编码电机测速(stm32f1/HAL库/CubeMX/编码器模式/平衡小车/直流减速电机/超详细)
系列文章目录(STM32常用外设/HAL库版) 一.HC-SR04超声波模块的使用 二.OLED的HAL库代码介绍及使用 三.直流减速电机的测速以及电机驱动的使用(本篇) 文章目录 系列文章目录(ST ...
- 旋转编码器EC11调试心得
手头的旋转编码器为20格一定位一脉冲,在静止的时候AB两线输出都是高电平.转动一格,AB两线各自输出一个低电平脉冲,然后又回到高电平状态.对应于EC11内部AB两个触点开关的动作为断开–>闭合– ...
- MPU6050(读取原数据、移植DMP、stm32f4、HAL库、KEIL5)
记录一下自己遇到的问题及解决方法,希望能帮助到一些人. 第一步,读取芯片的原始数据.需要注意两点:1.对HAL库提供的IIC读取写入函数进行再包装.(千万不要觉的这步多此一举,后面移植DMP时用得到) ...
- STM32系列(HAL库)——F103C8T6通过NRF24L01(2.4G)无线模块进行双机通信
本文参考:STM32L051C8T6 HAL库 + nRF24L01 收发案例(硬件SPI通讯) 1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) 2.硬件 ...
最新文章
- UVA 10795 新汉诺塔问题
- 作图像处理时常用的C/C++语句积累!
- linux上运行项目,发布项目到 Linux 上运行 Core 项目
- Redis快的原因:内存操作 单线程没有切换开销 多路复用IO
- Android程序的基本组件
- Excahnge 2010断开连接的邮箱无法找到
- could not change product header data even after switching to change mode
- 办公技巧:Excel日常高频使用技巧,赶快收藏吧!
- 美团点评移动端基础日志库——Logan
- 6-Arco大讲堂(一)
- 选考技术考计算机二级,计算机二级选考什么最简单啊```
- 社交网络分析中(SNA)的中心性(centrality) 度中心性(degree),接近中心性(closeness),中介中心性(betweenness)
- win10专业版和企业版的区别_Win10专业版和家庭版有什么区别?
- 数据库索引,真的越建越好吗?
- 使用nginx实现请求转发的功能
- 推荐给比较好用FF插件
- 你了解净水器滤芯知识多少?
- ActiveX控件打包cab时INF文件的编写
- 慕课网SSMOA办公系统
- SQL 分组排序及命令行运行脚本的例子 PsTools
热门文章
- 12306登录python_python tcp登录注册_12306注册登录入口
- x64dbg 调试 EXCEPTION_ACCESS_VIOLATION C0000005
- 安卓设置keychain_IOS的keychain的三种使用方法
- 王者荣耀微信有个服务器叫洛神降临,王者荣耀限定皮肤终于要返场啦 二周年限定居然是洛神降临_游戏吧手游网...
- egret新手引导反向遮罩
- Verilog HDL——运算符
- OSChina 周一乱弹 ——生死之际还能从容装逼,先生大才
- QuickBooks 2007 All-in-One Desk Reference For Dummies
- 4种解法 - 最小的k个数
- 先学java还是c_先学C语言还是Java