第一章 学习CC3200 GPIO输出

一、问题的引入首先看blinky main函数

代码

//#define BLINKY_MODE 01

//#define BLINKY_MODE 02

#define BLINKY_MODE 03

Void main(void)

{

   //初始化板子,我看了一下大概是中断向量表的映射,和其他的一些东西,这里我们不关心

   BoardInit();

   //使能时钟

   MAP_PRCMPeripheralClkEnable(PRCM_GPIOA1,PRCM_RUN_MODE_CLK);

 

   //设置成GPIO模式

   PinModeSet(PIN_64, PIN_MODE_0);

   //设置电流驱动能力2ma,普通

   PinConfigSet(PIN_64,PIN_STRENGTH_2MA,PIN_TYPE_STD);

 

   //设置成GPIO模式

   PinModeSet(PIN_01, PIN_MODE_0);

   //设置电流驱动能力2ma,普通

   PinConfigSet(PIN_01,PIN_STRENGTH_2MA,PIN_TYPE_STD);

 

   //设置成GPIO模式

   PinModeSet(PIN_02, PIN_MODE_0);

   //设置电流驱动能力2ma,普通

   PinConfigSet(PIN_02,PIN_STRENGTH_2MA,PIN_TYPE_STD);

 

   GPIODirModeSet(GPIOA1_BASE,GPIO_PIN_1,GPIO_DIR_MODE_OUT);

   GPIODirModeSet(GPIOA1_BASE,GPIO_PIN_2,GPIO_DIR_MODE_OUT);

   GPIODirModeSet(GPIOA1_BASE,GPIO_PIN_3,GPIO_DIR_MODE_OUT);

   while(1) {

#ifBLINKY_MODE == 01 //现象:跑马灯

           GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1,GPIO_PIN_1);

           delay(0xfffff);

           GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1,0);

           delay(0xfffff);

           GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_2,GPIO_PIN_2);

           delay(0xfffff);

           GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_2,0);

           delay(0xfffff);

           GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_3,GPIO_PIN_3);

           delay(0xfffff);

           GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_3,0);

           delay(0xfffff);

#endif

#ifBLINKY_MODE == 02  //现象全亮后全灭

   GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

           delay(0xfffff);

           GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,0);

           delay(0xfffff);

 

#endif

#ifBLINKY_MODE == 03//现象2个亮一个灭      2个灭1个亮

   GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_PIN_1|GPIO_PIN_2&(~GPIO_PIN_3));

           delay(0xfffff);

   GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,(~GPIO_PIN_1)&(~GPIO_PIN_2)|GPIO_PIN_3);

           delay(0xfffff);

 

#endif

   }

}

二、实现跑马灯实验需要对CC3200设置,分成四步

1、引脚映射成GPIO模式,上拉下拉等

库函数示例 PinModeSet(PIN_64, PIN_MODE_0);

PIN_64就是引脚编号,这里是引脚64

PIN_MODE_0就是映射的功能,这里是GPIO模式

设置引脚的电流强度、上拉、下拉、开漏等

PinConfigSet(PIN_64,PIN_STRENGTH_2MA,PIN_TYPE_STD);

PIN_64就是引脚编号,这里是引脚64

PIN_STRENGTH_2MA:电流强度,2ma,记得CC3200的电流强度大部分都是2ma,好像只有几根是4ma的,

PIN_TYPE_STD:没有上拉和下拉,没有开漏,是标准输入输出。

2、使能GPIO的时钟

库函数示例:MAP_PRCMPeripheralClkEnable(PRCM_GPIOA1,PRCM_RUN_MODE_CLK);使能GPIOA1的时钟,有些可能要问为什么是GPIOA1?我刚开始用的时候也疑问过,那就说起PIN_01了,PIN_01是芯片的第一个引脚,在<<CC3200  datasheet>>8页,

CC3200GPIO分成4组,每组都有自己的一根时钟,所以配置时需要查阅datasheet,引脚是对应于哪一个GPIO,这个GPIO又是哪一组。

PRCM_GPIOA1GPIOA1的时钟线。

PRCM_RUN_MODE_CLK:当cc3200在运行状态时,使能这个时钟,CC3200好像有3种运行模式,运行,睡眠,深度睡眠,这里是运行状态。

3、设置GPIO的输出

GPIODirModeSet(GPIOA1_BASE,GPIO_PIN_1,GPIO_DIR_MODE_OUT);

GPIOA1_BASE:GPIOA1组的GPIO

GPIO_PIN_1GPIO A1的第1GPIO,位权。

GPIO_DIR_MODE_OUT:输出模式

4、向GPIO的端口写入数据

GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1,GPIO_PIN_1);

GPIOA1_BASE:GPIO A1组的GPIO

参数的第1GPIO_PIN_1GPIO A1的第1GPIO

参数的第2GPIO_PIN_1GPIO A1_1输出高电平,为什么这里也是GPIO_PIN_1,其实这里我是取巧了,看一下这个函数的原型

GPIOPinWrite(unsignedlong ulPort, unsigned char ucPins, unsigned char ucVal);

ucPins可以等于GPIO_PIN_1|GPIO_PIN_2

ucVal可以是任意值,这里我用一段代码表示

if(ucPins&GPIO_PIN_1) {

   if (ucVal & GPIO_PIN_1) {

         GPIO_PIN_1输出高

} else {

         GPIO_PIN_1输出低

}

}

If(ucPins&GPIO_PIN_1 == 0) {

   GPIO_PIN_1不受影响

}

其他的GPIO依次类推

 

 

 

你可能感兴趣的:(第一章 学习CC3200 GPIO输出)