Cortex-M系列MCU的SWD调试接口使用PA14(SWCLK)和PA13(SWDIO)两线进行调试。PA14和PA13这两个IO的复位状态和其它IO是不同的。以GD32E230为例:
- GPIOA_CTL复位值为0x28000000,即CTL14=10b,CTL13= 10b,即AF功能。
- GPIOA_OSPD复位值为0x0C000000,即OSPD14=00b,OSPD13=11b,SWDIO速度为50M。
- GPIOA_PUD复位值为0x24000000,即PUD14=10b,PUD13=01b,SWCLK为下拉,SWDIO为上拉。
如果用户的固件中使用了PA14和PA13两个IO,或者是没有使用这两个IO,但是无意中修改了这两个IO的初始化设置,很容易导致GDLink无法连上目标板
具体表现为:
- 空芯片可以连接,烧录,调试。
- 烧录过一次程序,调试器就很难连上芯片了。
- MDK中调试的时候,程序一运行,马上连接就断了。
直接使用寄存器的用户需要特别注意:不要修改PA14和PA13相关的默认值。使用固件库来初始化GPIO不存在这个问题,推荐使用;如果一定要使用寄存器来初始化GPIO,一定要把寄存器手册吃透。
GDLink-OB调试器用户手册v21.5.27.pdf
(1011.1 KB)
|
怎么解决这个问题呢