赞
踩
我自己设计的平衡车板子中,OLED要用到PB4和PB5,但是我之前在写代码的时候没有注意到PB4上电默认的是调试端口,结果下载程序后,OLED一直没有显示信息,这让我一度怀疑差点奔溃的认为是不是我的板子出现了短路现象,经过万用表的测试发现没有出现短路情况,这又让我很懵逼不知道问题在哪,为了解决是不是我的板子出现了问题,我就用了面包板来搭建最简单的电路(一个32板子,一个OLED),并且OLED还是用PB4和PB5,我原本以为面包板搭建的电路OLED应该会显示一些东西,结果居然没有!
这时我想起了会不会是引脚的问题,当我去看引脚定义表才恍然大悟。。。。原来PB4上电后就是默认为调试端口,所以要想把它当作普通IO口,就需要额外的一些操作
这里可以看江科大STM32入门教程的6-4节的第30分钟,他详细的讲了关于如何解除调试端口用作普通IO口的说明(他真的太牛逼了,我哭死)
其实额外的操作就是两个,一个开启AFIO时钟,另一个是GPIO_PinRemapConfig函数即端口重映射
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);
-
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
-
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
总之,在以后设计PCB的时候不是随便就用哪些端口,真的要好好看看引脚定义表,避免不必要的麻烦出现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。