<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式Linux設備驅動(dòng)開(kāi)發(fā)之:GPIO驅動(dòng)程序實(shí)例

嵌入式Linux設備驅動(dòng)開(kāi)發(fā)之:GPIO驅動(dòng)程序實(shí)例

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/257110.htm

11.3實(shí)例

11.3.1GPIO工作原理

FS2410開(kāi)發(fā)板的S3C2410處理器具有117個(gè)多功能通用I/O(GPIO)端口管腳,包括GPIO8個(gè)端口組,分別為GPA(23個(gè)輸出端口)、GPB(11個(gè)輸入/輸出端口)、GPC(16個(gè)輸入/輸出端口)、GPD(16個(gè)輸入/輸出端口)、GPE(16個(gè)輸入/輸出端口)、GPF(8個(gè)輸入/輸出端口)、GPH(11個(gè)輸入/輸出端口)。根據各種系統設計的需求,通過(guò)軟件方法可以將這些端口配置成具有相應功能(例如:外部中斷或數據總線(xiàn))的端口。

為了控制這些端口,S3C2410處理器為每個(gè)端口組分別提供幾種相應的控制寄存器。其中最常用的有端口配置寄存器(GPACON~GPHCON)和端口數據寄存器(GPADAT~GPHDAT)。因為大部分I/O管腳可以提供多種功能,通過(guò)配置寄存器(PnCON)設定每個(gè)管腳用于何種目的。數據寄存器的每位將對應于某個(gè)管腳上的輸入或輸出。所以通過(guò)對數據寄存器(PnDAT)的位讀寫(xiě),可以進(jìn)行對每個(gè)端口的輸入或輸出。

在此主要以發(fā)光二極管(LED)和蜂鳴器為例,討論GPIO設備的驅動(dòng)程序。它們的硬件驅動(dòng)電路的原理圖如圖11.4所示。

圖11.4LED(左)和蜂鳴器(右)的驅動(dòng)電路原理圖

在圖11.4中,可知使用S3C2410處理器的通用I/O口GPF4、GPF5、GPF6和GPF7分別直接驅動(dòng)LEDD12、D11、D10以及D9,而使用GPB0端口驅動(dòng)蜂鳴器。4個(gè)LED分別在對應端口(GPF4~GPF7)為低電平時(shí)發(fā)亮,而蜂鳴器在GPB0為高電平時(shí)發(fā)聲。這5個(gè)端口的數據流方向均為輸出。

在表11.15中,詳細描述了GPF的主要控制寄存器。GPB的相關(guān)寄存器的描述與此類(lèi)似,具體可以參考S3C2410處理器數據手冊。

表11.15 GPF端口(GPF0-GPF7)的主要控制寄存器

寄存器

地址

R/W

功能

初始值

GPFCON

0x56000050

R/W

配置GPF端口組

0x0

GPFDAT

0x56000054

R/W

GPF端口的數據寄存器

未定義

GPFUP

0x56000058

R/W

GPF端口的取消上拉寄存器

0x0

GPFCON

描述

GPF7

[15:14]

00=輸入01=輸出10=EINT711=保留

GPF6

[13:12]

00=輸入01=輸出10=EINT611=保留

GPF5

[11:10]

00=輸入01=輸出10=EINT511=保留

GPF4

[9:8]

00=輸入01=輸出10=EINT411=保留

GPF3

[7:6]

00=輸入01=輸出10=EINT311=保留

GPF2

[5:4]

00=輸入01=輸出10=EINT211=保留

GPF1

[3:2]

00=輸入01=輸出10=EINT111=保留

GPF0

[1:0]

00=輸入01=輸出10=EINT011=保留

GPFDAT

描述

GPF[7:0]

[7:0]

每位對應于相應的端口,若端口用于輸入,則可以通過(guò)相應的位讀取數據;若端口用于輸出,則可以通過(guò)相應的位輸出數據;若端口用于其他功能,則其值無(wú)法確定。

GPFUP

描述

GPF[7:0]

[7:0]

0:向相應端口管腳賦予上拉(pull-up)功能

1:取消上拉功能

為了驅動(dòng)LED和蜂鳴器,首先通過(guò)端口配置寄存器將5個(gè)相應寄存器配置為輸出模式。然后通過(guò)對端口數據寄存器的寫(xiě)操作,實(shí)現對每個(gè)GPIO設備的控制(發(fā)亮或發(fā)聲)。在下一個(gè)小節中介紹的驅動(dòng)程序中,s3c2410_gpio_cfgpin()函數和s3c2410_gpio_pullup()函數將進(jìn)行對某個(gè)端口的配置,而s3c2410_gpio_setpin()函數實(shí)現向數據寄存器的某個(gè)端口的輸出。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


蜂鳴器相關(guān)文章:蜂鳴器原理

上一頁(yè) 1 2 3 4 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>