總: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工程使用在此不做總結。