zigbee学习笔记2----cc2530 IO实验


        之前说不想写单片机实验的这一部分的,可是想想不写不行,要不以后说不清楚,因为学习中会遇到一些修改协议栈的IO的东西,比如LED灯啊,串口的IO设置啊等等,如果不做这部分的实验,可能后面看不明白,其实也是很简单的单片机实验而已,我这个只学过几天科班的单片机的能够搞明白,相信你们不用看都明白。

       我手头上拿得是佳杰的实验开发板,之前是因为公司的板子太久没有回来,我又不想等,所以就去淘宝买了这套板子,我叫他帮我加了一块,所以我有三块板子,全带lcd,还比较便宜,连带邮费360左右,芯片是cc2530F256的,就是说flash是256K的,这个在单片机领域来说算是很大的flash了,RAM没得选的,就8K。

      板子拿到的第一天觉得特别兴奋,因为之前只玩过嵌入式linux开发,后来在公司玩了一下cc1110和cc1101的东西,本来是想做一个无线协议栈的(肯定没有zigbee这种技术那么强大,能用,可是还有很多东西要考虑,后来就搁置了),现在玩zigbee,还挺新鲜的,我本来不是做学单片机出身的,所以对这些裸机编程没大家那么熟悉,而且新接触cc2530,说得肯定错漏百出,欢迎拍砖。高手们,就没必要看了,刚入门的,也许有点帮助。

      对于zigbee的介绍什么的我就不废话了,我们直接在板子上实现我们的一个led流水灯程序。

      用IAR建立一个工程,然后进行配置

      首先选择我们的cpu,我们是cc2530

然后配置一些堆栈

设置一下config

好了,工程设置好了之后,我们新建一个.c文件,然后把他add进来

代码很少,想想我以前在linux下写一个led驱动的时候要做的事情那比这个多得去了

 

#include <ioCC2530.h>

#define LED1_NUM    0x00
#define LED2_NUM    0x01
#define LED3_NUM    0x02

#define LED_ON_MODE     0x00
#define LED_OFF_MODE    0x01

#define LED1    P1_0
#define LED2    P1_1
#define LED3    P1_4

static void setLedMode(unsigned char lednum,unsigned char mode)
{
    switch(lednum)
    {
    case  LED1_NUM:
        LED1 = !!mode;
        break;
    case  LED2_NUM:
        LED2 = !!mode;
        break;
    case LED3_NUM:
        LED3 = !!mode;
        break;
    default:
        break;
    }
}

static void initLED(void)
{
    P1SEL &= ~0x13;
    P1DIR |=0x13;
    LED1 = !!LED_OFF_MODE;
    LED2 = !!LED_OFF_MODE;
    LED3 = !!LED_OFF_MODE;
}
static void Delay(unsigned char n)
{
    unsigned char i; 
    unsigned int j; 
    for(i = 0; i < n; i++) 
        for(j = 1; j; j++) 
            ; 
} 

int main()
{
    unsigned char status = 1;
    initLED();
    while(1){
       setLedMode(LED1_NUM,status) ;
       Delay(5);
       setLedMode(LED2_NUM,status) ;
       Delay(5);
       setLedMode(LED3_NUM,status) ;
       Delay(5);
       status = !status;
    }
}

我们来看看佳杰的LED是怎么接的:

其实这个x接的是p1_0.其他两盏灯分别接在了P1_1和p1_4上,好了,下面对刚学单片机的解析一下这个程序

首先是初始化LED的函数

static void initLED(void){ 

P1SEL &= ~0x13;

 P1DIR |=0x13; 

LED1 = !!LED_OFF_MODE; 

LED2 = !!LED_OFF_MODE; 

LED3 = !!LED_OFF_MODE;

}

首先我们要用这个三个io口作为我们的led灯控制接口,那么我们必须得去初始化这个几个口,要不使用起来就会有问题,那初始化该做什么事情呢?首先我们要把这三个口设置为普通的io口,因为我们的LED就好是一个普通的设备,然后我们要设置这三个io的输入输出方向,因为我们的led是一个输出设备,那么我们要把这三个口设置i为输出。

好,怎么设置为普通的IO口呢?首先我们来看一下P1SEL这个寄存器,涉及到寄存器的东西,不懂的话,就去找datasheet,打开datasheet然后ctrl+f,然后输入P1SEL然后回车查找,我们可以找到这么一段:

The registers for the I/O ports are described in this section. The registers are:
· P0: Port 0
· P1: Port 1
· P2: Port 2
· PERCFG: Peripheral-control register
· APCFG: Analog peripheral I/O configuration
· P0SEL: Port 0 function-select register
· P1SEL: Port 1 function-select register
 那么就是说这个寄存器是作为p1这组io的功能选择寄存器,然后我们在继续往下找,找找这寄存器的table

