第4講-系統(tǒng)控制模塊與GPIO_第1頁
第4講-系統(tǒng)控制模塊與GPIO_第2頁
第4講-系統(tǒng)控制模塊與GPIO_第3頁
第4講-系統(tǒng)控制模塊與GPIO_第4頁
第4講-系統(tǒng)控制模塊與GPIO_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

4LECTURE系統(tǒng)控制模塊與GPIO陳子為對本部分的要求掌握PLL、VPB的設(shè)置方法掌握引腳連接模塊與GPIO模塊的使用方法1鎖相環(huán)(PLL)鎖相環(huán)(PLL)

由晶體振蕩器輸出的時鐘信號,通過PLL升頻,可以獲得更高的系統(tǒng)時鐘(CCLK)。

PLL接受的輸入時鐘頻率范圍為10~25MHz,通過一個電流控制振蕩器(CCO)倍增到10~60MHz。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSC10MHz~25MHz10MHz~60MHzPLLPLL內(nèi)部結(jié)構(gòu)相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLK晶體振蕩器輸入時鐘對輸入的兩路時鐘信號進(jìn)行相位頻率檢測,將兩者差值以電流形式輸出電流控制振蕩器,根據(jù)輸入電流控制振蕩頻率對輸入時鐘分頻輸入時鐘2選1開關(guān)PLL內(nèi)部結(jié)構(gòu)相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKFCCO/2PFCCO/(2P*M)CCO自由振蕩,輸出頻率FCCO根據(jù)兩個輸入時鐘的相位偏差,控制CCO。當(dāng)兩個時鐘相位同步時,回路鎖定。Fosc由硬件決定Fcco是PLL硬件的振蕩頻率Fcco*(1/2P)=Fcclk,其中p=1,2,4,8Fcclk*(1/M)=Fosc,其中M=1~32必須滿足的條件:FOSC范圍:10MHz~25MHz;

FCCLK范圍:10MHz~60MHz;

FCCO范圍:156MHz~320MHz;PLL相關(guān)寄存器相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL控制寄存器(PLLCON):位76543210功能------PLLCPLLEPLLE:PLL使能,該位為1時將激活PLL并允許其鎖定到指定的頻率;PLLC:PLL連接,當(dāng)PLLE為1,并且在PLL鎖定后,該位為1,將把PLL作為時鐘源連接到CPU,否則直接使用振蕩器時鐘。PLLCPLLE相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLK位76543210功能------PLLCPLLE注:其中“-”表示該位保留,用戶不要向該位寫入1,讀取的值將不確定PLLCPLLEPLL相關(guān)寄存器PLL控制寄存器(PLLCON):相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLLCPLLEPLL功能00PLL被關(guān)閉,并斷開連接。01PLL被激活但是尚未連接。可以在PLOCK置位后連接。10與00組合相同。避免PLL已連接,當(dāng)還沒有使能的情況。11PLL已經(jīng)使能,并連接到處理器作為系統(tǒng)時鐘源。PLLCPLLEPLL相關(guān)寄存器PLL控制寄存器(PLLCON):相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL配置寄存器(PLLCFG):位76543210功能-PSEL[1:0]MSEL[4:0]MSEL[4:0]:PLL倍頻器值,在PLL頻率計算中其值為(M-1);PSEL[1:0]:PLL分頻器值,在PLL頻率計算中其值為P

。PLL相關(guān)寄存器相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL狀態(tài)寄存器(PLLSETA):位15:11109876:54:0功能-PLOCKPLLCPLLE-PSEL[1:0]MSEL[4:0]MSEL[4:0]、PSEL[1:0]、PLLE、PLLC:讀出反映這幾個參數(shù)的設(shè)置值,寫入無效;PLOCK:反映PLL的鎖定狀態(tài)。為0時,PLL未鎖定;為1時,PLL鎖定到指定頻率。PLL相關(guān)寄存器相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKPLL饋送寄存器(PLLFEED):PLLFEDD[7:0]:PLL饋送序列必須寫入該寄存器才能使PLL配置和控制寄存器的更改生效;位76543210功能PLLFEED[7:0]PLL相關(guān)寄存器相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLK饋送序列為:

1.將值0xAA寫入PLLFEED;

