任务一 CC2530实现点亮LED灯效果
一、任务描述
使用 IAR 新建工程,设置工程参数,结合电路图,利用寄存器实现点亮 LED 灯,利用 CC Debugger仿真下载器将程序文件烧写到CC2530单片机中,观察LED灯的效果。
二、任务目标
1.训练目标
① 本任务要求了解IAR软件的操作环境和基本功能。
② 掌握工程选项的设置技能。
③ 掌握创建工程和管理工程的技能。
④ 了解基本的编译和调试技能。
⑤ 学习使用观察窗口。
2.素养目标
① 培养学生在工作现场的6S意识和用电安全意识。
② 爱惜工具,注重场地整洁。
③ 具备积极、主动的探索精神。
三、相关知识
1.单片机的基本知识
单片微型计算机(single chip microcomputer,MCU)简称单片机,是典型的嵌入式微控制器。它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器、控制器、存储器、输入输出设备构成,相当于一台微型的计算机(最小系统)。和计算机相比,单片机缺少外围设备(简称外设)。单片机的体积小、质量轻、价格低,为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择,它最早被用于工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来,最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成到复杂的、对体积要求严格的控制设备中。
(1)单片机的特点
1)高集成度,体积小,高可靠性
单片机将各功能部件集成在一块芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音的性能优于一般通用 CPU。单片机内的程序指令、常数及表格等固化在ROM中不易破坏,而且许多信号通道均在一个芯片内,故可靠性高。
2)控制功能强
为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。
3)低电压,低功耗,便于生产便携式产品
为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8~5V,而工作电流仅为数百微安。
4)易扩展
片内具有计算机正常运行所必需的部件。芯片外部有许多用于扩展的三总线及并行、串行输入/输出引脚,很容易构成各种规模的计算机应用系统。
5)优异的性能价格比
单片机的性能极高。为了提高速度和运行效率,单片机已开始使用 RISC 流水线和 DSP 等技术。单片机的寻址能力也已突破64KB的限制,有的可达到1MB和16MB,片内的ROM容量可达62MB,RAM容量则可达2MB。由于单片机的广泛使用,其销量极大,各大公司的商业竞争使其价格十分低廉,其性能价格比极高。
(2)单片机的分类
根据不同的情况,单片机可以从不同的角度分类,主要包括以下3种分类方式。
1)按数据处理位数分类
计算机处理的是二进制数据,每次运算处理的数据是字节(byte)的整数倍,而每个字节由8位二进制数构成。因此,目前的单片机按照数据处理位数分类主要有8位、16位和32位单片机。
其中,8位单片机由于内部构造简单、体积小、成本低等优势,应用最为广泛。4位单片机主要应用于工业控制领域。随着工艺的发展,由于4位单片机性能比较低,目前已逐步退出市场。而16位和32位单片机虽然性能比8位的强得多,但由于成本和应用场合的限制,尤其是近年来ARM嵌入式技术的发展,导致它的应用空间也不如8位单片机广泛。16位和32位单片机主要应用于视频采集、图形处理等方面。
目前,世界各大电子电器公司基本上都有自己的单片机系列产品,如三星公司(Samsung corporation)的KS86和KS88系列8位单片机,飞利浦公司(Philips corporation)的P89C51系列8位单片机,爱特梅尔公司(Atmel corporation)的AT89系列8位单片机等。
2)按内核分类
单片机按内核分为51系列、PIC系列、AVR系列、430系列。
目前,在物联网领域应用较为广泛的有德州仪器公司(Texas Instruments,TI)的MSP430系列,爱特梅尔公司(Atmel corporation)的AVR系列、51系列,美国微芯科技公司(Microchip Technology corporation)的PIC系列。除了单片机含有的外设种类和数量存在一定差异外,处理器的差异是体现单片机性能差异的关键所在。
3)按指令类型分类
单片机按指令类型可以分为精简指令集(Reduced Instruction Set Computer,RISC)和复杂指令集(Complex Instruction Set Computer, CISC)。复杂指令集指令多而且复杂,执行效率也不高。典型的就是以8051为内核的单片机。根据对复杂指令集的研究,发现其中经常用到的指令只占整个指令集的30%,所以就发明了现在的精简指令集。
(3)单片机的内部结构
单片机主要由运算器、控制器、存储器、输入设备和输出设备组成,其内部结构如图 1.1所示。
图1.1 8051单片机的内部结构
1)中央处理器
运算器和控制器是核心,合称中央处理器(Central Processing Unit,CPU)或中央处理单元。CPU 的内部还有一些高速存储单元,被称为寄存器。其中,运算器执行所有的算术和逻辑运算;控制器负责把指令逐条从存储器中取出,经译码后向计算机发出各种控制命令;而寄存器为处理单元提供操作所需要的数据。
2)存储器
存储器主要包括只读存储器(ROM)和随机存储器(RAM)两种。ROM主要保存单片机运行所需要的程序和数据,当系统断电后,这些数据不会丢失。RAM主要用来保存单片机运行的临时数据。
3)输入设备和输出设备
输入设备和输出设备主要包括并行I/O端口和串行接口等通信方式。
并行 I/O 端口即输入(Input)/输出(Output)引脚,这是单片机与外部电路和器件主要联系的端口,它既可以接收外界输入的电平信号,也可以向外发送指定的电平信号。多个I/O端口构成一组传输端口(Ports)。8位单片机的8个I/O端口构成一组,16位单片机的16个I/O端口构成一组。这种分组方式便于字节数据或字数据的传输。
串行通信是一条信息的各位数据逐位按顺序传送的通信方式。其数据传送按位顺序进行,最少只需要一根传输线即可。串行通信主要采用通用异步收发传输器(Universal Asynchronous Receiver and Transmitter,UART)实现。其中,RxD表示接收数据端口,TxD表示发送数据端口。
4)时钟电路
时钟电路主要为单片机提供运行所需要的节拍信号,每到来一个节拍,单片机就执行一步操作,所以时钟电路提供的信号频率越高,单片机的运行速度就越快,相应的功耗也越大。
5)中断控制系统
中断是指CPU按顺序逐条执行程序指令的期间,由CPU外界或内部产生的一个例外的要求,要求CPU暂时停下目前的工作,转而进行必要的处理,以便满足突如其来的状况。
中断的种类大体来说,主要包括硬体中断、软体中断两类。硬体中断的形成,通常是外界的硬体装置利用由CPU拉出的中断要求信号线来通知 CPU中断的请求;软体中断,通常是CPU自己引发的,比如说执行了不该执行的指令、计算错误或者执行了某个用来产生软体中断的指令。
6)定时器/计数器
单片机提供定时器/计数器,用来实现定时或计数的功能,以降低CPU的工作负担。
总之,单片机将CPU、存储器、输入/输出设备、中断控制系统、定时器/计数器和通信等多种功能部件集成到一块硅片上,从而构成一个体积小但功能完善的微型计算机系统。
(4)单片机的应用领域
1)单片机在智能仪器仪表中的应用
单片机被引入各类仪器仪表中,使仪器仪表智能化,可提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。
2)单片机在机电一体化中的应用
机电一体化是机械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥其体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。
3)单片机在日常生活及家用电器领域的应用
自单片机诞生后,它就步入了人们的生活,如洗衣机、电冰箱、空调器、电子玩具、 电饭煲、视听音响设备等家用电器配上单片机后,提高了智能化程度,增加了功能,备受人们喜爱。单片机将使人们的生活更加方便、舒适、丰富多彩。
4)单片机在实时过程控制中的应用
单片机可实时进行数据处理和控制,使系统保持最佳工作状态,可提高系统的工作效率和产品的质量。
5)单片机在办公自动化设备中的应用
现代办公室使用的大量通信和办公设备大多都嵌入了单片机,如打印机、复印机、传真机、绘图机、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等。
6)单片机在商业营销设备中的应用
在商业营销系统中已广泛使用的电子秤、收款机、条形码阅读器、IC 卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统等,都采用了单片机控制。
7)单片机在计算机网络和通信领域中的应用
现在的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件。现在的通信设备基本上都实现了单片机智能控制,从电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信,再到日常工作中随处可见的移动电话、集群移动通信、无线电对讲机等。
8)单片机在医用设备领域中的应用
单片机在医用设备中的用途也相当广泛,如医用呼吸机、各种分析仪、监护仪、超声诊断设备及病床呼叫系统等。
9)单片机在汽车电子产品中的应用
现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器(黑匣子)等都离不开单片机。
综上所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了控制系统传统的设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件的方法实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
2.CC2530简介
CC2530是用于IEEE 802.15.4和RF4CE应用的一个真正的SoC解决方案。它能够以非常低的总材料成本建立强大的网络节点。CC2530结合了领先的RF收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8KB RAM和许多其他的强大功能。CC2530有4种不同容量的闪存:CC2530F32/64/128/256,分别具有32/64/128/256KB的闪存。CC2530具有不同的运行模式,使得它尤其适合具有超低功耗要求的系统,其各运行模式之间的转换时间短,进一步确保了低能源消耗。
CC2530F256 结合了 TI 公司业界领先的黄金单元 CC2530 协议栈(Z-StackTM),提供CC2530解决方案。
CC2530F64结合了TI公司的黄金单元RemoTI,更好地提供了完整的CC2530 RF4CE远程控制解决方案。
图1.2所示为CC2530的方框图,图中模块大致可以分为3类:CPU和内存相关的模块,外设、时钟和电源管理相关的模块以及无线电相关的模块。
图1.2 CC2530方框图
(1)CPU和内存
CC2530芯片中使用的8051CPU内核是一个单周期的8051兼容内核。它有3种不同的内存访问总线,分别用于访问特殊功能寄存器(SFR)、数据(DATA)和代码/外部数据(CODE/XDATA)。此外,它还包括一个调试接口和一个18路输入扩展中断单元。
CC2530使用单周期访问SFR、DATA和主SRAM。
中断控制器总共提供18个中断源,分为6个中断组,每个与4个中断优先级之一相关。当CC2530 处于空闲模式时,任何中断都可以将 CC2530 恢复到主动模式。某些中断还可以将CC2530从睡眠模式唤醒(供电模式1~3)。
内存仲裁器位于系统中心,它通过SFR总线把CPU和DMA控制器与物理存储器和所有外设连接起来,内存仲裁器有4个内存访问点,每次访问可以映射3个物理存储器之一:8KB SRAM、闪存(Flash)存储器和XREG/SFR寄存器。它负责执行仲裁,并确定同时访问同一个物理存储器之间的顺序。
8KB SRAM映射到DATA存储空间和部分XDATA存储空间。8KB SRAM是一个超低功耗的SRAM,即使数字部分掉电(供电模式2和3),也能保留其内容。对于低功耗应用来说,是很重要的一个功能。
CC2530的Flash容量可以选择,有32KB、64KB、128KB、256KB,这就是CC2530的在线可编程非易失性程序存储器,并且映射到CODE和XDATA存储空间。除了保存程序代码和常量之外,非易失性程序存储器允许应用程序保存必须保留的数据,这样设备重启之后可以使用这些数据。使用这个功能,可以利用已经保存的网络的具体数据,从而不需要经过完全启动、网络寻找和加入过程,系统再次上电后就可以直接加入网络中。
(2)时钟和电源管理
数字内核和外设由一个1.8V低压差稳压器供电。它提供了电源管理功能,可以实现使用不同供电模式的长电池寿命的低功耗运行。CC2530有5种不同的复位源来复位设备。
(3)外设
CC2530包括许多不同的外设,允许应用程序设计者开发先进的应用。
调试接口是一个专有的两线串行接口,用于内电路调试。通过这个调试接口,可以执行整个闪存存储器的擦除、控制振荡器、停止和开始执行用户程序、执行8051内核提供的指令、设置代码断点,以及内核中全部指令的单步调试。使用这些技术,可以很好地执行内电路的调试和外部闪存的编程。
设备含有闪存存储器及存储程序代码。闪存存储器可通过用户软件和调试接口编程。闪存控制器处理写入和擦除嵌入式闪存存储器。闪存控制器允许页面擦除和4字节编程。
I/O控制器负责所有通用I/O引脚。CPU可通过配置外设模块来控制某个引脚,或者决定它们是否受软件控制。如果是外设模块,则每个引脚配置为一个输入/输出,并连接一个上拉或下拉电阻;如果是受软件控制,则将该引脚上使能,将I/O引脚作为外部中断源的输入口,以确保在不同应用程序中的灵活性。以确保在不同应用程序中的灵活性。
系统可以使用一个多功能的5通道DMA控制器,使用XDATA存储空间访问存储器,因此能够访问所有物理存储器。每个通道(触发器、优先级、传输模式、寻址模式、源和目标指针及传输计数)用 DMA 描述符在存储器任何地方配置。许多硬件外设(AES 内核、闪存控制器、USART、定时器、ADC接口)通过使用DMA控制器在SFR或XREG地址和闪存/SRAM之间进行数据传输,获得高效率操作。定时器1是一个16位定时器,具有定时器/PWM功能。它有一个可编程的分频器、一个16位周期值和5个各自可编程的计数器/捕获通道,每个都有一个16位比较值。每个计数器/捕获通道都可以用作一个PWM输出或捕获输入信号边沿的时序。它还可以配置在IR产生模式,计算定时器3的周期,输出和定时器3的输出相与,用最小的CPU互动产生调制的消费型IR信号。
MAC定时器(定时器2)是专门为支持IEEE 802.15.4 MAC或软件中其他时槽的协议设计的。该定时器有一个可配置的定时器周期和一个8位溢出计数器,可以用于保持跟踪已经经过的同期数。一个16位捕获寄存器也用于记录收到/发送一个帧开始界定符的精确时间,或传输结束的精确时间,此外还有一个16位输出比较寄存器,可以在具体时间产生不同的选通命令(开始RX、开始TX等)到无线模块。定时器3和定时器4是8位定时器,具有定时器/计数器/PWM功能。它们有一个可编程的分频器、一个8位的周期值、一个可编程的计数器通道,以及有一个8位的比较值。每个计数器通道都可以用作一个PWM输出。
睡眠定时器是一个超低功耗的定时器,计算晶振或32kHz RC振荡器的周期(XOSC_Q1和XOSC_Q2之间采用32MHz晶振,32k_Q1和32k_Q2之间采用32.768kHz晶振)。睡眠定时器在除供电模式3之外的所有工作模式下不断运行。该定时器的典型应用是作为实时计数器,或作为一个唤醒定时器跳出供电模式1或2。
ADC支持7~12位的分辨率,分别在30kHz或4kHz的带宽。DC和音频转换可以使用高达 8 个输入通道(端口 0),输入可以选择作为单端或差分。参考电压可以是内部电压、AVDD或一个单端或差分外部信号。ADC还有一个温度传感输入通道。ADC可以自动执行定期抽样或转换通道序列的程序。
随机数发生器使用一个16位LFSR来产生伪随机数,它可以被CPU读取或由选通命令处理器直接使用。例如,随机数可以用于产生随机密钥,提高系统安全性。
AES加密解密内核允许用户使用带有128位密钥的AES算法加密和解密数据。该内核支持IEEE 802.15.4 MAC安全、CC2530网络层和应用层要求的AES操作。
一个内置的看门狗允许CC2530在固件挂起的情况下复位自身。当看门狗定时器由软件使用时,它必须定期清除;否则,当它超时则复位设备。此外,它可以配置一个通用32kHz定时器。
串口1(USART 0)和串口2(USART 1)被配置为一个SPI主/从或一个UART。它们为RX 和 TX 提供双缓冲,以及硬件流控制。因此,非常适合高吞吐量的全双工应用。每个串口都有自己的高精度波特率发生器,可以使普通定时器空闲出来用作其他用途。
四、任务实施
对于单片机的开发环境,软件方面涉及编程语言、编辑编译和调试环境的选择问题。根据应用对象的特点选择合适的编程语言和开发工具,是解决问题的首要任务。
单片机的编程环境一般有两种:汇编语言和C语言。无论是采用C语言,还是汇编语言,都各有利弊。虽然对汇编语言的娴熟使用需要一定的时间,而且调试时困难很大,但其程序执行效率高是不争的事实。C语言虽易学易用,但对于一些底层和重复性操作,采用C语言实现效率偏低。所以在开发过程中,推荐采用 C 语言和汇编语言相结合的编程方式,以充分发挥两者的优势。例如,通常用汇编语言编写底层的实现硬件的操作,把与硬件无关或相关性较小的部分用 C 语言实现。当然,要充分发挥两者的性能优势,需要对C语言编译器有一定的了解,并注重平时的积累。
1.CC2530开发环境简介
本书的实验平台选用嵌入式开发工具(IAR Embedded Workbench,EW)作为CC2530的开发环境。嵌入式开发工具的 C/C++交叉编译器和调试器是目前世界上最完整的和最容易使用的专业嵌入式应用开发工具之一。嵌入式开发工具对不同的微处理器提供相同的直观用户界面。嵌入式开发工具已经支持35种以上的8位/16位/32位微处理器。
嵌入式开发工具包括嵌入式 C/C++编译器、汇编器、连接定位器、库管理员、编辑器、项目管理器和C-SPY调试器。IAR编译器使代码更加紧凑和优化,节省硬件资源,最大限度地降低产品成本,提高产品竞争力。
IAR Embedded Workbench集成的编译器主要产品特征如下。
① 高效的PROMable代码。
② 完全兼容标准C语言。
③ 内建对应芯片的程序速度和大小优化器。
④ 目标特性扩充。
⑤ 版本控制和扩展工具支持良好。
⑥ 便捷的中断处理和模拟。
⑦ 瓶颈性能分析。
⑧ 高效浮点支持。
⑨ 内存模式选择。
⑩ 工程中相对路径支持。
IAR Embedded Workbench是一套完整的集成开发工具集合:包括从代码编辑器、工程的建立到 C/C++编译器、连接器和调试器的各类开发工具。它和各种仿真器、调试器紧密结合,使用户在开发和调试过程中,仅使用一种开发环境界面,就可以完成多种微控制器的开发工作。
2.CC2530开发环境安装
IAR Embedded Workbench 的安装如同 Windows 操作系统中的其他软件一样,双击setup.exe进行安装。双击后会出现图1.3所示的界面。
图1.3 IAR软件安装起始界面图
单击Next按钮到下一步,分别填写你的名字、公司及认证序列号,如图1.4所示。
注:认证序列(License number)和Lisence key由注册机生成。
图1.4 IAR软件安装界面
正确填写后,单击Next按钮到下一步,填写由本计算机的机器码和认证序列号生成的序列密钥,如图1.5所示。
图1.5 输入安装信息界面
输入正确的信息后,单击Next按钮到下一步,如图1.6所示,可以选择完全安装或典型安装,这里选择完全安装。
图1.6 选择安装类型界面
单击Next按钮到下一步,这里可以查证之前输入的信息是否正确,如图1.7所示。如果需要修改,单击Back按钮返回修改。
图1.7 安装信息确认界面
单击Next按钮正式开始安装,可以查看安装进度,如图1.8所示。安装过程将需要几分钟的时间,请耐心等待。
图1.8 安装进度界面
当安装进度显示100%时,会出现图1.9所示的界面。此时可选择查看IAR的介绍以及立即运行IAR开发集成环境。单击Finish按钮来完成安装。
图1.9 安装完成界面
完成安装后,可以从“开始”菜单中找到刚安装的IAR软件,如图1.10所示。
图1.10 运行IAR 软件
3.安装仿真器驱动程序
(1)自动安装仿真器的驱动程序
成功安装IAR软件后,由于IAR软件中含有仿真器的驱动程序,所以连接仿真器与PC后可以自动安装仿真器的驱动程序。具体操作如下。
将仿真器通过附带的USB线缆连接到PC,在Windows XP系统下,系统发现新硬件后,弹出提示对话框,选择自动安装软件,单击“下一步”按钮,如图1.11所示。
图1.11 硬件安装向导
系统识别出仿真器,如图1.12所示。
图1.12 自动安装示意图
向导会自动搜索并复制驱动文件到系统,如图1.13所示。
图1.13 安装驱动文件
系统安装完驱动程序后,弹出安装完成对话框,单击“完成”按钮退出安装,如图1.14所示。
图1.14 仿真器驱动安装完成
(2)手动安装仿真器的驱动程序
如果向导未能自动搜索到驱动文件,则驱动程序可以在IAR的安装文件中找到。在硬件安装向导中,选择“从列表或指定位置安装(高级)”,单击“下一步”按钮,如图1.15所示。
选择“在搜索中包括这个位置”,如图1.16所示。
在IAR的安装路径中找到Texas Instruments文件夹,如图1.17所示。
图1.15 手动安装
图1.16 添加搜索位置示意图
图1.17 指定搜索位置路径示意图
按系统提示操作,直至完成安装,如图1.18所示。
图1.18 完成安装
注意
如果计算机中没有安装 IAR 或者仿真器的驱动程序丢失了,则可以直接安装仿真器驱动程序,运行ebinstaller.exe即可。
安装完成后,重新拔插仿真器,在设备管理器中找到 SmartRF04EB,说明驱动程序安装完成,如图1.19所示。
图1.19 仿真器驱动程序安装成功示意图
4.软件应用
(1)新建一个工程
新建一个文件夹,用于保存工程文件。打开IAR EW软件,选择Project→Create New Project,如图1.20所示。
图1.20 新建一个工程
在弹出的对话框中,选择Empty project,如图1.21所示。
图1.21 选择配置
单击“OK”按钮,弹出“另存为”对话框,如图1.22所示。
图1.22 “另存为”对话框
这时候选择将其保存在之前已在桌面上建立的一个名为project的文件夹中,并将项目也取名为“project”,此时会产生一个 .ewp后缀的文件。
然后选择File→Save Workspace,如图1.23所示,弹出保存工程对话框,如图1.24所示。
图1.23 选择保存工程
输入工程文件名,单击“保存”按钮退出,系统将产生一个以.eww为扩展名的文件。这样,就建立了IAR的一个工程文件。
(2)参数设置
下面为这个工程添加一些特有的配置。选择Project→Options,如图1.25所示。
图1.24 保存工程对话框
图1.25 打开工程选项
显示工程选项界面,如图1.26所示。
图1.26 工程选项界面
工程选项界面需要设置很多必要的参数,下面我们针对CC2530来配置这些参数。
1)General Options设置
在General Options→Target选项中,Device选择为CC2530F256,如图1.27和图1.28所示。由于CC2530PRO协议栈是以CC2530为基准的,所以这里将Device选择为CC2530 F256, CC2531与CC2530的区别很小。
图1.27 找到Texas Instruments文件夹
图1.28 选择需要的芯片
2)Linker设置
Linker→Output 选项是关于输出文件格式的设置。选择图 1.29 所示的选项,勾选 Allow C-SPT-specific extra output file即可实现IAR的在线调试。
图1.29 设置Output
3)Debugger设置
如图1.30所示,在Debugger→Setup→Driver选项选择为Texas Instruments。
图1.30 设置Debugger
至此,对整个项目的基本设置就完成了,现在开始第一个项目的开发。
(3)第一个项目
新建一个C文件,在File→New→File选项新建并保存,如图1.31和图1.32所示。
图1.31 新建一个文件
图1.32 保存文件
输入文件名后单击“保存”按钮,如图1.33所示。如果是C文件,请务必添加“.c”扩展名,否则会以文本文件存档。
图1.33 输入文件名并保存
右击刚创建的工程,在弹出的快捷菜单中选择Add→Add“test.c”,如图1.34所示。
新建工程文件的结构如图1.35所示。
图1.34 加入文件
图1.35 新建工程文件结构示意
打开新建文件,添加代码,如图1.36所示。
图1.36 新建工程文件代码示意
一般工程按照上述步骤即可完成新建工程。对于复杂的程序,首先右击创建的工程,在弹出的快捷菜单中选择Add→Add Group命令新建组,如图1.37所示。建好组的工程如图1.38所示。接着按照上述步骤添加代码文件即可。
图1.37 工程添加组示意1
图1.38 工程添加组示意2
(4)编译与调试
在实际的使用中,如果IAR的工程路径中有中文路径,则有可能在调试的时候,设置断点后会不能生效。所以为了方便在线调试,可以将建立的工程复制到磁盘根目录中,然后打开工程并执行Project菜单中的Make命令,如图1.39所示。
图1.39 编译示意
可以使用Make命令编译,也可以通过Rebuild All命令执行全部编译(用Make命令只会编译修改过的文件)。编译后只要没有错误就可以使用了,一般警告可以忽略。有关错误和警告的提示信息如图1.40所示。
图1.40 提示信息
编译没有错误后,就可以下载程序了。单击 Debug,执行下载程序。下载程序完成后,软件会进入在线仿真模式,如图1.41所示。
图1.41 Debug示意
其中,各按钮的功能如下。
• :复位(Reset)。
• :停止运行(Break)。
• :单步执行,会跳过函数体(Step Over)。
• :跳入函数体中(Step Into)。
• :跳出函数体(Step Out)。
• :每次执行一个语句(Next Statement)。
• :运行到光标位置(Run to Cursor)。
• :全速运行(Go),快捷键为F5。
• :结束调试(Stop Debugging)。
在仿真模式中,可以对这个文件设置断点。断点的设置方法是,首先选择需要设置断点的行,然后单击Toggle Breakpoint按钮设置断点。设置好后,这行代码会变为红色,表示断点设置已经完成,如图1.42所示。
图1.42 设置断点示意
然后执行全速运行,当执行到断点时会停止在断点处,如图1.43所示。
图1.43 运行示意
此时用鼠标选中P1DIR,右击并选择Add to Watch或Quick Watch命令,如图1.44所示。
图1.44 Watch查看
这个步骤的作用是查看相应寄存器中的值,如果是一个变量,就可以查看这个变量的值。该值在Watch中可以看到,如图1.45所示。
图1.45 查看寄存器中的值
(5)标记行号和字体
IAR 中设置字体大小,设置关键字的颜色及行号显示的方法。选择 tools 菜单中的 options命令进入设置。在打开的IDE Options对话框中选择Editor,勾选Show line number复选框,可显示行号,如图1.46所示。
图1.46 行号示意图
选择Editor→Colors and Fonts,便可以设置字体,如图1.47所示。
图1.47 字体标记示意图
5.下载到CC2530单片机
(1)烧写器连接
CC2530与烧写器相连,烧写器通过USB与计算机连接。CC2530底板供电是5V电源,一定不要接错了电源,一旦连接了 12V 的电源,底板将被烧坏,注意下载线缆有红色边的一侧朝天线方向,如图1.48所示。
图1.48 硬件连接示意图
(2)下载程序到CC2530单片机
在IAR运行环境中单击Down and Debug,将代码下载到CC2530单片机中,此时会出现进度条,如图1.49所示。
图1.49 下载进度条示意
五、考核与评价
CC2530实现点亮LED灯训练项目评分标准如表1.1所示。
表1.1 CC2530实现点亮LED灯项目训练评分标准
六、任务小结
利用 IAR Embedded Workbench 实现系统的软件开发,利用软件进行仿真调试,这也是CC2530调试的辅助手段。
仿真下载器主要完成系统的软件下载和调试功能。它提供了一套编制、维护、调试环境,能将汇编语言和C语言程序编译生成Hex可执行输出文件,并能将程序下载到目标板CC2530上运行调试。
在新建工程中学会设置General Options、Linker、Debugger三项参数。
七、参考程序
#include "ioCC2530.h" //引用头文件
void main(void)
{
P1SEL &= ~0xff;//设置P1口所有位为普通IO口
P1DIR |= 0xff;//设置P1口所有位为输出口
P1 = 0xff;//点亮P1端口组的LED灯,
//需要分析电路图,决定设置0,还是设置1
}
八、启发与思考
IAR 建立的工程文件可以管理用户系统的软件部分,工程文件一般包含源程序文件(*.c 或*.ASM)、头文件(*.h)和库文件(*.LIB和*.OBJ)3部分组成。
输入/输出编址有独立编址和统一编址两种方式,无论使用哪种编址,访问外设时都需要指出外设的地址。在头文件ioCC2530.h中,对所有的寄存器都进行了定义,使用户访问外设时无须记住外设的地址,简化了外设的访问操作。
#include "ioCC2530.h" //引用头文件。
IAR编译环境下可使用的快捷键操作具体如下。
•Ctrl+B 程序{}的配对内容查找,自动地把这段内容反色显示。
•Ctrl+T 对选择区域的源代码排版。
•Ctrl+K 注释掉选择区域。
•Ctrl+Shift+K 去除所选区域的注释,所选区域必须是全被注释掉的。
•Ctrl+Shfit+空格 用IAR提供的内部代码进行编写,如if语句。
•CTRL+SHIFT+I 选中某些行实现自动进行缩进。
•F9 光标处添加/删除断点。
•Ctrl+F9 使能/失能断点。
•Shift+Alt+E 打开断点窗口,列出所有断点。
•Ctrl+F 向下寻找光标所处的单词。
•F3 向下寻找上次搜索的字符。
•Shift+F3 向上寻找上次搜索的单词。
•Ctrl+H 替换字符串。
•Ctrl+G 跳到指定行。
•Ctrl+Shift+F 在文件中搜索。
•Shift+F2 在光标处添加标签。
•F2 跳到下一个标签处。