CC3200 LaunchXL到货,先上图
ARM M4内核并集成一块WIFI芯片,不过板上没啥东西,比CC2650DK和CC2650 SensorTag差太远。也不需要太复杂,能用基本的东西就行了。
这块板该从哪个地方开始学?一头雾水,先从zephyr自带的例子开始吧,又搞了好长时间,终于把例程\samples\basic\blinky编译完成,并烧到了开发板上,点亮了一个绿灯。但这样的开发板,怎么也要弄个跑马灯来玩玩吧。然后各种研究,终于很痛苦地发现,移植做得很简单,仅可以使用两个按钮和一个LED灯。这打击。。。。
200多大洋不能浪费啊,只能自力更生,艰苦奋斗。看来还得把CCS装回来,两边对照着做。终过一番折腾,总算是把跑马灯做出来了。虽然简单,也算是一个好的开头。
第一件事,先完善board.h头文件,它位于\boards\arm\cc3200_launchxl文件夹下。
参照CC3200的《Technical Reference Manual》,找到board.h的规律。CC3200的GPIO口被分成了四组:
- GPIO Port A0: 0x4000.4000
- GPIO Port A1: 0x4000.5000
- GPIO Port A2: 0x4000.6000
- GPIO Port A3: 0x4000.7000
三个LED分别接GPIO_09、GPIO_10、GPIO_11口,接下来查三个GPIO属于哪个端口:
可以看到9、10、11三个GPIO口都属于A1端口,编号分别为1、2、3
查看board.h代码,找到规律:LEDx_GPIO_PORT表示的是第几个端口,这里用“GPIO_A1”表示GPIO Port A1端口。而LEDx_GPIO_PIN表示此GPIO口所对应的编号。这时我们就可以把别两个LED灯加进board.h了。更改代码如下:
- #ifndef __INC_BOARD_H
- #define __INC_BOARD_H
- /* Push button switch 2 */
- #define SW2_GPIO_PIN 6 /* GPIO22/Pin15 */
- #define SW2_GPIO_NAME "GPIO_A2"
- /* Push button switch 3 */
- #define SW3_GPIO_PIN 5 /* GPIO13/Pin4 */
- #define SW3_GPIO_NAME "GPIO_A1"
- /* Push button switch 0: Map to SW2 so zephyr button example works */
- #define SW0_GPIO_PIN SW2_GPIO_PIN
- #define SW0_GPIO_NAME SW2_GPIO_NAME
- /* Onboard GREEN LED */
- #define LED0_GPIO_PIN 3 /*GPIO11/Pin2 */
- #define LED0_GPIO_PORT "GPIO_A1"
- /*Onboard ORANGE LED */
- #define LED1_GPIO_PIN 2 /*GPIO10/Pin1 */
- #define LED1_GPIO_PORT "GPIO_A1"
- /*Onboard RED LED */
- #define LED2_GPIO_PIN 1 /*GPIO9/Pin0 */
- #define LED2_GPIO_PORT "GPIO_A1"
- #endif /* __INC_BOARD_H */
接下来在zephyr目录(默认是zephyr-project目录,我的是zephyr-1.7.0目录)下新建一文件夹appDir,将\samples\basic\blinky文件夹拷贝到appDir下,改名为marqueeLED。进去打开src文件夹,将main.c代码更改如下:
- #include <zephyr.h>
- #include <board.h>
- #include <device.h>
- #include <gpio.h>
- /* Change this if you have an LED connected to a custom port */
- #define PORT LED0_GPIO_PORT
- /* Change this if you have an LED connected to a custom pin */
- #define LED0 LED0_GPIO_PIN
- #define LED1 LED1_GPIO_PIN
- #define LED2 LED2_GPIO_PIN
- /* 1000 msec = 1 sec */
- #define SLEEP_TIME 200
- void main(void)
- {
- struct device *dev;
- dev = device_get_binding(PORT);
- /* Set LED pin as output */
- gpio_pin_configure(dev, LED0, GPIO_DIR_OUT);
- gpio_pin_configure(dev, LED1, GPIO_DIR_OUT);
- gpio_pin_configure(dev, LED2, GPIO_DIR_OUT);
- while (1) {
- /* Set pin to HIGH/LOW every 1 second */
- gpio_pin_write(dev, LED2, 0);
- gpio_pin_write(dev, LED0, 1);
- k_sleep(SLEEP_TIME);
- gpio_pin_write(dev, LED0, 0);
- gpio_pin_write(dev, LED1, 1);
- k_sleep(SLEEP_TIME);
- gpio_pin_write(dev, LED1, 0);
- gpio_pin_write(dev, LED2, 1);
- k_sleep(SLEEP_TIME);
- }
- }
打开终端,依次输入如下命令:
export ZEPHYR_GCC_VARIANT=zephyr export ZEPHYR_SDK_INSTALL_DIR=~/zephyr-sdk cd zephyr-1.7.0/ source zephyr-env.sh cd appDir/marqueeLED make BOARD=cc3200_launchxl |
如下图所示:
编译成功后,在outdir/cc3200_launchxl文件夹下找到zephyr.bin文件。将其拷贝到windows操作系统。将其烧写进开发板。这里需要使用TI公司的UniFlash进行烧写,详细的过程请参考阿汤哥博客:
写得非常详细,非常好,我就不重复了。烧写过程比较麻烦,还得拔插跳线。坑爹啊,这以后要调试程序,会非常麻烦。