新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32的JTAG、SWD和串口下載的問(wèn)題

STM32的JTAG、SWD和串口下載的問(wèn)題

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò) 收藏
最近有一個(gè)項(xiàng)目用到STM32,為了使PCB布線(xiàn)方便一些所以改了一些引腳,占用了JTAG接口的PA15和PB3,所以要禁用一下JTAG,下載采用SWD模式。這樣在實(shí)際操作中做出一些總結(jié)(方法網(wǎng)上都有、這里只是總結(jié)記錄一下):

本文引用地址:http://butianyuan.cn/article/201611/317498.htm

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功能后不能進(jìn)行仿真會(huì)出現(xiàn)不能進(jìn)行JTAG仿真的現(xiàn)象。

如果不小心僅用了JTAG導(dǎo)致下載不了程序了可以用以下方法解決:

1、設(shè)置啟動(dòng)模式為ISP模式(BOOT0=1、BOOT1=0)或設(shè)置啟動(dòng)模式為RAM運(yùn)行模式(BOOT0=1、BOOT1=1)。

將板子重新上電,此時(shí)就因不是在用戶(hù)程序模式,因此就不會(huì)執(zhí)行禁用JTAG的語(yǔ)句,JTAG功能也就可以正常使用。

2、設(shè)置啟動(dòng)模式為ISP模式(BOOT0=1、BOOT1=0),用ISP程序?qū)TM32的FLASH擦除,之后就可恢復(fù)JTAG功能。

使用串口下載的軟件Flash_Loader_Demonstrator 官網(wǎng)上有。注意串口下載只能用USART1也就是PA9和PA10引腳的那組。

3、如果你的仿真器支持SWD仿真模式,如IAR下用JLINK、MDK下用ULINK2。

直接將仿真器的模式設(shè)為SWD模,就可以不受這個(gè)禁止JTAG功能的影響了。



關(guān)鍵詞: STM32JTAGSWD串口下

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