🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
* 导师视频讲解:[**去听课**](https://www.bilibili.com/video/BV1k34y1D7Vz?p=32) >[success] **技术支持说明:** >**1**.一般以自主学习为主 > **2**.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/zigbee) > **3**.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解! <br/> 前面的章节讲解了事件的应用,那么本节课利用事件机制来实现闪烁LED的效果。 <br/> ## **重定义LED的物理映射** 在hal_led.h文件中,重定义LED1的物理映射定义,代码如下: ``` //LED1 #define LED1_BV BV(4) #define LED1_SBIT P0_4 #define LED1_DDR P0DIR #define LED1_POLARITY ACTIVE_HIGH ``` 因为配套的ZigBee开发板是把LED连接到P0\_4的,所以这里把LED1的引脚修改为P0_4。 <br/> ## **LED API的应用** 在讲解OSAL的章节中,自定义了一个SAMPLEAPP_TEST_EVT事件,并且编写了对应的事件处理代码,本节课把事件处理代码修改为闪烁LED。 ### 回到应用层,在zcl\_samplesw.c文件的事件处理函数zclSampleSw_event_loop()中修改自定义事件SAMPLEAPP_TEST_EVT的处理逻辑,代码如下: ``` // 处理自定义的用户事件:SAMPLEAPP_TEST_EVT if ( events & SAMPLEAPP_TEST_EVT ) { printf("Blink LED!\r\n"); HalLedBlink( HAL_LED_1,//指定第1盏LED 10,//指定闪烁次数是10次 50,//指定50%的时间LED是处于开启状态 1000);//指定1次闪烁的时间周期是1000ms //消除已经处理的事件,然后返回未处理的事件 return ( events ^ SAMPLEAPP_TEST_EVT ); } ``` <br/> ## **启用LED宏定义** 前面章节曾经讲到,需要用到哪些外设功能就去定义对应的宏,那么现在需要用到LED功能,也就是需要去定义LED功能对应的宏就可以了。右击工程名字,然后选择Options,打开工程配置,如图所示。 ![](https://img.kancloud.cn/3d/c5/3dc5c4d20b25965149200123de85254b_698x524.png =500x) ### 在工程设置中选择C/C++ Compiler→Preprocessor,在Defined symbols中添加HAL_LED=TRUE,然后点击OK,如图所示。 ![](https://img.kancloud.cn/75/82/758288e46cd028bb810050dfbd2a1e13_535x441.png =400x) <br/> ## **代码测试** (1)使用配套的仿真器把ZigBee开发板连接到电脑上。 ### (2)点击Download and Debug按钮进行程序的编译、链接和下载并进入仿真模式,如图所示。 ![](https://img.kancloud.cn/5e/3f/5e3f0cd4d6b2acdd3b34a2cbee748297_698x398.png =500x) ### (3)进入仿真模式之后,点击Go按钮运行程序,如图所示。 ![](https://img.kancloud.cn/97/7c/977c56326ad3c6f823fd947e14bd1d7c_310x100.png =300x) ### (4)程序运行后会在Terminal I/O窗口中输出“Blink LED!”,如图所示。 ![](https://img.kancloud.cn/ea/8c/ea8c8e6a81efb707aa51ac186ec80efd_297x359.png =300x) ### (5)与此同时,可以在ZigBee开发板中观察到与P0_4连接的LED闪烁了10次。 <br/> <br/> ## **项目定制** * 如需项目定制开发,可扫码添加项目经理好友(注明“**项目定制**”) * 定制范围:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技术方案 * 善学坊官网:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非项目定制**勿扰**,此处**非**技术支持