深入CC3200(4)—GPIO相关函数解析(1)
本系列博文以TI官方的LaunchPad硬件电路板为例讲解。
目录:C:\TI\CC3200SDK_1.1.0\cc3200-sdk\example 对应众多代码例程。
目录:C:\TI\CC3200SDK_1.1.0\cc3200-sdk\docs\examples 有各个例程相关的文档。
目录:C:\TI\CC3200SDK_1.1.0\cc3200-sdk\docs\hardware 有开发板的硬件原理图。
1. GPIO分组
CC3200的GPIO总共四组,即:PA0 - PA3,每组有8个口,CC3200芯片总共有27个GPIO口可配置,分别为:GPIO0-GPIO17、GPIO22-GPIO25、GPIO28-GPIO32,具体参数如下:
2. 芯片管脚
芯片的管脚原理图(非常重要)(…\hardware\CC3200-LAUNCHXL_SCH_Rev3p2-A.pdf)如下:
3. GPIO配置举例
首先配置GPIO,根据上图获取所需要配置的GPIO管脚对应的标号,比如:开发板中的三个LED灯对应管脚GPIO9、GPIO10、GPIO11分别对应PIN64、PIN1、PIN2,其具体配置如下:
//在文件pinmux.c中 void PinMuxConfig(void) { //使能外设时钟, 等价于调用函数PRCMPeripheralClkEnable MAP_PRCMPeripheralClkEnable(PRCM_GPIOA1, PRCM_RUN_MODE_CLK); //GPIO9属性,函数等价于PinTypeGPIO MAP_PinTypeGPIO(PIN_64, PIN_MODE_0, false); //管脚方式,函数等价于GPIODirModeSet MAP_GPIODirModeSet(GPIOA1_BASE, 0x2, GPIO_DIR_MODE_OUT); //配置GPIO10为输出 MAP_PinTypeGPIO(PIN_01, PIN_MODE_0, false); MAP_GPIODirModeSet(GPIOA1_BASE, 0x4, GPIO_DIR_MODE_OUT); //配置GPIO11为输出 MAP_PinTypeGPIO(PIN_02, PIN_MODE_0, false); MAP_GPIODirModeSet(GPIOA1_BASE, 0x8, GPIO_DIR_MODE_OUT); }
4. 介绍GPIO配置函数
这些函数都来源于TI官方做好的driverlib,类似STM32开发中的库函数(其实就是),函数的具体实现在目录(…\cc3200-sdk\driverlib)下查看。
(1)void PRCMPeripheralClkEnable(unsigned long ulPeripheral, unsigned long ulClkFlags);
(2)void PinTypeGPIO(unsigned long ulPin,unsigned long ulPinMode,tBoolean bOpenDrain);
确认各参数的方法:
ulPin -> GPIO口所对应的管脚标号,如:GPIO9 -> PIN64
ulPinMode -> Mode 需要查看完整版的编程手册地址,大约在483页往下的内容,部分截图如下:
bOpenDrain -> 是否使用OD模式
(3)void GPIODirModeSet(unsigned long ulPort, unsigned char ucPins, unsigned long ulPinIO);
确认各个参数的方法:
ulPort -> A(GPIO编号/8 – 1),例:GPIO8对应的ulPort = A(8/8-1) = A0,如下:
ucPin -> PAx口对应的位值,比如:GPIO8对应PA1口的第0 BIT位(00b),GPIO9对应PA1口的第1 BIT位(10b),GPIO10对应第2 BIT位(100b),依次类推。
注:
(1)其实这个地方完全可以使用GPIO_PIN_0、GPIO_PIN_1… 代替(已在gpio.h中定义)。
(2)关于函数实现的具体功能已经函数各个形参的含义,请查看目录(…\cc3200-sdk\docs)下的CC3200-Peripheral_Driver_Library_User's_Guide.chm,讲的非常清楚明了。
以上是GPIO管脚属性的配置函数,接下来设置管脚电平就可以了。