STM32的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功能后不能進(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í)就因不是在用戶程序模式,因此就不會(huì)執(zhí)行禁用JTAG的語句,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功能的影響了。
評(píng)論