chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

AMetal適配:以TIM為例來展示如何開發(fā)通用驅(qū)動外設代碼

海闊天空的專欄 ? 來源:立功科技 ? 作者:立功科技 ? 2022-05-12 17:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

基于定時器、RTC、WDT本質(zhì)上均是計數(shù)器的共性,本次將這三種通用外設統(tǒng)一為TIM。以TIM為例,來展示如何開發(fā)通用驅(qū)動外設代碼。對于AMetal所提供的標準層驅(qū)動文件,均存放于ametal\interface路徑下。

如下圖所示,開發(fā)通用外設驅(qū)動主要包含以下步驟:了解通用外設標準接口層、外設硬件層開發(fā)、外設驅(qū)動層開發(fā)、外設用戶配置文件開發(fā)、外設例程文件開發(fā)。

poYBAGJ8zF6AYggjAAEZC_YKIIg997.png

圖1 通用外設文件結(jié)構(gòu)

了解通用外設標準層

1、通用外設標準接口相關類型定義

以WDT為例,如下所示為WDT的標準接口文件中對每個結(jié)構(gòu)體和handle的詳細介紹。

poYBAGJ8zIGALf0_AACXP2U9aZQ008.png

圖2WDT標準接口文件結(jié)構(gòu)體定義

以此類推,對于定時器和RTC,其標準接口文件中均定義了驅(qū)動函數(shù)結(jié)構(gòu)體、標準服務結(jié)構(gòu)體和外設標準服務操作句柄。

struct am_xxx_drv_funcs結(jié)構(gòu)體

該驅(qū)動函數(shù)結(jié)構(gòu)體表明了驅(qū)動層應該提供對應的函數(shù);

typedef struct am_xxx_serv結(jié)構(gòu)體

該標準服務結(jié)構(gòu)體定義了標準的通用外設服務,從而包含了需要驅(qū)動層為標準接口層提供的全部內(nèi)容。驅(qū)動層就只需定義這樣一個結(jié)構(gòu)體變量,然后賦好相應的值,再以某種方式提供給標準接口層即可。

am_xxx_handle_t的定義

這是一個標準的操作句柄,本質(zhì)上就是標準服務結(jié)構(gòu)體指針類型,驅(qū)動層的初始化函數(shù)需要返回該類型的handle給用戶。當用戶在使用標準接口層函數(shù)時,就可以將獲取到的handle傳遞給標準層。那么,標準接口層就可以通過該handle訪問到驅(qū)動層提供的函數(shù)了。

2、標準接口函數(shù)

以WDT為例,如下所示為WDT標準接口函數(shù),通過內(nèi)聯(lián)函數(shù)來實現(xiàn)。這些函數(shù)就只是簡單地調(diào)用驅(qū)動層提供的函數(shù),本身并沒有做什么事情。每個函數(shù)都有對應詳細的注釋,傳入?yún)?shù)和返回值。從中可以看到,在調(diào)用驅(qū)動層提供的函數(shù)時,就是將外設標準服務操作句柄(本質(zhì)上為標準服務結(jié)構(gòu)體)中的p_drv成員作為第一個參數(shù)傳遞。

pYYBAGJ8zM6AYbo3AADe5vWJxAs584.png

圖3WDT標準接口函數(shù)

外設HW層開發(fā)

HW 層對應到具體的外設,其提供的API基本上是直接操作寄存器的內(nèi)聯(lián)函數(shù),效率最高,內(nèi)聯(lián)函數(shù)直接定義在.h 文件中。根據(jù)芯片手冊,來添加外設的寄存器列表;并編寫寄存器相關操作的內(nèi)聯(lián)函數(shù)。以某款芯片的WDT為例,如下所示為WDT的寄存器列表,從而來明確各個寄存器的功能。

poYBAGJ8zRKAEZWHAABFIsY0h1k150.png

圖4WDT寄存器列表

根據(jù)寄存器列表,了解了各個寄存器需要配置的各項功能和其他寄存器位該如何配合等。如下所示為WDT寄存器結(jié)構(gòu)體定義。

poYBAGJ8zUOAGc6wAAAipFDdAEY854.png

圖5WDT寄存器塊結(jié)構(gòu)體定義

接下來需要編寫每個寄存器的功能操作函數(shù)即可完成外設硬件層的開發(fā)。以WDT的控制寄存器cr為例,來編寫該寄存器的硬件層函數(shù)接口,如下所示:

poYBAGJ8zWmATwQiAABU7VxlcfI928.png

圖6WDT_CR寄存器操作函數(shù)

對于定時器、RTC的硬件層驅(qū)動開發(fā)亦是通過芯片手冊來編寫寄存器操作函數(shù)來完成驅(qū)動。