2.將值0x55寫入PLLFEED。位76543210功能PLLFEED[7:0]PLL相關(guān)寄存器PLL饋送寄存器(PLLFEED):PLL頻率計算回路鎖定后:FOSC=FCCO/(2P×M)FCLK=FOSC

×M相位頻率檢測CCO102P分頻M分頻0101FOSCFCCOFCLKFCCO/2PFCCO/(2P*M)FOSC:晶振頻率;FCCO:CCO振蕩器輸出頻率FCCLK:處理器時鐘頻率;M:PLL倍頻值P:PLL分頻值必須滿足的條件:FOSC范圍:10MHz~25MHz;

FCCLK范圍:10MHz~60MHz;

FCCO范圍:156MHz~320MHz;鎖相環(huán)(PLL)計算流程1.選擇處理器的工作頻率(CCLK)2.選擇振蕩器頻率(FOSC)3.計算M值配置MSEL位4.計算P值配置PSEL位根據(jù)處理器的整體要求、UART波特率的支持等因素來決定。外圍器件的時鐘頻率可以低于處理器頻率

CCLK必須為FOSC的整數(shù)倍。

M=CCLK/FOSC,取值范圍1~32。寫入MSEL的值為(M-1)。選擇合適的P值,使FCCO在限制范圍內(nèi)。P只能取1、2、4或8。寫入PSEL的值為P。鎖相環(huán)(PLL)計算實例系統(tǒng)要求:FOSC=10MHz、CCLK=60MHz1.計算M值:M=CCLK/FOSC=6

;2.設(shè)置MSEL位:寫入值為(M-1)=5;寫入PLLCFG[4:0]3.設(shè)置PSEL位:P=FCCO/(CCLK×2)

=(156~320)/120=1.3~2.67

所以P取整數(shù)2,PSEL寫入值為2。寫入PLLCFG[6:5]必須滿足的條件:FOSC范圍:10MHz~25MHz;

FCCLK范圍:10MHz~60MHz;

FCCO范圍:156MHz~320MHz;鎖相環(huán)(PLL)注意要點PLL在芯片復(fù)位或進(jìn)入掉電模式時被關(guān)閉并旁路,在掉電喚醒后不會自動恢復(fù)PLL的設(shè)定;PLL只能通過軟件使能;PLL在激活后必須等待其鎖定,然后才能連接;PLL如果設(shè)置不當(dāng)將會導(dǎo)致芯片的錯誤操作。2VPB分頻器VPB分頻器

VPB分頻器將PLL輸出的時鐘信號分頻后作為芯片外設(shè)的時鐘。PLL晶體振蕩器VPB分頻器FCCLKFPCLKFOSCVPB分頻器Fpclk=(Fcclk/4)*Q,其中Q=1,2,4VPB分頻器

VPB分頻器決定處理器時鐘(CCLK)與外設(shè)器件所使用的時鐘(PCLK)之間的關(guān)系。VPB用途1:通過VPB總線為外設(shè)提供所需的PCLK時鐘,以便外設(shè)在合適的速度下工作;VPB用途2:在應(yīng)用不需要任何外設(shè)全速運行時使功耗降低。VPB分頻器相關(guān)寄存器位76543210功能--XCLKDIV[1:0]--VPBDIV[1:0]VPB分頻寄存器(VPBDIV):VPBDIV[1:0]:設(shè)置分頻值,可以設(shè)定3個值;XCLKDIV[1:0]:這些位用于控制LPC2200系列微控制器A23/XCLK引腳上的時鐘驅(qū)動,取值編碼方式與VPBDIV相同;VPB分頻器相關(guān)寄存器位76543210功能--XCLKDIV[1:0]--VPBDIV[1:0]VPB分頻寄存器(VPBDIV):VPBDIV[1:0]說明00VPB總線時鐘為處理器時鐘的1/4。01VPB總線時鐘與處理器時鐘相同。10VPB總線時鐘為處理器時鐘的1/2。11保留。寫入該值將不改變分頻值。系統(tǒng)時鐘初始化——啟動代碼實例//應(yīng)當(dāng)與實際一至晶振頻率,10MHz~25MHz,應(yīng)當(dāng)與實際一致#defineFosc11059200//系統(tǒng)頻率,必須為Fosc的整數(shù)倍(1~32),且<=60MHZ#defineFcclk(Fosc*4)//CCO頻率,必須為Fcclk的2、4、8、16倍,范圍為156MHz~320MHz#defineFcco(Fcclk*4)//VPB時鐘頻率,只能為(Fcclk/4)的1、2、4倍#defineFpclk(Fcclk/4)*1將系統(tǒng)內(nèi)各時鐘的頻率定義為宏,方便用戶操作。設(shè)置晶振頻率設(shè)置內(nèi)核工作頻率設(shè)置CCO輸出頻率設(shè)置外設(shè)工作頻率Fcco=Fcclk*2P,其中p=1,2,4,8且156MHz<Fcco<320MHzFcclk=Fosc*M,其中M=1~32且Fcclk≤60MHzFpclk=Fcclk/4*Q,其中Q=1,2,4系統(tǒng)時鐘初始化——啟動代碼實例使能PLL設(shè)置VPB分頻值PLL饋送序列等待PLL鎖定設(shè)置PLL分頻值連接PLLPLL饋送序列使能PLL設(shè)置VPB分頻值C代碼分析:

