简单介绍些cc3200 的一些参数:
主频80M,ROM64kb,Sram 256kb 等等……
第一个LED灯
路径:C:\TI\CC3200SDK_1.2.0\cc3200-sdk\example\blinky\ewarm
以第一个Blink 示例demo开始~
代码很少,大概能猜测到是什么意思,首先来个BoardInit,发现好像每个工程都有个这个函数,有兴趣的人可以更深入的看看GoTo过去,貌似是根据环境不同(CCS or IAR)来配置中断表? 大致是这样,同时还有些函数是看不到实体的,这时候可以借助文档:
C:\TI\CC3200SDK_1.2.0\cc3200-sdk\docs\CC3200-Peripheral_Driver_Library_User's_Guide.chm
这个可以查到,举个例子:
MAP_PRCMPeripheralClkEnable(PRCM_GPIOA1,PRCM_RUN_MODE_CLK);
字面上的意思可以知道这个是开启某个时钟~(实际就是GPIOA1的时钟啦~那么第二个参数什么意思呢?参看文档:
这就可以知道,一个是用在睡眠情况下仍然可以保持该时钟是工作的。什么函数不明白都可直接查看该文档~
--------------------------------------------------------- 以下图片取自CC3200MOD.pdf文档(芯片数据手册)
要注意的是MODULE PINNAME 跟 DEVICE PIN NO 这两列~
举个例子:
根据我们刚打开的Blink工程,有3个LED灯,如下是它们的初始化方式:
// Configure PIN_64 for GPIOOutput
MAP_PinTypeGPIO(PIN_64, PIN_MODE_0, false);
这里为什么是PIN_64?PIN_MODE_0又代表什么意思
答:参看原理图可以知道3个LED等分别连接着GPIO_9,10,11,再看看数据手册的Pin Attributes部分~
有木有发现GPIO_9对应的DevicePinNo上写的是64~,
同样PIN_MODE_0可在如下表中找到~
相同道理,如果要初始化个UART,SPI,I2C什么的,也是要先这么定义,在此就不再多少其他外设初始化的东西了,官方给的demo里面都有,可以自己看下。
接下来: MAP_GPIODirModeSet(GPIOA1_BASE, 0x2,GPIO_DIR_MODE_OUT);
需要说明的是CC3200共有io口32个,
分成4组即
GPIOA0_BASE gpio0 --- gpio7
GPIOA1_BASE gpio8 ----- gpio15
GPIOA2_BASE gpio16 ---- gpio23
GPIOA3_BASE gpio24 ---- gpio31
(头文件定义了一个GPIOA4_BASE ,可能是为了以后拓展?目前还不懂)。
可以知道上面语句是设置GPIOA1的第2个引脚,即GPIO9这个引脚为输出方向,这样一个IO口的引脚配置好了。
置高GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_2,GPIO_PIN_2); 置低GPIOPinWrite(GPIOA1_BASE,GPIO_PIN_2,0);
以上函数同样查看文档:CC3200-Peripheral_Driver_Library_User's_Guide.chm
以上,驱动通用IO口完成,
测试:使用GPIO22引脚输出一个高低高低的波形。
那么代码是这样的:
MAP_PRCMPeripheralClkEnable(PRCM_GPIOA2,PRCM_RUN_MODE_CLK);
MAP_PinTypeGPIO(PIN_15,PIN_MODE_0, false);
MAP_GPIODirModeSet(GPIOA2_BASE,GPIO_PIN_6, GPIO_DIR_MODE_OUT);
While(1)
{
GPIOPinWrite(GPIOA2_BASE,GPIO_PIN_6,GPIO_PIN_6);
MAP_UtilsDelay(10000);
GPIOPinWrite(GPIOA2_BASE,GPIO_PIN_6,0);
MAP_UtilsDelay(10000);
}
这样使用逻辑分析仪抓取GPIO22这个口就能看到波形,(板子上的标号:P15,)
在此吐槽下,
1.官方写了个库,可是这IO口对应让我感觉好别扭(有PIN64对应GPIO_9的?再来就是有些直接写0x02,0x04什么的,不好猜啊,不知道哪个文档有相关描述呢。)
2.单单IO口置高置低的函数我看着参数也觉得好别扭(最后一个参数应该为0或者1比较好吧?)
好奇葩的驱动方式啊,不知道大家是不是也像我这样驱动的~还是我的能力问题。。。大家仁者见仁……随便喷没事。。
3.cc3200板子上的丝印~~~不太明白啊。。感觉好乱,哈哈。
再有就是这个delay~,官方文档写了
比如我参数写的10000,那么它占用了多少时间呢~~~,一个delay占用3个周期,
80m的主频,那么算出来delay 10000 理论上应当 = 0.375ms 吧。??? 可实际是0.75ms~难道主频是40M,还是我算错了?
麻烦大家帮忙解释解释。
实际波形如下:
//-------------------------------------- uart 串口使用----------------------------------------------------------------------------
采用微库的printf~来往串口打印数据(串口重定向)。
采用的demo:
C:\TI\CC3200SDK_1.2.0\cc3200-sdk\example\uart_demo
该demo未修改时,会往串口打印一些信息,大家可以自行执行查看效果。
在PC机端编程时经常可以通过printf 来输出一些log,或者变量的值相当方便,下面介绍使用方法:
1.使用微库(#include "stdio.h")
2.重定向printf,即:
int fputc(intch,FILE *f)
{
UartPutChar(ch) ; // 关键是这里~~~这句话是cc3200往串口输出一个字节的语句~。
return (ch);
}
以上做完后编译~ 会报错:Error[Pe020]:identifier "FILE" is undefinedC:\TI\CC3200SDK_1.2.0\cc3200-sdk\example\uart_demo\main.c 100
这是IAR工程设置问题,FILE未定义啥的~,右键workspace的工程名uart_demo….选中Option,在GeneralOptions中选择Library Configuration
Library:此处选择Full。如此再编译看看。
按照人品应该编译通过了~,写个Hello world 来试试~当然printf的用法很多,
大家可以当做在PC端上的printf尽情使用啦。






