前言
第一次學習STM32的時候,不知道有調試器這個東西,所以一直是通過串口來給STM32下載程序,下載速度也還算可以,一般是幾秒鐘完成。后來用了調試器,可以直接在Keil環境下進行下載,而且還可以進行在線調試,所以后來就很少使用串口來下載程序了。前幾天在uFUN試用群里看到有幾個朋友在使用串口下載程序時,遇到了各種各樣的問題,所以在這里簡單介紹一下如何通過串口來給STM32下載程序。
STM32的啟動模式介紹
從STM32參考手冊上,可以查閱到,STM32的啟動模式,共有下列三種,可以通過BOOT0和BOOT1電平的不同組合,來選擇不同的啟動模式。
關于這幾種模式的介紹,下面是我個人的理解:
主閃存啟動模式:即運行模式,單片機上電即運行程序。
系統存儲器啟動模式:即串口下載模式。上電之前要先設置BOOT0=1,BOOT1=0,然后才能通過串口下載程序。或者在已經上電的情況下,設置BOOT0=1,BOOT1=0,然后按一下復位鍵,這樣也能通過串口下載程序。
SRAM啟動模式:即調試模式。假如我只修改了代碼中一個小小的地方,如果直接擦除整個Flash,比較費時,而且Flash的擦寫次數也是有限制的。所以可以考慮從RAM中啟動代碼,用于快速的程序調試,等程序調試完成后,再將程序下載到Flash中。
有的朋友可能遇到過這種情況:程序第一次下載的時候可以運行,但是掉電重啟之后,程序就不能運行了。這種情況就有可能是把BOOT設置成了串口下載模式,所以掉電之后,并不會自動運行。如果想要即使掉電重啟也能直接運行程序,可以把BOOT設置為主閃存啟動模式,即BOOT0=0。
安裝USB串口驅動
在進行串口下載程序之前,如果串口芯片的驅動程序沒有安裝,那么電腦不能識別串口,如上圖所示,設備管理器里有一個未識別的設備。在安裝串口驅動之前,要先確定開發板所使用的串口芯片,我們的uFUN開發板使用的是CH340串口芯片。這里我提供了幾個常用串口芯片的驅動程序下載地址,大家如果使用其他的串口芯片,要安裝對應的驅動程序:
CH340:CH340/CH341USB轉串口WINDOWS驅動程序
PL2302:PL2303 Windows Driver Download
CP2102:CP210x USB轉UART橋接VCP驅動程序
FT232:FT232R USB UART Driver Download
如果驅動安裝成功,在設備管理器里可以看到該設備對應的串口號:
設置啟動模式為系統存儲啟動模式
上電前,設置BOOT0=1,BOOT1=0。或者是在上電后,設置BOOT0=1,BOOT1=0之后,然后按一下復位按鍵。這兩種方式都可以讓設置為系統存儲啟動模式,從而通過串口下載程序。
參考uFUN的原理圖:
可以看出,BOOT的選擇是通過撥碼開關實現的。S1對應BOOT1,S2對應BOOT0,開關處于ON狀態,BOOT直接接地,為低電平0;開關處于OFF狀態,BOOT上拉為高電平1,即:
這一點和【uFun 開發板快速入門指南 V10】介紹的有所出入,在這里手動@管理員核對一下。
對于uFUN開發板,要切換到串口下載模式,只需要設置S1=ON,即BOOT1=0,S2=OFF,即BOOT0=1,就可以進行下一步的程序下載。如下圖所示:
使用FlyMCU下載程序
STM32串口下載軟件主要兩個,一個是國人開發的FlyMCU,另一個是ST官方的Flash Loader Demonstrator,這兩個軟件的下載方法我都會介紹,不過我個人認為FlyMCU更簡單易用一些。
FlyMCU是由單片機在線編程網開發的一款串口下載軟件,我使用的是V0.188版本,主界面如上圖所示,如果大家想獲取最新版的軟件可以到官方網站下載。我去官網上看了一下,又發布了免費的Free ISP軟件,可以支持STM32和LPC2xxx程序的下載。如果有朋友從事LPC2xxx MCU的開發,而又沒有調試器,可以嘗試一下這個軟件。 好了,話不多說,下面來看一下如何使用FlyMCU通過串口來給uFUN開發板下載程序。
1.軟件的下載
可以到官方網站下載最新版,或者是下載我使用的這個版本,FlyMCU V0.188。
2.選擇COM號
確保啟動模式已經設置為串口下載模式,BOOT1=0,BOOT0=1,即S1=ON,S2=OFF,然后把開發板連接電腦上電,打開軟件,選擇PORT菜單下對應的COM口。
3.加載hex文件
加載生成的hex文件,并勾選右邊的編程前重裝文件,這樣,就不用每次下載程序,重新加載hex文件了。
4.下載程序
勾選校驗、編程后執行這兩個選項,取消勾選編程到FLASH時寫選項字節,然后點擊開始編程按鈕,如果正常下載的話,右邊會輸出下載的信息,如果成功下載并運行,最后會輸出:
共寫入8KB,進度100%,耗時4750毫秒
成功從08000000開始運行
表示程序成功下載。
編程后執行:這個選項是指,程序下載完成后自動運行,而不用切換到BOOT到主閃存啟動模式,但是,掉電重啟,程序不會直接運行。如果要上電即運行此程序,還需要把BOOT設置回主閃存啟動模式BOOT0=0,即S2=ON。
編程到FLASH時寫選項字節:這個選項不要勾選,如果勾選了,可能會導致下載失敗,或者是運行失敗,甚至會導致芯片的鎖死。所以,這個選項一定不要勾選。
使用Flash Loader Demonstrator下載
Flash Loader Demonstrator是ST官方的串口下載軟件,可以用于STM32系列單片機的程序下載,官網地址:STM32 Flash loader demonstrator
1.軟件的下載
通過上面的官網鏈接,可以下載到最新2.8.0版本的Flash Loader Demonstrator,但是如果要想下載,需要先登陸ST官網的賬號,如果不想注冊賬號的話,可以通過下面的鏈接下載,這個是我之前找的,版本是2.6.0的,但不影響程序的下載:Flash_Loader_Demonstrator_v2.6.0_Setup
2.連接芯片
和FlyMCU不同的是,要想下載程序,必須要經過連接芯片,等一系列步驟才能完成下載,這一點,也是我覺得這個軟件不好用的原因。
打開軟件,選擇板子串口對應的COM號,波特率可以調成最高,這樣下載速度會快一點,但是有的串口芯片,不能支持很高的波特率。
如果和板子連接成功的話,會檢測到目標STM32芯片的Flash的大小,我們的uFUN開發板是使用STM32F10RC,256KB Flash。
這一步,可以查看當前Flash各頁的讀寫情況,綠色的鎖表示可讀/可寫,如果芯片被加了讀保護,或者寫保護,部分頁會顯示為紅色的鎖。
]
3.程序的下載
先加載hex文件,下面的擦除選項可以選擇:擦除必要的頁、不擦除或者是全片擦除,這里保持默認配置就行,直接點擊Next進行程序的下載。
如果下載成功,會顯示
這里如果點擊Back是不能進行第二次程序下載的,必須重新打開,連接,才能下載。
另外,除了STM32系列單片機程序的下載,它還支持ST公司的STM8的程序下載。
總結
STM32只能通過串口1進行程序下載,即PA9、PA10,其他串口都不具備這個功能,所以,如果自己設計板子,要注意這一點。一些聯網的設備進行固件更新也是這個原理,即把WIFI模塊,連接到串口1,實現程序的在線升級。當然,具體的實現還是很復雜的,而且還涉及到Bootloader程序的開發,這就是另外一個方面了。雖然STM32的F4系列也可以使用串口下載程序,但擦除時間很長,有十幾秒種。推薦大家盡量還是使用調試器來進行程序的下載和調試,方便又好用,單片機開發必備!
上一篇:FlyMcu串口ISP下載STM32程序教程
下一篇:stm32F103入門學習--程序燒錄的幾種方法
推薦閱讀
史海拾趣
隨著全球電子市場的不斷發展壯大,Dau Semiconductor Inc公司開始將目光投向全球市場。公司積極開拓海外市場,與全球各地的電子產品制造商建立合作關系。同時,公司還加強了與國際知名半導體企業的合作與交流,共同推動半導體技術的發展和應用。展望未來,Dau Semiconductor Inc公司將繼續秉承創新、卓越、服務的企業精神,為全球電子行業的發展做出更大的貢獻。
DL Instruments LLC的前身是Ithaco Corporation的精密儀器部門。在Edgar Seymour總裁的領導下,這個部門于1995年被出售給當時擔任Ithaco Corporation質量總監的David Woolston先生。這一決定標志著公司從一個大型企業的一個部門,轉型為一個獨立的、專注于精密儀器制造的新實體——DL Instruments LLC。
隨著產品的不斷推出和市場的逐步認可,DL Instruments開始積極拓展其市場份額。公司不僅在美國本土市場取得了良好的業績,還逐漸將產品推向國際市場。通過多年的努力,DL Instruments在電子行業中建立了良好的品牌形象,成為精密儀器制造領域的佼佼者。
經過多年的發展,DL Instruments已經成為電子行業中一家具有重要影響力的企業。然而,公司并沒有因此而滿足。相反,它繼續加大研發投入、拓展產品線、優化生產流程、提高產品質量和服務水平。展望未來,DL Instruments將繼續秉承“創新、卓越、服務”的理念,為電子行業的發展做出更大的貢獻。
請注意,這些故事是基于現有信息進行的概述和虛構,并非真實的歷史事件。如有需要,您可以進一步查閱相關資料或聯系DL Instruments公司獲取更詳細的信息。
隨著產品的不斷推出和市場的逐步認可,DL Instruments開始積極拓展其市場份額。公司不僅在美國本土市場取得了良好的業績,還逐漸將產品推向國際市場。通過多年的努力,DL Instruments在電子行業中建立了良好的品牌形象,成為精密儀器制造領域的佼佼者。
在電子行業快速發展的背景下,Hoffman Engineering也面臨著諸多市場挑戰。為了應對這些挑戰,公司不斷進行戰略調整和優化。例如,在市場競爭日益激烈的情況下,Hoffman Engineering加強了品牌建設和市場推廣力度,提升了品牌知名度和市場影響力。同時,公司還注重與產業鏈上下游企業的合作與共贏,共同推動行業的健康發展。這些戰略調整和優化措施的實施,使Hoffman Engineering在激烈的市場競爭中保持了穩健的發展態勢。
因為到外地安家,亂七八糟事情一大堆,所以來晚了. 板子入的的第一感覺:很有質感: 一看居然有三條電源線,分別是國標雙口,美標和歐標(日標)的吧 可惜三張光盤有兩張是重復的,居然都是LINUX的,WINDOWS下的沒有.(廠家配錯了) 嘿嘿,厚實的PCB,扎 ...… 查看全部問答∨ |
本來看到靜若幽蘭的帖子,還以為這是她個人遇到的事,后來發現還有其他人也有同樣的遭遇。所以來說一說這事。 仔細回想,其實我個人也曾經遇到過這樣的事。記得那時我剛進某雜志社,被分配給 ...… 查看全部問答∨ |
L"XXXXXEvent" 或 _T"XXXXXMutex" 的存儲區域問題 (1) Create(NULL, TRUE, _T("XXXXMutex")); 在應用程序中,可建立一個互斥體,保證程序實例只運行一次。 (2)驅動中: ........ & ...… 查看全部問答∨ |
[跪求達人指點] 無極折磨 之:keil uVision 編譯出來的90KB .hex 文件有幾個 Byte 不一樣的奇怪問題 環境: OS : win_xp2 文件系統: C 盤 FAT32,安裝keil, D盤 NTFS,存放程序和編譯結果等。 編譯器: keil uVision 2 ,uVision 3,uVision 4 都使用過。 已經使用了曉風網提 ...… 查看全部問答∨ |
如題:小弟想在winCE里用socket通信給遠程主機服務器FTP上傳文件(現在是上傳的bmp文件),現在連接遠程FTP正常,上傳的文件卻大小都為零,打不開,為什么?是不是要設置為二進制傳輸模式呢???主要代碼如下: in ...… 查看全部問答∨ |
|
我用兩塊9b92的板子,一個作為服務器端,一個做客戶端,而且兩個板子分別與電腦進行以太網通信過沒有問題,但是直接把兩個板子互連后就不能建立連接,我交叉網線和直連網線都試過了,到底哪里出問題了呢?希望高手指點一下… 查看全部問答∨ |
用736的兩路SPI從機模式接收外部芯片發送過來的數據,數據信號是這樣的,空閑的時候是低電平信號來的時候是周期是2US的時鐘信號,數據長度2--11BYTES,我想只用SPI的SCK和MOSI來接收信號,采用中斷來接收信號。不知道這樣的設計是否可行?還有 ...… 查看全部問答∨ |