STM32——HAL庫

總:STM32——學習總綱

一、簡介

1.1 CMIS簡介

所有廠家為了市場兼容性推出的標準

arm架構

1.2 HAL庫簡介

1.2.1 各種庫優缺點

二、?STM32 Cube固件包

ST公司為CMSIS 中間層開發的pack,包含HAL。

2.1 獲取方式

ST官網:st.com/content/st_com/en.html

搜索:STM32cube - 工具與軟件 - Search STMicrocontrollers

?2.2 CMSIS標準軟件包目錄

2.3?正點原子整理的固件包

(STM32F1 Cube固件包)

2.3.1 兩個主要文件夾內容

?2.3.2 Cube固件包Drivers下CMSIS的關鍵文件

2.3.2.1 Device&Include文件
2.3.2.1.1 簡介

以及。。。

此未精簡后11個關鍵文件。

2.3.2.1.2 路徑

stm32f1xx.h && stm32f103xe.h?:

systemxxx.h && .c:

啟動文件 startup:,startup_stm32f103xe.s - F103芯片大容量256k~512K

整理的固件包中有精簡版CMSIS包,只包含了用到的文件。

三、HAL庫框架結構

3.1 HAL 庫文件夾結構

(STM32F1 Cube固件包)

HAL庫源碼用于外設驅動,位于STM32 Cube包 Drivers文件夾下 STM32F1xx_HAL_Driver。

3.2 HAL 庫文件介紹

ppp是任意外設,看成xxx易理解。

3.3?HAL 庫 API 函數和變量命名規則

少數會有不符合的情況。

舉例:

3.4 HAL 庫對寄存器位操作的宏定義

標準庫中對寄存器操作主要用 API函數,HAL 庫有具體的宏定義。例如:

具體文件--》

3.5 HAL 庫回調函數(callback)

3.5.1 簡介

通常用法:

理解方向:C++函數重寫(override),同名同參數,不同函數體。

3.5.2 中斷回調函數

四、HAL 庫使用

4.1 STM32開發文件結構分布

4.2 基于CMSIS應用程序文件描述

也就是ST公司STM32 Cube固件包描述

4.2.1 CMSIS 核心層

2.3.2 中的關鍵文件。

4.2.2? 設備驅動層

主要就是HAL 庫 和 LL 庫 外設驅動庫。

4.2.3 用戶程序文件

用戶配置文件需要配置。其余可刪除。

4.3 HAL 庫的用戶層配置(STM32f1xx_hal_conf.h)

用戶程序層配置用戶自配置。

4.3.1 裁剪 HAL 庫外設驅動源碼(不進行編譯)。

A、使用條件編譯。

例如enable了GPIO的此宏,就是使能GPIO的驅動。

原理:在.c中使用#ifdef判斷是否跳過預處理階段

B、工程中使用什么外設就導入什么外設.c文件

4.3.2 設置晶振頻率

4.3.2.1?設置外部高速晶振(HSE)頻率:8MHz

4.3.2.2 設置內部高速晶振(HSI)頻率:8MHz

4.3.2.3 設置外部低速晶振(LSE)頻率:32.768 kHz

4.3.2.4 設置內部低速晶振(LSI)頻率:40 kHz

4.4 HAL 庫設備驅動層(STM32f1xx_hal.c)調用

在設備驅動層,例如 HAL_Init():

---------------------------------------------------------------------------------------------------------------------------------

MDK工程使用在此不做總結。

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

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

相關文章

數據結構-圖的相關定義

圖-多對多Graph(V,E),圖(頂點Vertex,邊Edge)圖可以沒有邊,只有一個頂點也叫圖,但是單獨的一條邊,或者一個頂點連一條邊,不能叫圖有向圖:無向圖&am…

B 站搜一搜關鍵詞優化:精準觸達用戶的流量密碼

在 B 站內容生態中,搜一搜功能是用戶主動獲取信息的重要渠道,而關鍵詞優化則是讓你的視頻在搜索結果中脫穎而出的關鍵。通過合理優化關鍵詞,能提升視頻曝光率,吸引精準流量,為賬號發展注入強勁動力。以下從關鍵詞挖掘、…

Python爬蟲實戰:研究purl庫相關技術

1. 引言 隨著互聯網數據量的爆炸式增長,網絡爬蟲已成為數據采集、輿情分析和學術研究的重要工具。Python 憑借其豐富的庫生態和簡潔語法,成為開發爬蟲的首選語言。本文提出的爬蟲系統結合 requests 進行 HTTP 請求、BeautifulSoup 解析 HTML,并創新性地引入 purl 庫處理復雜…

OpenCV 學習探秘之三:從圖像讀取到特征識別,再到機器學習等函數接口的全面實戰應用與解析

一、引言 1.1介紹 OpenCV(Open Source Computer Vision Library)是一個功能強大的開源計算機視覺庫,廣泛應用于圖像和視頻處理、目標檢測、機器學習等領域。本文將全面解析 OpenCV 中常用的函數接口,幫助讀者快速掌握 OpenCV 的…

Umi從零搭建Ant Design Pro項目(3)集成 openapi 插件

