花了一堆时间调试,要将PB3作为输入口使用,查了很多文章,试了一下午,终于···
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 必要
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);// 必要
GPIO_AFIODeInit ();
//清除TRACE_IOEN
DBGMCU->CR &= ~((uint32_t)1<<5); //必要
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //必要
//很多文章里面没有下面这两句,一直读到PB3为0....要重新配置PB3必须要重置PB,否则为三态输出
RCC_APB2PeriphResetCmd (RCC_APB2Periph_GPIOB,ENABLE);//必要
RCC_APB2PeriphResetCmd (RCC_APB2Periph_GPIOB,DISABLE);//必要
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOB, &GPIO_InitStructure);
参考资料: