一、序言
前面已经可以实现从服务器获得用户想要的浇水量,下面就需要对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有关引脚的配置,等等。
五、视频展示
到此为止,整个远程浇水系统就完成了,达不到商品化的稳定性,但能够在较长时间内实现该功能。
视频地址: https://www.bilibili.com/video/av43996928