STM32 HAL庫描述
阿新 • • 發佈:2018-11-16
官方下載的HAL庫內容包括:STM32Cube HAL庫檔案、中介軟體(RTOS、USB、TCP/IP、Graphics)、一系列的外設應用例程。
HAL驅動建立在一套通用的體系結構之上,主要提供一套API介面以便更好地與上層應用進行通訊;HAL驅動函式嚴格按照ANSI-C標準編寫,因此可獨立於開發工具。
HAL庫的特點主要有:
1、抽象於硬體之上的結構體賦值初始化操作,基於功能的分類
2、三種程式設計模式 —— 輪詢方式、中斷方式、DMA方式
3、可供使用者進行過載的API函式
4、用於輪詢方式的系統超時設定
5、完善的物件鎖定機制,提供安全的硬體資源訪問
HAL驅動層中的回撥函式主要有三種類型:
- 外設的Init和Deinit回撥函式 —— HAL_PPPMspInit(),HAL_PPP_MspDeInit()
- 處理完成回撥函式 —— HAL_PPP_ProcessCpltCallback
- 發生錯誤時的處理回撥函式 —— HAL_PPP_ErrorCallback
HAL驅動檔案:
檔案 | 描述 |
stm32f0xx_hal_ppp.c/h | 外設驅動檔案 |
stm32f0xx_hal_ppp_ex.c/h | 外設模組擴充套件驅動檔案 |
stm32f0xx_hal.c/h | hal初始化、DBGMCU、重對映、系統延時 |
stm32f0xx_hal_msp_template.c/h | 可複製到使用者應用資料夾,MSP Init和Deinit(主要回調函式) |
stm32f0xx_hal_def.h | 公用的HAL資源,如結構體、列舉變數等 |
使用者應用檔案:
檔案 | 描述 |
system_stm32f0xx.c | 包含SystemInit函式,重定位中斷向量在SRAM中(如果需要),但不完成系統時鐘的配置(在HAL檔案完成) |
startup_stm32f0xx.s | 包含Reset Handler處理函式、堆疊的初始化等 |
stm32f0xx_hal_msp.c | MSP的初始化和復位 |
stm32f0xx_flash.icf | 連結工具,可選 |
stm32f0xx_hal_conf.h | 允許使用者對其進行配置以選擇特定的外設 |
stm32f0xx_it.c/h | 外設中斷服務函式,其中每個PPP_IRQHandler裡都呼叫了相應的HAL_PPP_IRQHandler |
HAL中三種主要的資料結構是:外設控制代碼、初始化和配置結構體和具體
外設控制代碼結構體 PPP_HandleTypeDef *handle,主要特點有:
- 1、支援多例項、同一結構體內部可共享資源
- 2、儲存/管理全域性變數,減少外部全域性變數的使用,增加程式的穩定性
- 3、當外設可以使用DMA通道時,相應的DMA介面控制代碼會新增到PPP_HandlerTypeDef中
- 4、對於通用的外設,如GPIO、NVIC、SYSTick等,沒有例項控制代碼
HAL 庫檔案之間的關係: