收藏 分享(赏)

ZigBee之旅--大学生学习手记new.docx

上传人:dzzj200808 文档编号:2688982 上传时间:2018-09-25 格式:DOCX 页数:90 大小:2.65MB
下载 相关 举报
ZigBee之旅--大学生学习手记new.docx_第1页
第1页 / 共90页
ZigBee之旅--大学生学习手记new.docx_第2页
第2页 / 共90页
ZigBee之旅--大学生学习手记new.docx_第3页
第3页 / 共90页
ZigBee之旅--大学生学习手记new.docx_第4页
第4页 / 共90页
ZigBee之旅--大学生学习手记new.docx_第5页
第5页 / 共90页
点击查看更多>>
资源描述

1、Zigbee 之旅(一):开天辟地 一、前言首先自我介绍一下我是来自湖北某高校的一名大三学生。因专业及个人爱好,最近对 Zigbee 比较感兴趣。于是我和几个班里的同学商量了下,凑了些钱购置了一套基于 CC2430 芯片的 Zigbee 开发板,打算抽时间摸索一下。于是我想到在博客园发表相关博文,介绍我们自学 Zigbee 的点滴历程。本系列博文适合对 C-51 系列单片机有一定的理论或实践经验,并对 Zigbee 技术感兴趣的朋友。博文的部分内容取材于互联网以及开发板附带的学习资料,其余内容均属原创,欢迎各位朋友转载,转载的同时也请注明作者及出处,谢谢!二、Zigbee 简介物联网传感器无线

2、传感器网络Zigbee可能大多数人都是第一次见到 Zigbee 这个词,但如果提到物联网这三个字,我想比较关心最新技术趋势的朋友应该都耳熟能详。物联网的百度百科定义为:通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物体与互联网相连接,进行信息交换和通信,以实现对物体的智能化识别、定位、跟踪、监控和管理的一种网络。(详见百度百科)物联网中很重要的一部分就是传感器,其负责收集来自真实物理世界的信息。而 无线传感器网络(Wireless Sensor Nnetwork,WSN),则是当前在国际上备受关注的前沿热点研究领域。它综合了传感器、嵌入式计算

3、、现代网络及无线通信和分布式信息处理等技术,能够通过各类集成化的微型传感器协同完成对各种环境或监测对象的信息的实时监测、感知和采集,这些信息通过无线方式被传送,并以自组多跳的网络方式传送到用户终端,从而实现物理世界、计算机世界以及人类社会这三元世界的连通。提到 WSN,就不能不提 Zigbee。Zigbee 是 IEEE 802.15.4 协议的代名词,是一种短距离、低功耗的无线通信技术。这一名称来源于蜜蜂的八字舞,因为蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息。Zigbee 的特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本,所以特别

4、适合用来组建无线传感器网络。Zigbee 的应用领域包括: 家庭和楼宇网络:空调系统的温度控制、照明的自动控制、窗帘的自动控制、煤气计量控制、家用电器的远程控制等; 工业控制:各种监控器、传感器的自动化控制 商业:智慧型标签等 农业控制:收集各种土壤信息和气候信息 医疗:老人与行动不便者的紧急呼叫器和医疗传感器等 Zigbee 的极其广阔的应用领域和巨大的发展前景,正是我们选择它作为学习对象的重要原因,我们也希望有更多志同道合的朋友能够加入 Zigbee 的队伍。三、Zigbee 开发板的购置我们班同学五个人,一起凑了 500 来块,在淘宝网上的 Enjoy MCU 电子开发工作室 购买了基于

5、 CC2430芯片的 ZigBee 开发套件(2 模块+2 彩色显示屏+1 仿真器)。不错的客户评价、精美的产品外观、比较全面的学习资料,让我们最终选择这一款 Zigbee 产品。四、开发环境配置(1)破解 IAR (仅用于学习和测试,不得用于商业用途)我们一般选择 IAR Embedded Workbench for MCS-51 7.51A 作为 Zigbee 开发的 IDE,下面简单提一下其破解过程:首先下载 IAR 软件包与序列号生成器,然后启动 IAR 的安装:一路 Next,直到下一画面出现:此时,以管理员身份打开破解程序:Product 类型:Embedded Workbench

