前言
當拿到STM32單片機開發板的時候,程序的編譯和下載將是我們踏入STM32單片機開發的第一步。本章詳細介紹程序的編譯和下載。包括:Keil5工程編譯、Keil5程序下載、DAPLINK U盤拖拽下載以及串口程序下載。本文以RY-STM32開發板為例,布局圖如下所示,開發板自帶下載器DAPLink,與計算機通過USB線連接即可。其他類型的開發板編譯與下載類似,舉一反三即可。

2.1 DAPLink下載器識別
將開發板通過USB線與計算機連接,并打開開發板供電開關,計算機將自動識別下載器。如下圖所示,分別識別出:USB串行設備(COM3),USB大容量存儲設備,WebUSB:CMSIS-DAP以及一個名稱為DAPLINK的U盤。后續將分別用到USB串行設備(COM3),DAPLINK U盤完成程序的下載。


2.2 程序編譯及下載配置
雙擊打開Keil5工程,這里以Led工程為例,如下圖所示。

點擊下圖①,開始編譯,如果程序無錯誤,編譯結果如②所示,表示編譯成功。

編譯完成之后,按照步驟③-⑧完成下載器的初始配置,只需配置一次即可。如果在配置過程中未出現⑦-⑧內容,則表示開發板與計算機未連接好或連接好,但開發板未上電。連接好并上電,重新按照上圖③-⑧配置即可。

點擊上圖所示⑨,程序將開始下載了,若出現⑩所示字樣,表示程序下載成功了。
2.3 拖拽下載
當程序編譯完成之后,在工程的輸出文件夾可找到.Hex格式的目標文件,即需要下載至單片機的二進制文件,如下圖所示,將.Hex文件拖拽或者復制到U盤DAPlINK中即可,復制完成后將開始自動下載。

打開U盤DAPLINK中的DETAILS文件可查看下載成功次數,如下圖所示。

2.4 串口下載
前面介紹過,開發板連接計算機后將生成一個“USB串行口COM(x)',通過該串口可以實現程序的下載。下載前需要在開發板上將boot0-1設置為串口下載模式。我們以ST公司官方的程序下載器STM32CubeProgrammer軟件為例實現串口下載。軟件界面及串口設置如下所示。

如上圖右上角所示,我們將串口port設置為COM3,原因為這臺計算機將下載器的串口別為COM3了,其他計算可能識別為COM4或者其他,設置的時候保持一致即可。
點擊如下圖所示的①連接開發板,如果連接成功,將出現②-③所示信息。

按照下圖①-④步驟,選擇將要下載的.Hex文件。

點擊下圖①開始程序下載,若成功將出現②所示字樣。

