微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > BasicRF 简析

BasicRF 简析

时间:10-02 整理:3721RD 点击:
/***********************************************************************************
* @fn          main
*
* @brief       This is the main entry of the "Light Switch" application.
*              After the application modes are chosen the switch can
*              send toggle commands to a light device.
* @param       basicRfConfig - file scope variable. Basic RF configuration
*              data
*              appState - file scope variable. Holds application state
*
* @return      none
*/
 
/***********************************************************************************
@函数       主函数
@简介      “灯开关”程序的起始主函数。在选定程序模式后,由开关节点按键 向 灯节点发送一个 状态切换命令 来控制灯的灭。
@参数       basicRfConfig - Basic RF 配置信息
typedef struct {
    uint16 myAddr;                 //本节点地址;
    uint16 panId;                      //PANID号;
    uint8 channel;                     // 通道号;
    uint8 ackRequest;             //是否要求有应答;
    #ifdef SECURITY_CCM       //安全设置(目前应用不涉及该应用,一般跳过处理);
    uint8* securityKey;
    uint8* securityNonce;
    #endif
} basicRfCfg_t;
 
                        appState – 显示应用程序状态
basicRfRxInfo_t 和 basicRfTxState_t收发的一些信息状态。
@返回值      无
*/
 
void main(void)
{
    uint8 appMode = NONE;
    //如果程序中 多个功能选择的话 可以考虑 设备模式变量 来进行程序功能的选择;
    //设备参数的选择也是同样的道理,如:设备编号。
 
    // Config basicRF
    basicRfConfig.panId = PAN_ID;                  //该程序中关于网络参数PANID 、通道号、短地址都以常量的形式固定;
    basicRfConfig.channel = RF_CHANNEL;
    basicRfConfig.ackRequest = TRUE;           //  该值为真,该节点发送数据包后,要求接受方收到数据包后返回一个ACK;
#ifdef SECURITY_CCM
    basicRfConfig.securityKey = key;
#endif
 
    // Initalise board peripherals
    halBoardInit();              //  进行时钟设置 和 IO设置,如:LED、按键、LCD等相关外设;
    halJoystickInit();           // 重复上一步基本的初始化,多出部分为可选择功能:开启中断服务子程序;
 
    // Initalise hal_rf
     // 进行RF初始化,如果RF部分初始化失败,则指示灯动作;
    if(halRfInit()==FAILED) {
      HAL_ASSERT(FALSE);
    }
 
    // Indicate that device is powered
    halLedSet(1);               // LED1亮;
 
    // Print Logo and splash screen on LCD
   // 液晶显示logo;
    utilPrintLogo("Light Switch");          
 
    // Wait for user to press S1 to enter menu
    //等待按下S1 进入功能选择目录; 
    while (halButtonPushed()!=HAL_BUTTON_1);
    halMcuWaitMs(350);
    halLcdClear();
 
    // Set application role
     //通过Joystick操作 赋值给 程序模式变量 以进行功能的选择;
    //若设备节点功能固定的话,这部分可舍去;
    appMode = appSelectMode();
    halLcdClear();
 
    // Transmitter application
   //根据 模式变量的值 来进入不同的功能程序;
    //开关节点为发送程序;
    if(appMode == SWITCH) {
        // No return from here
        appSwitch();
    }
    // Receiver application
     //灯节点为接收程序;
    else if(appMode == LIGHT) {
        // No return from here
        appLight();
    }
    // Role is undefined. This code should not be reached
    //如果节点功能未被定义即,非开关非灯,则指示灯动作;
    HAL_ASSERT(FALSE);
}

感谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top