【小寧學習日記5 stm32】LED閃爍 LED流水燈 蜂鳴器

目錄

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.cmain.h

(3)復制固件庫文件到對應文件夾

Start 文件夾

從固件庫路徑STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm中,復制對應啟動文件:

STM32F103C8 屬于中容量芯片,選擇?startup_stm32f10x_md.smd代表 Medium-density)。

復制核心支持文件:

CMSIS\CM3\DeviceSupport\ST\STM32F10x復制?stm32f10x.hsystem_stm32f10x.csystem_stm32f10x.h?到Start

Library 文件夾

src目錄:從STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src復制所有.c文件(如stm32f10x_gpio.cstm32f10x_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

同理,新建兩個文件組,分別命名為LibraryUser

向文件組添加對應文件:

Start組:添加Start文件夾下的startup_stm32f10x_md.ssystem_stm32f10x.c

Library組:添加Library/src文件夾下所有.c文件(可按需求篩選,如僅保留stm32f10x_gpio.cstm32f10x_rcc.c等必要文件)。

User組:添加User文件夾下的main.cstm32f10x_conf.h

(5)配置工程選項(魔術棒設置)

點擊工具欄 “魔術棒” 圖標(Options for Target),進行以下配置:

C/C++ 選項卡:配置頭文件路徑

Include Paths欄點擊右側 “...”,添加頭文件所在文件夾路徑:

..\StartStart文件夾相對路徑)

..\Library\incLibrary的頭文件目錄)

..\UserUser文件夾)

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)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94085.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94085.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94085.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

openstack的novnc兼容問題

1.今天在部署O版過程中發現了novnc組件不兼容openstack2.novnc一直報錯,令牌過期,原本以為是python代碼配置的問題,最后經過排查很久發現竟然是novnc的版本和openstack的O版不兼容novncyum remove -y novnc*安裝支持版本yum install -y novnc…

Day25 棧 隊列 二叉樹

day25 棧 隊列 二叉樹使用棧計算表達式的值 概述 通過兩個棧(數值棧和符號棧)實現中綴表達式求值。算法核心是: 遇到數字時,累加并入數值棧;遇到運算符時,比較其與符號棧頂運算符的優先級: 若當…

阿里云RDS MySQL數據歸檔全攻略:方案選擇指南

引言在日常數據庫管理中,數據歸檔是必不可少的重要環節。隨著業務數據的不斷增長,將歷史數據從生產數據庫遷移到更經濟的存儲方案中,不僅可以降低存儲成本,還能提升數據庫性能。阿里云提供了豐富的數據歸檔解決方案,本…

線性回歸學習

一、線性回歸簡介核心思想:線性回歸是一種通過屬性的線性組合來做預測的模型。它的目標很明確,就是找到一條合適的直線、平面或者更高維度的超平面,讓預測出來的值和實際真實值之間的差距盡可能小。比如在預測房屋價格時,就可以根…

如何使用 DeepSeek 助力工作:全面指南?

一、引言?1.1 DeepSeek 簡介?DeepSeek 的定位與目標概述?核心技術亮點(大語言模型、多模態能力、AI Agent 框架)?1.2 工作場景中應用 AI 的趨勢?AI 對職場效率提升的重要性?DeepSeek 在眾多 AI 工具中的獨特地位?二、DeepSeek 基礎功能介紹?2.1 …

車載診斷架構 --- EOL引起關于DTC檢測開始條件的思考

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

JCTools Spmc 單生產者-多消費者的無鎖并發有界隊列

SpmcArrayQueue 是 JCTools 中為 單生產者-多消費者(Single-Producer-Multi-Consumer) 場景設計的有界隊列。與 SPSC 模型相比,SPMC 的復雜性主要體現在消費者側,因為多個消費者線程需要以線程安全的方式競爭消費同一個隊列中的元…

SpringAI1.0.1實戰教程:避坑指南25年8月最新版

Spring AI 1.0.1 使用教程 項目簡介 作為一個Java的開發者 聽到Java也有ai框架了 很高興~~~ 本來想學一下SpringAI但是網上賣課的一大堆,并且大部分課程都是五月的,到2025年的8月份,SpringAI的版本做了很多更新,所以我本人參考…

Maven架構的依賴管理和項目構建

??????什么是依賴管理對第三方依賴包的管理,可以連接互聯網下載項目所需第三方jar包。對自己開發的模塊的管理,可以像引用第三方依賴包一樣引用自己項目的依賴包。Maven的依賴管理方式和傳統方式有什么區別傳統方式:從官網手動下載jar包…