PLLCON=1;#if(Fpclk/(Fcclk/4))==1VPBDIV=0;#endif#if(Fpclk/(Fcclk/4))==2VPBDIV=2;#endif#if(Fpclk/(Fcclk/4))==4VPBDIV=1;#endif...注意:在啟動代碼中很多地方使用了條件編譯的方法,根據(jù)用戶定義的宏來決定要設(shè)置的值,可以方便用戶使用。系統(tǒng)時鐘初始化——啟動代碼實例使能PLL設(shè)置VPB分頻值PLL饋送序列等待PLL鎖定設(shè)置PLL分頻值連接PLLPLL饋送序列設(shè)置PLL分頻值C代碼分析:...#if(Fcco/Fcclk)==2PLLCFG=((Fcclk/Fosc)-1)|(0<<5);#endif#if(Fcco/Fcclk)==4PLLCFG=((Fcclk/Fosc)-1)|(1<<5);#endif#if(Fcco/Fcclk)==8PLLCFG=((Fcclk/Fosc)-1)|(2<<5);#endif#if(Fcco/Fcclk)==16PLLCFG=((Fcclk/Fosc)-1)|(3<<5);...系統(tǒng)時鐘初始化——啟動代碼實例使能PLL設(shè)置VPB分頻值PLL饋送序列等待PLL鎖定設(shè)置PLL分頻值連接PLLPLL饋送序列PLL饋送序列等待PLL鎖定連接PLLPLL饋送序列C代碼分析:...PLLFEED=0xaa;PLLFEED=0x55;while((PLLSTAT&(1<<10))==0);PLLCON=3;PLLFEED=0xaa;PLLFEED=0x55;注意:在修改PLL的控制和配置寄存器后,必須寫入饋送序列,使修改生效。3引腳連接模塊概述