外設驅(qū)動層開發(fā)

1、定義設備信息結(jié)構(gòu)體和設備結(jié)構(gòu)體

在AMetal中,每個設備都應該有與之對應的設備結(jié)構(gòu)體和設備信息結(jié)構(gòu)體。設備結(jié)構(gòu)體主要用于內(nèi)存分配,與設備相關的變量都應該定義在設備結(jié)構(gòu)體中。設備信息結(jié)構(gòu)體主要包含該設備的一些相關信息。

pYYBAGJ8zYyAXhy1AABfaxRBxX0382.png

圖7 WDT設備信息結(jié)構(gòu)體和設備結(jié)構(gòu)體定義

2、驅(qū)動函數(shù)實現(xiàn)

驅(qū)動函數(shù)主要包括兩部分:提供給標準層的驅(qū)動函數(shù)和初始化、解初始化函數(shù)。

以WDT為例,如下所示為WDT外設的驅(qū)動層應該給標準接口層提供的函數(shù),按照芯片手冊中對應操作說明來完成看門狗的驅(qū)動層函數(shù)。

pYYBAGJ8zamAM-vuAABDAp1hnqs470.png

圖8WDT提供給標準層函數(shù)定義

如下所示為WDT初始化函數(shù)和解初始化函數(shù);初始化函數(shù)主要是為了初始化設備中的標準服務和硬件相關設置;解初始化函數(shù)是為了釋放內(nèi)存資源和硬件資源。

pYYBAGJ8zcuAPBCJAABZM1BE3-8482.png

圖9 WDT初始化函數(shù)和解初始化函數(shù)

對于定時器和RTC的驅(qū)動層開發(fā),其大致流程亦是如此。

外設用戶配置文件開發(fā)

開發(fā)完驅(qū)動層我們知道,用戶使用一個外設的過程是,先調(diào)用驅(qū)動初始化函數(shù),該函數(shù)返回一個handle,后續(xù)的所有操作,用戶直接使用該handle作為參數(shù)調(diào)用標準接口層函數(shù)即可。

以某款芯片的 WDT為例,如下所示為WDT的用戶配置文件,主要包含設備信息結(jié)構(gòu)體、設備實例結(jié)構(gòu)體及其平臺初始化函數(shù)與解初始化函數(shù)。定義好變量和函數(shù)后,在頭文件中添加函數(shù)聲明。用戶在使用時,只需調(diào)用外設實例初始化函數(shù),并保存其返回的handle,后續(xù)直接使用該handle作為標準接口的第一個參數(shù)來調(diào)用標準接口函數(shù)即可。

poYBAGJ8zfWAcY5cAACMWlSQyx4011.png

圖10WDT用戶配置文件

對于定時器和RTC的用戶配置文件,配置其對應的設備信息,添加平臺初始化函數(shù)與解初始化函數(shù)即可。

外設例程文件開發(fā)

外設的例程文件主要分為HW層示例和STD示例。

對于STD示例,調(diào)用標準層函數(shù)和實例初始化函數(shù)返回的handle作為參數(shù)傳入,來實現(xiàn)外設功能。

對于HW示例,可參考驅(qū)動層函數(shù)來添加硬件層示例功能函數(shù),最終實現(xiàn)外設功能。

至此,我們完成了一個通用外設驅(qū)動的開發(fā)。

