STM32部分:3、STM32CubeMX 工程創建

飛書文檔https://x509p6c8to.feishu.cn/wiki/LfMpwjktZiMAuMkayt6c0LGZnpx

1、打開STM32CUBEMX,選擇File->New Project


?

如果首次使用,可能會自動下載一些依賴包,可以等待下載完成。

2、選擇對應芯片 MCU/MPU Selector->輸入“STM32F103RC”->選擇搜索到的芯片"STM32F103RCTx"->Start Project

點擊Start Project后,等待創建完成即可看到下方界面。

設置時鐘源

芯片要運行起來,必須要有時鐘源,在STM32中,我們可以選擇外部或內部時鐘作為芯片時鐘源。

這個圖中,我先只關注LSI HSI 、LSE HSE和HCLK

內部時鐘 LSI HSI

STM32 MCU內部自帶RC振蕩電路,其內部時鐘就是RC振蕩器產生的。

但是RC振蕩器精度遠低于晶振,且容易受到溫度的影響。

外部時鐘 LSE HSE

外部時鐘一般有兩種接法

外部接有源晶振或其他直接時鐘輸入源:BYPASS Clock Source模式(旁路時鐘源)

外部接無源晶振:Crystal/Ceramic Resonator模式(晶體/陶瓷晶振)

如果需要選擇外部時鐘,在RCC界面配置HSE和LSE即可

HSE高速時鐘設置為外部無源晶振,LSE為低速時鐘,可以不設置,因為我們板卡沒有接低速晶振,當用到RTC,并且對精度有要求才加。

同時配置芯片運行時鐘頻率,這里我們設置HCLK為72,按回車后,會自動生成其它配置。

  1. 外部時鐘HSE 8MHz
  2. PLL倍頻9倍(8*9=72)
  3. 系統時鐘來源選擇為PLLCLK

設置燒錄調試方式

此步驟非常重要,不開啟會導致燒錄后,Jlink找不到SWD設備,請記得每個工程都需要開啟

STM32作為控制芯片時,程序燒寫非常關鍵的一步,而燒寫接口的穩定性及必要時的簡潔性就顯得尤為重要。目前常用的兩種接口是JTAG和SWD,而我們板卡使用SWD接口作為調試接口,SWD(Serial Wire Debug 串行調試),接口僅需4個,分別是VCC、GND、SWIO(雙向數據接口)、SWCLK(時鐘)。

優點

  • 高速模式更可靠;
  • 接線少,占用的GPIO資源少;
  • SWD搭配ST-Link仿真器使用,相比于JTAG的J-Link,更便宜

打開System Core選項卡,單擊SYS選項。

SWD模式就選擇serial Wire Debug。JTAG模式就選擇JTAG,4pin和5pin的區別多了一個復位引腳
stlink調試就是SW模式,jlink調試就是JTAG模式

此步驟非常重要,不開啟會導致燒錄后,Jlink找不到SWD設備,請記得每個工程都需要開啟

設置工程

點擊頂部工程管理,設置工程名稱,設置工程保存路徑,選擇開發環境,如果使用keil開發,則選擇MDK-ARM。
注意:不管工程名稱還是路徑都不要有中文,否則后面編譯文件會出錯。

Project Name:工程名稱
Project Location:點擊后面的"Browse"選擇你想要將生成的工程保存到哪個目錄里面。
Application Structure:應用程序結構
-Basic:是基礎的結構,一般不包含中間件(RTOS、文件系統、USB設備等)
-Advanced:相反就是包含中間件,一般針對相對復雜一點的工程,選擇這個,后續方便擴展。
Toolchain/IDE:根據你用的編譯軟件進行選擇 使用KEIL就選擇keil的對應版本。

源碼輸出設置

點擊左側Code Generator.選中僅復制需要的庫,否則生成的工程會很大.
選擇將外設配置為單獨的.c和.h文件.

copy all used libraries into the project folder
復制所有庫文件(不管工程需要用到還是沒用到)到生成的工程目錄中。
Copy only the necessary library files:
只復制必要的庫文件。這個相比上一個減少了很多文件。比如你沒有使用CAN、SPI…等外設,就不會拷貝相關庫文件到你工程下。
Add necessary library files as reference in the toolchain project configuration file :
在工具鏈項目配置文件中添加必要的庫文件作為參考。這里沒有復制HAL庫文件,只添加了必要文件(如main.c)。相比上面,沒有Drivers相關文件。

