1. 程式人生 > >STM32 禁用swd-jtag下載口後,重新下載程式的方法

STM32 禁用swd-jtag下載口後,重新下載程式的方法

由於工作需要,複用了PA15的時候,程式禁用swd-jtag功能,網上多方查詢解決方法。
在重新上電的時候,保證BOOT0為高電平,BOOT1為低電平,即可禁止程式從燒寫過的程式碼啟動,這時,重新燒寫程式即可。

STM32三種啟動模式對應的儲存介質均是晶片內建的,它們是:
1)使用者快閃記憶體=晶片內建的Flash。
2)SRAM=晶片內建的RAM區,就是記憶體啦。
3)系統儲存器=晶片內部一塊特定的區域,晶片出廠時在這個區域預置了一段Bootloader,就是通常說的ISP程式。這個區域的內容在晶片出廠後沒有人能夠修改或擦除,即它是一個ROROMM區。
在每個STM32的晶片上都有兩個管腳BOOT0和BOOT1,這兩個管腳在晶片復位時的電平狀態決定了晶片復位後從哪個區域開始執行程式,見下表:
BOOT1=xBOOT0=0從使用者快閃記憶體啟動,這是正常的工作模式。
BOOT1=0BOOT0=1從系統儲存器啟動,這種模式啟動的程式功能由廠家設定。
BOOT1=1BOOT0=1從內建SRAM啟動,這種模式可以用於除錯。
要注意的是,一般不使用內建SRAM啟動(BOOT1=1,BOOT0=1),因為SRAM掉電後資料就丟失。多數情況下SRAM只是在除錯時使用,也可以做其他一些用途。如做故障的區域性診斷,寫一段小程式載入到SRAM中診斷板上的其他電路,或用此方法讀寫板上的Flash或EEPROM等。還可以通過這種方法解除內部Flash的讀防寫,當然解除讀防寫的同時Flash的內容也被自動
清除,以防止惡意的軟體拷貝。
一般BOOT0和BOOT1跳線都跳到0(地)。只是在ISP下載的情況下,BOOT0=1,BOOT1=0,下載完成後,把BOOT0的跳線接回0,也即BOOT0=0,BOOT1=0。