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

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

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

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

AMetal開(kāi)發(fā):通用外設(shè)GPIO驅(qū)動(dòng)的開(kāi)發(fā)

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

掃碼添加小助手

加入工程師交流群

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

按照如下步驟開(kāi)發(fā)通用外設(shè)GPIO驅(qū)動(dòng):

了解通用外設(shè)標(biāo)準(zhǔn)接口層、外設(shè)硬件層開(kāi)發(fā)、外設(shè)驅(qū)動(dòng)層開(kāi)發(fā)、外設(shè)用戶(hù)配置文件開(kāi)發(fā)。


圖片

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

標(biāo)準(zhǔn)層了解

1、標(biāo)準(zhǔn)接口相關(guān)類(lèi)型定義

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

圖片

圖2GPIO標(biāo)準(zhǔn)接口文件宏定義

2、標(biāo)準(zhǔn)接口函數(shù)

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

圖片

圖3GPIO標(biāo)準(zhǔn)層函數(shù)接口

外設(shè)HW層開(kāi)發(fā)

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

圖片

4GPIO寄存器列表

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

圖片

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

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

圖片

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

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

外設(shè)驅(qū)動(dòng)層開(kāi)發(fā)

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

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

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

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

圖片

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

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

驅(qū)動(dòng)函數(shù)主要包括兩部分:一部分是提供給標(biāo)準(zhǔn)層的驅(qū)動(dòng)函數(shù),另一部分是面向用戶(hù)的初始化、解初始化函數(shù)。

我們可根據(jù)標(biāo)準(zhǔn)接口層函數(shù)來(lái)搭建相應(yīng)的GPIO外設(shè)的驅(qū)動(dòng)層功能函數(shù)框架;進(jìn)一步通過(guò)芯片用戶(hù)手冊(cè)中對(duì)應(yīng)操作說(shuō)明來(lái)完成GPIO的驅(qū)動(dòng)層功能函數(shù)驅(qū)動(dòng)。

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

圖片

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

外設(shè)用戶(hù)配置文件開(kāi)發(fā)

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

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

圖片

圖9GPIO用戶(hù)配置文件

外設(shè)例程文件

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

對(duì)于STD示例,調(diào)用標(biāo)準(zhǔn)層函數(shù)和實(shí)例初始化函數(shù)來(lái)實(shí)現(xiàn)外設(shè)功能。

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

圖片

圖10GPIO_HW層示例

至此,我們完成了一個(gè)通用外設(shè)GPIO驅(qū)動(dòng)的開(kāi)發(fā)。

來(lái)源:立功科技

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

    關(guān)注

    16

    文章

    1300

    瀏覽量

    55304
  • ametal
    +關(guān)注

    關(guān)注

    2

    文章

    24

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    靈動(dòng)微電子MM32 MCU正式入駐AMetal平臺(tái)

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

    靈動(dòng)微課堂 (第122講) | 基于MM32 MCU的OS移植與應(yīng)用:AMetal平臺(tái)新建工程

    做最原始封裝;驅(qū)動(dòng)層在硬件層的基礎(chǔ)上進(jìn)一步封裝,簡(jiǎn)化對(duì)外設(shè)的操作;標(biāo)準(zhǔn)接口層提取出了一套標(biāo)準(zhǔn)API接口,不僅適用于A(yíng)WorksOS開(kāi)發(fā)平臺(tái)也適用于其他操作系統(tǒng)。圖1 AMetal構(gòu)架同
    發(fā)表于 05-22 17:04

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

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

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

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

    基于Ametal平臺(tái)開(kāi)發(fā),快速完成開(kāi)發(fā)設(shè)計(jì)!

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

    簡(jiǎn)要分析Thread的通用GPIO設(shè)備驅(qū)動(dòng)

    為了給用戶(hù)提供操作GPIO通用API,方便應(yīng)用程序開(kāi)發(fā),RT-Thread中引入了通用GPIO設(shè)備驅(qū)動(dòng)
    發(fā)表于 11-13 14:57 ?1768次閱讀

    Linux應(yīng)用開(kāi)發(fā)【第九章】GPIO編程應(yīng)用開(kāi)發(fā)

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

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

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

    AMetal適配:以TIM為例來(lái)展示如何開(kāi)發(fā)通用驅(qū)動(dòng)外設(shè)代碼

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

    AMetal代碼倉(cāng)庫(kù)使用說(shuō)明

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

    如何驅(qū)動(dòng)Linux開(kāi)發(fā)板LED燈

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

    【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)GPIO基礎(chǔ)知識(shí)

    【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)GPIO基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 03-06 11:23 ?855次閱讀
    【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>GPIO</b>基礎(chǔ)知識(shí)

    基于小凌派RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    1、案例簡(jiǎn)介本案例主要是如何在小凌派-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO接口,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置GPIO
    的頭像 發(fā)表于 04-11 15:36 ?1466次閱讀
    基于小凌派RK2206<b class='flag-5'>開(kāi)發(fā)</b>板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>GPIO</b><b class='flag-5'>外設(shè)</b>

    迅為RK3568開(kāi)發(fā)驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

    迅為RK3568開(kāi)發(fā)驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
    的頭像 發(fā)表于 05-29 14:05 ?727次閱讀
    迅為RK3568<b class='flag-5'>開(kāi)發(fā)</b>板<b class='flag-5'>驅(qū)動(dòng)</b>指南<b class='flag-5'>GPIO</b>子系統(tǒng)<b class='flag-5'>GPIO</b>子系統(tǒng)API函數(shù)的引入