SW模式下PB3管脚控制

2019-07-21 00:58发布

一个项目用到PB3发现的问题。设置为SW模式时,PB3管脚在跟踪时为TRACESWO信号,cpu软件复位也不会清除,需断电才能再次使用。所以需要关闭跟踪。
否则在进入调试后,PB3管脚不受ODR控制。




关于寄存器: 3个控制位用来配置SWJ-DP 接口的引脚,这3个位在系统复位时复位。 
● AFIO_MAPR(STM32F10xxx微控制器中的地址是0x40010004) 
─   读:APB,无等待状态 
─   写:APB,如果AHB-APB桥的写缓冲器满了,则一个等待状态 
位26:24=SWJ_CFG[2:0]  
由软件置位和复位 
这3位用来设置分配给SWJ调试接口的专用引脚数目,目的是在使用不同的调试接口时能释放
尽可能多的引脚用作普通I/O 口。 
复位后的初始值是000( 所有引脚都设置为JTAG-DP接口专用引脚),同时只能置位3个位中的
一个(禁止同时设置一个以上的位)。
调试MCU配置寄存器DBGMCU_CR : 此寄存器允许在调试状态下下配置MCU。包括: 
●  支持低功耗模式 
●  支持定时器和看门狗的计数器 
●  支持bxCAN通信 
●  分配跟踪引脚 
DBGMCU_CR寄存器被映射到外部PPB 总线,基地址为0xE0042000 。 
寄存器由PORESET 异步复位( 不被系统复位所复位) 。当内核处于复位状态下时,调试器可写该
寄存器。 
如果调试器不支持这些特性,用户软件仍可写这些寄存器。 
DBGMCU_CR 
地址:0xE0042004 
只支持32位访问 
POR复位:0x0000 0000(不被系统复位所复位)
使用SW并且PB3可控的配置代码,注意时能AFIO。

RCC->APB2ENR |= 1 |  (1<<3);  /*AFIO/ GPIOB*/
DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5); AFIO->MAPR |= (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); //SW模式
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。