STM32 PB3管脚设置为浮空输入,上电之前如果管脚保持高电平,检测出来的一直都是低,产品已经出了几千片,就是最近一批货有大概10片有这个问题,对着芯片用风枪加热到一定温度就能检测到高电平,保持芯片还是温度比较高的状态重新上电,也能正常检测到高电平,但是温度降下来后,重新上电检测出来的就是低电平了。为了
排除了PCB和焊接的问题,也用了一个LQFP100
的测试座子把芯片从板子上拿下来试过了,问题还是一样。软件已经简化到只用到PA9 PA10打印口还有PB3输入,时钟也是用了内部的。初始化完成后就while循环间隔一秒钟左右读取PB3管脚的状态。
管脚的初始化如下:
RCC_APB2PeriphClockCmd((RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO), ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOA
tiNG;
GPIO_Init(M_GPIOB, GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(M_GPIOA, GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(M_GPIOA, GPIO_InitStructure);
0