LM3S6911 GPIO操做

    最新在學習LM3S6911開發板子。和經典程序 Hello World! 程序是同樣的,拿到開發板的第一個程序就是寫一個流水燈的程序。編程

    可是這個板子有個問題,使用板載的ISP來下載編譯好的.bin文件很奇怪,能下載進去,可是現象不是想要的。可是改用ULinK2的時候就萬事大吉了。好的就不廢話了,先直接上代碼。函數

#include "hw_memmap.h"
#include "hw_types.h"
#include "debug.h"
#include "gpio.h"
#include "sysctl.h"

#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif

int main(void)
{
    volatile unsigned long ulLoop;

    //
    // 設置系統運行時鐘
    //
    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);

    //
    // Configure the GPIO that drives the on-board LED.
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
    GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_DIR_MODE_OUT);
    GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_3, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
    GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_3, GPIO_DIR_MODE_OUT);

    //蜂鳴器
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_DIR_MODE_OUT);

    //按鍵  
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
    GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_DIR_MODE_IN);
    
    //LED配置
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
    GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_6|GPIO_PIN_7, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
    GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_6|GPIO_PIN_7, GPIO_DIR_MODE_OUT);
 
    while(1)
    {
        while(GPIOPinRead(GPIO_PORTE_BASE,GPIO_PIN_0)==0)
        {
            GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_PIN_0);
        }
        //
        // 點亮燈
        //
        GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6, GPIO_PIN_6);
        GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_7, 0);
        GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, 0);
        //
        // 延遲一笑會
        //
        for(ulLoop = 0; ulLoop < 200000; ulLoop++)
        {
        }

        //
        // 關燈.
        //
        GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6, 0);
        GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_7, GPIO_PIN_7);
        GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, GPIO_PIN_0);
        //
        // 延遲一會.
        //
        for(ulLoop = 0; ulLoop < 200000; ulLoop++)
        {
        }
    }
}

    GPIODirModeGet    得到一個管腳的方向和模式。
函數原型:
    unsigned long GPIODirModeGet(unsigned long ulPort, unsigned char ucPin)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPin 是管腳編號。
描述:
    這個函數獲取所選 GPIO 端口某個特定管腳的方向和控制模式。 在軟件控制下這個管腳能夠配置成輸入或輸出,或者,管腳也可由硬件來控制。控制的類型和方向做爲一個枚舉數據類型被返回。
返回:
    返回在 GPIODirModeSet()中描述的一個枚舉數據類型。oop


    GPIODirModeSet 設置指定管腳的方向和模式。
函數原型:
    void GPIODirModeSet(unsigned long ulPort, unsigned char ucPins, unsigned long ulPinIO)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPins 是管腳的位組合(bit-packed) 。
    ulPinIO 是管腳方向「與/或」模式。
描述:
    這個函數在軟件控制下將所選 GPIO 端口的指定管腳設置成輸入或輸出,或者,也能夠將管腳設置成由硬件來控制。
參數 ulPinIO 是一個枚舉數據類型,它能夠是下面的其中一個值:
     GPIO_DIR_MODE_IN;
     GPIO_DIR_MODE_OUT;
     GPIO_DIR_MODE_HW。
在上面的值中,GPIO_DIR_MODE_IN 代表管腳將被編程用做一個軟件控制的輸入,GPIO_DIR_MODE_OUT 表 明 管 腳 將 被 編 程 用 做 一 個 軟 件 控 制 的 輸 出 ,GPIO_DIR_MODE_HW 代表管腳將被設置成由硬件進行控制。管腳用一個位組合(bit-packed)的字節來指定,這裏的每一個字節,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
返回:
    無。學習

    GPIOIntTypeGet 獲取管腳的中斷類型。