6、 For MCS-51 v7.50A ,点击“Get ID”即可获取安装序列号和许可证。将 License number 复制到 IAR 安装界面的 “License#“ 输入框中,点击 Next,然后将 License Key 复制到 IAR 安装界面的 “License Key“ 输入框中:然后一路按提示操作,和谐版 IAR 开发软件就安装完毕了(2)Zigbee 调试器驱动安装首先下载 SmartRF 驱动 并解压到某一文件夹内,然后按 Zigbee 开发板 调试器 PC 的 USB 接口 的顺序连接设备,打开计算机的设备管理器,会发现存在“无法识别的 USB 设备”,右键,点击“更新驱

7、动程序软件”,选择“浏览计算机以查找驱动程序软件”,然后选择下载的驱动的文件夹路径,点击“下一步”,就可以成功安装驱动。五、Zigbee 学习路线接下来说说 Zigbee 的学习方法,因为本人在这方面也属于菜鸟级别,仅在大三上有过一些 51 单片机的科班学习经验。在此我参照一下Zigbee 技术实践教程的目录,给自己定下了 Zigbee 的学习路线:(1)准备篇:通过一系列小实验,熟悉 CC2430 芯片中的重要的硬件模块,包括外部中断、定时器、AD、串口通讯、DMA、射频通信等。(2)基础篇:深入了解 TI Z-Stack 协议,并能动手建立简单的 Zigbee 无线传感器网络。(3)提高篇

8、:以某个具体的项目为中心,掌握开发实际 Zigbee 项目的技能。六、结语OK,第一篇就到此为止我们对 Zigbee、开发板设备、以及基本的开发环境的搭建作了简要的介绍。接下来,我们以一个非常简单的小实验,来说明如何运用 IAR 来开发基于 CC2430 芯片的应用程序。Zigbee 之旅(二):第一个 CC2430 程序 LED 灯闪烁实验 一、承上启下在上一篇文章 Zigbee 之旅(一):开天辟地中,我们简要的介绍了 Zigbee,以及其开发环境的搭建。OK,现在工具都齐全了,一个问题随之产生:如何利用这些软、硬件来编写一个能够跑起来的程序呢?本篇文章基本是来回答以上问题的:以“LED

9、灯闪烁 ”这个小实验作为例子,介绍如何配置 IAR 以适合开发基于 CC2430 的程序,如何运用 IAR 编写并在线调试程序。二、IAR 的配置IAR 是一个强大的嵌入式开发平台,支持非常多种类的芯片。IAR 中的每一个 Project,都可以拥有自己的配置,具体包括 Device 类型、堆/栈、Linker、Debugger 等。(1)新建 Workspace 和 Project首先新建文件夹 ledtest。打开 IAR,选择主菜单 File - New - Workspace 建立新的工作区域。选择 Project - Create New Project - Empty Projec

10、t,点击 OK,把此工程文件保存到文件夹 ledtest 中,命名为:ledtest.ewp (如下图)。(2)配置 General OptionsTarget 设置:Device:CC2430;Code Mode:Near ;Data model:Large ;Calling convention:XDATA stack reetrantData pointer 设置:Number of DPTRs:1Stack/Heap 设置:XDATA stack size:0x1FF(3)Linker 设置Linker command file:选择 lnk51ew_cc2430.xcl(4)Debu