2.5 小節
程序的編譯與下載在后續的開發過程中將會無數次的用到,操作簡單,應用頻繁。本文介紹了工程的編譯、使用KEIL5軟件下載,U盤拖拽下載以及串口下載程序,開發過程中可以根據自己的喜好選擇一種或多種方式實現程序的下載。
關鍵字:STM32 單片機 程序編譯 下載配置
引用地址:
STM32單片機程序編譯及下載配置
推薦閱讀最新更新時間:2025-05-13 18:40
基于HiTech PICC編譯環境的PIC程序編寫
本文主要以HiTech PICC為基礎,介紹PIC的C語言的基本特點。
1 HiTech PICC語言的特點
PICC基本上符合ANSI標準,但是不支持函數的遞歸調用,其主要原因是PIC單片機特殊的堆棧結構。PIC單片機中的堆棧是硬件實現的,其深度已隨芯片固定,無法實現需要大量堆棧操作的遞歸算法;另外在PIC單片機中實現軟件堆棧的效率也不是很高。為此,PICC編譯器采用一種“靜態覆蓋”技術,以實現對C語言函數中的局部變量分配固定的地址空間。經這樣處理后產生出的機器代碼效率很高。當代碼量超過4KB后,C語言編譯出的代碼長度與全部用匯編代碼實現的差別已經不是很大( 10%),當然前提是在整個C代碼編寫過程中需時時
[單片機]
GD32單片機STM32遠程下載手機程序升級固件下載局域網網頁升級工具
GD32、STM32單片機,是我們最常見的一種MCU。通常我們在使用STM32單片機都會遇到程序在線升級下載的問題。 GD32/STM32單片機的在線下載通常需要以下幾種方式完成: 1、使用ST/GD提供的串口下載工具,本地完成固件的升級下載。 2、自行完成系統BootLoader的編寫,將系統程序分為BootLoader和APP兩個部分,BootLoader完成固件升級。 3、使用STM32/GD固件服務器,完成固件的升級,固件服務器https://simplewifi.taobao.com/ 幾種方式各有優缺點: 使用ST提供的方法進行固件升級,方法簡單,不需要額外的開發。但是,只能本地完成STM32單片機的升級。
[單片機]
STM32單片機的八種GPIO口模式
GPIO 是通用輸入/輸出端口的簡稱,本文以STM32為例進行說明,其他的單片機功能上都是大同小異,學會STM32的GPIO,我們可以觸類旁通。 GPIO 的引腳與外部硬件設備連接,可實現與外部通訊、控制外部硬件或者采集外部硬件數據的功能。 STM32的八種GPIO口模式 1) GPIO_Mode_AIN 模擬輸入; 2) GPIO_Mode_IN_FLOATING 浮空輸入; 3) GPIO_Mode_IPD 下拉輸入; 4) GPIO_Mode_IPU 上拉輸入; 5) GPIO_Mode_Out_OD 開漏輸出; 6) GPIO_Mode_Out_PP 推挽輸出; 7) GPIO_Mode_AF_OD 復用開漏輸
[單片機]
如何設置STM32單片機非初始化數據變量不被零初始化
一些產品,當系統復位后(非上電復位),可能要求保持住復位前RAM中的數據,用來快速恢復現場,或者不至于因瞬間復位而重啟現場設備。而keil mdk在默認情況下,任何形式的復位都會將RAM區的非初始化變量數據清零。 在給出方法之前,先來了解一下代碼和數據的存放規則、屬性,以及復位后為何默認非初始化變量所在RAM都被初始化為零了呢。 什么是初始化數據變量,什么又是非初始化數據變量?(因為我的文字描述不一定準確,所以喜歡舉一些例子來輔助理解文字。) 定義一個變量:int nTimerCount=20;變量nTimerCount就是初始化變量,也就是已經有初值; 如果定義變量:int nTimerCount;變量nTimerCou
[單片機]
關于單片機STM32裸機程序架構設計
本著授人以漁的原則,既提供我一直在用的程序架構,也講程序架構的設計思路。 如果本文內容,你都能領悟并做到,不管項目多復雜,都將游刃有余。 我研發的那幾年,接觸大多數工程師,都沒有程序架構的概念,基本一個while死循環干到底。 模塊之間也沒有封裝好,導致代碼寫好以后,擴展性和維護性太差,類似的功能代碼,也很難移植到新項目去復用。 早期我也是這樣寫的,反正實現功能就行了,代碼好不好,功能上又看不出區別。 不過,等你接觸到復雜的項目時,這招就行不通了,沒設計好程序架構,根本做不穩定。 我意識到這個問題,是碰到兩種需求的時候: 1.是做一個基于STM32的網關項目,項目做完以后,客戶老是要改功能,客戶不懂技術,在客戶眼里,覺得改一個
[單片機]
stm32單片機按鍵控制的用法解析
1 /* 2 ::按鍵控制 3 PA8接LED,PE2接按鍵 4 */ 5 #include“stm32f10x.h” 6 void RCC_Configuration(void); 7 void GPIO_Config(void); 8 void Delay(__IO uint32_t nCount); 9 10 int main() 11 { 12 RCC_Configuration(); //系統時鐘配置|使能GPIO口 13 GPIO_Config(); //LED控制配置 14 while (1) 15 { 16 if(!GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)) 17 { 18
[單片機]
STM32單片機GPIO概述及相關寄存器
5.1 STM32單片機GPIO概述 STM32中每個IO口都有很多個作用,比如這次我們使用的STM32F103ZET6的PA0口,既可以作為IO口使用,還可以作為待機喚醒(WAKEUP),模擬輸入(ADC功能)等。根據數據手冊中列出的每個I/O端口的特定硬件特征,GPIO端口的每個位可以由軟件分別配置成多種模式。 (1)輸入浮空 (2)輸入上拉 (3)輸入下拉 (4)模擬輸入 (5)開漏輸出 (6)推挽式輸出 (7)推挽式復用功能 (8)開漏復用功能 每個I/O端口位可以自由編程,然而I/O端口寄存器必須按32位字被訪問(不允許半字或字節訪問)。GPIOx_BSRR和GPIOx_BRR寄存器允許對任何GPIO寄存器的讀/
[單片機]
使用proteus仿真STM32單片機的注意事項
第1點: 我們用戶編寫的代碼,必須放在 user code begin 和 end 之間;否則,當我們修改stm32cubemx 項目的 配置時,再次生成代碼,就會刪除之前的代碼;正確做法如下圖所示: 我們用戶編寫的代碼,必須放在 user code begin 和 end 之間 第2點: 在proteus中,電源需要更改成3.3V,VDDA添加到電源VCC/GND中去;VSSA添加到GND中去;如下圖所示: 電源需要改成3.3V 第3點: HAL_Delay(__IO uint32_t Delay)延時函數在stm32f1xx_hal.c里面,該函數能實現ms級別的延時;該函數體前面有一個關鍵字__weak,該關鍵字簡
[單片機]