ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:21.02KB ,
资源ID:15778073      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15778073.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ZigBee学习之25InitBoardWord文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ZigBee学习之25InitBoardWord文件下载.docx

1、/ #define HAL_LED_MODE_OFF 0x00/#define HAL_LED_MODE_ON 0x01/#define HAL_LED_MODE_BLINK 0x02/#define HAL_LED_MODE_FLASH 0x04/#define HAL_LED_MODE_TOGGLE 0x08/LED设置函数【hal_led.c】uint8 HalLedSet (uint8 leds, uint8 mode)#if (defined (BLINK_LEDS) & (HAL_LED = TRUE)/前提条件是定义了闪烁LED和LED硬件驱动服务使能;/ HAL_LED定义在【

2、hal_board_cfg.h】#ifndef HAL_LED#define HAL_LED TRUE/当设为FALSE时就不使用LED#endif#if (!defined BLINK_LEDS) &#define BLINK_LEDSuint8 led;HalLedControl_t *sts;/ LED控制结构体typedef struct uint8 mode; /* 操作模式 */uint8 todo; /* 剩余的闪烁周期数 */uint8 onPct; /* 周期中所占的比例 */uint16 time; /* 开关周期时间(msec) */uint32 next; /* 下次改

3、变的时间 */ HalLedControl_t;switch (mode)case HAL_LED_MODE_BLINK:HalLedBlink (leds, 1, HAL_LED_DEFAULT_DUTY_CYCLE, HAL_LED_DEFAULT_FLASH_TIME);/LED设置的一些默认参数【hal_led.h】#define HAL_LED_DEFAULT_MAX_LEDS 4#define HAL_LED_DEFAULT_DUTY_CYCLE 5#define HAL_LED_DEFAULT_FLASH_COUNT 50#define HAL_LED_DEFAULT_FLASH

4、_TIME 1000/LED闪烁函数【hal_led.c】void HalLedBlink (uint8 leds, uint8 numBlinks, uint8 percent, uint16 period)/同样先判断是否启用了LED并且使用LED闪烁功能if (leds & percent & period)/判断参数的有效性,percent参数指明一个周期中LED将开启的时间if (percent mode = HAL_LED_MODE_OFF; /*关闭先前的模式 */time = period; /* Time for one on/off cycle */onPct = perc

5、ent; /* % of cycle LED is on */todo = numBlinks; /* Number of blink cycles */if (!numBlinks) sts-mode |= HAL_LED_MODE_FLASH;/如果规定的次数未达到则继续闪烁next = osal_GetSystemClock(); /* Start now */ /读取当前系统时钟【OSAL_Timers.c】 uint32 osal_GetSystemClock( void )return ( osal_systemClock );/static uint32 osal_systemC

6、lock; /这样看来第一次运行的时候osal_systemClock=0,系统中应该启动了定时器,用来记录系统运行时间。mode |= HAL_LED_MODE_BLINK; /* Enable blinking */leds = led;/屏蔽掉已设置好的这个LEDled = 1;/检测下一个LEDsts+;/真的是高手才能写出的函数啊!自叹,C语言编程能力还差的远啊osal_set_event (Hal_TaskID, HAL_LED_BLINK_EVENT);/【hal_drivers.h】/#define HAL_LED_BLINK_EVENT 0x0002/extern uint8

7、 Hal_TaskID;/此函数为用户设置任务标志【OSAL.c】/第一个参数是任务ID,第二个参数是要设置的事件byte osal_set_event( byte task_id, UINT16 event_flag )if ( task_id tasksCnt )/【sapi.c】const pTaskEventHandlerFn tasksArr = macEventLoop,nwk_event_loop,Hal_ProcessEvent,#if defined( MT_TASK )MT_ProcessEvent,APS_event_loop,ZDApp_event_loop,SAPI_

8、ProcessEvent;/【OSAL_Tasks.h】/事件处理函数原型:typedef unsigned short (*pTaskEventHandlerFn)( unsigned char task_id, unsigned short event );/定义事件处理函数的函数指针类型/tasksArr中任务事件循环中的顺序必须和osalInitTask中任务的初始化顺序一致const uint8 tasksCnt = sizeof( tasksArr ) / sizeof( tasksArr0 );/得到任务数/只有当任务ID小于总任务数时才继续执行,也就是说只有当此为有效任务才执行

9、。halIntState_t intState;/【hal_mcu.h】其实就是一个无符号字符类型/typedef unsigned char halIntState_t;HAL_ENTER_CRITICAL_SECTION(intState); / 维持全局中断状态/【hal_mcu.h】#define HAL_ENTER_CRITICAL_SECTION(x) st( x = EA; HAL_DISABLE_INTERRUPTS(); )/保存当前全局中断状态,然后关闭全局中断#define HAL_EXIT_CRITICAL_SECTION(x) st( EA = x;#define H

10、AL_CRITICAL_STATEMENT(x) st( halIntState_t s; HAL_ENTER_CRITICAL_SECTION(s); x; HAL_EXIT_CRITICAL_SECTION(s);tasksEventstask_id |= event_flag; / Stuff the event bit(s)/uint16 *tasksEvents;HAL_EXIT_CRITICAL_SECTION(intState); / Release interruptselsereturn ( INVALID_TASK );/如果任务ID超出返回则返回任务无效/返回值类型定义在【ZComDef.h】/#define INVALID_TASK 1return ( ZSUCCESS );Else/如果点亮时间百分比超过100%也就相当于常亮了,就执行LED常亮的设置HalLedSet (leds, HAL_LED_MODE_ON);/【hal_led.c】/一样的前提是开始了LED硬件驱动服务/检测要切换的LED模式HalLedBlink (leds, 1, HAL_LED_DEFAULT_DUTY_CYCLE,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1