函數原型:
unsigned long GPIOIntTypeGet(unsigned long ulPort, unsigned char ucPin)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPin 是管腳編號。
描述:
    這個函數獲取所選 GPIO 端口上某個特定管腳的中斷類型。管腳可配置成在降低沿、上升沿或兩個邊沿檢測中斷,或者,它也能夠配置成在低電平或高電平檢測中斷。中斷檢測機制的類型做爲一個枚舉數據類型返回。
返回:spa

    返回 GPIOIntTypeSet()中描述的一個枚舉數據類型。debug



     GPIOIntTypeSet 設置指定管腳的中斷類型。
函數原型:
void GPIOIntTypeSet(unsigned long ulPort, unsigned char ucPins, unsigned long ulIntType)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPins 是特定管腳的位組合(bit-packed)表示。
    ulIntType 指定中斷觸發機制的類型。
描述:
    這個函數爲所選 GPIO 端口上特定的管腳設置不一樣的中斷觸發機制。參數 ulIntType 是一個枚舉數據類型,它能夠是下面其中的一個值:
    GPIO_FALLING_EDGE;  
指針

    GPIO_RISING_EDGE;
    GPIO_BOTH_EDGES;
    GPIO_LOW_LEVEL;
    GPIO_HIGH_LEVEL。
    在上面的值中,不一樣的值描述了中斷檢測機制(邊沿或電平)和特定的觸發事件(邊沿檢測的上升沿、降低沿或上升/降低沿,電平檢測的低電平或高電平) 。管腳用一個位組合(bit-packed)的字節來指定,這裏的每一個字節,置位的位用來識別
被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。注:爲了不僞中斷,用戶必須確保 GPIO 輸入在這個函數的執行過程當中保持穩定。
返回:
無。code

    GPIOPadConfigGet 獲取管腳的配置。
函數原型:
void GPIOPadConfigGet(unsigned long ulPort,unsigned char ucPin,unsigned long *pulStrength,unsigned long *pulPinType)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPin 是管腳編號。
    pulStrength 是輸出驅動強度存放處的指針。
    pulPinType 是輸出驅動類型存放處的指針。
描述:
    這個函數獲取所選 GPIO 上某個特定管腳的端口配置。 pulStrength 和 pulPinType 返回的值與 GPIOPadConfigSet()中使用的值相對應。這個函數也能夠獲取用做輸入管腳的管腳配
置;可是,返回的惟一有意義的數據是管腳終端鏈接的是上拉電阻仍是下拉電阻。
返回:
    無。

    GPIOPadConfigSet 設置指定管腳的配置。
函數原型:
void GPIOPadConfigSet(unsigned long ulPort, unsigned char ucPins,unsigned long ulStrength,
unsigned long ulPinType)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPins 是特定管腳的位組合(bit-packed)表示。
    ulStrength 指定輸出驅動強度。
    ulPinType 指定管腳類型。
描述:
    這個函數設置所選 GPIO 端口指定管腳的驅動強度和類型。 對於配置用做輸入端口的管腳,端口按照要求配置,可是對輸入惟一真正的影響是上拉或下拉終端的配置。
參數 ulStrength 能夠是下面的一個值:
 GPIO_STRENGTH_2MA;
 GPIO_STRENGTH_4MA;
 GPIO_STRENGTH_8MA;
 GPIO_STRENGTH_8MA_SC。
在上面的值中,GPIO_STRENGTH_xMA 指示 二、4 或 8mA 的輸出驅動強度;而GPIO_OUT_STRENGTH_8MA_SC 指定了帶斜率控制(slew control)的 8mA 輸出驅動。
參數 ulPinType 能夠是下面的其中一個值:
 GPIO_PIN_TYPE_STD;
 GPIO_PIN_TYPE_STD_WPU;
 GPIO_PIN_TYPE_STD_WPD;
 GPIO_PIN_TYPE_OD;
 GPIO_PIN_TYPE_OD_WPU;
 GPIO_PIN_TYPE_OD_WPD;
 GPIO_PIN_TYPE_ANALOG。
