我用CC2530,做这样一个实验。发送端A,在11信道上发;而接收端在11到26信道上轮询。但是接收端跑一段时间,就会收不到数据。死之前。有时会收到900多包,有时会收到100000多包。经过实验,发现收不到数据不是因为CPU跑死了,而是因为没有进入接收中断。不知道为什么运行一段时间就无法进入中断了。工程文件见附件,求大侠指导!
接收端代码如下。
static void appLight()
{
unsigned int i=1,j=0;
int8 tmp;
#ifdef ASSY_EXP4618_CC2420
halLcdClearLine(1);
#endif
// Initalise uart
initUART_RX();
UartTX_Send_String("Begin~!!\n",10);
// Initialize BasicRF
basicRfConfig.myAddr = LIGHT_ADDR;
basicRfConfig.channel = RF_CHANNEL+i;
if(basicRfInit(&basicRfConfig)==FAILED) {
HAL_ASSERT(FALSE);
}
basicRfReceiveOn();
LED=0;
// Main loop
while (TRUE) {
start:
basicRfConfig.myAddr = LIGHT_ADDR;
i=(i++)%16;
if(basicRfInit(&basicRfConfig)==FAILED) {
HAL_ASSERT(FALSE);
}
basicRfReceiveOn();
Delay(800);
j=0;
while(!basicRfPacketIsReady())
{
j++;
if(j>1000)
{
goto start;
}
}
if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) {
UartTX_Send_String(pRxData,APP_PAYLOAD_LENGTH);////////////////////////
}
basicRfReceiveOff();
Delay(800);
}
}