我們有時(shí)候會(huì)碰到各種問題導(dǎo)致STM32或者STM8的程序突然就下載不進(jìn)去板子了,。可以按照以下步驟來解決,。
一,、下載方法步驟:
- 1、將板子供電全部斷開,,這里包括3.3V電源供電和JLINK等所有能給開發(fā)板供上電的設(shè)備全斷開,。
- 2、找到BOOT0引腳,,將BOOT0拉高,。
??方法:在板子上找一個(gè)高電平引腳,手動(dòng)用導(dǎo)線將BOOT0連接到該引腳上即可,。
??(注意:我的STM32板子供電是3.3V的,,所以我找了一個(gè)3.3V的引腳,,用導(dǎo)線連接到了BOOT0上,千萬別弄錯(cuò)了,,電平接高了不小心可是要燒壞板子的?。?/em>
- 3、BOOT0拉高以后,,保持這個(gè)姿勢(shì)不要?jiǎng)樱?strong>打開電源,,重新給板子上電。
- 4,、插上JLink或者STLink,,下載程序。一般這次肯定可以下載進(jìn)去了,。下載完成以后,,就可以斷開BOOT0了,讓他恢復(fù)低電平,。
OK到這里就全部完成了,,板子肯定也回復(fù)正常了,繼續(xù)嗨吧,。
二,、上述方法原因解釋
開發(fā)板默認(rèn)JTAG和SWD接口都是打開的,BOOT0是低電平,,當(dāng)把BOOT0置高時(shí),,給板子上電,板子啟動(dòng)的時(shí)候程序會(huì)卡住,,也就是內(nèi)部flash的程序并未執(zhí)行,,這個(gè)時(shí)候SW和JTAD接口都是出于默認(rèn)打開的狀態(tài)。然后下載一個(gè)不關(guān)閉JTAG或者SW接口的程序,,覆蓋之前flash中的程序就好了。
所以先將板子供電全部斷開(這里包括3.3V電源供電和JLINK等所有能給開發(fā)板供上電的設(shè)備全斷開),,再將開發(fā)板的BOOT0拉高,,重新給開發(fā)板上電,把程序中關(guān)閉JTAG或者SW的程序刪掉,,然后下載到開發(fā)板中,,程序下載完成就好了。
三,、SWD和JTAG被關(guān)閉原因
正搞板子發(fā)現(xiàn)程序下載不進(jìn)去了,,到處查找原因,發(fā)現(xiàn)自己在程序中不小心把STM32的SWD和JTAD接口都給關(guān)了,,如下就是關(guān)掉這兩個(gè)接口的兩句程序:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//關(guān)掉JTAG,,不關(guān)SW
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//關(guān)掉SW
所以,,當(dāng)程序跑起來,兩句執(zhí)行完以后,,兩個(gè)接口都關(guān)了,,然后程序就再也下載不進(jìn)去了。~~~
想要恢復(fù)正常,,我們需要做的事就是想辦法打開這兩個(gè)接口中的任意一個(gè),,也就是下載一套不關(guān)閉程序下載接口的代碼到板子中。
所以,,我們要么將程序中上述語句刪掉第二句,,只保留第一句,重新編譯,,也就是只關(guān)閉JTAG,,打開SW,要么重新找一個(gè)不關(guān)閉JTAG或者SW接口的代碼重新下載到板子中即可,。
|