2018年8月24日星期五

STM32 GPIO PB3、PB4不可用

在STM32单片机上开发了一个应用,结果发现GPIO PB3和PB4两个管脚不听我的控制。软件检查了很多遍也没有发现问题,负责这个项目硬件的同事检查了硬件设计也没有发现问题。就在我俩一筹莫展之际,旁边一位同事说出了原因。
原来,PB3和PB4这两个管脚默认为JTAG管脚。如果应用不使用JTAG(比如我们这个项目仅使用SWJ调试和下载),可以将其重映射为普通GPIO,相应的代码是
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); 
如果连SWJ也不用,还可以把PA13、PA14、PA15三个管脚也释放出来,相应的代码是
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);  
此外,调用这两个语句不要忘记把AFIO的时钟也打开,相应的代码是
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
这虽然是我第一次在STM32上进行开发,但之前也完整看过一本教材才开始动手的。这么重要的功能那本书竟然提都没有提。如果不是旁边那位经验丰富的同事“多嘴”,我和硬件工程师还不知道要被这个问题困扰多久。

没有评论:

发表评论