在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美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

    文章

    1204

    瀏覽量

    52092
  • ametal
    +關注

    關注

    2

    文章

    24

    瀏覽量

    11407
收藏 人收藏

    評論

    相關推薦

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

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

    RT-Thread驅動開發指南進階篇-動手驅動先楫未適配的外設LCD

    經過上一篇的《《RT-Thread設備驅動開發指南》基礎篇--以先楫bsp的hwtimer設備為例》闡述,可以大致了解到RT-thread設備驅動開發的方法步驟,
    的頭像 發表于 02-25 11:04 ?2550次閱讀
    RT-Thread<b class='flag-5'>驅動</b><b class='flag-5'>開發</b>指南進階篇-動手<b class='flag-5'>驅動</b>先楫未適配的<b class='flag-5'>外設</b>LCD

    靈動微電子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

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

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

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

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

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

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

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

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

    GPIO通用輸入輸出

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

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

    上期講述了搭建工程讓MCU在AMetal平臺運行起來,為后續開發外設驅動奠定基礎。接下來可以進入下一步的通用
    的頭像 發表于 04-27 16:58 ?1851次閱讀
    <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 ?1859次閱讀
    <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 ?963次閱讀
    如何<b class='flag-5'>驅動</b>Linux<b class='flag-5'>開發</b>板LED燈
    主站蜘蛛池模板: 亚洲狠狠婷婷综合久久久久图片| 我不卡午夜| 奇米在线| 亚洲婷婷综合中文字幕第一页| 亚洲成在线| 国产性色视频| 99久久精品久久久久久婷婷| 五月天婷婷伊人| 69日本人xxxx16-18| 四虎在线免费视频| 国产精品情人露脸在线观看| 午夜亚洲精品| 69女porenhd| 日本久久综合视频| 国产亚洲精品成人a在线| 国内精品免费视频自在线| 欧美xxxx日本| 一卡二卡四卡无卡乱免费网页| 四虎四虎| 亚洲第一久久| 国产美女主播一级成人毛片| 日本免费一区二区视频| 五月婷婷免费视频| 免费网站毛片| 欧美天天色| 一区二区三区无码高清视频| 亚洲吊丝网| 97影院理伦在线观看| 在线免费观看一区二区三区| 欧美巨大bbbb动漫| 亚洲第一视频在线| 日本一区二区三区免费看 | 国产精品超清大白屁股 | 天天操天天玩| 中文字幕11页| 色噜噜在线视频| 午夜逼逼| 伊人久久综合成人亚洲| bt在线搜索| 午夜cao| 色多多在线观看视频|