STM32 ~ JTAG、SWD和串口下載的問題


最近有一個項目用到STM32,為了使PCB布線方便一些所以改了一些引腳,占用了JTAG接口的PA15和PB3,所以要禁用一下JTAG,下載采用SWD模式。這樣在實際操作中做出一些總結(方法網上都有、這里只是總結記錄一下,如果是STM32F4系列就不用:

 

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 使能

3:注意:不要忘記開啟AFIO時鍾,
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

這里選擇你要的模式,我是只用SWD不用JTAG

 

void GPIOint(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功能的影響了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM