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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web3 游戏平台 Creo Engine 销毁代币总量的20%,以促进长远发展

Creo Engine 5月16日进行了第三次代币销毁,这次的销毁占代币总量的 20%。一共销毁了2亿 $CERO 代币,市场价值接近 2000 万美元。 Creo Engine 致力于连接世界、为玩家提供一站式游戏中心,并提升 Web3 游戏体验。 Creo Engine 发布于2022年&am…

USB抓包工具:bushound安装及使用

一、环境搭建 下载busbound6.01安装包,安装完成,重启电脑。 二、工具配置 按照下图配置工具: 使能自动识别新设备 2. 设置抓取数据的容量 三、抓包 回到capture选项卡,在页面的右下角有个run的按钮,点击使能&…

RedHat9 | 磁盘管理

硬盘分区类型 MBR分区方案 MBR也被称为主引导记录,它存在0柱面0磁道0扇区内,在磁盘的第一个扇区内,大小为512字节 512字节包含:446字节初始化程序加载器、64字节分区表、2字节校验码由于每个分区为16字节,所以MBR只…

用智能插件(Fitten Code: Faster and Better AI Assistant)修改好了可以持久保存的vue3留言板

天际 第一修改是选项式&#xff1a; <!-- 模板结构 --> <template><div><textarea placeholder"请输入备注内容" v-model"newItem"></textarea><button click"addItem">添加</button><hr><…

TypeScript-搭建编译环境

搭建编译环境 TypeScript 编写的代码是无法直接在js引擎( 浏览器 / Nodejs )中运行的&#xff0c;最终还需要经过编译成js代码才可以正常运行 搭建手动编译环境 1️⃣ 全局安装 typescript 包&#xff08;编译引擎&#xff09; -> 注册 tsc 命令 npm i -g typescript 2…

下拉框操作/键鼠操作/文件上传

在我们做UI自动化测试的时候&#xff0c;会有一些元素需要特殊操作&#xff0c;比如下拉框操作/键鼠操作/文件上传。 下拉框操作 在我们很多页面里有下拉框的选择&#xff0c;这种元素怎么定位呢&#xff1f;下拉框分为两种类型&#xff1a;我们分别针对这两种元素进行定位和…

2024最新 Jenkins + Docker 实战教程(五)- 配置Gitee Webhooks实现自动构建部署

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

Packet Tracer-HSRP+DHCPv4+VLAN间路由+以太通道综合实验

实验拓扑&#xff1a; 实验内容&#xff1a; VLAN及VLAN间路由的配置&#xff0c;以太通道的配置&#xff0c;STP的根调整&#xff0c;DHCPv4的配置&#xff0c;首跳冗余HSRP的配置。 实验最终结果&#xff1a; PC可以自动获取到DHCP-Server分配的IP地址&#xff0c;实现首跳…

Web3革命:探索科技与物联网的无限可能

引言 Web3时代正在悄然而至&#xff0c;带来了对互联网的彻底颠覆和改变。作为互联网的下一代&#xff0c;Web3不仅是技术革新的延续&#xff0c;更是对传统互联网模式的重新构想。在这个新时代&#xff0c;科技与物联网的结合将迎来无限的可能性&#xff0c;将探索到一片全新…

iOS系统故障怎么办?这三种苹果手机系统修复方法你一定要知道

随着苹果手机使用时间越长&#xff0c;苹果手机有时也会出现系统问题&#xff0c;如卡顿、崩溃、无法启动等。这些问题不仅影响用户的使用体验&#xff0c;还可能导致数据丢失。因此&#xff0c;掌握苹果手机系统修复方法显得尤为重要。本文将详细介绍苹果手机系统修复的常见方…

大模型之Ollama:在本地机器上释放大型语言模型的强大功能

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

实战Java虚拟机-实战篇

一、内存调优 1.内存溢出和内存泄漏 内存泄漏&#xff08;memory leak&#xff09;&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这个对象就不会被垃圾回收器回收&#xff0c;这种情况就称之为内存泄漏。内存泄漏绝大…

一番赏小程序开发,为玩家带来线上抽赏魅力

随着人们对娱乐消费的增加&#xff0c;以及二次元文化的快速发展&#xff0c;以动漫IP为主的一番赏受到了越来越多的年轻人关注&#xff0c;一番赏市场迎来了黄金发展期&#xff01; 一番赏的运营模式是以“限量”为主&#xff0c;不管什么商品数量都是有限的&#xff0c;因此…

微软刚发布的Copilot+PC为什么让Intel和AMD尴尬?2024 AI PC元年——产业布局及前景展望

美国东部时间5月20日在微软位于华盛顿的新园区举行的发布会上&#xff0c;宣布将旗下AI助手Copilot全面融入Windows系统&#xff0c;能够在不调用云数据中心的情况下处理更多人工智能任务。 “将世界作为一个提示词就从Windows系统开始”。微软的新PC将是“CopilotPC”&#xf…

[Algorithm][回溯][记忆化搜索][最长递增子序列][猜数字大小Ⅱ][矩阵中的最长递增路径]详细讲解

目录 1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.猜数字大小 II1.题目链接2.算法原理详解3.代码实现 3.矩阵中的最长递增路径1.题目链接2.算法原理详解3.代码实现 1.最长递增子序列 1.题目链接 最长递增子序列 2.算法原理详解 题目解析&#xff1a;从每个位置&am…

内部类知识点

什么是内部类&#xff1f; 内部类何时出现&#xff1f;B类是A类的一部分&#xff0c;且B单独存在无意义 内部类分类 成员内部类&#xff1a; 当内部类被private修饰后&#xff0c;不能用方法2 调用外部类成员变量 内部类里面有隐藏的outer this来记录 静态内部类 创建对象&…

水电集中抄表是什么?

1.定义分析&#xff1a;水电集中抄表 水电集中抄表是一种现代化能源管理体系方法&#xff0c;它利用先进的信息科技&#xff0c;如物联网技术、云计算等&#xff0c;完成对水电表数据的远程智能采集与处理。这种方法改变了传统的人工上门服务抄表方式&#xff0c;提高了效率&a…

Biome-BGC生态系统模型与Python融合技术实践应用

Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数&#xff0c;模拟日尺度碳、水和氮通量的有效模型&#xff0c;其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中&#xff0c;对于碳的生物量积累&#xff0c;采用光合酶促反应机理模型计算出每天…

ECharts实现地图飞线

echarts版本&#xff1a;https://echarts.apache.org/zh/changelog.html v5.x.x版本&#xff1a;不提供china.js和china.json文件 v4.x.x版本&#xff1a;使用npm安装echarts&#xff0c;默认包含china.js和china.json文件 目录 一、Html工程 二、vue工程 三、vue工程 四、矢…