分享经验:使用PB3作为普通的IO口,比如用来读电平,但是读出来一直是低电平

2019-07-21 04:02发布

我用的是STM32F103VET6,在使用PB3作为普通的IO口,比如用来读电平的时候,读出来一直是低电平,引脚的电平是有变化的,但是程序中检测出来的一直是低电平,后来终于发现这个问题,还真是个特例啊,这么多引脚我就用了PB3.。。。解决的方法:STM32没有彻底释放PB3作为普通IO口使用,切换到SW调试可释放PB3PB4PA15,将它们做为普通IO口使用。用额外增加以下的代码才行:#define DBGMCU_CR  (*((volatile unsigned long *)0xE0042004))RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);DBGMCU_CR &=0xFFFFFFDF;  //这句话很重要,如果没有这段代码,PB3就会一直是低电平    按官方文档的说法是不需要DBGMCU_CR&= 0xFFFFFFDF这段代码,可能由于D版Keil或者JLINK的原因出现了BUG,使得STM32打开了异步跟踪,占用PB3,将异步跟踪关掉就行了。哈哈,新手菜鸟的新发现
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。