1. 程式人生 > >STM32,下載HAL庫寫的代碼後J-Link識別不到芯片,必須要按住復位才能下載?

STM32,下載HAL庫寫的代碼後J-Link識別不到芯片,必須要按住復位才能下載?

bug 原子 芯片 讀取 alt 文件 端口 enabled 代碼

問題描述:最近在學STM32的HAL庫,據說可以統一STM32江湖,前途無量。最近一段時間參照STM32CubeMX和原子的資料自己學著建了兩個HAL庫的工程模板,F4的還好說,F1的出現了一個玄學問題:

芯片為STM32F103C8T6,下進HAL庫編寫的工程後J-Link就識別不到芯片了,下載也是,只有J-Link讀取時按住復位才可以。更神奇的是用標準庫的代碼卻沒問題,具體表象就是下進標準庫的代碼,然後HAL庫的代碼可以正常下載,但是HAL庫的代碼一旦下進去,標準庫和HAL庫的代碼就都不能通過正常手段下載了。這很明顯是軟件問題。

經過查資料得知,用cubemx配置的代碼禁止了swd端口。

解決方法:

在【STM32CubeMX】中配置【SYS->Debug】為【Serial Wire】

代碼表現為:

在“stm32f1xx_hal_msp.c”中

禁止SWD
 /** DISABLE: JTAG-DP Disabled and SW-DP Disabled 
  */
  __HAL_AFIO_REMAP_SWJ_DISABLE();

使用SWD
 /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled 
  */
  __HAL_AFIO_REMAP_SWJ_NOJTAG();

附:HAL庫用戶程序文件描述

技術分享圖片

STM32,下載HAL庫寫的代碼後J-Link識別不到芯片,必須要按住復位才能下載?