主题中讨论的其他部件: Z-stack
您好,
我有一个CC2530,其中上载了SampleLight程序,当它连接到集线器时,当前出现了不应该出现的峰值。 当CC2530每1秒从PM2唤醒一次时,就会出现较大的峰值。 SampleLight中的哪个代码可能会导致这些微小峰值?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
最大的高峰是轮询。 我发现微小的峰值是由红色代码引起的,如下所示。 该代码用于检查CC2530是否连接到集线器。 如果不是,则应再次扫描集线器。 显然,应该执行此任务的红色代码导致了问题。 有没有其他方法可以让CC2530在我按HAL_KEY_SW_6时检查是否已连接到集线器?
IF (KEY & HAL_KEY_SW_6)
{
ZDApp_ChangeState(Dev_Nwk_disc);
//重新开始扫描以重新加入
ZDApp_StartJoiningCycle();
OSAL_START_TIMEREx( ZDAppTaskID, ZDO_REUST_backoff, zgDefaultRejoinScan );
OSAL_START_TIMEREx (zclSampleLight_TaskID,turnoff_motor_EVT,5000);
KeyPressCnt=0;
OSAL_START_TIMEEREx (zclSampleLight_TaskID,KEYHOLD_EVT,100);
//立即切换本地灯
zclSampleLight_OnOff = zclSampleLight_OnOff? LIGHT _OFF:LIGHT _ON;
对于(int i=0;i<15;i++){
Onboard_Wait (1万);
}
}
我现在尝试使用的一种方法是下面的代码,如果CC2530找不到集线器,并且它现在处于回退模式,并且DREJOIN_SCAN (20秒)用完,我按SW6,它就会开始扫描。 但问题在于代码为红色。 这应该是说明 DREJOIN_SCAN计时器是否用完的代码。 但是不管用。 我能说什么代码,这样,如果DREJOIN_BACUOFF计时器已启动,那么它将执行此操作?
IF (HAL_KEY_SW_6 && devState=dev_Nwk_backoff && zgDefaultRejoScan){
ZDApp_ChangeState(Dev_Nwk_disc);
//重新开始扫描以重新加入
ZDApp_StartJoiningCycle();
OSAL_START_TIMEREx( ZDAppTaskID, ZDO_REUST_backoff, zgDefaultRejoinScan );
}
我一直在检查,我不确定为什么会出现此问题。 下面是我的代码。 您认为是什么原因导致了此问题?