zoukankan      html  css  js  c++  java
  • Zstack 串口的使用

    1、定义一个串口初始化函数,函数里面对串口进行配置

    void initUart(halUARTCBack_t pf)
    {
    halUARTCfg_t uartConfig;

    uartConfig.configured = TRUE;
    uartConfig.baudRate = HAL_UART_BR_38400;
    uartConfig.flowControl = FALSE;
    uartConfig.flowControlThreshold = 48;
    uartConfig.rx.maxBufSize = RX_BUF_LEN;
    uartConfig.tx.maxBufSize = 128;

    uartConfig.idleTimeout = 6;
    uartConfig.intEnable = TRUE;
    uartConfig.callBackFunc = pf;

    HalUARTOpen (HAL_UART_PORT_0, &uartConfig);
    }

    2、在 ZB_ENTRY_EVENT 这个事件的处理函数中,调用initUart();参数uartRxCB是串口的回调函数。

    if( event & ZB_ENTRY_EVENT )
    {
    ……

    ……
    if ( appState == APP_INIT )
    {
     logicalType = ZG_DEVICETYPE_COORDINATOR;
    zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, sizeof(uint8), &logicalType);
    initUart(uartRxCB);
    }

    3、定义回调函数,用以接收串口数据

    void uartRxCB( uint8 port, uint8 event )
    {
    uint8 pBuf[RX_BUF_LEN];
    uint16 cmd;
    uint16 len;
    uint16 Endivce_addr;

    if ( event != HAL_UART_TX_EMPTY )
    {
    len = HalUARTRead(HAL_UART_PORT_0, pBuf, RX_BUF_LEN) ;//HalUARTRead把接收到的数据存储到pBuf数组里。

    if ( len>0 )
    {
    cmd = BUILD_UINT16(pBuf[SYS_PING_CMD_OFFSET+ 1], pBuf[SYS_PING_CMD_OFFSET]);

    if( (pBuf[FRAME_SOF_OFFSET] == CPT_SOP) && (cmd == SYS_PING_REQUEST) ) //CPT_SOP=0xFE
    {
    // sysPingReqRcvd();
    }
    else
    {
    HalLcdWriteScreen( "Receive Datas","From PC" );
    HalLcdWriteValue(pBuf[0],10,3);
    HalLcdWriteValue (255, 16, 4);
    Endivce_addr = pBuf[1]*256 + pBuf[0];
    zb_SendDataRequest( Endivce_addr, LED_PWM_CMD_ID, len, pBuf, 0, 0, 0 );//AF_DEFAULT_RADIUS Endivce_addr
    }
    }
    }
    }

    4、使用HalUARTWrite()函数进行串口数据的发送;

    如HalUARTWrite(HAL_UART_PORT_0, pFrame, FRAME_LENTH);

  • 相关阅读:
    bzoj1297: [SCOI2009]迷路
    bzoj1875: [SDOI2009]HH去散步
    bzoj2466: [中山市选2009]树
    bzoj1770: [Usaco2009 Nov]lights 燈
    BZOJ 1965: [Ahoi2005]SHUFFLE 洗牌( 数论 )
    BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )
    BZOJ 1006: [HNOI2008]神奇的国度( MCS )
    BZOJ 1925: [Sdoi2010]地精部落( dp )
    BestCoder Round #57 (div.2)
    BZOJ 1216: [HNOI2003]操作系统( 优先队列 )
  • 原文地址:https://www.cnblogs.com/qmlm8844/p/2377800.html
Copyright © 2011-2022 走看看