91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

AMetal開發:通用外設GPIO驅動的開發

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

掃碼添加小助手

加入工程師交流群

上期講述了開發通用外設之實戰TIM的流程,讓大家逐步深入了解如何開發通用外設的驅動。接下來將繼續進行通用外設開發的實戰篇,本次向大家介紹開發通用外設之GPIO。

按照如下步驟開發通用外設GPIO驅動:

了解通用外設標準接口層、外設硬件層開發、外設驅動層開發、外設用戶配置文件開發。


圖片

圖1 通用外設文件結構

標準層了解

1、標準接口相關類型定義

如下所示為GPIO的標準接口文件中對GPIO引腳功能、引腳模式、輸出電平以及中斷觸發方式等的定義。

圖片

圖2GPIO標準接口文件宏定義

2、標準接口函數

如下所示為GPIO標準層的函數接口,通過傳入引腳編號、配置功能標志、回調函數等對應的參數,即可實現GPIO引腳的功能配置。在了解GPIO外設標準層數據類型和接口函數之后,就明確了驅動層需要為標準層所提供的內容。

圖片

圖3GPIO標準層函數接口

外設HW層開發

HW層對應到具體的外設,其提供的API基本上是直接操作寄存器的內聯函數。根據芯片手冊來添加外設的寄存器列表;并編寫寄存器相關操作的內聯函數。以某款芯片的GPIO為例,如下所示為GPIO的寄存器列表,從而來明確各個寄存器的功能。

圖片

4GPIO寄存器列表

根據寄存器列表,我們了解并分析了各個寄存器功能以及要配置的各個功能,其他寄存器位該如何配合等。如下所示為GPIO寄存器結構體定義。

圖片

5GPIO寄存器塊結構體定義

接下來編寫每個寄存器的功能操作函數即可完成外設硬件層的開發。以GPIO的端口位清除寄存器brr為例,來編寫該寄存器的硬件層函數接口,如下所示:

圖片

圖6GPIO_BRR寄存器操作函數

在每個寄存器的操作函數編寫完畢后,可能硬件層的接口還有所欠缺,需要提供一些方便用戶使用的簡單的功能性函數。在后續開發時,若發現有需要,可以反過來再添加。

外設驅動層開發

1、定義設備信息結構體和設備結構體

驅動層首先應該搭建好相關結構,再去實現外設的功能函數。在AMetal中,每個設備都應該有與之對應的設備結構體和設備信息結構體。

設備結構體主要用于內存分配,與設備相關的變量都應該定義在設備結構體中。

設備信息結構體通常至少包含一個硬件層定義的指向寄存器基地址的指針類型成員,除此之外,還包含一些設備的初始化配置信息,如中斷號、外設信息等成員。

圖片

圖7 GPIO設備信息結構體和設備結構體定義

2、驅動函數實現

驅動函數主要包括兩部分:一部分是提供給標準層的驅動函數,另一部分是面向用戶的初始化、解初始化函數。

我們可根據標準接口層函數來搭建相應的GPIO外設的驅動層功能函數框架;進一步通過芯片用戶手冊中對應操作說明來完成GPIO的驅動層功能函數驅動。

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

圖片

圖8GPIO初始化函數和解初始化函數

外設用戶配置文件開發

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

以某款芯片的GPIO為例,如下所示為GPIO的用戶配置文件,主要包含設備信息結構體、設備實例結構體及其平臺初始化函數與解初始化函數。

圖片

圖9GPIO用戶配置文件

外設例程文件

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

對于STD示例,調用標準層函數和實例初始化函數來實現外設功能。

對于HW示例,通過調用硬件層的函數完成相應的配置,以此實現功能。如下所示為通過硬件層驅動來實現按鍵切換LED狀態的示例。

圖片

圖10GPIO_HW層示例

至此,我們完成了一個通用外設GPIO驅動的開發。

