[STM32F1] PA4/SPI_NSS、PA5/SPI1_CLK、PA6/SPI1_MISO 引脚问题

[复制链接]
28|16
我在使用 PA4/SPI_NSS、PA5/SPI1_CLK、PA6/SPI1_MISO 这几个引脚。我把芯片配置为:将这些引脚设置为数字输入模式,用来检测是否有电流(无电流 = 0 / 有电流 = 1),检测方式是通过接线实现。
但实际情况是:即使断开连接线,这些引脚的状态也始终为 1(高电平)。
这是什么情况?

故里说长安 发表于 2026-4-20 12:53 | 显示全部楼层
将PA4/PA5/PA6配置为SPI功能后,引脚控制权归属SPI外设,GPIO输入读取无效。
duo点 发表于 2026-4-20 13:27 | 显示全部楼层
检查.ioc文件中这些引脚是否同时被分配给了SPI和GPIO,CubeMX会优先按SPI配置生成代码。
等凌晨日出 发表于 2026-4-20 13:53 | 显示全部楼层
即使代码中没有显式开启SPI,只要.ioc中将这些引脚分配给了SPI外设,GPIO输入模式就不会生效。
flycamelaaa 发表于 2026-4-20 14:28 | 显示全部楼层
调用HAL_SPI_MspDeInit()可释放SPI占用的引脚资源,之后再重新初始化GPIO输入。
jcky001 发表于 2026-4-20 14:28 | 显示全部楼层
PA5作为SPI_CLK时默认输出频率较高,若附近走线存在容性耦合,可能将时钟信号串扰到PA4/PA6
甜心puppy 发表于 2026-4-20 14:54 | 显示全部楼层
检查CubeMX中的引脚配置视图,确认PA4/PA5/PA6是否显示为绿色
onlycook 发表于 2026-4-20 15:25 | 显示全部楼层
检查系统时钟配置,若SPI1外设时钟已使能,即使不调用HAL_SPI_Init(),GPIO复用功能仍可能生效。
豌豆爹 发表于 2026-4-20 15:54 | 显示全部楼层
若引脚被复用为SPI功能,需在代码中调用HAL_GPIO_DeInit()将这些引脚恢复为GPIO模式。
海滨消消 发表于 2026-4-20 16:55 | 显示全部楼层
PA5作为SPI1_SCK,在SPI外设使能后会主动输出时钟信号,强制将该引脚变为输出方向。
powerantone 发表于 2026-4-20 17:29 | 显示全部楼层
换一个未被任何外设占用的独立GPIO(如PB0)重复测试,排除SPI复用干扰。
茉璃夏 发表于 2026-4-20 17:55 | 显示全部楼层
断开连接线后引脚仍为高电平,可能是内部上拉电阻被意外使能。
进入猫次元 发表于 2026-4-20 18:56 | 显示全部楼层
检查GPIO初始化代码中是否调用了HAL_GPIO_Init()且配置为GPIO_MODE_INPUT,而非复用模式。
麻花油条 发表于 2026-4-20 19:56 | 显示全部楼层
即使将引脚配置为输入模式,若SPI外设时钟未被禁用,外设仍可能覆盖GPIO输出数据寄存器。
classroom 发表于 2026-4-20 21:56 | 显示全部楼层
测量引脚对地电压,若悬空时为高电平,说明引脚内部上拉已使能或外部电路存在上拉。
cr315 发表于 2026-4-20 22:57 | 显示全部楼层
断开连接线后引脚悬空,数字输入读取值为不确定状态,应添加外部下拉电阻强制低电平。
AdaMaYun 发表于 2026-4-22 11:04 | 显示全部楼层
检查CubeMX中的引脚配置视图
您需要登录后才可以回帖 登录 | 注册

本版积分规则

128

主题

131

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0