在上面的值中,GPIO_PIN_TYPE_STD*指定一個推輓管腳,GPIO_PIN_TYPE_OD*指定 一 個 開 漏 管 腳 , *_WPU 指 定 一 個 弱 上 拉 , *_WPD 指 定 一 個 弱 下 拉 ,GPIO_PIN_TYPE_ANALOG 指定一個模擬輸入(對於比較器來講) 。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
返回:
    無。

 GPIOPinIntClear 清除指定管腳的中斷。
函數原型:
void GPIOPinIntClear(unsigned long ulPort, unsigned char ucPins)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPins 是特定管腳的位組合(bit-packed)表示。
描述:
清除指定管腳的中斷。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。事件

注:因爲在 Cortex-M3 處理器包含有一個寫入緩衝區,處理器可能要過幾個時鐘週期才能真正把中斷源清除。所以,建議在中斷處理程序中要早些把中斷源清除掉(反對在最後的操做中才清除中斷源)以免在真正清除中斷源以前從中斷處理程序中返回。操做失敗可能會致使當即再次進入中斷處理程序。 (由於NVIC 仍會把中斷源看做是有效的) 。
返回:
無。

    GPIOPinIntDisable關閉指定管腳的中斷。
函數原型:
    void GPIOPinIntDisable(unsigned long ulPort, unsigned char ucPins)
參數:
ulPort 是 GPIO 端口的基址。
ucPins 是管腳的位組合(bit-packed)表示。
描述:
屏蔽指定管腳的中斷。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被
訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
返回:
無。

    GPIOPinIntEnable 使能指定管腳的中斷。
函數原型:
void GPIOPinIntEnable(unsigned long ulPort,unsigned char ucPins)
參數:
ulPort 是 GPIO 端口的基址。
ucPins 是特定管腳的位組合(bit-packed)表示。
描述:
不屏蔽指定管腳的中斷。
管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
返回:
無。

 GPIOPinIntStatus 獲取所指定 GPIO 端口的中斷狀態
函數原型:
long GPIOPinIntStatus(unsigned long ulPort tBoolean bMasked)
參數:
ulPort 是 GPIO 端口的基址。
bMasked 指定返回的是屏蔽的中斷狀態仍是原始的中斷狀態。
描述:
若是 bMasked 被設置成 True,則返回屏蔽的中斷狀態;不然,返回原始的中斷狀態。
返回:
  返回一個位填充(bit-packed)的字節,在這個字節中,置位的位用來識別一個有效的屏蔽或原始中斷,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。位
31:8 應該忽略。

GPIOPinRead 讀取指定管腳上出現的值。
函數原型:
long GPIOPinRead(unsigned long ulPort,unsigned char ucPins)
參數:
ulPort 是 GPIO 端口的基址。
ucPins 是管腳的位組合(bit-packed)表示。
描述:
讀取指定管腳(由 ucPins 指定的)的值。輸入和輸出管腳的值都能返回,ucPins 未指定的管腳的值被設置成 0。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
返回:
返回一個位填充的字節, 它提供了指定管腳的狀態, 字節的位 0 表明 GPIO 端口管腳 0,
位 1 表明 GPIO 端口管腳 1,等等。ucPins 未指定的位返回 0。位 31:8 應該忽略。

GPIOPinTypeADC 配置管腳,使其做爲模數轉換輸入使用。
函數原型:
void GPIOPinTypeADC(unsigned long ulPort,unsigned char ucPins)
參數:
ulPort 是 GPIO 端口的基址。
ucPins 是管腳的位組合(bit-packed)表示。
描述:
模數轉換輸入管腳必須正確配置,使其在 DustDevil-class 器件中能正常工做。這個函數爲這些管腳提供合適的配置。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
注:這個函數不能把任何一個管腳變作 ADC 輸入,它僅配置一個 ADC 輸入來進行正確的操做。
返回:
無。
 
