針對(duì)STM32系列單片機(jī),大家一般采用STLink和Jlink來(lái)下載程序,這里我們?cè)囈幌翪H340 USB轉(zhuǎn)串口芯片的下載方法,主要是將Boot電平設(shè)置好。
采用:STM32F103C6T6芯片microUSB 接口連上電腦,com3端口
環(huán)境:Win10,提前安裝好CH340/341系列的驅(qū)動(dòng)
針對(duì)BOOT0和BOOT1的不同接線方式(高電平,低電平,不接線),開發(fā)板的下載情況分析如下圖:(“x”代表不接線,“√”代表能成功下載)


首先對(duì)BOOT0與BOOT1如何連接及連接方式介紹一下。
STM32 單片機(jī)的BOOT0 和BOOT1 應(yīng)用原理
STM32 三種啟動(dòng)模式對(duì)應(yīng)的存儲(chǔ)介質(zhì)均是芯片內(nèi)置的,它們是:
1)主閃存存儲(chǔ)器= 芯片內(nèi)置的Flash。這也是正常工作模式
2)SRAM = 芯片內(nèi)置的RAM 區(qū),就是內(nèi)存啦。
3)系統(tǒng)存儲(chǔ)器= 芯片內(nèi)部一塊特定的區(qū)域,芯片出廠時(shí)在這個(gè)區(qū)域預(yù)置了一段Bootloader,就是通常說(shuō)
的ISP 程序。這個(gè)區(qū)域的內(nèi)容在芯片出廠后沒(méi)有人能夠修改或擦除,即它是一個(gè)ROM 區(qū)。
在每個(gè)STM32 的芯片上都有兩個(gè)管腳BOOT0 和BOOT1,這兩個(gè)管腳在芯片復(fù)位時(shí)的電平狀態(tài)決定了芯片復(fù)
一般不使用內(nèi)置SRAM 啟動(dòng)(BOOT1=1 BOOT0=1),因?yàn)镾RAM 掉電后數(shù)據(jù)就丟失。
一般BOOT0 和BOOT1 跳線都跳到0(地)。只是在ISP 下載的情況下,BOOT0=1,BOOT1=0 ,下載完成后,把BOOT0 的跳線接回0,也即BOOT0=0,BOOT1=0 ,也可以不用更改
我們?cè)谶@里采用CH340串口燒寫下載程序,BOOT0和BOOT1分別設(shè)置為1和0,下載后可直接運(yùn)行,但復(fù)位后代碼不執(zhí)行,可以在調(diào)試過(guò)程中,不用頻繁更改boot電平
注意:如果JTAG 相關(guān)的引腳被用作普通IO,將無(wú)法下載(BOOT0 為低電平的情況下)。解決辦法是用串口下載一次程序后再用JLINK 下載,或者將BOOT0 配置成高電平后下載。
Keil5中代碼STM32單片機(jī)C語(yǔ)言代碼如下:

編譯好后,在FlyMcu軟件進(jìn)行下載:
將Boot電平設(shè)置好,
選好要下載的.hex文件,設(shè)置為STMISP
DTR的低電平復(fù)位,RTS高電平進(jìn)BootLoader
點(diǎn)擊開始編程,結(jié)果如下圖:

耗時(shí)1.5s左右,寫入1kb,下載完后,可看到STM 32 單片機(jī)開始執(zhí)行程序,小燈開始閃爍(5mm黃色發(fā)光二極管,插在面包板上,正極(白色公專轉(zhuǎn)母杜邦線)接A0引腳,負(fù)極接GND引腳(黑色公專轉(zhuǎn)母杜邦線),其間串聯(lián)一個(gè)220Ω的色環(huán)電阻)
效果如下圖:

參考:
STM32 單片機(jī)的BOOT0 和BOOT1使用注意事項(xiàng)
STM32 BOOT0和BOOT1對(duì)于下載程序的應(yīng)用
關(guān)于STM32單片機(jī)的兩引腳BOOT0和BOOT1的詳細(xì)說(shuō)明
STM32 ~ CH340在STM32實(shí)現(xiàn)一鍵下載電路