• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > cortex M3S811學(xué)習(xí)筆記-GPIO-INT

    cortex M3S811學(xué)習(xí)筆記-GPIO-INT

    作者: 時(shí)間:2012-10-11 來源:網(wǎng)絡(luò) 收藏

    首先是通用IO口,不管學(xué)什么單片機(jī),IO口都是最重要和最好學(xué)的。重要是因?yàn)樗菃纹瑱C(jī)與處圍器件的接口,同樣也是我們通常所說的人機(jī)接口,好學(xué)是因?yàn)樗目刂迫菀祝瑹o非就是使能端口,設(shè)方向,然后就是寫數(shù)據(jù)或是讀數(shù)據(jù)了(根據(jù)你設(shè)的方向而定),這款超強(qiáng)的arm核的32位的小東西的IO口也有不同之處,畢竟是ARM核,IO的寄存器也豐富了不少。下面就來看看與IO口有關(guān)的函數(shù)。

    1.按順序來,先使能IO口。只有使能了他才能用,所以當(dāng)然是第一步了。
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA)

    這就是使能A端口函數(shù),即A端口可以用了,他的大門向你敞開了 。
    A端口不是在物理特征上有6個(gè)腳嗎?GPIOA就代表那6個(gè)腳。
    那么M3有多少個(gè)其它的通用IO口呢,數(shù)一數(shù)就知道。想用他就要了解好他。PA 0-5 PB 0-7 PC 0-7 PD 0-7 PE 0-2 ==========有規(guī)律不,好像有點(diǎn)亂,這樣看, 51里是這樣的,P0,P1,P2,P3//
    同樣這里是PA,PB,PC,PD.那PE呢,這么哪來的?因?yàn)槲覀兊腜A只有6個(gè)管腳了,所以說他把自己的兩只腳給別人了(PE1,2)。和51一樣,都是32個(gè)腳。
    這就記住了吧,PA六個(gè)腳 PE 兩個(gè)腳,PE兩個(gè)腳還可以當(dāng)電機(jī)跑(因?yàn)樗牡诙δ苁莗wm4,pwm5)。

    其它的腳就不用說了,8個(gè)是電源和地,還有復(fù)位,兩個(gè)接晶振啊,LD0穩(wěn)壓塊的腳啊。這一共就去了44個(gè)腳,還有四個(gè)腳就是AD接口了AD0—AD3.剛才使能了端口,端口就活了,能用了,但是那函數(shù)單詞太長,不會記。怎么辦,就搞個(gè)宏定義嘍,搞個(gè)自己認(rèn)識的。
    #define DEVICEEN SysCtlPeripheralEnable
    使能設(shè)備,這樣就搞定了,

    第二步是干啥呢,你是要干嘛,最普通的,你是接按鈕(input),還是接led(output)呢?
    對就是置方向了,方向就三個(gè).
    void GPIOPinTypeGPIOInpu (unsigned long ulPort, unsigned char ucPins)
    void GPIOPinTypeGPIOOutput (unsigned long ulPort, unsigned char ucPins)
    ulPort 是哪個(gè)端口, ucPins是哪一個(gè)或哪幾個(gè)腳
    函數(shù)名太長了,還是搞個(gè)自己熟悉的宏定義
    #define GPIOIN GPIOPinTypeGPIOInpu
    #define GPIOOUT GPIOPinTypeGPIOOutput
    現(xiàn)在就舉個(gè)例:把PA的第0腳設(shè)為輸出,第二腳設(shè)為輸入。

    GPIOOUT( GPIO_PORTA_BASE, GPIO_PIN_0)
    GPIOIN ( GPIO_PORTA_BASE, GPIO_PIN_2)

    當(dāng)然我還是認(rèn)為GPIO_PORTA_BASE, GPIO_PIN_2這些東西太長了,
    畢竟是要經(jīng)常打交道的東西,我再搞個(gè)宏定義:
    #define PA GPIO_PORTA_BASE
    #define PIN2 GPIO_PIN_2

    那上面的語句就變成了,GPIOIN(PA,PIN2);
    感覺清爽了不少( 注意:自己定義的宏自己一定要記得)


    第三步,方向也設(shè)了,那就剩讀數(shù),寫數(shù)了。
    void GPIOPinWrite(unsigned long ulPort, unsigned char ucPins, unsigned char ucVal);
    long GPIOPinRead(unsigned long ulPort, unsigned char ucPins)

    接著宏定義:
    #define WRITE GPIOPinWrite
    #define READ GPIOPinRead

    現(xiàn)在就可以點(diǎn)燈了,如果你的PA0接了一個(gè)led,(陰極接地)
    只需要此語句就能將它點(diǎn)亮:WRITE(PA,PIN0,1);



    關(guān)鍵詞: cortex M3S811 GPIO-INT

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 沁源县| 安顺市| 博白县| 九寨沟县| 白河县| 烟台市| 辽中县| 盐津县| 济南市| 灵丘县| 忻州市| 舞钢市| 汪清县| 淅川县| 定安县| 武胜县| 体育| 柳江县| 磐安县| 攀枝花市| 商河县| 石门县| 河间市| 邯郸县| 青浦区| 木兰县| 莒南县| 昌邑市| 本溪市| 马龙县| 石河子市| 寿阳县| 重庆市| 兴隆县| 甘德县| 光泽县| 高平市| 博白县| 云南省| 营山县| 黄陵县|