11、gger 设置:Driver:Texas Instruments (本实验为真机调试,所以选择 TI;若其他程序要使用 IAR 仿真器,可选Simulator)Device Description file:CC2430.ddf至此,针对本实验的 IAR 配置基本结束,下面来介绍其编码实现。三、程序代码的编写(1)新建程序文件选择 File-New-File,新建文件 main.c。(2)引入头文件基于 CC2430 的程序,必须包含对 ioCC2430.h 的引用,此文件定义了 CC2430 的各类特殊功能寄存器(SFR)的地址映射。#include /引入 CC2430 所对应的头文件(包

12、含各 SFR 的定义)此文件内置于 IAR 中(类似于 stdio.h),将鼠标至于此行代码上,右键,选择 OPen “ioCC2430.h“ ,即可看到此头文件的全部内容。(3)定义 LED 引脚查看开发板电路图,如下所示:可知 led14 分别受引脚 P1_0P4_0 的控制,因此可以定义 led1、led2、led3、led4 分别为引脚 P1_0、P2_0 、P3_0 、P4_0 。#define led1 P1_0 /定义 LED1 为 P1_0 口控制#define led2 P1_1 /定义 LED2 为 P1_1 口控制#define led3 P1_2 /定义 LED3 为

13、P1_2 口控制#define led4 P1_3 /定义 LED4 为 P1_3 口控制(4)main 函数接下来,开始编写 main 函数。首先,在使用 P1.0P1.4 端口前,需对其工作方式以及输入/输出方向进行设置,其中涉及到两个SFR:P1SEL、P1DIR。P1SEL = 0x00; /设置 P1 为普通 I/O 口P1DIR |= 0x0F; /设置 P1.0 P1.1 P1.2 P1.3 为输出Zigbee 小贴士CC2430 具有 P0_0 P0_7 , P1_0P1_7 , P2_0P2_7 共 21 个 I/O 口。它们可作为通用数字 I/O,也可用于连接 ADC、定时

14、/计数器或 USART 等外设 IO。CC2430 的 SFR 中有三类寄存器可用于配置这些 IO 口:PxSEL(x 为 0/1/2):P0/P1/P2 口功能选择0:通用数字 IO,1:外设 IO,缺省默认为 0PxDIR(x 为 0/1/2):P0/P1/P2 口方向0:输入,1:输出,缺省默认为 0PxINP(x 为 0/1):P0/P1 口输入模式0:上拉/ 下拉,1:三态,缺省默认为 0在使用 IO 口时需配置,若缺省,则取系统默认值。然后初始化 4 个 LED 灯,设为全灭:led1 = 1; led2 = 1;led3 = 1;led4 = 1; 最后,编写 LED 灯闪烁效果

15、代码:led1 = 0; /led1 闪烁Delay(10);led1 = 1;Delay(10);led2 = 0; /led2 闪烁Delay(10);led2 = 1;Delay(10);led3 = 0; /led3 闪烁Delay(10);led3 = 1;Delay(10);led4 = 0; /led4 闪烁Delay(10);led4 = 1;Delay(10);其中涉及到一个延时子函数 Delay(unsigned char n):void Delay(unsigned char n) unsigned char i;unsigned int j;for(i = 0; i /

16、引入 CC2430 所对应的头文件(包含各 SFR 的定义)/定义 LED 引脚#define led1 P1_0 /定义 LED1 为 P1_0 口控制#define led2 P1_1 /定义 LED2 为 P1_1 口控制#define led3 P1_2 /定义 LED3 为 P1_2 口控制#define led4 P1_3 /定义 LED4 为 P1_3 口控制 /延时子程序void Delay(unsigned char n) unsigned char i;unsigned int j;for(i = 0; i Make,编译代码,若成功,则会出现以下输出:按 Zigbee 开

17、发板 调试器 PC 的 USB 接口 的顺序连接 Zigbee 设备,然后选择 Project - Debug,程序就会被自动下载到开发板中。然后选择 Debug - Go,即可启动程序,这时,你就会看到 4 个 LED 灯依次闪烁了!虽然这是一个简单得不能再简单的小实验,但是当笔者成功实现它的时候,还是小小的兴奋了一把呵呵!五、结语本文以“LED 灯闪烁实验 ”为基础,分别从 IAR 的配置、程序代码的编写,以及编译及调试的过程介绍了整个实现过程。接下来的一篇,则会在了解了开发程序的基本过程的基础上,介绍几个 CC2430 开发的基础实验,涉及定时器、串口通信、AD 转换、系统睡眠以及看门狗

18、 等,敬请期待!Zigbee 之旅(三):几个重要的 CC2430 基础实验外部中断 一、承上启下上一讲,我们通过一个最简单的 LED 闪烁小实验,熟悉了 IAR 开发 CC2430 程序的基本过程。刀好歹磨过了(虽然我这块磨刀石不咋地),现在就开始屠虫了:)。接下来,我们一起来学习几个 CC2430 的基础实验。每个小实验,分“实验简介”、“程序流程图”,“实验源码及剖析”三个部分阐述。本篇讲解外部中断。二、外部中断(1)实验简介中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使 CPU 暂停正在执行的程序,转而去进行中断事件的处理,中断处

