完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有多个问题要问:
1.官方协议栈给的SimpleApp例程中,终端入网结果的上层处理有以下代码 void zb_StartConfirm( uint8 status )[ if ( status == ZB_SUCCESS ) [ myAppState = APP_START; // Set event to bind to a collector osal_start_timerEx( sapi_TaskID, MY_FIND_COLLECTOR_EVT, myBindRetryDelay ); ] else [ // Try joining again later with a delay osal_start_timerEx( sapi_TaskID, MY_START_EVT, myStartRetryDelay ); ]]我想问这句 osal_start_timerEx( sapi_TaskID, MY_START_EVT, myStartRetryDelay );有什么用呢,我把他屏蔽后,按键还是一样进行入网流程。2.入网流程在不定义HOLD_AUTO_START的情况下是自动进行的,假如终端需要长时间不入网,但是需要进行其他动作,比如采集温度之类的,怎么处理才能较好的降低功耗?以下是否合理UINT16 ZDApp_event_loop( uint8 task_id, UINT16 events )[ uint8 *msg_ptr;……………… if ( events & ZDO_NETWORK_INIT ) [ static uint8 joinCount=0; // Initialize apps and start the network devState = DEV_INIT; osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT ); #ifdef ED_SENSOR if(joinCount++<20) [ ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode, DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER ); ] else [ joinCount=0; MAC_RADIO_RXTX_OFF(); ] #else ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode, DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER ); #endif // Return unprocessed events return (events ^ ZDO_NETWORK_INIT); ]如上,加网20次后关闭加网流程,并关闭RXTX。 我想在不使用RXTX的情况下,关闭32M外部晶振,启用16M内部RC,是否会影响温度采集进程? |
|
相关推荐
3 个讨论
|
|
wenlonghbo 发表于 2018-8-10 06:38 1.明白,问题解决! 2.使用此函数也是需要判断他扫描了多少次,然后再调用比较合理 3.TX/RX /Idle的切换速度很快?我没明白什么意思,我的终端经常1天甚至3天的时间不在网络,我觉得有必要关闭TX/RX,并将时钟由32MHz XOSC切换到16MHz RC。 整体更改为 if ( events & ZDO_NETWORK_INIT ) [ static uint8 joinCount=0; // Initialize apps and start the network devState = DEV_INIT; osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT ); #ifdef ED_SENSOR if(joinCount++<20) [ ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode, DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER ); ] else [ uint16 i; joinCount=0;ZDApp_StopJoiningCycle(); //in order to save power,after joining failed,turn off RX,TX and 32MHz XOSC ,turn on 16MHz RC MAC_RADIO_RXTX_OFF(); SLEEPCMD &= ~OSC_PD; /* turn on 16MHz RC and 32MHz XOSC */ while (!(SLEEPSTA & XOSC_STB) || !(SLEEPSTA & HFRC_STB)); /* wait for 32MHz XOSC and 16MHz RC stable */ asm("NOP"); /* chip bug workaround */ for (i=0; i<504; i++) asm("NOP"); /* Require 63us delay for all revs */ CLKCONCMD = (CLKCONCMD_16MHZ | OSC_32KHZ); /* Select 16MHz RC and the source for 32K clock */ while (CLKCONSTA != (CLKCONCMD_16MHZ | OSC_32KHZ)); /* Wait for the change to be effective */ SLEEPCMD |= OSC_PD; /* turn off 32MHz RC */ ClockFlag = RC_16MHZ_ON; IsFirstJoin = FALSE; ] #else ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode, DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER ); #endif // Return unprocessed events return (events ^ ZDO_NETWORK_INIT); ] |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
686 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
601 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1055 浏览 1 评论
744 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
526 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
167浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
128浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
55浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 10:23 , Processed in 0.924746 second(s), Total 61, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号