我是靠谱客的博主 忐忑人生,最近开发中收集的这篇文章主要介绍ZigBee基础控制实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、实验目的与要求
1、通过本实验对编译环境和程序架构有一定的认识
2、学习基于ZStack控制LED的操作;
3、学习OSAL系统API接口函数使用;

二、实验原理与内容
1、LED电路图
在这里插入图片描述
2、基本控制原理
通过输出高低电平来驱动灯。
CC2530 的 IO 口配置我们需要配置三个寄存器 P1SEL 、P1DIR 、P1INP。IO口功能如下表所示:
在这里插入图片描述

  • P1SEL (0:普通 IO 口 1:第二功能)
  • P1DIR (0:输入 1:输出)
  • P1INP (0:上拉/下拉 1:三态)
    按照表格寄存器内容,我们对 LED1,也就是 P1_0口进行配置,当 P1_0输出高电平时 LED1被点亮。

3、实验内容:
3.1安装IAR集成开发环境。
3.2 安装TI协议栈 Zstack。
3.3 基于ZStack的LED控制,实现亮与灭,并实现灯的连续闪烁的效果。

三、实验设备与软件环境
1、硬件:实验箱1台,CC Debugger仿真器一套
2、软件:IAR Embedded WorkBench 8.10,ZStack协议栈:ZStack-CC2530-2.5.1a

四、实验过程与结果

  1. 安装IAR8.10集成开发环境
    安装IAR 8.1过程截图
    在这里插入图片描述
    IAR 8.1的界面
    在这里插入图片描述
    设置工程属性
    在这里插入图片描述
  2. 安装TI 协议栈 Zstack-CC2530-2.5.1a
    在这里插入图片描述
    3.编写实验源代码文件
    (1)打开IAR 8.1,点击Project->Create New Project新建一个工程;
    (2)设置工程属性
    在这里插入图片描述
    (3)新建文件,编写代码,并把文件添加到工程里面(详细代码见附录)
    在这里插入图片描述
    (4)编译调试,点“Make”
    在这里插入图片描述
    (5)连接仿真器到目标板,并且给目标板上电

在这里插入图片描述
(6)把代码下载到目标板上

在这里插入图片描述
(7)观察实验现象:LED灯连续闪烁
效果图一
在这里插入图片描述
效果图二
在这里插入图片描述
(8)实验结果现象视频
在这里插入图片描述
五、操作异常问题与解决方案
异常问题:Download and Debug过程中有问题,无法将代码下载到目标板。
解决方案:没有安装SmattRF04EB驱动,首先打开设备管理器,然后找到SmattRF04EB驱动,点击更新找到IAR 8.1的安装路径即可。

六、实验总结
在本次实验中,我成功安装了安装IAR集成开发环境和安装TI协议栈 Zstack。通过在IAR 8.1中编写代码,基于ZStack的LED控制,实现了LED的亮与灭,并实现灯的连续闪烁的效果。通过本实验,使我对编译环境和程序架构有了一定的认识,同时也掌握了基于ZStack控制LED的操作和OSAL系统API接口函数使用。

七、附录
#include <ioCC2530.h>

#define uint unsigned int
#define uchar unsigned char

//定义控制LED灯的端口
#define LED1 P1_0 //定义LED1为P10口控制

//函数声明
void Delayms(uint xms); //延时函数
void InitLed(void); //初始化P1口
void InitT3(); //初始化定时器T3

uint count;//用于定时器计数

/****************************
//延时函数
*/
void Delayms(uint xms) //i=xms 即延时i毫秒
{
uint i,j;
for(i=xms;i>0;i–)
for(j=587;j>0;j–);
}
/

//初始化程序
*****************************/
void InitLed(void)
{
P1DIR |= 0x01; //P1_0义为输出
P1INP |= 0X01; //打开下拉
LED1 = 0; //LED1灯熄灭
}
//定时器初始化
void InitT3()
{
T3CTL |= 0x08 ; //开溢出中断
T3IE = 1; //开总中断和T3中断
T3CTL|=0XE0; //128分频,128/16000000*N=0.5S,N=65200
T3CTL &= ~0X03; //自动重装 00->0xff 65200/256=254(次)
T3CTL |=0X10; //启动
EA = 1;
}

/***************************
//主函数
***************************/
void main(void)
{
InitLed(); //调用初始化函数
InitT3();
while(1);
}

#pragma vector = T3_VECTOR //定时器T3
__interrupt void T3_ISR(void)
{
IRCON = 0x00; //清中断标志, 也可由硬件自动完成
if(++count>254) //254次中断后LED取反,闪烁一轮(约为0.5 秒时间)
{
count = 0; // 计数清零
LED1=~LED1;
}
}

最后

以上就是忐忑人生为你收集整理的ZigBee基础控制实验的全部内容,希望文章能够帮你解决ZigBee基础控制实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部