19、理完毕后,又返回被中断的程序处,继续执行下去。中断分外部中断和内部中断,CC2430 共包含 18 个中断源(具体中断描述及中断向量的定义,可参考 CC2430 中文手册)。现在我们来看一下本开发板的电路图:开发板上已把 S1 按键与 P0.1 相连,本实验想要达到的效果就是,通过按键 S1 触发 P0.1 的中断,进而在中断服务子程序中控制 LED1 的亮/灭。(2)实验原理及流程图实验流程图如下:(3)实验源码/头文件#include /延时子函数#define led1 P1_0#define led2 P1_1#define led3 P1_2#define led4 P1_3void

20、 Delay(unsigned n) unsigned tt;for(tt = 0;tt0 ) /按键中断P0IFG /P0.1 中断标志清 0led1 = !led1;P0IF = 0; /P0 中断标志清 0EA = 1; /开中断首先初始化统时钟:选用 32MHz 晶体振荡器。然后初始化 LED:设置 P1 为通用 I/O 口,设置 P1.0 P1.3 方向为输出,然后关闭 4 个 LED 灯。再来配置外部中断的相关 SFR 寄存器,开启各级中断使能,涉及 3 个 SFR:EA、IEN1、PICTL(各 SFR详细介绍请查阅 CC2430 中文手册):EA 总中断使能;IEN1.5 P0

21、 中断使能;PICTL.3 P0.1 口中断使能;PICTL.0 设置 P0.1 口输入下降沿引起中断触发。然后在主函数中使用 while(1) 等待中断即可。CC2430 小贴士(1)位赋值语法小结很多时候,我们需要对单字节的 SFR 中的某一位赋值(0 或 1),以精确控制硬件设备。有的 SFR 支持位寻址,比如说 TCON、P0 等,此时,对位的赋值非常简单,只需查询 ioCC2430.h 头文件中 SFR Bit Access 部分的位定义即可:P0_0 = 0; /对 P0 第一位赋值 0 P0_0 = 1; /对 P0 第一位赋值 1 但有的 SFR 并不支持位寻址,就如本实验中的

22、 PICTL,此时想要对其中的某一位赋值,语法如下:PICTL 各中断分队队长:接下来是针对每一个功能部件(如 P0、定时器 1 等)的使能控制,此类 SFR 一般可位寻址,命名中一般含有 IE(Interrupt Enable):P0IE = 1;各中断队员:分队但由于每个功能部件内部也含有多个中断,所以最后一级就是针对这每一个中断的使能控制,此类 SFR 一般不可位寻址,命名中一般含有 IE(Interrupt Enable)或 IM(Interrupt Mask):PICTL |=0x01;不需死记硬背中断 SFR,只要了解其层次结构,然后用时查询手册或头文件即可。(3)中断程序的编写在