來源:立功科技

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Tim
    Tim
    +關注

    關注

    0

    文章

    84

    瀏覽量

    18772
  • ametal
    +關注

    關注

    2

    文章

    24

    瀏覽量

    11648
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    EEPROM存儲器外設驅(qū)動代碼應用設計

    ZLG 用戶提供了大量標準的外設驅(qū)動與相關的協(xié)議組件,意在建立完整的生態(tài)系統(tǒng)。無論你選擇什么MCU,只要支持AMetal,都可實現(xiàn)“一次編程、終生使用”,其好處是你再也不要重新發(fā)明輪
    的頭像 發(fā)表于 12-20 06:28 ?1.2w次閱讀
    EEPROM存儲器<b class='flag-5'>外設</b>及<b class='flag-5'>驅(qū)動</b><b class='flag-5'>代碼</b>應用設計

    關于ametal_led通用接口的設計技巧分享

    第八章深入理解AMetal,本文內(nèi)容8.1 LED 通用接口。
    的頭像 發(fā)表于 11-23 07:52 ?6957次閱讀
    關于<b class='flag-5'>ametal</b>_led<b class='flag-5'>通用</b>接口的設計技巧分享

    RT-Thread驅(qū)動開發(fā)指南進階篇-動手驅(qū)動先楫未適配外設LCD

    經(jīng)過上一篇的《《RT-Thread設備驅(qū)動開發(fā)指南》基礎篇--先楫bsp的hwtimer設備》闡述,可以大致了解到RT-thread設
    的頭像 發(fā)表于 02-25 11:04 ?4548次閱讀
    RT-Thread<b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>指南進階篇-動手<b class='flag-5'>驅(qū)動</b>先楫未<b class='flag-5'>適配</b>的<b class='flag-5'>外設</b>LCD

    【HAL庫每天一】第014TIM-通用定時器定時

    /1i574oPv 密碼:r3s3(硬石YS-F1Pro開發(fā)板HAL庫例程持續(xù)更新\1. 軟件設計之基本裸機例程(HAL庫版本)\YSF1_HAL-014. TIM-通用定時器定時
    發(fā)表于 05-19 08:53

    【HAL庫每天一】第017TIM-通用定時器呼吸燈

    /1i574oPv 密碼:r3s3(硬石YS-F1Pro開發(fā)板HAL庫例程持續(xù)更新\1. 軟件設計之基本裸機例程(HAL庫版本)\YSF1_HAL-017. TIM-通用定時器呼吸燈
    發(fā)表于 05-22 10:42

    【HAL庫每天一】第018TIM-通用定時器輸入捕獲(脈沖測量)

    /1i574oPv 密碼:r3s3(硬石YS-F1Pro開發(fā)板HAL庫例程持續(xù)更新\1. 軟件設計之基本裸機例程(HAL庫版本)\TIM-通用定時器輸入捕獲(脈沖測量
    發(fā)表于 05-23 08:48

    靈動微電子MM32 MCU正式入駐AMetal平臺

    科技基于AMetal平臺靈動微電子MM32 MCU適配了底層驅(qū)動及標準接口,用戶使用時,可以完全脫離用戶手冊及繁雜的寄存器操作,直接調(diào)用AMeta
    發(fā)表于 01-16 11:38

    靈動微課堂 (第122講) | 基于MM32 MCU的OS移植與應用:AMetal平臺新建工程

    再重新發(fā)明輪子。我們今天將和大家一起實戰(zhàn)操作基于立功科技的AMetal平臺的MM32 MCU的新建工程。立功科技基于AMetal平臺靈動微電子MM32 MCU適配了底層
    發(fā)表于 05-22 17:04

    API設備驅(qū)動管理層與外設驅(qū)動適配層標準接口設計實現(xiàn)

    1、API 設備驅(qū)動管理層與外設驅(qū)動適配層標準接口實現(xiàn)bl_mcu_sdk 代碼層次結(jié)構(gòu)主要分為以下幾層應用層:由用戶自己編寫的
    發(fā)表于 07-14 17:41

    SPI驅(qū)動展示如何使用ENV工具對BSP進行配置

    、SDIO、ADC 等,但是 BSP 工程默認沒有開啟這些外設驅(qū)動。RT-Thread 提供了 ENV 工具開啟或關閉 BSP 的外設驅(qū)動
    發(fā)表于 07-15 10:55

    AMetal開發(fā)通用外設的流程與規(guī)范

    上期講述了搭建工程讓MCU在AMetal平臺運行起來,后續(xù)開發(fā)外設驅(qū)動奠定基礎。接下來可以進入下一步的
    的頭像 發(fā)表于 04-27 16:58 ?2402次閱讀
    <b class='flag-5'>AMetal</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>通用</b><b class='flag-5'>外設</b>的流程與規(guī)范

    AMetal開發(fā)通用外設GPIO驅(qū)動開發(fā)

    上期講述了開發(fā)通用外設之實戰(zhàn)TIM的流程,讓大家逐步深入了解如何開發(fā)通用
    的頭像 發(fā)表于 05-31 17:28 ?2597次閱讀

    AMetal代碼倉庫使用說明

    本文檔簡述了 AMetal 代碼倉庫的使用、 TortoiseGit 的使用以及版本控制等。AMetal 是芯片級的裸機軟件包,定義了跨平臺的通用接口(使得基于
    發(fā)表于 10-12 16:06 ?1次下載

    MindSDK應用基礎—TIM模塊樣

    MindSDKMM32使用星辰處理器內(nèi)核的系列微控制器,實現(xiàn)了一組TIM工程,MindSDK中的TIM模塊對應硬件定時器TIM
    的頭像 發(fā)表于 06-29 17:16 ?1429次閱讀

    MindSDKMM32實現(xiàn)了一組TIM工程

    MindSDKMM32使用星辰處理器內(nèi)核的系列微控制器,實現(xiàn)了一組TIM工程,MindSDK中的TIM模塊對應硬件定時器TIM
    的頭像 發(fā)表于 06-30 17:32 ?1279次閱讀