目錄
01.LED閃爍
1、搭建電路板
2、新建工程
(1)前期準備
(2)創建工程文件夾結構
(3)復制固件庫文件到對應文件夾
(4)在 Keil 中創建工程
(5)配置工程選項(魔術棒設置)
(6)驗證工程配置
3、編寫代碼點亮一個LED
02.LED流水燈
1、搭建電路板
2、代碼修改與端口初始化
03.蜂鳴器
1、搭建電路板
2、程序
04.使用庫函數的方法
1. 借助翻譯軟件
2. 庫函數用戶手冊
3. 百度搜索
學習stm32跟學51單片機的一樣誒,都是先學習點燈。以前自己真的是啥也不會,不過在這幾天慢慢的學習中,也逐漸學會了很多東西,以前難以理解的東西也漸漸清楚,??
01.LED閃爍
1、搭建電路板
- 連接要點:
- 將面包板正極紅線朝上放置,注意方向不能反接
- STM32最小系統板需按照圖示位置放置,上方和右側各預留2個孔位,下方預留3個孔位
- 系統板插入面包板時需確保引腳對應孔位準確
- 使用跳線將最小系統板正負極引出至面包板供電引腳
- GND引腳連接負極,3.3V引腳連接正極
- 上下四排供電引腳通過此方式獲得系統板提供的電源
- 按照引腳標識符將STLINK連接到最小系統板
- 注意引腳并非順序排列,需仔細核對標識避免錯接
2、新建工程
按照之前的步驟完成對基本電路的創建
總結概括一下:
(1)前期準備
工具與文件
安裝 Keil MDK(建議 5.28 及以上版本),并安裝 STM32F1 系列器件支持包(Pack Installer 中勾選STM32F1xx_DFP
)。
下載 STM32 標準外設庫(如STM32F10x_StdPeriph_Lib_V3.5.0
),包含外設驅動文件。
(2)創建工程文件夾結構
新建主文件夾
在電腦本地目錄(如D:\STM32_Projects
)下,創建以 “序號 - 功能” 命名的工程文件夾,例如?3-1 LED閃爍
。
創建子文件夾
在主文件夾內新建 3 個子文件夾,用于分類管理文件:
Start
:存放啟動文件和芯片核心支持文件
Library
:存放外設固件庫文件,
User
:存放用戶主程序文件(如main.c
、main.h
)
(3)復制固件庫文件到對應文件夾
Start 文件夾
從固件庫路徑STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
中,復制對應啟動文件:
STM32F103C8 屬于中容量芯片,選擇?startup_stm32f10x_md.s
(md
代表 Medium-density)。
復制核心支持文件:
從CMSIS\CM3\DeviceSupport\ST\STM32F10x
復制?stm32f10x.h
、system_stm32f10x.c
、system_stm32f10x.h
?到Start
。
Library 文件夾
src
目錄:從STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
復制所有.c
文件(如stm32f10x_gpio.c
、stm32f10x_rcc.c
等)。
inc
目錄:從STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc
復制所有.h
文件(與src
對應)。
User 文件夾
新建main.c
(主程序入口)和main.h
(用戶自定義頭文件)。
從固件庫Project\STM32F10x_StdPeriph_Template
復制?stm32f10x_conf.h
(庫配置文件)到User
。
(4)在 Keil 中創建工程
新建工程
打開 Keil MDK,點擊菜單欄Project → New μVision Project
,選擇之前創建的主文件夾3-1 LED閃爍
,命名工程(如LED_Blink.uvprojx
),點擊 “保存”。
選擇目標芯片
在彈出的 “Device” 窗口中,搜索并選擇?STM32F103C8
,點擊 “OK”。
彈出 “Manage Run-Time Environment” 窗口時,直接點擊 “Cancel”(后續手動添加文件)。
創建文件組并添加文件
在左側 “Project” 窗口的 “Target 1” 下,右鍵點擊Source Group 1
,選擇 “Rename”,改為Start
;
同理,新建兩個文件組,分別命名為Library
和User
。
向文件組添加對應文件:
Start
組:添加Start
文件夾下的startup_stm32f10x_md.s
、system_stm32f10x.c
。
Library
組:添加Library/src
文件夾下所有.c
文件(可按需求篩選,如僅保留stm32f10x_gpio.c
、stm32f10x_rcc.c
等必要文件)。
User
組:添加User
文件夾下的main.c
、stm32f10x_conf.h
。
(5)配置工程選項(魔術棒設置)
點擊工具欄 “魔術棒” 圖標(Options for Target),進行以下配置:
C/C++ 選項卡:配置頭文件路徑
在Include Paths
欄點擊右側 “...”,添加頭文件所在文件夾路徑:
..\Start
(Start
文件夾相對路徑)
..\Library\inc
(Library
的頭文件目錄)
..\User
(User
文件夾)
在Define
欄輸入宏定義:USE_STDPERIPH_DRIVER
(啟用標準外設驅動)。
Debug 選項卡:配置調試器
在 “Debug” 下拉菜單中選擇?ST-Link Debugger
,點擊右側 “Settings”。
在 “ST-Link Debugger” 設置中,確認 “Port” 為SW
(默認),點擊 “OK”。
Flash Download 選項卡:配置下載參數
勾選Reset and Run
(下載后自動復位并運行程序)。
點擊 “Add”,選擇STM32F10x Medium-density Flash
(中容量芯片 Flash 算法),點擊 “OK”。
確認芯片參數:128K On-chip Flash
,地址范圍0x08000000 - 0x0801FFFF
(默認已匹配)。
保存配置
點擊 “OK” 關閉工程選項窗口,完成所有配置。
(6)驗證工程配置
在main.c
中編寫簡單測試代碼(如初始化 GPIO),點擊 “編譯” 按鈕(Build),確認無錯誤(0 Error)。
連接 ST-Link 調試器與 STM32 開發板,點擊 “下載” 按鈕(Load),程序應能正常下載并運行。
關鍵注意事項
啟動文件必須與芯片容量匹配(中容量用md
,大容量用hd
),否則程序無法啟動。
頭文件路徑若遺漏,會導致 “找不到 xxx.h” 錯誤;宏定義錯誤會導致固件庫功能不可用。
調試器選擇需與實際硬件一致(如使用 J-Link 則選擇對應選項)。
3、編寫代碼點亮一個LED
初始化步驟:
? 開啟GPIO時鐘:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)
? 配置GPIO結構體:模式、引腳、速度
? ?調用GPIO_Init完成初始化
輸出控制:
? GPIO_ResetBits(GPIOA, GPIO_Pin_0):輸出低電平
? GPIO_SetBits(GPIOA, GPIO_Pin_0):輸出高電平
? GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET/Bit_RESET):帶參數控制
(燈閃爍)
02.LED流水燈
1、搭建電路板
- 硬件連接:
- 8個LED正極全部連接到正極供電孔
- 負極依次連接到PA0-PA7端口
- 接線技巧:
- 先插兩邊LED再插中間,可適當彎曲引腳方便安裝
- 使用PA0-PA7端口實現8位流水燈控制
2、代碼修改與端口初始化
- 時鐘配置:
- 保持RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)不變
- 端口擴展:
- 原代碼僅初始化GPIO_Pin_0
- 需要添加PA0-PA7共8個引腳初始化
- 按位或操作:
- 使用GPIO_Pin_0 | GPIO_Pin_1 | ... | GPIO_Pin_7方式
- 或直接使用GPIO_Pin_All初始化全部16個引腳
- 引腳編碼原理:
- 每個引腳對應一個二進制位:PA0=0x0001(0001),PA1=0x0002(0010)
- 按位或操作相當于多選開關,如0x0001|0x0002=0x0003(0011)
- 特殊定義:
- GPIO_Pin_All=0xFFFF,可一次性選擇所有引腳
- 外設控制:
- 時鐘控制等外設也采用相同位操作邏輯
03.蜂鳴器
1、搭建電路板
- 接線方法:
- VCC正極連接正極供電孔
- GND負極連接負極供電孔
- 控制端選擇PB12引腳(避免使用PA15/PB3/PB4調試端口)
- 端口選擇注意事項:
- PA15、PB3、PB4默認是JTAG調試端口
- 若需用作普通IO口需額外配置
- 實際案例:未配置時會出現無輸出現象
2、程序
- 關鍵配置:
- 時鐘使能:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)
- 引腳模式:推挽輸出(GPIO_Mode_Out_PP)
- 輸出速度:50MHz(GPIO_Speed_50MHz)
- 指定引腳:GPIO_Pin_12
04.使用庫函數的方法
1. 借助翻譯軟件
查看方法:在代碼編輯器中右鍵點擊函數名選擇"轉到定義",可查看函數和參數的英文說明文檔
翻譯工具:推薦使用有道詞典等翻譯軟件,開啟劃詞翻譯功能可實時查看英文文檔的中文釋義
使用技巧:選中英文術語后自動彈出翻譯結果,適合快速理解函數參數含義
2. 庫函數用戶手冊
中文手冊:STM32F103xx固件函數庫用戶手冊提供完整函數說明,包含:
? ?函數原型和參數說明
? ?使用示例代碼
? ?模式編碼對照表(如GPIO_Mode的16種編碼)
版本差異:當前使用V3.5.0庫函數,但手冊對應老版本,部分用法可能有細微差異
文件位置:位于資料文件夾/固件庫/STM32F10x_StdPeriph_Lib_V3.5.0目錄下
3. 百度搜索
搜索技巧:使用"STM32 GPIO初始化程序"等具體關鍵詞
參考來源:優先查看CSDN博客、電子工程世界等技術社區
應用方法:可直接復制他人已驗證的代碼片段,注意:
? ? ? ? ? ? ? ? ? 核對函數參數與實際需求是否匹配
? ? ? ? ? ? ? ? ? 確認GPIO工作模式(如推挽輸出GPIO_Mode_Out_PP)
? ? ? ? ? ? ? ? ? ?檢查時鐘使能配置(RCC_APB2PeriphClockCmd)