23、一个程序中使用中断,一般包括、两个部分:中断服务子程序的编写、中断使能的开启。中断使能已在上面介绍过,下面简单介绍一下中断服务子程序的编写:首先指定中断向量,可以在 ioCC2430.h 头文件中的 Interrupt Vectors 部分查询,语法如下:#pragma vector = 中断向量然后紧跟着编写中断处理程序,结构如下:_interrupt void 函数名 (void)/开中断/中断处理/中断标志清 0/关中断三、结语本篇介绍了基于 CC2430 的简单的外部中断的实现方法,有了中断的基础之后,接下来我们介绍另外一个非常重要的模块定时器。CC2430 共有 4 个定时器,可分三

24、类:定时器 1、定时器 2、定时器 3/4(3 与 4 的用法基本一样)。Zigbee 之旅(四):几个重要的 CC2430 基础实验定时器中断 一、承上启下上一篇,我们一起学习了简单的外部中断的实现。有了对中断的实践经验后,我们这一节来讨论一下定时器中断。CC2430 共有 4 个定时器,可分 3 类:定时器 1、定时器 2、定时器 3/4(3 与 4 的用法一致)。由于笔者也是刚刚接触 CC2430,涉及定时器的项目实战经验基本为零,所以不打算(也无能为力)深入剖析定时器。本篇仅就定时器 1 的计数溢出中断用法做简单的实验性探索,对于其输入捕获/输出比较/PWM 功能则略去不提。定时器 2

25、、定时器 3/4 也只做简单的功能介绍。等笔者的功力达到一定火候之后,再来站在 Zigbee实战经验的高度来完善本篇随笔。二、定时器 1定时器 1 是一个 16 位定时器,具有定时器/计数器/脉宽调制功能。它有 3 个单独可编程 输入捕获/输出比较 信道,每一个信道都可以用来当做 PWM 输出或用来捕获输入信号的边沿时间(关于什么是输入捕获/输出比较,以及如何实现 PWM 输出,读者可自行查阅 CC2430 中文手册)。定时器有一个很重要的概念:操作模式。操作模式包含: 自由运行模式(free-running )、 模模式(modulo )和 正计数/倒计数模式(up-down)。下面是摘自

26、CC2430 中文手册对 3 种模式的介绍:比较三种模式可以看出:自由运行模式的溢出值为 0xFFFF 不可变;而其他两种模式则可通过对 T1CC0 赋值,以精确控制定时器的溢出值。本实验正是利用此特性,通过特定的 T1CC0,使定时器每隔 1s 触发一次中断,从而精确控制 LED 灯的闪烁间隔为 1s。(1)实验简介在定时器的 modulo 模式下,精确控制 LED 灯的闪烁间隔为 1s,即:亮 0.5s 暗 0.5s 亮 0.5s 暗 0.5s 亮 0.5s 暗 0.5s(即从暗转亮的时刻间隔为 1s)。亮/暗的反转通过溢出中断来实现。(2)程序流程图(3)相关计算前面已提到,LED 灯的

27、状态为:亮 0.5s 暗 0.5s 亮 0.5s 暗 0.5s 亮 0.5s 暗 0.5s,而且需用溢出中断实现,因此要求定时器的溢出周期为 0.5s。为此,需要计算出相应的溢出值(暂设为 N)。系统时钟频率选为 32MHz,提供给定时器的时钟频率默认为 16MHz(两者都由特殊功能寄存器 CLKCON 来配置,具体可查阅 CC2430 中文手册)。对于定时器 1,设置其时钟分频为 128 分频。综上所述,可列式如下:求出 N=62500,其十六进制为 0xF424,即需要设置 T1CC0H=0xF4,T1CC0L=0x24 即可 。(4)实验源码及剖析/*实验说明:定时器 Timer1 实验

28、 ,定时器计数溢出, LED1 闪烁*/#include #define led1 P1_0 #define led2 P1_1 #define led3 P1_2 #define led4 P1_3 /*系统时钟初始化-*/void xtal_init(void)SLEEP /都上电while(!(SLEEP /晶体振荡器开启且稳定CLKCON /选择 32MHz 晶体振荡器SLEEP |= 0x04;/*LED 初始化-*/void led_init(void)P1SEL = 0x00; /P1 为普通 I/O 口P1DIR |= 0x0F; /P1.0 P1.1 P1.2 P1.3 输出

