1. 程式人生 > >Error: Flash Download failed - Target DLL has been cancelled

Error: Flash Download failed - Target DLL has been cancelled

在寫程式時候突然遇到這個下載失敗問題,不是第一次遇到,所以總結一下。

分享本人遇到的下載失敗的情況用的是 ST-lINK V2下載

第一次:第一塊板子,自己畫的板子下載失敗原因:STM32F10X晶片四個VCC漏接了一個。就是我畫板子時候沒有認真檢查,連線線少了一條。

這個也是後面反覆檢查才發現的,因為確實不是和顯眼的連線線,被背景柵格線重疊了。

驗證過程:查詢網上的各種資料彙總一下:

1、確保晶振起振。換晶振,加22pf 或者加1M歐的電阻,便於起振。

2、BOOT0/1配置,先把boot0:1boot1:0;下載成功後再換回換來的。

3、按著復位鍵,然後下載程式再鬆開復位,需要不斷的試。

以上三種方法都試過了,還是不行,於是我換了一個小系統來下載也是自己新畫,一下子就成功了。這個時候不得不懷疑是板子問題。反覆檢查才發現是漏畫了晶片vcc,使用跳線接上後成功燒錄。

第二次:板子,程式一直在除錯,下載,下載之後就不行了。是因為程式改動了晶片的預設除錯口。

即: GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);   //

STM32F10X晶片有專門的除錯口:

除錯引腳:
PA15:JTDI 處於上拉狀態
PA14:JTCK/SWCLK處於下拉狀態
PA13:JTMS/SWDAT處於下拉狀態
PB4:NJTRST處於上拉狀態
PB3:JTDO處於浮空狀態

預設情況是作為除錯口使用。當我們要作為普通IO口使用,需要設定相關暫存器,庫函式就呼叫GPIO_PinRemapConfig函式,就是以上的程式使能禁止JTAG模式;

修改使用除錯IO,會出現晶片休眠情況,IO充足情況下,儘量避免使用除錯IO。

當晶片處於休眠狀態,是無法下載的。按照以上第一次的配置即可實現。

按著復位鍵,點選下載,鬆開復位。三步,我一次就成功了。網上也有需要多試幾次的說法。這個是做法是晶片休眠情況喚醒下載哦。目前,因為修改佔用了PB3,PB4所以導致每次下載程式都需要按下復位鍵,點選LOAD下載,鬆才能燒錄成功,不知道其他晶片是否如此。