序幕
先来copy下 JTAG、SW接口的界说,
JTAG:JTAG(Joint Test AcTIon Group;联合测验工作组)是一种国际规范测验协议,首要用于芯片内部测验。现在大都的高档器材都支撑JTAG协议,如DSP、FPGA器材等。规范的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为形式挑选、时钟、数据输入和数据输出线。
SWD:SW(Serial Wire Mode Interface),串行接口线形式。在串行线形式,只需针TCLK和TMS运用。TDO数据输出引脚是一个可选。
SWD下载调试 原理图:
热情
问题来了:
1、需求关掉PB3的JTAG功用,复用为其他功用。
2、SWD 和传统的调试办法差异。
STM32 JTAG复用相关办法 :
直接上代码,如下:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//改动指定管脚的映射GPIO_Remap_SWJ_JTAGDisableJTAG-DP失能+SW-DP使能GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);。..。…12345
但,
当设置了以上句子后,当运转了这两个句子后,JTAG仿真就与方针失去去联络。
解决办法有:
1、设置发动形式为ISP形式(BOOT0=1、BOOT1=0)或设置发动形式为RAM运转形式(BOOT0=1、BOOT1=1)。 将开发板断电后从头上电,此刻就因不是在用户程序形式,因而就不会履行禁用JTAG的句子,JTAG功用也就能够正常运用。
2、设置发动形式为ISP形式(BOOT0=1、BOOT1=0),用ISP程序将STM32的FLASH擦除,之后就可康复JTAG功用。
3、假如你的仿真器支撑SWD仿真形式,如IAR下用JLINK、MDK下用ULINK2。 直接将仿真器的形式设为SWD模,就能够不受这个制止JTAG功用的影响了。
我的环境切合第三个解决方案,IAR设置如下:
SWD 和传统的调试办法差异 :
SWD 形式比 JTAG 在高速形式下面愈加牢靠。 在大数据量的状况下面 JTAG 下载程序会失利, 可是 SWD 产生的几率会小许多。根本运用 JTAG 仿真形式的状况下是能够直接运用 SWD 形式的, 只需你的仿真器支撑。 所以引荐我们运用这个形式。
在我们 GPIO 刚好缺一个的时分, 能够运用 SWD 仿真, 这种形式支撑更少的引脚。
在我们板子的体积有限的时分引荐运用 SWD 形式, 它需求的引脚少, 当然需求的 PCB 空间就小啦! 比方你能够挑选一个很小的 2.54 距离的 5 芯端子做仿真接口。