BLE开发笔记——第一个工程,IO的输出
CC2541本质上是一个8051内核的单片机,只要熟悉51单片机和c语言,也便很容易上手CC2541的程序设计吧。为了更好的熟悉IAR从简单的IO控制开始,逐步为以后进行蓝牙协议栈开发奠定基础。
开发环境配置好了,CC Debugger程序下载调试也弄好了,那就新建一个IAR工程试一下IO。
新建IAR工程
-
创建工程:
-
在新出现的对话框中,Tool chain选择8051,Project Template选择Empty Project:
-
选择保存目录,输入工程名称,保存
-
保存WorkSpace,在IAR中每个工程都必须有一个Workspace,而一个Workspace中可以有多个工程,这里我必须要保存一个Workspace,file->save Workspace As就会弹出如下对话框,这里同样取名为LED:
配置工程
-
右击工程,点击Options…进入配置界面:
-
在弹出的对话框中进行Target配置,Device选择CC2541F256(根据板上芯片型号决定),Data Model选择large,Number of virtual选择16,Location for constants and strings选择ROM mapped as data。
-
进行linker设置,选中Output标签页,Format区勾选Allow C-SPY-specific extra output file:
-
Extra Output标签页,勾选Generate extra output file,勾选Override default,更名为LED.hex,选择Out format为intel-extended:
-
进行Debugger设置,Setup标签页中Driver选择Texas Instruments:
-
配置Debugger的Texas Instruments,Download标签页中勾选Erase flash,然后点击OK,至此项目配置工作就完成了:
添加源文件
-
单击工具栏新建按钮,新建文件,输入以下代码:
#include <ioCC2541.h> int main(void) { P1SEL &= ~0x01; // 配置管脚为IO功能 P1DIR |= 0x03; // 配置IO,P1.0为输出 P1 |= 0x01; // 配置P1.0管脚输出高电平 while(1) { } }
-
保存源文件为LED.c:
-
将LED.c源文件添加到工程,如下:
-
保存工程,单击工具栏的编译按钮进行编译,保存工程为LED.eww,在确认另存为的对话框中选择
是
: -
编译结果类似一下,说明白编译成功:
测试
-
连接好电脑、CC Debugger和CC2541板,确认CC Debugger指示为绿灯(保证CC Debugger已经识别到CC2541芯片),然后点击工具栏下载和调试按钮,正常的话就会进入调试界面,然后点击工具栏的GO按钮,使程序全速运行,测试芯片的P1.0管脚的电平,如果为3.3V左右的高电平,说明成功搞定IO输出。下面给出CC2541管脚MAP图:
-
编写简单的延时函数,测试IO的高低电平间隔输出,分别新建编写delay.c和delay.h文件,按照3中的方式添加到工程之中。
delay.h代码:
#ifndef __DELAY_H__ #define __DELAY_H__ void delay(unsigned int timeDelay); #endif
delay.c代码:
#include "delay.h" void delay(unsigned int timeDelay) { while(timeDelay--) { for(int i = 0; i < 320; i++); // 执行空命令模拟延时1ms } }
-
然后更改LED.c文件的代码如下:
#include <ioCC2541.h> #include "delay.h" int main(void) { P1SEL &= ~0x01; // 配置管脚为IO功能 P1DIR |= 0x03; // 配置P1.0为输出 while(1) { P1 |= 0x01; // 配置P1.0输出高电平 delay(1000); // 延时1000ms P1 &= (~0x01); // 配置P1.0输出高电平 delay(1000); // 延时1000ms } }
-
然后编译并下载,GO运行,万用表测量P1.0管脚电平,大约经过1s电平便切换一次,说明可用。