BasicRF 简析(五:appLight()简析)

/***********************************************************************************

* @fn          appLight

*

* @brief       Application code for light application. Puts MCU in endless

*              loop waiting for user input from joystick.

*              //等待接收的死循环;

* @param      basicRfConfig - file scope variable. Basic RF configuration data

             //BasicRF基本配置参数;

*              pRxData - file scope variable. Pointer to buffer for RX data

*              //指向接收数据的缓冲区;

* @return      none

*/

static void appLight()

{

    halLcdWriteLine(HAL_LCD_LINE_1, "Light");   //LCD 相关提示;

    halLcdWriteLine(HAL_LCD_LINE_2, "Ready");

   

#ifdef ASSY_EXP4618_CC2420

    halLcdClearLine(1);

    halLcdWriteSymbol(HAL_LCD_SYMBOL_RX, 1);

#endif

 

// Initialize BasicRF

//BasicRF初始化,参看上篇;

    basicRfConfig.myAddr = LIGHT_ADDR;

    if(basicRfInit(&basicRfConfig)==FAILED) {

      HAL_ASSERT(FALSE);

    }

    basicRfReceiveOn(); //再次将txState.receiveOn设置为TRUE,并进入接收状态;

 

// Main loop

//主循环,一旦有接收数据,则进行处理;

//对于灯开关例程中 无复杂操作的主循环的内容,即:青色加粗部分 简单修改后完全可以写至RF中断服务子程序中来完成;

//对于复杂的操作,RF中断优先级比较高,可以通过标志位把 不重要的部分 分离出中断服务子程序,以响应其他中断;

    while (TRUE) {

        while(!basicRfPacketIsReady());  //接收中断完成则跳出轮询,进行后续的数据处理等操作; 

        //将接收的数据写入pRsData

//若接收数据命令正确则LED灯状态切换一次;

        if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) {

            if(pRxData[0] == LIGHT_TOGGLE_CMD) {

                halLedToggle(1);

            }

        }

    }

}

猜你喜欢

转载自blog.csdn.net/z_hualin/article/details/79010307