來源:立功科技

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

    關注

    16

    文章

    1280

    瀏覽量

    54074
  • ametal
    +關注

    關注

    2

    文章

    24

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

    的本土通用MCU公司,可以為客戶提供從優異芯片產品到核心算法、從完備參考設計方案到整機開發的全方位支持,真正為中國電子信息產業提供底層技術驅動和支持。立功科技與靈動微電子強強聯合,開啟MM32 MCU
    發表于 01-16 11:38

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

    做最原始封裝;驅動層在硬件層的基礎上進一步封裝,簡化對外設的操作;標準接口層提取出了一套標準API接口,不僅適用于AWorksOS開發平臺也適用于其他操作系統。圖1 AMetal構架同
    發表于 05-22 17:04

    靈動微課堂 (第123講) | 基于MM32 MCU的OS移植與應用:AMetal LED燈控制

    ;drives 目錄下包含了該開發板支持的驅動源文件及實現;libc 目錄下是 AMetal 開發平臺相關的庫文件;service 目錄下面為用戶提供的一些標準服務接口;soc 目錄下
    發表于 05-28 16:19

    靈動微課堂 (第123講) | 基于MM32 MCU的OS移植與應用:AMetal LED燈控制

    ;drives 目錄下包含了該開發板支持的驅動源文件及實現;libc 目錄下是 AMetal 開發平臺相關的庫文件;service 目錄下面為用戶提供的一些標準服務接口;soc 目錄下
    發表于 05-28 16:19

    基于Ametal平臺開發,快速完成開發設計!

    傳統旋鈕采用機械式結構,面板上需要開孔,長時間使用易磨損、進灰塵等,采用新型吸附式磁旋鈕可以輕松解決上述問題。此磁旋鈕采用ZLG品牌的32位ARM單片機ZLG116做主控,并且基于Ametal平臺開發,能夠快速完成開發設計。
    的頭像 發表于 05-04 09:11 ?7427次閱讀

    簡要分析Thread的通用GPIO設備驅動

    為了給用戶提供操作GPIO通用API,方便應用程序開發,RT-Thread中引入了通用GPIO設備驅動
    發表于 11-13 14:57 ?1676次閱讀

    Linux應用開發【第九章】GPIO編程應用開發

    設置GPIO方向 9.4.3 GPIO輸出實驗-LED輸出控制 9.4.4 GPIO輸入試驗-按鍵值讀取 9.4.5 LED和按鍵控制實驗 ? 9 GPIO編程應用
    的頭像 發表于 12-10 19:21 ?1053次閱讀
    Linux應用<b class='flag-5'>開發</b>【第九章】<b class='flag-5'>GPIO</b>編程應用<b class='flag-5'>開發</b>

    AMetal開發通用外設的流程與規范

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

    AMetal適配:以TIM為例來展示如何開發通用驅動外設代碼

    基于定時器、RTC、WDT本質上均是計數器的共性,本次將這三種通用外設統一為TIM。以TIM為例,來展示如何開發通用驅動
    的頭像 發表于 05-12 17:08 ?2197次閱讀
    <b class='flag-5'>AMetal</b>適配:以TIM為例來展示如何<b class='flag-5'>開發</b><b class='flag-5'>通用</b><b class='flag-5'>驅動</b><b class='flag-5'>外設</b>代碼

    AMetal代碼倉庫使用說明

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

    如何驅動Linux開發板LED燈

    Linux下的任何外設驅動,最終都是要配置相應的硬件寄存器。前面的文章中介紹了新舊字符設備的驅動開發框架,也介紹了IMX6ULL處理器GPIO
    的頭像 發表于 04-14 11:41 ?1242次閱讀
    如何<b class='flag-5'>驅動</b>Linux<b class='flag-5'>開發</b>板LED燈

    【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發GPIO基礎知識

    【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發GPIO基礎知識
    的頭像 發表于 03-06 11:23 ?619次閱讀
    【北京迅為】iTOP-RK3568OpenHarmony系統南向<b class='flag-5'>驅動</b><b class='flag-5'>開發</b><b class='flag-5'>GPIO</b>基礎知識

    基于小凌派RK2206開發板:OpenHarmony如何使用IoT接口控制GPIO外設

    1、案例簡介本案例主要是如何在小凌派-RK2206開發板上使用IOT庫的GPIO接口,進行GPIO編程開發。例程將創建一個任務,通過配置GPIO
    的頭像 發表于 04-11 15:36 ?1206次閱讀
    基于小凌派RK2206<b class='flag-5'>開發</b>板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>GPIO</b><b class='flag-5'>外設</b>

    迅為RK3568開發驅動指南GPIO子系統GPIO子系統API函數的引入

    迅為RK3568開發驅動指南GPIO子系統GPIO子系統API函數的引入
    的頭像 發表于 05-29 14:05 ?454次閱讀
    迅為RK3568<b class='flag-5'>開發</b>板<b class='flag-5'>驅動</b>指南<b class='flag-5'>GPIO</b>子系統<b class='flag-5'>GPIO</b>子系統API函數的引入
    主站蜘蛛池模板: 色激情综合| 99久久免费精品国产免费高清 | 国产小视频在线观看 | 色伊人久久 | 最新欧美精品一区二区三区 | 欧美爱爱网 | 黄色理伦| 亚欧色 | 午夜免费网站 | 欧美在线黄 | 高h办公室| 国产一二三区在线 | 国产女主播在线播放一区二区 | ts国产| 亚洲1卡二卡3卡四卡不卡 | 亚洲视频一区二区 | 激情六月天婷婷 | www.亚洲天堂.com | 人人爽人人干 | 人人操在线播放 | 亚洲国产成人久久99精品 | 美女网站色在线观看 | 美女黄18以下禁止观看的网站 | 97午夜| 欧美1024| 亚欧色视频在线观看免费 | www射| 日韩欧美黄色 | 久草免费新视频 | 色播基地| 色一乱一伦一区一直爽 | 伊人亚洲综合网成人 | 俺去俺来也www色官网免费的 | 亚洲欧洲一二三区 | 91久久婷婷国产综合精品青草 | 国产精品国产三级国产在线观看 | 免费看片免 | 天天槽天天槽天天槽 | 色狠狠狠狠综合影视 | 色综合激情丁香七月色综合 | 国产精品视频你懂的 |