項 偉
(長江工程職業(yè)技術(shù)學(xué)院,武漢 430212)
天嵌S3C2440開發(fā)板是一款A(yù)RM9的學(xué)習(xí)板,目前該開發(fā)板雖然配套了使用手冊,但是對于剛接觸ARM又沒有嵌入式技術(shù)基礎(chǔ)的學(xué)生來說不夠簡潔直觀,學(xué)起來較有難度。本文給出了在該開發(fā)板下通過GPIO接口實現(xiàn)LED燈點亮的開發(fā)過程,以良好的簡潔性、實用性來激發(fā)學(xué)生學(xué)習(xí)ARM的興趣。
GPIO是通用可編程輸入/輸出接口,是ARM處理器中結(jié)構(gòu)比較簡單的外部設(shè)備/電路,往往通過它的引腳值來控制外部設(shè)備。
S3C2440處理器含有130個多功能的輸入/輸出引腳,它們分成9組輸入/輸出端口,分別是Port A~Port J,即GPA~GPJ。每組GPIO接口又有不同數(shù)量的引腳,如GPA有25個引腳,GPB有11個引腳等。除了GPA端口外,其余8組端口都有端口控制寄存器GPnCON、端口數(shù)據(jù)寄存器GPnDAT、端口上拉寄存器GPnUP。端口控制寄存器用于定義每個引腳的功能;端口數(shù)據(jù)寄存器的每位數(shù)據(jù)都直接引到芯片外部,依據(jù)定義端口的功能供外部設(shè)備讀或?qū)?;端口上拉寄存器用于控制每個端口組的上接電阻的允許/禁止。
端口B控制寄存器GPBCON描述如表1所示。
表1 GPBCON控制寄存器控制位狀態(tài)表
端口B數(shù)據(jù)寄存器GPBDAT是1個[10:0]位的寄存器,它的每一位用來分別存放GPBn的數(shù)據(jù)。當(dāng)端口被配置成輸入時,外部數(shù)據(jù)可以從對應(yīng)的端口中讀出;當(dāng)端口被置成輸出時,寫入該寄存器的數(shù)據(jù)會被送到對的引腳上;當(dāng)端口被配置成功能引腳時,此寄存器未定義。
天嵌S3C2440開發(fā)板的LED電路原理圖如圖1所示,它含有LED1、LED2、LED3、LED4共四個LED燈,每個LED燈實際上就是一個發(fā)光二極管,若使某個LED燈亮,必須供給對應(yīng)的發(fā)光二極管低電平,反之,LED燈滅,必須供給對應(yīng)的發(fā)光二極管高電平。
LED1~LED4分別與GPB組端口的GPB5~GPB8相連,通過GPB5~GPB8引腳的低電平控制LED1~LED4燈亮。所以需要通過GPBCON寄存器將GPB5~GPB8設(shè)置為輸出功能,將數(shù)據(jù)0供給LED3的發(fā)光二極管。
圖1 LED電路原理圖
GPBCON寄存器將GPB5~GPB8設(shè)置為輸出功能,GPBCON寄存器的某兩位為01時表示設(shè)置該引腳為Output功能,所以,配置GPBCON寄存器的GPB5[11:10]~GPB8[16:17]都為01,其余位都為00,二進制數(shù)據(jù)經(jīng)過轉(zhuǎn)換得到十六進制數(shù)據(jù)是0×00015400。
為使LED1~LED4燈亮,將數(shù)據(jù)0存放到GPBDAT數(shù)據(jù)寄存器的對應(yīng)5~8位,其余位不管。若是燈滅,就將數(shù)據(jù)1存放到GPBDAT數(shù)據(jù)寄存器的對應(yīng)5~8位,二進制數(shù)據(jù)經(jīng)過轉(zhuǎn)換得到十六進制數(shù)據(jù)是0×1e0。端口初始化代碼:
四個LED燈亮代碼:
四個LED燈滅代碼:
為了更好地觀察LED燈亮,使LED燈交替亮滅,需要延時。
延時功能代碼: