STM32上电以后GPIO默认是Floating input

2019-04-13 13:09发布

真实案例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  

结论:上电是浮空的,一般是低电平,除非你外面自己接电了才是高电平。