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,LIGHT_SWITCH的接收端改为轮询接收,运行一断时间进入不了接收中断

Other Parts Discussed in Thread: CC2530, CC2420

我用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);
           
    }
}