真实案例1:
用开发板STM32的PD13来测试,直接裸露的管脚。
硬件连接我手上发光二极管的比较长的一端也就是 + 极,开发板找GND连接二极管较短的一端也就是 - 极。
#define TSBUZGPIO GPIOD
#define TSBUZGPIOPIN GPIO_Pin_13
#define TS_BUZ_H() GPIO_SetBits(TSBUZGPIO ,TSBUZGPIOPIN)
#define TS_BUZ_L() GPIO_ResetBits(TSBUZGPIO ,TSBUZGPIOPIN)
void TS_Buz_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD,ENABLE );
GPIO_InitStructure.GPIO_Pin = TSBUZGPIOPIN ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(TSBUZGPIO, &GPIO_InitStructure);
//TS_BUZ_H() ;
}
结论:上电复位以后是低电平!
因为灯没有亮起。主动拉高电平灯TS_BUZ_H() 才会亮。
参考:
https://mp.weixin.qq.com/s?__biz=MzI4MTEyNDU1MA==&mid=2651182997&idx=2&sn=e590a414cb58a866725568d9a6f2363d&chksm=f05f7c3cc728f52ada3638b0029aeee27f0056697f4ebf5c8143a76fd4e159d560d10b66ad82&mpshare=1&scene=23&srcid=0606xGDohBQapCa0IS9Ew64h#rd

真实案例2:

这里有个TF_DET 对应的是PC6
原理图是:没有插卡--高电平 插卡以后--低电平
init 81行
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PC6---PD7 上拉输入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据设定参数初始化PD7
检测就是
u8 Read_THDET_PIN()
{
return GPIO_ReadInputDataBit(GPIOC ,GPIO_Pin_6);
}
把这个函数放到循环中 周期读一读就知道了 有卡是0 没卡是1
u8 tset = Read_THDET_PIN();
上电以后就是高电平!因为它外接的3.3v
结论:上电是浮空的,一般是低电平,除非你外面自己接电了才是高电平。