STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗

当STM32的GPIO口设置为复用功能输入模式 时,你仍然可以使用标准的GPIO库函数(如 GPIO_ReadInputDataBit())来读取该引脚的实际电平状态。

1. 为什么可以读取?

这是因为在STM32的内部硬件设计上,输入路径是共享的。请看下图:

从图中可以看出关键点:

  • 施密特触发器始终使能 :在复用功能输入模式下,GPIO引脚的施密特触发器是打开的外部信号通过引脚进入后,同时流向两个地方。

  • 信号分流

    1. 流向片上外设:信号进入定时器的输入捕获通道,用于霍尔传感器采集、电机换相等硬件自动处理。

    2. 流向输入数据寄存器 :信号同时也被存储到GPIO的输入数据寄存器(GPIOx_IDR) 中。

  • CPU读取 :当你调用 GPIO_ReadInputDataBit() 时,CPU实际上就是在读取这个 IDR寄存器 的值。因此,只要触发器是使能的,读取到的就是引脚当前的实时电平。

2. 实际应用场景

在霍尔传感器采集的电机控制应用中,这个特性有时会派上用场:

  • 调试与监控:在电机运行时,可以通过在主循环中或断点处读取GPIO状态,来验证霍尔传感器是否工作正常,信号是否正确。

  • **低速辅助控制:**在电机启动或极低速情况下,定时器捕获的时间间隔可能很长,此时可以通过直接读取GPIO状态来获取一个绝对的位置参考。

3. 注意事项

  • 区分输入与输出 :如果你的引脚配置的是复用功能输出模式(如PWM输出),虽然也可以读取IDR,但此时读取到的是引脚正在输出的电平,不一定是外部驱动的电平。

  • 模拟模式例外 :**只有模拟输入模式下,施密特触发器才会被强制关闭,**此时无法用GPIO函数读取数字电平。

总结一下:在霍尔传感器这种复用功能输入的应用中,你既能享受硬件自动捕获的高效,也能在需要时用软件读取引脚状态,两者互不冲突。

相关推荐
Flamingˢ14 小时前
ZYNQ+OV5640+VDMA+HDMI视频链路搭建实录:从摄像头采集到实时显示
arm开发·嵌入式硬件·fpga开发·vim·音视频
Topplyz14 小时前
PCB开尔文走线
嵌入式硬件·pcb·layout
C^h14 小时前
RT thread使用u8g2点亮oled显示屏
linux·单片机·嵌入式硬件·嵌入式
senijusene15 小时前
IMX6ULL ADC 驱动开发解析:
驱动开发·嵌入式硬件
UTP协同自动化测试15 小时前
智能家居中控屏测试:触摸屏操作 + I2C 读取传感器 + UART 与子设备通信 + GPIO 控制
功能测试·单片机·嵌入式硬件·测试工具·智能家居
【云轩】15 小时前
【拆解系列 一 】拆解手持式泡泡机
嵌入式硬件
Hello World . .15 小时前
ARM裸机学习9——ADC模块详解与应用实践
arm开发·嵌入式硬件
电子科技圈15 小时前
SmartDV展示AI & HPC连接与存储IP解决方案,以解锁下一代算力芯片和节点的“速度密码”
网络·数据库·人工智能·嵌入式硬件·aigc·边缘计算
CET中电技术15 小时前
“事后维护”到“主动预防”排除故障,CET中电技术为电动机的安全运行保驾护航
单片机·嵌入式硬件
辰哥单片机设计15 小时前
STM32智能鞋柜(机智云)
stm32·单片机·嵌入式硬件