微信小程序開發(一):使用開發者工具創建天氣預報項目

Hi,我是前端人類學(之前叫布蘭妮甜)! 從今天開始,我將開啟一個全新的微信小程序開發系列教程,通過實際項目帶大家系統學習小程序開發。作為系列的第一篇文章,我們將從最基礎的環境搭建開始&…

【鏈表 - LeetCode】24. 兩兩交換鏈表中的節點

24. 兩兩交換鏈表中的節點 - 力扣(LeetCode) 題解: - 迭代 首先是直接遍歷的做法,這里注意調整指針指向的順序。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* List…

爬蟲基礎學習-鏈接協議分析,熟悉相關函數

1、urlparse:(python標準庫中的一個模塊,解析和操作url)標準的url鏈接格式:scheme://netloc/path;params?query#fragmentscheme(協議) http or https netloc(網絡位置) …

kkfileview預覽Excel文件去掉左上角的跳轉HTML預覽、打印按鈕

上篇說了使用nginx代理kkfile預覽文件,但是又發現個新問題,預覽其他文件時都正常,但是預覽.xlsx格式的時候,在左上角會有【跳轉HTML預覽】【打印】兩個按鈕,如下所示:這篇就來說一下如何去掉。首先這個跟kk…

阿里開源新AI code工具:qoder功能介紹

下載地址: https://qoder.com/ 文檔地址: https://docs.qoder.com/ 文章目錄1. AI 編碼發展趨勢2. 真實世界軟件開發的挑戰3. 我們的方法3.1. 透明度3.1.1. 知識可見性3.1.2. 執行透明度3.2. 增強上下文工程3.3. 規范驅動與任務委托3.3.1. 聊天模式&…

什么是短視頻矩陣系統企業立項功能源碼開發,支持OEM

短視頻矩陣系統企業立項功能源碼開發解析在短視頻行業蓬勃發展的當下,企業紛紛布局短視頻矩陣,以實現多平臺、多賬號的協同運營。而企業立項作為短視頻矩陣項目啟動的關鍵環節,其高效、規范的管理直接影響項目的推進效率與成果。為此&#xf…

當GitHub宕機時,我們如何協作?

問題背景與影響 GitHub作為主流代碼托管平臺的依賴現狀宕機對分布式團隊、CI/CD流水線、緊急修復的影響案例其他類似平臺(GitLab、Bitbucket)的潛在連帶風險 本地與離線協作方案 利用Git分布式特性:本地倉庫繼續提交,恢復后同步搭…

【會議跟蹤】Model-Based Systems Engineering (MBSE) in Practice 2025

會議主旨與議題 會議宣傳鏈接:https://www.sei.cmu.edu/events/mbse-in-practice/ 本次會議將于2025年8月21日位美國弗吉尼亞州阿靈頓(五角大樓所在地)舉行。本次會議主旨為 MBSE in Practice: Bridging the Gap Between Theory and Success(2025)。隨著軟件定義系統日趨…

瀏覽器的渲染流程:從 HTML 到屏幕顯示

在我們日常使用瀏覽器瀏覽網頁時,往往忽略了瀏覽器背后復雜的渲染過程。從輸入 URL 到頁面最終顯示在屏幕上,瀏覽器需要經過一系列精心設計的步驟。 瀏覽器渲染的整體流程瀏覽器的渲染流程可以大致分為兩個主要部分:網絡 和 渲染。當用戶在地…

FastMCP 客戶端服務器通信示例:從入門到實戰(STDIO 傳輸)

引言 在現代分布式系統和AI應用中,模型上下文協議(MCP)扮演著重要角色,它負責協調客戶端與服務器之間的通信,尤其是在需要頻繁交互的場景中。本文將介紹如何使用FastMCP庫快速實現客戶端與服務器之間的通信&#xff0c…

寶可夢肉鴿 PC/手機雙端 多種存檔 全閃光 無限金幣 全寶可夢解鎖 免安裝中文版

網盤鏈接: 寶可夢肉鴿 免安裝中文版 名稱:寶可夢肉鴿 PC/手機雙端 多種存檔 全閃光 無限金幣 全寶可夢解鎖 免安裝中文版 描述:寶可夢肉鴿修改版是一款非常受歡迎的口袋妖怪系列,游戲擁有許多獨特的妖怪和玩法。在游戲中&#…