STM32使用旋转编码开关

STM32使用旋转编码开关总的来说 旋转编码开关是一种功能强大 应用广泛的电子元器件 在工业自动化 机器人技术 伺服控制系统 电梯 电机控制 音视频设备 游戏控制器以及其他需要精确位置控制和速度反馈的各种机械设备中都有重

大家好,欢迎来到IT知识分享网。

一、旋转编码开关如何工作

        编码器内部有一个开槽圆盘,连接到公共接地引脚 C。它还具有两个接触针 A 和 B,如下所示。

STM32使用旋转编码开关

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

STM32使用旋转编码开关

        当它们与公共地接触时,会产生两个信号。这些信号存在 90° 异相,因为一个引脚先于另一个引脚接触公共地。它被称为正交编码。

        当顺时针旋转旋钮时,A 引脚先于 B 引脚接地。当逆时针旋转旋钮时,B 引脚先于 A 引脚接地。

        通过监控每个引脚何时连接或断开接地,我们可以确定旋钮旋转的方向。这可以通过简单地观察 A 的状态改变时 B 的状态来完成。

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

STM32使用旋转编码开关
        当改变状态时,如果 A:下降沿,B:为低电平,则逆时针转动旋钮。

STM32使用旋转编码开关

STM32使用旋转编码开关

        总的来说,旋转编码开关是一种功能强大、应用广泛的电子元器件,在工业自动化、机器人技术、伺服控制系统、电梯、电机控制、音视频设备、游戏控制器以及其他需要精确位置控制和速度反馈的各种机械设备中都有重要的应用。

二、 Cube MX 具体配置

        首先需要在CubeMX中选择适当的引脚连接旋转编码开关的输出引脚,并将其设置为EXTI模式,然后对引脚启用中断功能。

        在配置过程中,还有一个重要的步骤是将引脚进行上拉。上拉电阻用于确保引脚保持在高电平状态。这有助于防止由于噪声或干扰而导致的误触发。我这里使用的是B14、B15引脚,具体的配置如下所示。

STM32使用旋转编码开关

三、具体代码实现 

        通过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/_/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147398.html

(0)
上一篇 2025-04-07 20:20
下一篇 2025-04-07 20:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信