(精简)基于CC2530的ZIgbee3.0 ZStack协议HAL库控制LED灯闪烁

ZStack3.0链接(取自TI官网,如有侵权,联系删除)

通过网盘分享的文件:Z-Stack 3.0.2.exe
链接: https://pan.baidu.com/s/1zNLnx4tllg3NkGLAEK9aPA?pwd=vph1 提取码: vph1

Z-Stack 3.0.2\Projects\zstack\HomeAutomation\SampleSwitch\CC2530DB

按照路径打开工程SampleSwitch.eww

一、查看HAL库硬件软件适配情况

打开hal_board_cfg.h文件

对照自己的开发板做相应修改,如您的LED1灯在P1_2端口,则改为LED1_BV             BV(2)    LED1_SBIT       P1_2,以此类推。

二、定义用户自定义函数事件号

打开zcl_samplesw.h文件

添加代码:

#define SAMPLEAPP_TEST_EVT         0x1000

(任务事件号只能有一位为1,例:0x1000二进制为0001 0000 0000 0000)

打开zcl_samplesw.c

在用户层的初始化函数zclSampleSw_Init()里添加代码:

 osal_start_timerEx(zclSampleSw_TaskID, SAMPLEAPP_TEST_EVT, 3000);

该段代码的含义是:启动一个定时器,任务的ID是zclSampleSw_TaskID事件ID是SAMPLEAPP_TEST_EVT,当3秒到达时把事件SAMPLEAPP_TEST_EVT添加到zclSampleSw_TaskID任务的事件队列中,事件处理函数会处理这个事件。

(一个任务可能包含多个事件,比如打开LED灯,打开风扇,关闭空调等等...)

三、应用层逻辑代码

我们首先学习Zstack协议包下HAL库封装的LED闪烁函数:

该函数在hal_led.c文件中定义.

extern void HalLedBlink( uint8 leds, uint8 cnt, uint8 duty, uint16 time );

四个参数分别为:LED端口选择,闪烁次数,占空比,时间。

zcl_samplesw.c文件中找到用户事件循环函数zclSampleSw_event_loop(),在里面添加代码:

if(events & SAMPLEAPP_TEST_EVT)
  {
    HalLedBlink(HAL_LED_1,10,50,1000); //LED1端口,闪烁10次,占空比50,间隔1s
    HalLedBlink(HAL_LED_2,10,50,1000);
    return ( events ^ SAMPLEAPP_TEST_EVT);
  }

随后把程序烧写进开发板。

可以看到LED1,LED2共同闪烁10次停下。

实验现象:

ZStack协议控制LED闪烁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值