29、led1 = 1; /关闭所有 LEDled2 = 1;led3 = 1;led4 = 1;/*T1 初始化-*/void timer1_init(void)EA=1; /开总中断T1IE=1; /开 T1 中断OVFIM=1; /开 T1 溢出中断T1CC0L=0x24; /溢出值低 8 位 T1CC0H=0xF4; /溢出值高 8 位T1CTL = 0x0e; /128 分频 ;modulo 模式 (0x0000-T1CC0);开始运行 ;T1IF=0; /清中断标志 /*主函数-*/void main(void)xtal_init();led_init();timer1_init();w

30、hile(1); /等待溢出中断/*T1 终端服务子程序-*/#pragma vector=T1_VECTOR_interrupt void T1_ISR(void)EA=0; /关中断led1 = !led1; /LED 灯反转EA=1; /开中断T1CTL /清中断标志OK,编译程序并在线调试,开发板上的 LED1 如期闪烁起来,感觉闪烁间隔大概在 1s。但这还不足以证明实验的成功,若能严格测定间隔为 1s 就完美了 于是我打开 WIN 7 的时钟(点击任务栏右边的时间即可)。一边看着秒针,一边用眼角余光瞄着 LED1 的闪烁。结果是:在两分钟内,两者的步调基本完全一致(这种精度还可以容忍

31、 )。到此,实验才可以说基本完工,嘿嘿三、定时器 2定时器 2 又称 MAC 定时器,是专门为支持 IEEE 802.15.4 MAC 中的事件跟踪协议而特别设计的。该定时器具有一个可以用来记录已经发生的周期数的 8 位溢出计数器;有一个 16 位捕获寄存器,用来记录一个帧开始定界符接收/发送的精确时间或者传输完成的精确时间;还含有一个 16 位输出比较寄存器,用来在特定时间对无线模块产生各种命令选通信号(开始接受,开始发送等)。四、定时器 3/4定时器 3/4 是 8 位定时器,具有定时器/ 计数器/PWM 功能。T3/T4 有 2 个输出比较信道,每个信道都可用来当做 PWM 输出。五、结

32、语本节主要学习了定时器 1 的计数溢出中断的方法,实现了精确控制 LED 灯闪烁间隔为 1s。对其他几个定时器只是一笔带过,以后再回头补充。下一节,我们来介绍关于 CC2430 串口通信的相关内容。Zigbee 之旅(五):几个重要的 CC2430 基础实验串口通信 一、承上启下在无线传感网络中,CC2430 需要将采集到的数据发送给上位机(即 PC)处理,同时上位机需要向CC2430 发送控制信息。这一切都离不开两者之间的信息传递。这一节,我们就来学习如何实现 PC 机与CC2430 之间的串口通信。CC2430 包括 2 个串行通信接口 USART0 与 USART1,每个串口包括两个模式

33、:UART (异步)模式、SPI(同步)模式,本节仅涉及 UART 模式) 。二、串口通信实验(1)实验简介实现开发板与 PC 机的通信:PC 向 CC2430 发送某一字符串,CC2430 收到后返回此此字符串给 PC。(2)实验准备开始编写代码之前,需要搭建好硬件设施:正确连线 + 安装 USB 转串的驱动。硬件连线需要两条:CC2430 开发板的 JTAG 口 调试器 PC 的 USB 口(用于程序的调试、下载)CC2430 开发板的串口 PC 的 USB 口(用于 PC 与 CC2430 的数据通信)然后需要安装 USB 转串口的驱动(下载地址)为了向串口发送数据,还需要一个串口调试工

