最近在用STM32G070RBT6开发产品(Keil v5.23, STM32G0 SDK 1.3.0,VCC=3.3V),在PA8和PB15管脚设计按键输入的时候,总是出现检测异常,具体表现为PA8/PB15配置为PULLUP时上电后管脚只有1.8V,NOPULL时只有1.2V,无法满足高电平检测条件(一般至少0.7VCC即2.31V以上才能被识别为高电平)。验证了其他管脚,发现PD0和PD2也具有相同现象。
总结下来就是,同样的电路和配置,除去PA8/PB15/PD0/PD2,其他GPIO在上电后都可以测得3.3V,只有这4个管脚异常,令人百思不得其解。
图1 按键输入电路(低电平有效)
经过仔细阅读STM32G07x 数据手册和参考手册,得知PA8/PB15/PD0/PD2 这几个管脚是所谓的FT_c管脚,所谓FT_c就是可以最高输入5V。另外复用做UCPD接口的4个PIN,内部有个下拉电阻,由SYSCFG_CFGR1寄存器的Bit9 UCPD1_STROBE(PA8/PB15)和Bit10 UCPD2_STROBE(PD0/PD2)控制,具体控制逻辑如下: