• 資料介紹
    • 回調(diào)函數(shù)
    • STM32 固件庫里的回調(diào)函數(shù)
    • STM32 庫函數(shù)里的回調(diào)機制及觸發(fā)事件
    • 關(guān)于 STM32 HAL 庫里的回調(diào)函數(shù)的幾個常見問題
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1241 淺談STM32庫里的回調(diào)函數(shù)

03/25 14:10
611
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1241 淺談STM32庫里的回調(diào)函數(shù)

1.01 MB

回調(diào)函數(shù)

有人對 STM32 固件庫里的回調(diào)函數(shù)有些好奇甚至糾結(jié),這里簡單介紹下。其實從用法及功能上講他們并沒有什么特別的,跟其它函數(shù)一樣,也是實現(xiàn)特定功能的代碼段。一般來講,所謂回調(diào)函數(shù),泛指基于事件觸發(fā)而被調(diào)用執(zhí)行的函數(shù),簡單點說,就是條件滿足了就調(diào)用的函數(shù),往往會跟函數(shù)指針結(jié)合起來通過函數(shù)指針實現(xiàn)調(diào)用。

STM32 固件庫里的回調(diào)函數(shù)

說到這里,我們具體結(jié)合 STM32 外設(shè)固件庫里回調(diào)函數(shù)來聊聊。

首先,作為一個函數(shù)庫,里面不存在現(xiàn)存的完整的回調(diào)函數(shù)。前面的介紹已為此做鋪墊,因為回調(diào)函數(shù)需要結(jié)合具體場景而擬定,作為函數(shù)庫根本做不到這一點,它沒法事先知曉發(fā)生某個事件時不同的應(yīng)用會需要采取怎樣的操作。

其次,STM32 庫函數(shù)的確采用了回調(diào)機制,并基于可能的各種事件為 STM32 開發(fā)者預(yù)留了只有函數(shù)定義而無具體內(nèi)容的空回調(diào)函數(shù),或者是只定義了一些基于各類事件的函數(shù)指針,具體的回調(diào)函數(shù)需我們用戶完成并將函數(shù)地址賦給相應(yīng)的函數(shù)指針而被調(diào)用。簡單點說,庫給我們預(yù)留了眾多回調(diào)函數(shù)接口。

STM32 庫函數(shù)里的回調(diào)機制及觸發(fā)事件

整體上講,STM32 外設(shè)庫里的 API 函數(shù)由三部分組成,分別是:

初始化函數(shù)

啟動型執(zhí)行函數(shù)

回調(diào)函數(shù)【弱定義函數(shù)或回調(diào)函數(shù)指針,最終得靠用戶具體完成編寫】

這樣的安排,讓整個工程代碼結(jié)構(gòu)比較清晰,可以讓人快速了解庫結(jié)構(gòu),同時現(xiàn)存的 API 函數(shù)大大減少開發(fā)工作量,預(yù)留的回調(diào)函數(shù)接口一方面給開發(fā)者提供了便利,另一方面讓用戶基于不同應(yīng)用場景自由組織代碼而又不破壞整個軟件架構(gòu)。

關(guān)于 STM32 HAL 庫里的回調(diào)函數(shù)的幾個常見問題

STM32 庫函數(shù)里的回調(diào)函數(shù)是什么,有何用?

STM32 工程里的回調(diào)函數(shù)與中斷函數(shù)有什么區(qū)別?

STM32 庫函數(shù)里的回調(diào)函數(shù)是否可以不用?

STM32 庫函數(shù)里似乎存在著類似半成品的庫回調(diào)函數(shù)?

基于 STM32 庫來組織用戶回調(diào)函數(shù)要注意什么?

資料預(yù)覽

相關(guān)推薦