回調函數(shù)
有人對 STM32 固件庫里的回調函數(shù)有些好奇甚至糾結,這里簡單介紹下。其實從用法及功能上講他們并沒有什么特別的,跟其它函數(shù)一樣,也是實現(xiàn)特定功能的代碼段。一般來講,所謂回調函數(shù),泛指基于事件觸發(fā)而被調用執(zhí)行的函數(shù),簡單點說,就是條件滿足了就調用的函數(shù),往往會跟函數(shù)指針結合起來通過函數(shù)指針實現(xiàn)調用。
STM32 固件庫里的回調函數(shù)
說到這里,我們具體結合 STM32 外設固件庫里回調函數(shù)來聊聊。
首先,作為一個函數(shù)庫,里面不存在現(xiàn)存的完整的回調函數(shù)。前面的介紹已為此做鋪墊,因為回調函數(shù)需要結合具體場景而擬定,作為函數(shù)庫根本做不到這一點,它沒法事先知曉發(fā)生某個事件時不同的應用會需要采取怎樣的操作。
其次,STM32 庫函數(shù)的確采用了回調機制,并基于可能的各種事件為 STM32 開發(fā)者預留了只有函數(shù)定義而無具體內容的空回調函數(shù),或者是只定義了一些基于各類事件的函數(shù)指針,具體的回調函數(shù)需我們用戶完成并將函數(shù)地址賦給相應的函數(shù)指針而被調用。簡單點說,庫給我們預留了眾多回調函數(shù)接口。
STM32 庫函數(shù)里的回調機制及觸發(fā)事件
整體上講,STM32 外設庫里的 API 函數(shù)由三部分組成,分別是:
初始化函數(shù)
啟動型執(zhí)行函數(shù)
回調函數(shù)【弱定義函數(shù)或回調函數(shù)指針,最終得靠用戶具體完成編寫】
這樣的安排,讓整個工程代碼結構比較清晰,可以讓人快速了解庫結構,同時現(xiàn)存的 API 函數(shù)大大減少開發(fā)工作量,預留的回調函數(shù)接口一方面給開發(fā)者提供了便利,另一方面讓用戶基于不同應用場景自由組織代碼而又不破壞整個軟件架構。
關于 STM32 HAL 庫里的回調函數(shù)的幾個常見問題
STM32 庫函數(shù)里的回調函數(shù)是什么,有何用?
STM32 工程里的回調函數(shù)與中斷函數(shù)有什么區(qū)別?
STM32 庫函數(shù)里的回調函數(shù)是否可以不用?
STM32 庫函數(shù)里似乎存在著類似半成品的庫回調函數(shù)?
基于 STM32 庫來組織用戶回調函數(shù)要注意什么?