STM32使用旋转编码开关
一、旋转编码开关如何工作
编码器内部有一个开槽圆盘,连接到公共接地引脚 C。它还具有两个接触针 A 和 B,如下所示。

当您转动旋钮时,A 和 B 按照特定顺序与公共接地引脚 C 接触,具体顺序取决于转动旋钮的方向。

当它们与公共地接触时,会产生两个信号。这些信号存在 90° 异相,因为一个引脚先于另一个引脚接触公共地。它被称为正交编码。
当顺时针旋转旋钮时,A 引脚先于 B 引脚接地。当逆时针旋转旋钮时,B 引脚先于 A 引脚接地。
通过监控每个引脚何时连接或断开接地,我们可以确定旋钮旋转的方向。这可以通过简单地观察 A 的状态改变时 B 的状态来完成。
当改变状态时,如果 A:下降沿,B:为高电平,则顺时针转动旋钮。

当改变状态时,如果 A:下降沿,B:为低电平,则逆时针转动旋钮。


总的来说,旋转编码开关是一种功能强大、应用广泛的电子元器件,在工业自动化、机器人技术、伺服控制系统、电梯、电机控制、音视频设备、游戏控制器以及其他需要精确位置控制和速度反馈的各种机械设备中都有重要的应用。
二、 Cube MX 具体配置
首先需要在CubeMX中选择适当的引脚连接旋转编码开关的输出引脚,并将其设置为EXTI模式,然后对引脚启用中断功能。
在配置过程中,还有一个重要的步骤是将引脚进行上拉。上拉电阻用于确保引脚保持在高电平状态。这有助于防止由于噪声或干扰而导致的误触发。我这里使用的是B14、B15引脚,具体的配置如下所示。

三、具体代码实现
通过EXTI的回调函数来判断A、B引脚的IO口哪个先触发。当A或者B引脚触发后,然后通过检测另外一个引脚的状态来确定波动旋转编码开关的方向,具体操作如下所示。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){if(GPIO_Pin == GPIO_PIN_14){if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15)){direction=1;num++;}}else if(GPIO_Pin == GPIO_PIN_15){if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_14)){direction=2;num--;}}}
- direction变量为:旋转的方向;
- num变量为:旋转计数值;
完整代码示例:https://download.csdn.net/download/qq_26043945/89322458
相关文章:
STM32使用旋转编码开关
一、旋转编码开关如何工作 编码器内部有一个开槽圆盘,连接到公共接地引脚 C。它还具有两个接触针 A 和 B,如下所示。 当您转动旋钮时,A 和 B 按照特定顺序与公共接地引脚 C 接触,具体顺序取决于转动旋钮的方向。 当它们与公共地接…...
OneMO同行 心级服务:中移物联OneMO模组助力客户终端寒冷环境下的稳定运行
中移物联OneMO模组以客户为中心,基于中国移动心级服务要求,开展“OneMO同行 心级服务 标定一流”高标服务主题活动,升级“服务内容““服务方式”和“服务意识”,为行业客户提供全新的服务体验。 近日,某车载监控设备…...
爬虫视图展示之 Power BI
实现方式 读取数据的实现 selenium 库 requests 库 存储媒介 MysqlElasticSearch 图表展示 GrafanaPower BI 是什么? Power BI 简单且快速,能够从 Excel 电子表格或本地数据库创建快速见解。 同时 Power BI 也可进行丰富的建模和实时分析ÿ…...
微软刚发布的Copilot+PC为什么让Intel和AMD尴尬?2024 AI PC元年——产业布局及前景展望
美国东部时间5月20日在微软位于华盛顿的新园区举行的发布会上,宣布将旗下AI助手Copilot全面融入Windows系统,能够在不调用云数据中心的情况下处理更多人工智能任务。 “将世界作为一个提示词就从Windows系统开始”。微软的新PC将是“CopilotPC”…...
抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具
抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具 抖音视频去水印保存部分源码: 通过使用Python中的requests、re和os等库,可以编写如下代码来实现抖音视频去水印保存的功能。 短视频爬虫提取手机下载工具的使用方法: 该工具主…...
类的组合、作用域与可见性、类的静态成员、单例模式、
类的组合 一个类内嵌其他类的对象作为成员的情况 has - a组合 初始化列表的另一用途:为了调用数据成员的带参构造函数 能够层层递进 class Line { public:Line(int x1 0, int y1 0, int x2 0, int y2 0);Line(const Line &other);~Line();Line(const Po…...
高速公路定向广播(声光一体) HT-600D
1、产品概述: HT-600D声光一体平面波IP定向广播是北京恒星科通创新性研发产品,采用公司自主研发的平面波传声技术,该产品具有高声压、强指向性、高清晰度等特点,采用定向声传声技术将声音聚集到正前方定向传输,周边声压级明显降低…...
2024离婚新规已生效,不用等30天冷静期,线上开庭
2024年离婚必知的12条法律知识: ✅分居多久都不会自动离婚,想离婚,必需通过协议或起诉程序离婚 ✅婚后的工资收入,继承的遗产(未指定只给一人)都是夫妻共同财产 ✅没有领结婚证,或领证后没有共同生活&#…...
从零搭建python环境:深入解析虚拟环境与Python版本管理
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为何需要虚拟环境? 二、虚拟环境的创建与命名 1. 虚拟环境…...
windows安装官方正版notepad++
一 、notepad介绍 Notepad 是一个免费的、开源的文本编辑器,主要面向程序员和高级用户。以下是 Notepad 的特点: 跨平台: 虽然主要为 Windows 平台设计,但可以通过 Wine 在 Linux 和 macOS 上运行。 语法高亮: 自动识…...
netty-socketio 集群随记
实现netty-socketio集群的方式 代码实例 PostConstructpublic void subscribe() {pubSubStore.subscribe(PubSubType.DISPATCH, new PubSubListener<DispatchMessage>() {Overridepublic void onMessage(DispatchMessage message) {log.debug("subscribe: {}"…...
查看目录或文件的磁盘使用情况
在排查问题过程中,会遇到磁盘占满,需要排查具体哪个文件占用比较大,此时可以使用du 命令 du [选项] [文件或目录...] 常用的选项包括: -h 或 --human-readable:以人类可读的格式(如 K、M、G)…...
如何选择合适的自动化框架
自动化测试框架的选型是一个复杂且重要的过程,需要考虑多个因素以确保所选框架能够满足项目的需求。以下是一些建议的步骤和考虑因素: 1. 明确项目需求: * 首先,要明确项目的测试需求,包括测试的类型(如…...
Java面试进阶指南:高级知识点问答精粹(二)
Java 面试问题及答案 1. 什么是Java内存模型(JMM)?它在并发编程中扮演什么角色? 答案: Java内存模型(JMM)是一个抽象的模型,它定义了Java程序中各种变量(线程共享变量&…...
thinkphp 使用模型实现多表连接查询
解决问题,多张表的查询连接问题,3张表及以上 爷爷表 有字段id 爸爸表 有字段id,grandfather_id 儿子表 id,parent_id 控制器中编写 public function getdata(){ $data model(爷爷表)->with([father.son])->select(); var_dump($data…...
LeetCode674:最长连续递增序列
题目描述 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l < i < r,都有 nums[i] < nums…...
Java技术精粹:高级面试问题与解答指南(一)
Java 面试问题及答案 问题1:请解释Java中的多态性,并给出一个例子。 答案: 多态性是Java中的一个重要特性,它允许一个引用类型可以指向多种实际类型的对象,并且可以通过这个引用调用实际对象的方法。多态性主要通过继…...
数据可视化技术头歌测试合集
努力是为了不平庸~ 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰 目录 时间趋势可视化-柱形图 第1关:“大胃王”比赛数据柱形图绘制——绘制柱形图的基本步骤 任务描述 相关知识 观察和处理数据 绘…...
【linux-IMX6ULL-字符设备驱动简单框架实验】
目录 1. 字符设备驱动简介1.1 重要函数1.2 简单框架代码流程1.3 linux中关于驱动的重要命令 2. 字符设备驱动简单框架编写2.1 添加LICENSE信息2.2 驱动模块的入口与出口2.3 入口和出口函数的编写2.4 设备操作结构体定义2.4.1 结构体函数内容填充 3. 应用程序简介:4.…...
3D模型旋转显示不全怎么办---模大狮模型网
在3D建模和渲染过程中,我们有时会遇到旋转模型时显示不全的问题。这种情况可能由多种原因造成,包括模型本身的问题、软件设置不当、硬件配置不足等。本文将为您详细介绍几种可能的解决方法,帮助您解决3D模型旋转显示不全的问题。 一、检查模型…...
【hloc】从特征提取到三维重建:视觉定位全流程解析
1. 视觉定位技术全景图 当你用手机地图导航时,有没有想过它是如何精确知道你的位置的?这背后就运用了视觉定位技术。视觉定位(Visual Localization)是指通过摄像头捕捉环境图像,然后与预先构建的三维地图进行匹配&…...
从TCP BBR到网卡中断绑定:给K8s节点和游戏服务器做一次网络延迟‘大保健’
从TCP BBR到网卡中断绑定:给K8s节点和游戏服务器做一次网络延迟‘大保健’ 在云原生和高性能计算领域,网络延迟的毫秒级波动可能引发连锁反应——Kubernetes集群中某个Pod的响应延迟会导致整个微服务链路雪崩,而游戏服务器上50ms的卡顿足以让…...
EVA-02模型Ubuntu服务器部署全流程详解
EVA-02模型Ubuntu服务器部署全流程详解 最近有不少朋友在问,怎么把EVA-02这个强大的多模态模型部署到自己的Ubuntu服务器上。确实,相比于在本地电脑上跑,放到服务器上能获得更稳定的性能和更长的运行时间,特别适合用来做API服务或…...
CSS3毛玻璃效果实战:backdrop-filter与filter的兼容性解决方案
1. 毛玻璃效果的前世今生 第一次看到毛玻璃效果是在苹果的iOS系统上,那种半透明磨砂的质感瞬间让我眼前一亮。作为前端开发者,我立刻开始研究如何用代码实现这种被称为"玻璃拟态"(Glassmorphism)的设计风格。其实这种效果在CSS3之前就有开发者…...
nuScenes 3D标注数据深度解析:从Box字段到可视化,理解自动驾驶感知的基石
nuScenes 3D标注数据深度解析:从Box字段到可视化,理解自动驾驶感知的基石 自动驾驶技术的快速发展离不开高质量数据集的支撑,而nuScenes作为业界公认的标杆级数据集,其丰富的3D标注信息为感知算法研发提供了坚实基础。本文将带您深…...
PyTorch 2.8镜像创意实践:AI音乐生成+歌词视频同步+多模态情感渲染
PyTorch 2.8镜像创意实践:AI音乐生成歌词视频同步多模态情感渲染 1. 项目背景与镜像优势 在数字内容创作领域,音乐视频制作一直是个耗时费力的过程。传统流程需要音乐制作、歌词设计、视频剪辑等多个专业环节配合,成本高且周期长。PyTorch …...
Chain-of-Thought Hub进阶应用:多轮对话和长上下文推理评测
Chain-of-Thought Hub进阶应用:多轮对话和长上下文推理评测 【免费下载链接】chain-of-thought-hub Benchmarking large language models complex reasoning ability with chain-of-thought prompting 项目地址: https://gitcode.com/gh_mirrors/ch/chain-of-thou…...
Linux dd命令的深度解析与应用实践
dd 命令概述命令起源与定位dd 命令最早出现在 UNIX 操作系统中,后被移植到 Linux 平台。它不同于普通的文件复制命令(如 cp),dd 以底层块设备的方式操作数据,可以精确控制数据流的每一个细节。这种特性使其成为&#x…...
C++编程进阶:探索内建数学函数与C++20的<numbers>头文件
C编程进阶:探索内建数学函数与C20的头文件 在C编程的世界里,数学运算无处不在,无论是游戏开发中的物理模拟、图形处理,还是数据分析中的复杂计算,数学函数都是不可或缺的工具。随着C标准的不断演进,C20引入…...
DeepSeek总结的DuckLake 中的数据内联:为数据湖解锁流式处理
原文地址:https://ducklake.select/2026/04/02/data-inlining-in-ducklake/ DuckLake 中的数据内联:为数据湖解锁流式处理 Pedro Holanda 2026-04-02 TL;DR: DuckLake 的数据内联功能将小批量更新直接存储在目录中,从而消除了“小…...
