当前位置:   article > 正文

关于STM32中解除调试端口用作普通IO口_stm32f103c8t6解除调试端口复用

stm32f103c8t6解除调试端口复用

我自己设计的平衡车板子中,OLED要用到PB4和PB5,但是我之前在写代码的时候没有注意到PB4上电默认的是调试端口,结果下载程序后,OLED一直没有显示信息,这让我一度怀疑差点奔溃的认为是不是我的板子出现了短路现象,经过万用表的测试发现没有出现短路情况,这又让我很懵逼不知道问题在哪,为了解决是不是我的板子出现了问题,我就用了面包板来搭建最简单的电路(一个32板子,一个OLED),并且OLED还是用PB4和PB5,我原本以为面包板搭建的电路OLED应该会显示一些东西,结果居然没有!

这时我想起了会不会是引脚的问题,当我去看引脚定义表才恍然大悟。。。。原来PB4上电后就是默认为调试端口,所以要想把它当作普通IO口,就需要额外的一些操作

这里可以看江科大STM32入门教程的6-4节的第30分钟,他详细的讲了关于如何解除调试端口用作普通IO口的说明(他真的太牛逼了,我哭死)

其实额外的操作就是两个,一个开启AFIO时钟,另一个是GPIO_PinRemapConfig函数即端口重映射

  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);
  2. GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
  3. GPIO_InitTypeDef GPIO_InitStructure;
  4. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  5. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  6. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  7. GPIO_Init(GPIOB, &GPIO_InitStructure);
  8. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  9. GPIO_Init(GPIOB, &GPIO_InitStructure);

总之,在以后设计PCB的时候不是随便就用哪些端口,真的要好好看看引脚定义表,避免不必要的麻烦出现

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/929473
推荐阅读
相关标签
  

闽ICP备14008679号