1. gzyueqian
      13352868059

      嵌入式開發:使用中斷回調的5個技巧

      更新時間: 2022-09-05 10:33:33來源: 粵嵌教育瀏覽量:9535

        回調是對高級軟件傳遞給函數的可執行代碼的引用。這些回調有能力極大地提高嵌入式軟件的可移植性和重用性,但是根據它們的定義,嵌入式開發人員需要使用函數指針,如果不小心使用,可能會非常危險。以下是在嵌入式系統中安全創建和使用回調的五個技巧,尤其是在中斷中使用回調時。

        技巧1——創建設置或注冊方法—回調通常被視為傳遞到函數中的函數指針,但它們也可以在可移植系統中用于設置將由中斷服務例程(ISR)調用的函數。當中斷觸發時,中斷處理程序將包含一個應該執行的函數的引用。中斷的可執行函數將在運行時設置。

        技巧2——將回調初始化為空值或默認值—創建一個包含回調寄存器或設置函數的外設驅動程序接口是創建可移植中斷的一個重要步驟,但是有一個問題:如果一個回調沒有被注冊,但是中斷被激活并觸發了,會發生什么呢?中斷服務例程需要某種方式來判斷回調函數是否已經注冊,提供這種驗證的最簡單的方法是首先將回調函數指針初始化為NULL。在ISR中對NULL進行簡單的檢查將會阻止任何處理程序的執行。嵌入式開發人員使用NULL的一種替代方法是將指針初始化為一個通用的空中斷處理程序。當一個未初始化的中斷回調被觸發時,默認的處理程序將會運行。

        技巧3——使用前驗證回調—將回調指針的初始值設置為 NULL 或通用處理程序允許中斷驗證是否已設置中斷處理程序。但是,在使用函數指針時,首先驗證內存中引用的位置不是 NULL 并且確實存在于系統中。

        


        技巧4——使用回調向較低級別的固件添加功能—回調函數對于以通用和特定于應用程序的方式向低級驅動程序和應用程序代碼添加功能非常有用。為了生產松耦合和高內聚的固件,開發人員可以通過使用回調將中斷向量和對其他外圍模塊的引用傳遞到驅動程序中?;卣{允許嵌入式開發人員在設計時添加應用程序特定的功能,而不必不斷修改驅動程序代碼來獲得所需的行為。回調可以用這種方式產生非常干凈,可移植和可重用的固件和接口。

        技巧5——創建抽象回調函數—回調函數通常需要接受未知數量的參數,它們可能返回數據,也可能不返回數據,這取決于應用程序的需要。然而,開發人員的目標是編寫抽象的回調函數。對于與中斷相關的回調,回調只是作為中斷服務例程的一部分被調用,函數可以接受一個void參數并返回void。任何需要與應用程序共享的數據都將以與中斷相同的方式處理。對于可能與錯誤處理或其他自定義功能相關的驅動程序回調,處理參數和返回值的最簡單方法是傳遞一個指針并返回一個指針。

        最后的想法

        回調在嵌入式系統中有廣泛的用途,尤其是在開發可移植和可重用的固件時。本文提供了五個例子,講明嵌入式開發人員如何考慮和實現中斷回調,但它們只是其中的一小部分。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日本大道香蕉中文在线 | 日本熟女A∨乱伦中出 | 亚洲日韩高清在线 | 中文字幕一本在线 | 精品亚洲欧美在线看 | 日韩欧美无砖专区一中文字幕 |