这里面说明了这寄存器每一个bit代表什么意思,是否可读可写,默认的值是什么,每一位设置为0或者1代表什么意思。我们可以看到设置为0的时候就代表这个io口是作为普通io使用的。那么我们要把p1.0,p1.1,p1.4设置为0,那么我们设置者三个bit为0,可不能影响其他bit,那么在c语言学习的时候只能用什么呢?对就是&,你把你要设置那一个bir设置为0,其他bit设置为1,然后跟原来的&就可以了,P1SEL &= ~0x13;就是做这么一件事情。

好了,配置好io为普通io之后,我们就要设置一下这个io的方向了,同样是有一个寄存器设置的:P1DIR。

好,我们继续datasheet,同样你可以找到这么一句

P1DIR: Port 1 direction register

证明我没有骗你,然后我们找找他的table

和上面那个table是一样的,我们看到,当设置对应的bit为0的时候这个io口是作为输入io口,设置为1的时候是作为输出io,那么我们肯定要把1.0,1.1,1.4这三个口设置为输出,P1DIR |=0x13;就是做这么一件事情。

好了,初始化完毕,程序也基本不用再解析了,还有要知道的是我这里的LED是低电平亮的,看原理图的接线就知道。

rebuilt all 这个工程,然后下载到板子上,拿掉仿真器,就可以看到这三盏灯依次亮起来,然后依次灭掉,如此循环。

还有个设置需要新手注意的,那就是,如果你想用在线仿真的话,那么要设置工程成这样子

如果你是像我这样子下载下去的话,那么请选择下面的other这一项,还有因为佳杰的仿真器使用到了p1.4这个口,所以必须拿掉了仿真器你才可以看到led3的亮和灭,否则你看不到这个灯有任何变化的。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: zstack-cc2530-2.3.0-1.4.0是一个基于CC2530芯片的ZigBee协议栈版本,用于构建低功耗、无线传感器网络。它支持ZigBee协议的各种功能,如网络组建、设备发现、数据传输等。同时,它还提供了丰富的API接口和开发工具,方便开发人员进行应用开发和调试。 ### 回答2: zstack-cc2530-2.3.0-1.4.0是一款嵌入式无线协议栈软件,主要应用于物联网领域的传感器、控制设备等智能硬件,使其能够实现无线通信、数据采集和云端对接。该协议栈基于IEEE 802.15.4标准,采用Zigbee协议,支持网络拓扑结构包括星型、点对点、树状和网状等。 zstack-cc2530-2.3.0-1.4.0的特点是具有高度的可靠性、稳定性和安全性。其采用AES加密算法,能够保证通信数据的隐私安全;同时支持信号质量监测和链路质量反馈,能够实现网络拓扑的优化和故障检测等功能;此外,该协议栈还支持OTA升级和协议栈配置等高级功能,便于对智能硬件进行远程维护和管理。 除此之外,zstack-cc2530-2.3.0-1.4.0还具有易于开发和适配的特点。该协议栈提供了丰富的API接口和开发工具包,支持多种开发环境和硬件平台,方便开发人员进行二次开发和定制化,大大降低了开发成本和周期。同时,该协议栈还通过Zigbee联盟的认证,确保了其在标准兼容性、互操作性和稳定性等方面的表现。 总之,zstack-cc2530-2.3.0-1.4.0是一款功能强大、易于开发和适配、具有高可靠性和安全性的无线协议栈软件,可以广泛应用于物联网领域的智能硬件。 ### 回答3: zstack-cc2530-2.3.0-1.4.0 是一种无线通信模块,它是针对 TI 公司的 CC2530 系统级芯片设计的。该模块运行在 2.4GHz ISM 频段,可以实现高质量的数据传输,并且在无线网络中实现高度的可靠性和安全性。该模块具有协同处理器、内存、收发器、MAC 和 PHY 等多种功能,可以应用于多种物联网场景。 zstack-cc2530-2.3.0-1.4.0 支持运行 ZigBee 网络协议栈,并提供了丰富的接口和 API,以便用户能够快速、轻松地开发具有丰富功能的 ZigBee 产品。该模块基于 Z-Stack 协议栈,支持 ZDO、ZCL 等多个协议,可以实现灵活、可靠、高效的无线通信。 该模块还支持 OTA(空中升级)功能,可以让用户通过无线网络升级设备固件。同时,该模块还具有低功耗模式,可以使设备的电池寿命更长。 总之,zstack-cc2530-2.3.0-1.4.0 是一种高度可靠、灵活、安全性强的无线通信模块,可以为物联网应用提供强有力的支持,并且具有广泛的适用性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值