LPC2000系列微控制器的大部分管腳都具有多種功能,即管腳復(fù)用,但是同一引腳在同一時刻只能使用其中一個功能,通過配置相關(guān)寄存器控制多路開關(guān)來連接引腳與片內(nèi)外設(shè)。GPIOTXD0PWM1輸出P0.0通過引腳連接模塊控制引腳功能外部存儲器寄存器描述——PINSEL0PINSEL0引腳名稱00011011復(fù)位值1:0P0.0GPIOP0.0TxD0PWM1保留003:2P0.1GPIOP0.1RxD0PWM3EINT0005:4P0.2GPIOP0.2SCL捕獲0.0保留007:6P0.3GPIOP0.3SDA匹配0.0EINT1009:8P0.4GPIOP0.4SCK0捕獲0.1保留0011:10P0.5GPIOP0.5MISO0匹配0.1保留0013:12P0.6GPIOP0.6MOSI0捕獲0.2保留0015:14P0.7GPIOP0.7SSEL0PWM2EINT20017:16P0.8GPIOP0.8TxD1PWM4保留0019:18P0.9GPIOP0.9RxD1PWM6EINT30021:20P0.10GPIOP0.10RTS捕獲1.0保留0023:22P0.11GPIOP0.11CTS捕獲1.1保留0025:24P0.12GPIOP0.12DSR匹配1.0保留0027:26P0.13GPIOP0.13DTR匹配1.1保留0029:28P0.14GPIOP0.14CDEINT1保留0031:30P0.15GPIOP0.15RIEINT2保留00表示寄存器中某兩位的設(shè)定值如PINSEL0[1:0]=01時,連接TXD0表示寄存器中的控制位如[9:8]表示PINSEL0寄存器的第9和8位外部存儲器寄存器描述——PINSEL0PINSEL0引腳名稱00011011復(fù)位值1:0P0.0GPIOP0.0TxD0PWM1保留003:2P0.1GPIOP0.1RxD0PWM3EINT0005:4P0.2GPIOP0.2SCL捕獲0.0保留007:6P0.3GPIOP0.3SDA匹配0.0EINT1009:8P0.4GPIOP0.4SCK0捕獲0.1保留0011:10P0.5GPIOP0.5MISO0匹配0.1保留0013:12P0.6GPIOP0.6MOSI0捕獲0.2保留0015:14P0.7GPIOP0.7SSEL0PWM2EINT20017:16P0.8GPIOP0.8TxD1PWM4保留0019:18P0.9GPIOP0.9RxD1PWM6EINT30021:20P0.10GPIOP0.10RTS捕獲1.0保留0023:22P0.11GPIOP0.11CTS捕獲1.1保留0025:24P0.12GPIOP0.12DSR匹配1.0保留0027:26P0.13GPIOP0.13DTR匹配1.1保留0029:28P0.14GPIOP0.14CDEINT1保留0031:30P0.15GPIOP0.15RIEINT2保留00如:PINSEL[19:18]設(shè)置為01時,引腳P0.9的功能為RXD1外部存儲器寄存器描述——PINSEL1PINSEL1引腳名稱00011011復(fù)位值1:0P0.16GPIOP0.16EINT1匹配0.2保留003:2P0.17GPIOP0.17捕獲1.2SCK1匹配1.2005:4P0.18GPIOP0.18捕獲1.3MISO1匹配1.3007:6P0.19GPIOP0.19匹配1.2MOSI1匹配1.3009:8P0.20GPIOP0.20匹配1.3SSEL1EINT30011:10P0.21GPIOP0.21PWM5保留捕獲1.30013:12P0.22GPIOP0.22保留捕獲0.0匹配0.00015:14P0.23GPIOP0.23保留保留保留0017:16P0.24GPIOP0.24保留保留保留0019:18P0.25GPIOP0.25保留保留保留0021:20P0.26保留0023:22P0.27GPIOP0.27AIN0捕獲0.1匹配0.10025:24P0.28GPIOP0.28AIN1捕獲0.2匹配0.20027:26P0.29GPIOP0.29AIN2捕獲0.3匹配0.30029:28P0.30GPIOP0.30AIN3EINT3捕獲0.00031:30P0.31保留00外部存儲器寄存器描述——PINSEL2PINSEL2描述復(fù)位值1:0保留002為0時,P1.31:26作GPIO使用為1時,P1.31:26作調(diào)試端口使用復(fù)位時將P1.26引腳電平取反后作為該位復(fù)位值3為0時,P1.25:16作GPIO使用為1時,P1.25:16作跟蹤端口使用復(fù)位時將P1.20引腳電平取反后作為該位復(fù)位值5:4控制數(shù)據(jù)總線和選通引腳的使用復(fù)位時將BOOT1:0引腳電平作為該域的復(fù)位值6當(dāng)數(shù)據(jù)總線不占用P3.29時:為1時,P3.29作GPIO使用為0時,P3.29作AIN6使用17當(dāng)數(shù)據(jù)總線不占用P3.28時:為1時,P3.28作GPIO使用為0時,P3.28作AIN7使用18為1時,P3.27作GPIO使用為0時,P3.27作WE使用0注意:LPC2103只具有兩個PINSEL寄存器,PINSEL0和PINSEL1,它們都是32位寬度的外部存儲器控制器概述——PINSEL2PINSEL2描述復(fù)位值10:9保留—11為1時,P3.26作CS1使用為0時,P3.26作GPIO使用012保留—13當(dāng)?shù)刂房偩€不占用P3.23引腳時:為1時,P3.23作外部總線時鐘輸出(XCLK)使用為0時,P3.29作GPIO使用015:14為00時,P3.25作GPIO使用為01時,P3.25作CS2使用其它設(shè)置值保留0017:16為00時,P3.24作GPIO使用為01時,P3.24作CS3使用其它設(shè)置值保留0019:18保留—外部存儲器控制器概述——PINSEL2PINSEL2描述復(fù)位值20當(dāng)數(shù)據(jù)總線沒有占用P2.29:28時:為0時,P3.29:28作GPIO使用為1時,保留021當(dāng)數(shù)據(jù)總線沒有占用P2.30時:為0時,P2.30作GPIO使用為1時,P2.30作AIN4使用122當(dāng)數(shù)據(jù)總線沒有占用P2.31時:為0時,P2.31作GPIO使用為1時,P2.31作AIN5使用123為0時,P3.0作GPIO使用為1時,P3.0作地址線A0使用復(fù)位時,BOOT1:0引腳都為低電平時,該位為124為0時,P3.1作GPIO使用為1時,P3.1作地址線A1使用復(fù)位時,BOOT1引腳為低電平時,該位為127:25控制P3.23/A23和P3.22/A2中的地址總線的數(shù)目復(fù)位時,BOOT1:0引腳都為高電平時,該域為000,否則為11131:28保留PINSEL2[5:4]數(shù)據(jù)總線寬度P2.27:15P2.15:8P2.7:0P3.31P3.30P3.29:28P1.1P1.0008位——D[7:0]BLS0——OECS00116位—D[15:0]D[7:0]BLS0BLS1—OECS01032位D[31:16]D[15:0]D[7:0]BLS0BLS1BLS3:2OECS011無————————外部總線設(shè)置PINSEL[5:4]與數(shù)據(jù)總線和控制線的關(guān)系列表PINSEL2[27:25]000001010011100101110111地址線寬度無地址線A3:2A5:2A7:2A11:2A15:2A19:2A23:2PINSEL[27:25]與地址線的關(guān)系列表注:“—”表示該引腳不作數(shù)據(jù)總線使用,可作其它用途。引腳功能的設(shè)置過程使用示例——將P0.8、P0.9設(shè)置為TxD1、RxD1PINSEL0=0x05<<16;C代碼:通過查閱PINSEL0寄存器設(shè)置表,得到P0.9和P0.8的控制位為PINSEL0[19:16],當(dāng)該域設(shè)置為[0101](0x05)時選擇RxD1和TxD1;為了不影響別的管腳連接設(shè)置,通常選擇下面的設(shè)置方法。PINSEL0=(PINSEL0&0xFFF0FFFF)|(0x05<<16);C代碼:注意

