STM32CUBEMX忘記配置sys中的debug導致程序只能下載一次的問題
問題現象:使用STM32CubeMX生成工程后,使用SWD下載,第二次無法下載。
問題所在:使用STM32CubeMX生成的工程,使用SWD下載,需要配置。
必需進行如下配置:SYS---debug--Serial Wire
圖1-2 按reset鍵下載程序的現象
STM32芯片已經被鎖住了,無法正常下載程序,按reset鍵下載也無濟於事,這時候可進行如下操作必解決:
理論知識部分:
stm32的3種啟動模式:
(1) 用戶閃存 : 正常的工作模式。STM32內置的Flash,一般我們使用JTAG或者SWD模式下載程序時,就是下載到這個里面,重啟后也直接從這啟動程序。
(2)SRAM: 芯片內置的RAM區, 就是內存,既然是SRAM,自然也就沒有程序存儲的能力了,這個模式一般用於程序調試。
(3)系統存儲器: 系統存儲器是芯片內部一塊特定的區域,STM32在出廠時,由ST廠家在這個區域內部預置了一段BootLoader,也就是我們常說的ISP程序,這是一塊ROM,出廠后無法修改。一般來說,我們選用這種啟動模式時,是為了從串口下載程序,因為在廠家提供的BootLoader中,提供了串口下載程序的固件,可以通過這個BootLoader將程序下載到系統的Flash中。但是這個下載方式需要以下步驟:
Step1:將BOOT0設置為1,BOOT1設置為0,然后按下復位鍵,這樣才能從系統存儲器啟動BootLoader;
Step2:最后在BootLoader的幫助下,通過串口下載程序到Flash中;
Step3:程序下載完成后,又有需要將BOOT0設置為GND,手動復位,這樣,STM32才可以從Flash中啟動
實際操作部分:
BOOT0設置為1
BOOT1設置為0
然后使用MDK-ARM(keil5軟件或者其它軟件下載你的無問題的程序,最好是固件庫寫的程序,因為這個沒有什么debug配置沒配置的問題程序,下載完成后應該可以看到程序正常運行)
最后再將BOOT0改為0即可,記得將CUBEMX軟件里面配置好debug選項。