一、序言
前面已經可以實現從服務器獲得用戶想要的澆水量,下面就需要對IO口進行拉高拉低對水泵的啓停進行控制。
二、CC3200 GPIO 簡介
CC3200所有邏輯引腳和部分模擬引腳均可以用來作爲通用輸入/輸出(GPIO)使用。GPIO功能可用於各種邏輯輸入輸出的場合。 GPIO有4組(GPIO A0~A3),每組8個。 具體如下:
①. GPIO A0: GPIO_00~GPIO_07, 對應 GPIOA0.0~GPIOA0.7 。
②. GPIO A1: GPIO_08~GPIO_15, 對應 GPIOA1.0~GPIOA1.7 。
③. GPIO A2: GPIO_00~GPIO_07, 對應 GPIOA2.0~GPIOA2.7 。
④. GPIO A3: GPIO_00~GPIO_07, 對應 GPIOA3.0~GPIOA3.7 。
根據功能引腳的配置不同, GPIO的數量有27個 。所有GPIO引腳具備中斷能力(電平有效或者邊沿有效、上升或下降沿觸發、有中斷屏蔽)。可用於出發DMA或作爲喚醒源。
三、簡單易懂實現IO口拉高拉低
CC3200 提供了一系列 API 去更方便的實現用戶想要的功能。在SDK的 driverlib 和 src 下。我們導入的例程都包含了這些API。但是例程裏面的實現方法顯得過於複雜,不易理解,但是對我們來說是一個重要的參考。下面 過濾掉 “_if_” 層,通過直接調用 API 實現對IO的拉高拉低。注意:重要的說明在程序的註釋中,對於每一個形參代表的意思的理解非常重要。
int
main()
{
BoardInit(); //板子初始化
/*--引腳配置 Start--*/
PinTypeGPIO(PIN_64, PIN_MODE_0, false); //參數:引腳名 引腳功能模式 開漏模式或STD
GPIODirModeSet(GPIOA1_BASE, GPIO_PIN_1, GPIO_DIR_MODE_OUT); //哪一組的端口地址 GPIO_A1的第1個 GPIO位權(0~7) 輸入或者輸出
/*--引腳配置 End--*/
while(1)
{
MAP_UtilsDelay(2000000);
GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1,GPIO_PIN_1); //拉高IO口
MAP_UtilsDelay(2000000);
GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1,0); //拉低IO口
}
}
這樣就實現了對於PIN_64引腳的拉高拉低操作,如果是launchpad的話就可以看到LED燈一直閃爍。
注: 在pin.h 和 gpio.h 中都對於每一個IO口的地址都進行了定義,對於每一個API只需要相對應的使用即可,但是,需要了解 T I對 CC3200 的引腳定義,知道其對應關係,具體參照下表。(引自源地的資料)
四、學習方法
TI 對於每一種功能都提供了例程,所以如果我們需要用到相應的功能就可以直接去參考例程中是如何配置的,這對於爲了快速的上手開發是一個行之有效的好方法。 比如:我們模數轉換會用到ADC ,那麼就可以直接去參考例程中的ADC有關引腳的配置,等等。