發表於 2018-03-23 14:40:00
利用stm32單片機的休眠模式,使單片機間歇的休眠從而實現低功耗的目的。往往會出現進入休眠後無法喚醒,導致下一次程序燒不進去。通常的解決辦法是:一般的開發板或單片機最小系統都會有復位鍵,按住復位鍵,點下載,然後鬆開復位鍵即可。
我遇到的問題是:誤入了stm32(STM32L051C6T6)的STOP模式,又沒有寫入相應的喚醒方法,導致後續的程序不能下載。使用MDK5 點擊load時總會出現No target connected。自己設計的最小系統又沒有加入復位鍵。。。
有以下幾種解決辦法:
1、可以將單片機的NRST引腳引出來,外接復位鍵。(關於引腳查看可用ST官方軟體STM32cubeMX,很方便)
2、通過ISP的方式下載程序,必須將boot0接高電平,boot1(PB2)接低電平,然後必須斷電後重啟,此時單片機會進入ISP模式,就可以通過串口1(一般單片機都是只有串口1才可下載程序)再用flymcu等軟體燒入hex文件就可以了。
關於boot0和boot1,在每個stm32單片機都會有這兩個引腳,這兩個引腳在復位時的電平狀態決定了晶片在復位後從哪個區域開始執行程序。
boot1=x boot0=0從用戶快閃記憶體啟動,這是正常的工作模式。
boot1=0 boot0=1從系統存儲器啟動(進入ISP模式)。
boot1=1 boot0=1從內置SRAM啟動,這種模式可以用於調試。
如此一來,單片機無法進入正常的工作模式,就無法進行休眠,就可以通過ISP來下載程序。
3、使用STlink燒寫程序,STlink至少要接4根線(SWDIO、SWCLK、GND、SW-RST),一般的下載程序只需要前三根就可以了,但是以防出現休眠無法喚醒的情況,這時有復位鍵就可以將SWDIO和SWCLK重置,如果板子設計沒有與SW-RST相對應的,此時需要把單片機上的NRST引出來接到SW-RST上。下載程序之前boot0接高電平,boot1不用管(也需要斷電後重啟)。
下載配置這裡按如下配置,RESET那裡HW RESET和SYSRESETREQ任選一個。
配置好之後load一個空程序即可,不要再燒一個休眠的程序了,之後就可以正常燒程序了。
總結:由於板子設計等原因,使用的是第三個方法,前兩個方法也都是可用的。
打開APP閱讀更多精彩內容
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