34、具(下载地址) 。(3)程序流程图(4)实验源码及剖析/*实验说明: UART0,波特率 115200bps, PC 机向 CC2430 送字符串(以 字符结束) , CC2430 收到后返回该字符串*/#include unsigned char recv_buf300 = 0;unsigned char recv_count = 0;/*系统时钟初始化-*/void xtal_init(void)SLEEP /都上电while(!(SLEEP /晶体振荡器开启且稳定CLKCON /选择 32MHz 晶体振荡器SLEEP |= 0x04;/*UART0 通信初始化-*/void Uart0I

35、nit(unsigned char StopBits,unsigned char Parity)PERCFG /选择 UART0 为可选位置一 ,即 RXD 接 P0.2,TXD 接 P0.3P0SEL |= 0x0C; /初始化 UART0 端口,设置 P0.2 与 P0.3 为外部设备 IO 口U0CSR = 0xC0; /设置为 UART 模式 ,并使能接收器U0GCR = 11;U0BAUD = 216; /设置 UART0 波特率为 115200bps,至于为何是 216 和11,可查阅 CC2430 中文手册U0UCR |= StopBits|Parity; /设置停止位与奇偶校验

36、/*UART0 发送数据-*/void Uart0Send(unsigned char data)while(U0CSR /等待 UART 空闲时发送数据U0DBUF = data;/*UART0 发送字符串-*/void Uart0SendString(unsigned char *s)while(*s != 0) /依次发送字符串 s 中的每个字符Uart0Send(*s+);/*UART0 接受数据-*/unsigned char Uart0Receive(void)unsigned char data;while(!(U0CSR /查询是否收到数据,否则继续等待data=U0DBUF;

37、 /提取接收到的数据return data; /*主函数-*/void main(void)unsigned char i,b;xtal_init();Uart0Init(0x00,0x00); /初始化 UART0,设置 1 个停止位,无奇偶校验Uart0SendString(“Please Input string ended with !rn“);recv_count = 0;while(1)while(1) b = Uart0Receive();UARTif(b=)break; /若接收到 ,则跳出循环,输出字符串recv_bufrecv_count = b; /若不是 ,则继续向字符

38、数组 recv_buf添加字符recv_count+;for(i=0; irecv_count; i+) /输出字符串Uart0Send(recv_bufi);Uart0SendString(“n“);recv_count =0; /重置首先配置 USART0 所对应的 I/O 口:通过对 PECFRG.0 清零来设置 UART0 为可选位置 1,即 RXD 对应P0.2,TXD 对应 P0.3。然后配置 P0.2 和 P0.3 为外部设备 I/O。然后选择 UART 模式,并使能接收器。接着配置 USART0 的参数:波特率 115200,无奇偶校验、停止位为1。接着向 PC 发送一条字符串

39、:Please Input string ended with !,然后就使用 while(1)不断地去试图获取接收的每一个字符。当此字符不为时,则表示还未输入完成,继续将此字符添加到字符数组 recv_buf 中;当此字符正好为时,则表示输入完成,因此跳出循环将 recv_buf 中的每一个字符按次序发送到 PC,同时重置 recv_count。(5)实验结果首先完成硬件连线,打开串口调试工具,配置参数如下图:点击“打开串口”,然后启动 IAR 调试,让程序跑起来,你会发现串口调试工具上的接收框中出现了预期的字符串:然后在串口调试工具中下方的发送 textbox 中,输入“Hello“ ,如下所示:点击“发送”之后,你或许会奇怪,为什么 CC2430 不会返回你所输入的内容,那是因为你没有用结尾。我们再次输入“Zigbee!“,点击“发送”,结果如下所示:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报