LPC2200系列微控制器是總線開放型芯片,其總線寬度可設(shè)置為8位、16位或32位,對于沒有使用到的總線引腳(比如16位總線寬度時,D16~D31位沒有使用),可作為GPIO使用。4GPIO特性

LPC2000系列作為“微控制器”,其GPIO特性就顯得很重要。它具有如下的特性:可以獨立控制每個GPIO口的方向(輸入/輸出模式);可以獨立設(shè)置每個GPIO的輸出狀態(tài)(高/低電平);所有GPIO口在復(fù)位后默認(rèn)為輸入狀態(tài)。應(yīng)用檢測數(shù)字輸入,如鍵盤或開關(guān)信號驅(qū)動LED或其它指示器控制片外器件引腳描述

LPC2114/2124微控制器具有兩個端口——P0和P1,可以作為GPIO使用的引腳數(shù)為46個。

LPC2210/2212/2214微控制器還包含另外兩個端口——P2和P3,這個兩個端口與外部存儲器總線復(fù)用,當(dāng)它們?nèi)孔鳛镚PIO使用時,GPIO引腳數(shù)多達(dá)112個。LPC2103只有1個32位的通用I/O口P0[31:0],由于與引腳的其它功能復(fù)用,在使用前要進(jìn)行相關(guān)的引腳設(shè)置,然后才能進(jìn)行操作。其中,P0.27~P0.31是JTAG調(diào)試引腳,在復(fù)位時,如果DEBUG引腳為高,則P0[31:27]是不能作為GPIO使用的,只能作為JTAG調(diào)試引腳;反之,如果復(fù)位時DEBUG引腳為低,則P0[31:27]引腳可以由用戶設(shè)置,此時,調(diào)試禁止。EasyARM2103實驗板上,由JP8可以控制DEBUG引腳,從而控制P0.27~P0.31是作為JTAG還是GPIO引腳描述GPIO與控制寄存器的關(guān)系PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10引腳PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10通用名稱描述訪問類型復(fù)位值IOPINGPIO引腳值寄存器,不管方向模式如何,引腳的當(dāng)前狀態(tài)都可以從該寄存器中讀出只讀NAIOSETGPIO輸出置位寄存器。該寄存器控制引腳輸出高電平讀/置位0x00000000IOCLRGPIO輸出置位寄存器。該寄存器控制引腳輸出低電平只清零0x00000000IODIRGPIO方向控制寄存器。該寄存器單獨控制每個IO口的方向讀/寫0x00000000GPIO相關(guān)寄存器描述PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相關(guān)寄存器描述——IOxPINIOxPIN描述復(fù)位值31:0GPIO引腳值。IOxPIN[0]對應(yīng)于Px.0…IOxPIN[31]對應(yīng)于Px.31引腳未定義

