HAL驅動庫學習 如何使用HAL庫

2022-03-06 14:34:07 字數 1911 閱讀 4298

二 具體使用過程

1 hal(硬體抽象層) 初始化

2hal io 

操作流程

--hal functions

與內部資料處理類似傳送/接收,讀/寫.

提供三種處理模型

apolling

mode

查詢模式,

hal函式在資料處理完成(阻塞)後返回處理狀態(

ok or

err),可以通過

hal_ppp_getstate

()獲取具體錯誤資訊

<

img src

="d99d3f80-e264-472f-a9db-a088dc0c5c20_files/6ae88b28-8824-40a4-a8ea-71c3b1b5a415.png"

border

="0"

alt=

""style

="font-size: 10.5pt; line-height: 1.5;"

name=""

width

="416"

height

="205"

>

b

interrupt

mode

中斷模式,啟動資料處理並開啟了相應中斷後返回處理狀態;該模式下,驅動程式宣告了

4個函式

•hal_ppp_process_it

():啟動中斷處理,一般在使用者檔案中

•hal_ppp_irqhandler

():全域性外設中斷,一般在

stm32f0xx_it.c

•__weak hal_ppp_processcpltcallback

():有關處理結束**函式

•__weak hal_ppp_processerrorcallback

():有關錯誤**處理

__weak

弱宣告,使用者可以在應用中重新實現

使能相應的

dma中斷並啟動

dma處理資料後返回處理狀態;操作結束後呼叫**函式通知使用者處理完成;該模式下,驅動程式宣告了

4個函式:

•hal_ppp_process_dma

():啟動

dma過程,一般在使用者檔案中

•hal_ppp_dma_irqhandler

():外設使用的

dma中斷,一般在

stm32f0xx_it.c

•__weak hal_ppp_processcpltcallback

():有關過程結束**函式

•__weak hal_ppp_errorcpltcallback

():過程錯誤**函式

如果使用

dma模式,通常在

hal_ppp_mspinit

()**函式中執行

dma初始化

來自為知筆記(wiz)

HAL庫 流水燈

對比標準庫的流程使用hal庫編寫流水燈 標準庫 1.開時鐘 2.初始化gpioinit結構體 3.呼叫gpio init gpiob,gpio initstructure 初始化函式 1 typedef struct 2gpio inittypedef hal流程 1.開時鐘 2.從pinout介面...

HAL庫DMA使用異常問題

1.串列埠接收一旦溢位就會丟資料。串列埠接收滿了,稍等幾秒再重新啟動dma接收函式hal uart receive dma 時,就會丟失資料,而且此時串列埠接收空閒中斷啟動正常,列印出來會發現全是 0 如果接滿後馬上啟動就沒此問題。2.串列埠dma接收與傳送不能單獨停止。如果串列埠同時進行dma傳送...

HAL學習隨記(1)

1.一般情況下用cubemx先對引腳進行初步定義,根據不同的晶元型別生成不同的 初始框架 也就是簡化我們寫微控制器 的量 然後在用mdk去再編寫我們cube生成的初始 這樣在有了cube生成的初始框架的基礎上,微控制器的 會簡單很多。2.stm32一般有暫存器版,標準庫版,hal庫版,他們難度逐一減...