Generate peripheral initialization as a pair of’.c/.h’ files per peripheral:
每個外設生成獨立的.C .H文件,方便獨立管理。不勾:所有初始化代碼都生成在main.c 勾選:初始化代碼生成在對應的外設文件。 如UART初始化代碼生成在uart.c中。

Backup previously generated files when re-generating:
在重新生成時備份以前生成的文件。重新生成代碼時,會在相關目錄中生成一個Backup文件夾,將之前源文件拷貝到其中。

keep user code when re-generating:
重新生成代碼時,保留用戶代碼(前提是代碼寫在規定的位置。也就是生成工程文件中的BEGIN和END之間。否則同樣會刪除。后面會根據生成的工程進行說明)

delete previously generated files when not re-generated:
刪除以前生成但現在沒有選擇生成的文件 比如:之前生成了led.c,現在重新配置沒有led.c,則會刪除之前的led.c文件。(此功能根據自身要求進行取舍)

點擊右上角的GENERATE CODE,就可以生成工程

最后點擊Open Project,就可以用你已經安裝Keil MDK打開工程。

點擊Build,如果最終編譯完成沒有報錯誤,就完成STM32CubeMX的搭建啦。

本節課工程參考飛書文檔

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

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

相關文章

第十五章,SSL VPN

前言 IPSec 和 SSL 對比 IPSec遠程接入場景---client提前安裝軟件,存在一定的兼容性問題 IPSec協議只能夠對感興趣的流量進行加密保護,意味著接入用戶需要不停的調整策略,來適應IPSec隧道 IPSec協議對用戶訪問權限顆粒度劃分的不夠詳細&…

深度學習系統學習系列【4】之反向傳播(BP)四個基本公式推導

文章目錄 補充知識:? 和 ⊙ 運算符詳解? (nabla) 運算符⊙ (圓圈點) 運算符 反向傳播基本公式計算圖和基本定義BP1:輸出層誤差推導BP1公式的重要性實際例子BP2第 l l l層誤差推導BP3 :損失函數關于偏置(b)偏導的推導BP4: 損失函…

極狐Gitlab 如何創建并使用子群組?

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 子群組 (BASIC ALL) 您可以將極狐GitLab 群組組織成子群組。您可以使用子群組: 內部和外部組織分開。因為每個子…

HarmonyOS基本的應用的配置

鴻蒙HarmonyOS組建頁面 1、創建ets文件并配置2、修改main_pages.json文件3、修改EntryAbility.ets文件(啟動時加載的頁面) 1、創建ets文件并配置 Index.ets是創建項目自動構建生成的,我們可以將其刪除掉,并重新在page文件夾下創建…

強化學習三大基本方法-DP、MC、TD

強化學習進階 本文主要講解 動態規劃法(Dynamic Programming DP)蒙特卡洛法(Monte Carlo MC)時序差分法(Temporal Difference TD) 1. 動態規劃法 1.1 動態規劃概念 動態規劃核心思想: 其核心…

《Spring Boot 3.0全新特性詳解與實戰案例》

大家好呀!今天讓我們輕松掌握Spring Boot 3.0的所有新特性!🚀 📌 第一章:Spring Boot 3.0簡介 1.1 什么是Spring Boot 3.0? Spring Boot 3.0就像是Java開發者的"超級工具箱"🧰&…

【推薦筆記工具】思源筆記 - 隱私優先的個人知識管理系統,支持 Markdown 排版、塊級引用和雙向鏈接

Typora 使用Typora好多年了,一直非常的喜歡這個簡潔的Markdown編輯工具,低版本的免費且好用。 Typora官網地址: https://typora.io/ https://typoraio.cn/ Typora的文檔樹如下,細看后,總覺得差點意思! 思源筆記 今…

虛擬文件系統

虛擬文件系統(Virtual File System,VFS)是操作系統內核中的一個抽象層,它為不同的文件系統(如ext4、NTFS、FAT32等)提供統一的訪問接口。通過VFS,用戶和應用程序無需關心底層文件系統的具體差異…

Kubernetes Gateway API 部署詳解:從入門到實戰

引言 在 Kubernetes 中管理網絡流量一直是一個復雜而關鍵的任務。傳統的 Ingress API 雖然廣泛使用,但其功能有限且擴展性不足。Kubernetes Gateway API 作為新一代標準,提供了更強大的路由控制能力,支持多協議、跨命名空間路由和細粒度的流量管理。本文將帶你從零開始部署…

關于大數據的基礎知識(二)——國內大數據產業鏈分布結構

成長路上不孤單😊😊😊😊😊😊 【14后😊///計算機愛好者😊///持續分享所學😊///如有需要歡迎收藏轉發///😊】 今日分享關于大數據的基礎知識(二&a…

py實現win自動化自動登陸qq

系列文章目錄 py實現win自動化自動登陸qq 文章目錄 系列文章目錄前言一、上代碼?總結 前言 之前都是網頁自動化感覺太容易了,就來嘗嘗win自動化,就先寫了一個qq登陸的,這個是拿到className 然后進行點擊等。 一、上代碼&#xf…

動態創建鏈表(頭插法、尾插法)

今天我們來學習動態創建鏈表!!! 動態創建鏈表:分為頭插法和尾插法 頭插法(動態創建): 頭插法就是讓新節點變成頭 代碼如下 吐血了:這邊有個非常重要的知識點,這邊第三…

Dp通用套路(閆式)

閆式dp分析法: 從集合角度來分析DP問題。 核心思想: DP是一種求有限集中的最值或者個數問題 由于集合中元素的數量都是指數級別的,直接用定義去求,把每種方案都用dfs暴力枚舉一遍,時間復雜度很高,此時用…

33、前臺搜索功能怎么實現?

輸入搜索的東西,如果為空 如果有 前端是提交表單,方式是 post 后端接受 調用 mybatisplus的categoryService.getById 用戶在搜索框內輸入關鍵字之后,執行 js 中的 load方法,前端提交表單, 后端 controller 中的loa…

Spring Boot 框架概述

1. 簡介 Spring Boot 是由 Pivotal 團隊開發的一個用于簡化 Spring 應用開發的框架。它通過提供默認配置、嵌入式服務器和自動配置等特性,讓開發者能夠更快速地構建獨立的、生產級別的 Spring 應用。 Spring Boot 的主要特點包括: 快速創建獨立的 Spri…

機器學習第二講:對比傳統編程:解決復雜規則場景

機器學習第二講:對比傳統編程:解決復雜規則場景 資料取自《零基礎學機器學習》。 查看總目錄:學習大綱 關于DeepSeek本地部署指南可以看下我之前寫的文章:DeepSeek R1本地與線上滿血版部署:超詳細手把手指南 一、場景…

Jackson Databind

Jackson Databind 是 Java 生態中處理 JSON 數據的核心庫之一,主要用于實現 Java 對象與 JSON 數據之間的序列化與反序列化。它是 Jackson 庫家族的一部分,通常與 jackson-core 和 jackson-annotations 一起使用,共同完成 JSON 處理任務。 核…

MySQL 中的事務隔離級別有哪些?

MySQL 支持四種標準的事務隔離級別,從低到高依次為:讀未提交(READ UNCOMMITTED)、讀已提交(READ COMMITTED)、可重復讀(REPEATABLE READ) 和 串行化(SERIALIZABLE&#x…

RAG優化知識庫檢索(1):基礎概念與架構

1. 引言 大語言模型(LLM)常常面臨著知識時效性、幻覺生成、定制化難等挑戰,檢索增強生成(Retrieval-Augmented Generation, RAG)技術作為解決這些問題的有效方案,正在成為AI應用開發的標準架構。 本文將從基礎概念入手,全面介紹RAG技術的核心原理、標準架構與組件,以及評…

安卓工程build.gradle中的Groovy的常見知識點

文章目錄 變量定義函數定義函數調用閉包參數APK輸出配置多channel配置依賴配置關鍵總結常見混淆點groovy高度兼容java 變量定義 def debugCdnUrl "\"http://xxx\"" //變量賦值函數定義 def getTime() { // 函數定義(def 是 Groovy 中定義變…