1. 安裝插件 pnpm add umijs/max-plugin-openapi pnpm add swagger-ui-dist如果不安裝swagger-ui-dist,不會影響運行。但會報錯。 2.配置文件export default defineConfig({// umi插件配置plugins: [umijs/max-plugin-openapi],// openAPI配置openAPI: {requestLibP…

Flutter開發實戰之狀態管理深入解析

第4章:狀態管理深入解析 前言 想象一下,你正在開發一個購物車應用。用戶在商品頁面添加商品,然后去購物車頁面查看,最后到結算頁面付款。在這個過程中,購物車的數據需要在多個頁面之間保持同步和一致。這就是狀態管理要解決的核心問題。 狀態管理是Flutter開發中最重要…

組件化(一):重新思考“組件”:狀態、視圖和邏輯的“最佳”分離實踐

組件化(一):重新思考“組件”:狀態、視圖和邏輯的“最佳”分離實踐 引子:組件的“內憂”與“外患” 至此,我們的前端內功修煉之旅已經碩果累累。我們掌握了組件化的架構思想,擁有了高效的渲染引擎,還探索…

【Redis】Redis 協議與連接

一、Redis 協議 1.1 RESP RESP 是 Redis 客戶端與服務器之間的通信協議,采用文本格式(基于 ASCII 字符),支持多種數據類型的序列化和反序列化 RESP 通過首字符區分數據類型,主要支持 5 種類型: 類型首字…

Android通知(Notification)全面解析:從基礎到高級應用

一、Android通知概述通知(Notification)是Android系統中用于在應用之外向用戶傳遞信息的重要機制。當應用需要告知用戶某些事件或信息時,可以通過通知在狀態欄顯示圖標,用戶下拉通知欄即可查看詳細信息。這種機制幾乎被所有現代應用采用,用于…

VUE3(四)、組件通信

1、props作用&#xff1a;子組件之間的通信。父傳子&#xff1a;屬性值的非函數。子傳父&#xff1a;屬性值是函數。父組件&#xff1a;<template><div>{{ childeData }}</div>——————————————————————————————<child :pare…

【數據結構與算法】數據結構初階:詳解二叉樹(六)——二叉樹應用:二叉樹選擇題

&#x1f525;個人主頁&#xff1a;艾莉絲努力練劍 ?專欄傳送門&#xff1a;《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 &#x1f349;學習方向&#xff1a;C/C方向 ??人生格言&#xff1a;為天地立心&#xff0c;為生民立命&#xff0c;為…

Android廣播實驗

【實驗目的】了解使用Intent進行組件通信的原理&#xff1b;了解Intent過濾器的原理和匹配機制&#xff1b;掌握發送和接收廣播的方法【實驗內容】任務1、普通廣播&#xff1b;任務2、系統廣播&#xff1b;任務3、有序廣播&#xff1b;【實驗要求】1、練習使用靜態方法和動態方…

html轉word下載

一、插件使用//轉html為wordnpm i html-docx-js //保存文件到本地npm i file-saver 注&#xff1a;vite 項目使用esm模式會報錯&#xff0c;with方法錯誤&#xff0c;修改如下&#xff1a;//直接安裝修復版本npm i html-docx-fixed二、封裝導出 exportWord.jsimport htmlDocx f…

北方公司面試記錄

避免被開盒&#xff0c;先稱之為“北方公司”&#xff0c;有確定結果后再更名。 先說流程&#xff0c;線下面試&#xff0c;時間非常急&#xff0c;下午兩點鐘面試&#xff0c;中午十二點打電話讓我去&#xff0c;帶兩份紙質簡歷。 和一般的菌工單位一樣&#xff0c;先在傳達室…

linux——ps命令

PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND0 1 1 1 ? -1 Ss 0 0:01 /usr/lib/systemd/systemd1 123 123 123 ? -1 S 0 0:00 /usr/sbin/sshd -D123 456 456 456 pts/0 456 R 10…

C#.NET 依賴注入詳解

一、是什么 在 C#.NET 中&#xff0c;依賴注入&#xff08;Dependency Injection&#xff0c;簡稱 DI&#xff09; 是一種設計模式&#xff0c;用于實現控制反轉&#xff08;Inversion of Control&#xff0c;IoC&#xff09;&#xff0c;以降低代碼耦合、提高可測試性和可維護…

Vue監視數據的原理和set()的使用

在 Vue 中&#xff0c;Vue.set()&#xff08;或 this.$set()&#xff09;是用于解決響應式數據更新檢測的重要方法&#xff0c;其底層與 Vue 的數據監視原理緊密相關。以下從使用場景和實現原理兩方面詳細說明&#xff1a;一、Vue.set () 的使用場景與用法1. 為什么需要 Vue.se…

在 Vue 中,如何在回調函數中正確使用 this?

在 Vue 組件中&#xff0c;this 指向當前組件實例&#xff0c;但在回調函數&#xff08;如定時器、異步請求、事件監聽等&#xff09;中&#xff0c;this 的指向可能會丟失或改變&#xff0c;導致無法正確訪問組件的屬性和方法。以下是在回調函數中正確使用 this 的幾種常見方式…

第4章唯一ID生成器——4.4 基于數據庫的自增主鍵的趨勢遞增的唯一ID

基于數據庫的自增主鍵也可以生成趨勢遞增的唯一 ID&#xff0c;且由于唯一ID不與時間戳關聯&#xff0c;所以不會受到時鐘回撥問題的影響。 4.4.1 分庫分表架構 數據庫一般都支持設置自增主鍵的初始值和自增步長&#xff0c;以MySQL為例&#xff0c;自增主鍵的自增步長由auto_i…

設計模式:Memento 模式詳解

Memento 模式詳解Memento&#xff08;備忘錄&#xff09;模式是一種行為型設計模式&#xff0c;用于在不破壞封裝性的前提下&#xff0c;捕獲并外部化一個對象的內部狀態&#xff0c;以便在之后能夠將該對象恢復到原先保存的狀態。它廣泛應用于需要實現撤銷&#xff08;Undo&am…