那曲檬骨新材料有限公司

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

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

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

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

海闊天空的專欄 ? 來源: 立功科技 ? 作者: 立功科技 ? 2022-05-31 17:28 ? 次閱讀

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

按照如下步驟開發(fā)通用外設GPIO驅(qū)動:

了解通用外設標準接口層、外設硬件層開發(fā)、外設驅(qū)動層開發(fā)、外設用戶配置文件開發(fā)。


圖片

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

標準層了解

1、標準接口相關(guān)類型定義

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

圖片

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

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

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

圖片

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

外設HW層開發(fā)

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

圖片

4GPIO寄存器列表

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

圖片

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

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

圖片

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

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

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

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

驅(qū)動層首先應該搭建好相關(guān)結(jié)構(gòu),再去實現(xiàn)外設的功能函數(shù)。在AMetal中,每個設備都應該有與之對應的設備結(jié)構(gòu)體和設備信息結(jié)構(gòu)體。

設備結(jié)構(gòu)體主要用于內(nèi)存分配,與設備相關(guān)的變量都應該定義在設備結(jié)構(gòu)體中。

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

圖片

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

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

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

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

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

圖片

圖8GPIO初始化函數(shù)和解初始化函數(shù)

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

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

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

圖片

圖9GPIO用戶配置文件

外設例程文件

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

對于STD示例,調(diào)用標準層函數(shù)和實例初始化函數(shù)來實現(xiàn)外設功能。

對于HW示例,通過調(diào)用硬件層的函數(shù)完成相應的配置,以此實現(xiàn)功能。如下所示為通過硬件層驅(qū)動來實現(xiàn)按鍵切換LED狀態(tài)的示例。

圖片

圖10GPIO_HW層示例

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

來源:立功科技

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

    關(guān)注

    16

    文章

    1216

    瀏覽量

    52377
  • ametal
    +關(guān)注

    關(guān)注

    2

    文章

    24

    瀏覽量

    11421
收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于ametal_led通用接口的設計技巧分享

    第八章為深入理解AMetal,本文內(nèi)容為8.1 LED 通用接口。
    的頭像 發(fā)表于 11-23 07:52 ?6665次閱讀
    關(guān)于<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設備驅(qū)動開發(fā)的方法步驟,
    的頭像 發(fā)表于 02-25 11:04 ?2781次閱讀
    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>LCD

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

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

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

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

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

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

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

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

    ESP32外設入門GPIO 精選資料推薦

    前言最近開發(fā)用到了ESP32,樂鑫已經(jīng)對接口進行比較深度的封裝,但是還是看了下外設的參考手冊,摘取了一部分結(jié)合自己的理解給記錄下來。如有異議,歡迎指正概述ESP32芯片具有34個物理GPIO。每個
    發(fā)表于 07-30 06:00

    基于Ametal平臺開發(fā),快速完成開發(fā)設計!

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

    簡要分析Thread的通用GPIO設備驅(qū)動

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

    Linux應用開發(fā)【第九章】GPIO編程應用開發(fā)

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

    GPIO通用輸入輸出

    GPIO通用輸入輸出一、GPIO的功能概述用途:GPIO通用輸入輸出(General Purpose I/O)的簡稱,主要用于工業(yè)現(xiàn)場需要
    發(fā)表于 12-20 18:58 ?6次下載
    <b class='flag-5'>GPIO</b><b class='flag-5'>通用</b>輸入輸出

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

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

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

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

    AMetal代碼倉庫使用說明

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

    如何驅(qū)動Linux開發(fā)板LED燈

    Linux下的任何外設驅(qū)動,最終都是要配置相應的硬件寄存器。前面的文章中介紹了新舊字符設備的驅(qū)動開發(fā)框架,也介紹了IMX6ULL處理器GPIO
    的頭像 發(fā)表于 04-14 11:41 ?1018次閱讀
    如何<b class='flag-5'>驅(qū)動</b>Linux<b class='flag-5'>開發(fā)</b>板LED燈
    投真钱百家乐官网必输吗| E世博网址| 娱乐城百家乐论坛| 六合彩百家乐官网有什么平码| 大发888特惠代码| 百家乐概率统计| 澳门百家乐官网小| 百家乐官网投注窍门| 皇冠网址去澳门| 大发888娱乐方下载| 百家乐桌子豪华| 澳门百家乐官网赌场文| 澳门百家乐官网破解方法| 比如县| 大发888官方指定下载| 大世界百家乐娱乐| 博士百家乐现金网| 乐天堂百家乐官网赌场娱乐网规则| 乐百家乐官网彩娱乐城| 38坊| 大发888游戏攻略| 百家乐vshow| 百家乐赌具哪里最好| 三星百家乐官网的玩法技巧和规则| 百家乐官网推广| 嘉善县| bet365资讯网| 棋牌游戏下载| 大发888在线娱乐加盟合作| 泰山百家乐的玩法技巧和规则| 现金百家乐赢钱| 百家乐怎么对冲打| 百家乐官网博彩免费体验金3| 百家乐官网suncity| 波浪百家乐官网测试| 真人百家乐官网好不好玩| 真人百家乐官网打法| 大发888线上娱乐加盟合作| 太阳城菲律宾官网| 百家乐透明发牌机| 澳门百家乐论坛及玩法|