一起学CC3200系列教程之跑马灯---库

来源:互联网 发布:java幂等性是什么意思 编辑:程序博客网 时间:2024/05/17 05:58


版权所有,欢迎转载,请注明出处http://blog.csdn.net/hytgab

PDF下载:http://pan.baidu.com/s/1kTkSxmB

能力有限,英语不怎么好,难免有错,有问题请联系我,

QQ1519256298     hytga@163.com

实现跑马灯实验需要对CC3200设置,分成4个步骤


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

2、 使能GPIO的时钟

3、 配置GPIO:输入输出,

4、 向GPIO的端口写入数据

CC3200共有64引脚,共32个GPIO,分成4组,每组有8个,

所以CC3200的1个引脚有3中名称,

一种是基于引脚的,编号从0-63

一种是是基于总的GPIO,编号从0-31

一种是基于分组的GPIO,编号A0 –A3(或者A B C D)加(0-7)

引脚64的对应关系  :  PIN_64  ==   GPIO9   == GPIO A1_1

 

1、 设置引脚的映射,

库函数示例 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的时钟

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

库函数示例:PRCMPeripheralClkEnable(PRCM_GPIOA1,PRCM_RUN_MODE_CLK);

PRCM_GPIOA1:GPIOA2的时钟线

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_1:GPIO A1的第1个GPIO

GPIO_DIR_MODE_OUT:输出模式

4、 向GPIO的端口写入数据

GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_1,GPIO_PIN_1);

GPIOA1_BASE:GPIO A1组的GPIO

参数的第1个GPIO_PIN_1:GPIO A1的第1个GPIO

参数的第2个GPIO_PIN_1:GPIO 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依次类推

 

代码

//#defineBLINKY_MODE 01

//#defineBLINKY_MODE 02

#defineBLINKY_MODE 03

voidmain(void) {

 

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

   BoardInit();

   //使能时钟

   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

   }

}

0 0
原创粉丝点击