該寄存器反映了當(dāng)前引腳的狀態(tài)。IOxPIN中的x對應(yīng)于某一個端口,如P1口對應(yīng)于IO1PIN。所以芯片存在多少個端口,就有多少個IOxPIN分別與之對應(yīng)。寫該寄存器會將值保存到輸出寄存器,具體使用稍后介紹。注意:無論引腳被設(shè)置為輸入還是輸出模式,都不影響引腳狀態(tài)的讀出。PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相關(guān)寄存器描述——IOxDIRIOxDIR描述復(fù)位值31:0方向控制位。IOxDIR[0]對應(yīng)于Px.0…IOxDIR[31]對應(yīng)于Px.31引腳未定義

當(dāng)引腳設(shè)置為GPIO輸出模式時,可使用該寄存器控制引腳的方向。向某位寫入1使對應(yīng)引腳作為輸出功能,寫入0時作為輸入功能。作為輸入功能時,引腳處于高阻態(tài)。PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相關(guān)寄存器描述——IOxSETIOxSET描述復(fù)位值31:0輸出置位。IOxSET[0]對應(yīng)于Px.0…IOxPIN[31]對應(yīng)于Px.31引腳未定義

當(dāng)引腳設(shè)置為GPIO輸出模式時,可使用該寄存器從引腳輸出高電平。向某位寫入1使對應(yīng)引腳輸出高電平。寫入0無效。從該寄存器讀回的數(shù)據(jù)為GPIO輸出寄存器的值。該值不反映外部環(huán)境對引腳的影響。PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10GPIO相關(guān)寄存器描述——IOxCLRIOxCLR描述復(fù)位值31:0輸出清零。IOxCLR[0]對應(yīng)于Px.0…IOxCLR[31]對應(yīng)于Px.31引腳未定義

當(dāng)引腳設(shè)置為GPIO輸出模式時,可使用該寄存器從引腳輸出低電平。向某位寫入1使對應(yīng)引腳輸出低電平。寫入0無效。注意:讀取該寄存器無效,不能讀回輸出寄存器的值。使用GPIO注意要點引腳設(shè)置為輸出方式時,輸出狀態(tài)由IOxSET和IOxCLR中最后操作的寄存器決定;大部分GPIO輸出為推挽方式(個別引腳為開漏輸出),正常拉出/灌入電流均為4mA(短時間極限值40mA);復(fù)位后默認(rèn)所有GPIO為輸入模式。...PINSEL0&=0xFFFFFFFC;IO0DIR|=0x00000001;IO0SET=0x00000001;...C代碼:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO應(yīng)用示例——設(shè)置P0.0輸出高電平P0.0(1)設(shè)置引腳連接模塊,P0.0為GPIO(2)設(shè)置P0.0口方向,設(shè)置為輸出(3)設(shè)置P0.0口狀態(tài),輸出高電平1

...uint32PinStat;PINSEL0&=0xFFFFFFFC;IO0DIR&=0xFFFFFFFE;