GPIOPinTypeCAN 配置管腳,使其用做一個 CAN 器件
函數原型:
void GPIOPinTypeCAN(unsigned long ulPort,unsigned char ucPins)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPins 是管腳的位組合(bit-packed) )表示。
描述:
    CAN 管腳必須正確配置, 使 CAN 外設能正常工做。 這個函數爲這些管腳提供了一個典型的配置;其餘配置的工做取決於板的設置(例如:使用片內上拉)管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。注:這個函數不能把任何管腳變爲一個 CAN 管腳;它僅配置一個 CAN 管腳來進行正確操做。
返回:
無。

    GPIOPinTypeComparator配置管腳用做一個模擬比較器的輸入。
函數原型:
    void GPIOPinTypeComparator(unsigned long ulPort,unsigned char ucPins)
參數:
    ulPort 是 GPIO 端口的基址。
    cPins 是管腳的位組合(bit-packed)表示。
描述:
    模擬比較器輸入管腳必須正確配置, 以便模擬比較器能正常工做。 這個函數爲用做模擬比較器輸入的管腳提供了正確的配置。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
注: 這個函數不能用來將任意管腳都變成一個模擬輸入; 它只配置一個模擬比較器管腳進行正確操做。
返回:
    無。

    GPIOPinTypeGPIOInput配置管腳用做 GPIO 輸入。
函數原型:
    void GPIOPinTypeGPIOInput(unsigned long ulPort, unsigned char ucPins)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPins 是管腳的位組合(bit-packed)表示。
描述:
    GPIO 管腳必須正確配置,以便 GPIO 輸入能正常工做。這一點,特別是對於 Fury-class器件來講是很重要的,在Furry-class 器件中,數字輸入使能在默認狀態下是關閉的。這個這個函數爲用做 GPIO 管腳提供了正確的配置。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
返回:
    無。

    GPIOPinTypeGPIOOutput配置管腳用做 GPIO 輸出。
函數原型:
    void GPIOPinTypeGPIOOutput(unsigned long ulPort,unsigned char ucPins)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPins 是管腳的位組合(bit-packed)表示。
描述:
    GPIO 管腳必須正確配置,以便做爲 GPIO 輸出能正常工做。這一點,特別是對於Fury-class 器件來講是很重要的,在 Furry-class 器件中,數字輸入使能在默認狀態下是關閉的。這個這個函數爲用做 GPIO 管腳提供了正確的配置。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
返回:
    無。

    GPIOPinTypeGPIOOutputOD 配置管腳用做 GPIO 開漏輸出。
函數原型:
void GPIOPinTypeGPIOOutpuODt(unsigned long ulPort,unsigned char ucPins)
參數:
    ulPort 是 GPIO 端口的基址。
    ucPins 是管腳的位組合(bit-packed)表示。
 
描述:
    GPIO 管腳必須正確配置,以便能做爲GPIO 輸出正常工做。這一點,特別是對於Fury-class 器件來講是很重要的,在 Furry-class 器件中,數字輸入使能在默認狀態下是關閉的。這個這個函數爲用做 GPIO 管腳提供了正確的配置。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
返回:
    無。

    GPIOPinTypeI2C 配置管腳供I 2 C外設使用。
函數原型:
    void GPIOPinTypeI2C(unsigned long ulPort,unsigned char ucPins)
參數:
    ulPort 是 GPIO 端口的基址。
ucPins 是管腳的位組合(bit-packed)表示。
描述:
    I 2 C管腳必須正確配置,以便I2C外設可以正常工做。這個函數爲用做I 2 C功能的管腳提供了正確配置。管腳用一個位組合(bit-packed)的字節來指定,在這個字節中,置位的位用來識別被訪問的管腳,字節的位 0 表明 GPIO 端口管腳 0、位 1 表明 GPIO 端口管腳 1 等等。
注:這個函數不能用來將任意管腳都變成一個 I2C 管腳;它只配置一個 I2C 管腳來進行正確操做。
返回:
    無。

ip

相關文章
相關標籤/搜索