STM32 BOOT0與BOOT1 的應用原理
很多網友在用 keil 下載 程式時,明明下載線連線正常,偏偏程式就是無法下載,還提示晶片未連線。此時可能出錯的原因就在BOOT0上。
首先對BOOT0與BOOT1如何連線及連線方式介紹一下。
STM32 微控制器的BOOT0 和BOOT1 應用原理
STM32 三種啟動模式對應的儲存介質均是晶片內建的,它們是:
1)主快閃記憶體儲存器= 晶片內建的Flash。這也是正常工作模式
2)SRAM = 晶片內建的RAM 區,就是記憶體啦。
3)系統儲存器= 晶片內部一塊特定的區域,晶片出廠時在這個區域預置了一段Bootloader,就是通常說
的ISP 程式。這個區域的內容在晶片出廠後沒有人能夠修改或擦除,即它是一個ROM 區。
在每個STM32 的晶片上都有兩個管腳BOOT0 和BOOT1,這兩個管腳在晶片復位時的電平狀態決定了晶片復
位後從哪個區域開始執行程式,見下表:
SRAM 只是在除錯時使用,也可以做其他一些用途。如做故障的區域性診斷,寫一段小程式載入到SRAM 中診斷板上的其他電
路,或用此方法讀寫板上的Flash 或EEPROM 等。還可以通過這種方法解除內部Flash 的讀防寫,當然解除讀防寫的同時
Flash 的內容也被自動清除,以防止惡意的軟體拷貝。
一般BOOT0 和BOOT1 跳線都跳到0(地)。只是在ISP 下載的情況下,BOOT0=1,BOOT1=0 ,下載完成後,把
BOOT0 的跳線接回0,也即BOOT0=0,BOOT1=0 。
STM32F103 配置BOOT0 和BOOT1 直接接地還是經過電阻接地?
問:我的STM32F103RET6 掛了,原因是BOOT0 和BOOT1 直接接地導致的,很是奇怪,大家有沒有遇到啊?
答:STM32 的硬體設計指導也是建議BOOT0、1 接電阻再接地的。
BOOT0 和BOOT1 分別通過10k 電阻接地,方便串列埠下載,下載器控制BOOT0 為高電平,下完後又將BOOT0
恢復為低,STM32 復位即可進入使用者程式。平常上電直接進入使用者程式。
boot0 接10k 電阻接地或者直接接地,都不會引起晶片損毀。
注意:如果JTAG 相關的引腳被用作普通IO,將無法下載(BOOT0 為低電平的情況下)。解決辦法是用串列埠下載一次程式後再用JLINK 下載,或者將BOOT0 配置成高電平後下載。