PinStat=IO0PIN;...C代碼:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10GPIO應(yīng)用示例——讀取P0.0引腳狀態(tài)P0.0(1)設(shè)置引腳連接模塊,P0.0為GPIO(2)設(shè)置P0.0口方向,設(shè)置為輸入(3)從IO0PIN讀取引腳狀態(tài)IO0PIN#defineDataBus0xFFPINSEL0&=0xFFFF0000;IO0DIR|=DataBus;IO0CLR=DataBus;IO0SET=Data;...使用IOxSET和IOxCLR實現(xiàn):GPIO應(yīng)用示例——輸出多位數(shù)據(jù)至IO口(1)設(shè)置引腳連接模塊,P0.0~7為GPIO(2)設(shè)置P0.0口方向,設(shè)置為輸出(3)清零8位IO口的輸出狀態(tài)

在需要將多位數(shù)據(jù)同時輸出到某幾個IO口線時,通常使用IOxSET和IOxCLR來實現(xiàn),在某些情況下也可以使用IOxPIN寄存器實現(xiàn)。后者可以在多個IO口上直接輸出0和1電平。

本例將8位無符號整數(shù)變量Data的值輸出到P0.0~P0.7。(4)Data變量中為1的位將輸出高電平0x??0x00Data數(shù)據(jù)輸出線:#defineDataBus0xFFPINSEL0&=0xFFFF0000;IO0DIR|=DataBus;IO0PIN=(IO0SET&0xFFFFFF00)|Data;...GPIO應(yīng)用示例——輸出多位數(shù)據(jù)至IO口(1)設(shè)置引腳連接模塊,P0.0為GPIO(2)設(shè)置P0.0口方向,設(shè)置為輸出(3)寫IO0PIN,輸出數(shù)據(jù)

在需要將多位數(shù)據(jù)同時輸出到某幾個IO口線時,通常使用IOxSET和IOxCLR來實現(xiàn),在某些情況下也可以使用IOxPIN寄存器實現(xiàn)。后者可以在多個IO口上直接輸出0和1電平。

本例將8位無符號整數(shù)變量Data的值輸出到P0.0~P0.7。使用IOxPIN實現(xiàn):0x??Data數(shù)據(jù)輸出線:0x??0x00Data與前者對比:特殊:LPC2103GPIO的模式LPC2103的GPIO有兩種模式:高速GPIO和低速GPIO(相對高速而言)。高速GPIO的控制寄存器位于CPU的局部總線上,可進(jìn)行高速的讀寫操作。低速GPIO的控制寄存器是掛在VPB總線上。表4.4所列寄存器是用來選擇GPIO的操作模式。當(dāng)GPIO0M位的值為0時,選擇低速GPIO,當(dāng)GPIO0M位的值為1時,選擇高速GPIO。在使用引腳的GPIO時,必須選擇GPIO的操作模式。而表4.6所列是高速GPIO的相關(guān)寄存器,掛在局部總線上,對掛在局部總線上的這些寄存器的訪問,就如訪問片內(nèi)存儲器一樣快速。P0口作為高速GPIO使用時,將不能在調(diào)試環(huán)境下觀察GPIO在VPB總線上的寄存器。高速GPIO時的控制寄存器FIOMASK寄存器只有在高速GPIO的情況下才有,此寄存器可以選擇端口的引腳是否受寄存器FIOPIN、FIOSET或FIOCLR寫操作的影響。當(dāng)寄存器寫0時,對應(yīng)位的引腳可以通過相應(yīng)的寄存器來訪問;當(dāng)寄存器寫1時,對應(yīng)位的引腳將不響應(yīng)通過寄存器FIOPIN、FIOSET或FIOCLR的寫操作,對FIOPIN的讀操作將不會獲取對應(yīng)位的引腳最新狀態(tài)。高速GPIO端口0除了一個32位的屏蔽寄存器之外,還有4個8位的字節(jié)屏蔽寄存器和2個16的半字屏蔽寄存器,它們有跟32位的屏蔽寄存器一樣的功能,這些寄存器的描述如表4.19所示。高速GPIO除了一個32位的方向控制寄存器之外,還有4個8位字節(jié)方向控制寄存器和2個16位半字方向控制寄存器。它們的功能同32位方向控制寄存器一樣,它們的描述如表4.14所示,這些寄存器可以使高速GP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論