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

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

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

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

1.01 MB

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

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

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

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

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

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

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

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

初始化函數(shù)

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

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

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

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

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

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

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

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

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

資料預(yù)覽

相關(guān)推薦