最近有一个项目用到STM32,为了使PCB布线便利一些所以改了一些引脚,占用了JTAG接口的PA15和PB3,所以要禁用一下JTAG,下载选用SWD形式。这样在实际操作中做出一些总结(办法网上都有、这儿仅仅总结记载一下):
1:GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
改动指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ彻底禁用(JTAG+SW-DP)
2:GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
改动指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable,JTAG-DP禁用 + SW-DP使能
这儿挑选你要的形式,我是只用SWD不必JTAG
1
2
3
4
5
6
7
8
9
10
11
12
|
voidGPIOint(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
|
STM32在程序中禁用JTAG功用后不能进行仿真会呈现不能进行JTAG仿真的现象。
假如不小心仅用了JTAG导致下载不了程序了能够用以下办法处理:
1、设置发动形式为ISP形式(BOOT0=1、BOOT1=0)或设置发动形式为RAM运转形式(BOOT0=1、BOOT1=1)。
将板子从头上电,此刻就因不是在用户程序形式,因而就不会履行禁用JTAG的句子,JTAG功用也就能够正常运用。
2、设置发动形式为ISP形式(BOOT0=1、BOOT1=0),用ISP程序将STM32的FLASH擦除,之后就可康复JTAG功用。
运用串口下载的软件Flash_Loader_Demonstrator 官网上有。留意串口下载只能用USART1也便是PA9和PA10引脚的那组。
3、假如你的仿真器支撑SWD仿真形式,如IAR下用JLINK、MDK下用ULINK2。
直接将仿真器的形式设为SWD模,就能够不受这个制止JTAG功用的影响了。