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.

[参考译文] CC2538DK:使用 UART 通过器件和协调器进行数据传输

Guru**** 1836900 points
Other Parts Discussed in Thread: Z-STACK, CC2538, CC2538EMK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/652398/cc2538dk-data-transfer-the-b-w-endevice-and-coordinator-using-uart

器件型号:CC2538DK
Thread 中讨论的其他部件:Z-stackCC2538CC2538EMK

您好、先生、

我使用的是 Z-stack mesh 1.0 GenericApp 示例

我使用连接到终端设备的2个加速计传感器,需要将传感器数据传输到协调器(使用 UART1)如何启动

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您让驱动器首先正确读取加速计传感器数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、先生、
    sunmaysky.blogspot.in/.../cc2530-adc-howto-in-ti-z-stack.html
    通过使用上面的链接、我已经读取了加速计传感器数据。 但是、我想读取存储在 ADCH 和 ADCL 寄存器中的数字转换结果、并通过 UART 将结果发送给协调器。 您是否会建议我如何传输结果
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 GenericApp 中、它已经向您展示了如何发送"hello world"消息。 您可以修改它以将两个字节的数据发送给协调器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、先生、
    但我想通过外部 UART (UART 1)传输数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以尝试参考 sunmaysky.blogspot。tw/.../how-to-use-two-uart-ports-in-cc2530-z.html 、其中显示了如何使用 UART1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    #define Coordinator

    #define ENDDEVICE

    #define PACKETSIZE 60

    字节 theMessageData[PACKETSIZE];

    uint16 TransmitApp_MaxDataLength;

    uint16 ui16dmummy;

    void GenericApp_Init( uint8 task_id )

     afDataReqMTU_t MTU;

     mtd.kVp    = false;

     mtu.aps.secure = false;

     TransmitApp_MaxDataLength = afDataReqMTU (&MTU);

     TransmitApp_MaxDataLength =(TransmitApp_MaxDataLength /99)*PACKETSIZE;

    /*代码的某种平静*/

    uint16 GenericApp_ProcessEvent( uint8 task_id,uint16事件)

    /*代码的某种平静*/

    案例 ZDO_State_change:

         GenericApp_NWkState =(devStates_t)(MSGpkt->HDR.status);

    //      if ((GenericApp_NWKState =DEV_ZB_COord)||

    //        (GenericApp_NWkState =DEV_router)||

    //        (GenericApp_NWKState =DEV_END_DEVICE))

    #if defined (ENDDEVICE)(如果已定义)

     if (GenericApp_NWkState =DEV_END_DEVICE)

         {

      ////////////////////////////////////////////////////////////////////////////////////////////////////////////  

    dstAddr.addrMode = Addr16Bit;

       dstAddr.addr.shortAddr = 0x0000;       //NWK_broadcast_SHORTADDR;

      ZDP_MatchDescReq (&dstAddr、0x0000、

                GENERICAPP_PROFID、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                false );

          //开始定期发送“该”消息。

    /*       

          OSAL_START_timerEx (GenericApp_TaskID、

                    GENERICAPP_SEND_MSG_EVT、

                    GENERICAPP_SEND_MSG_TIMEOUT );

    *       

         }

    #endif      

         中断;

        默认值:

         中断;

       }

       //释放内存

       OSAL_msg_dealloc((uint8 *)MSGpkt);

       //下一步

       MSGpkt=(afIncomingMSGPacket_t *) osal_msg_receive (GenericApp_TaskID);

      }

      //返回未处理的事件

      返回(事件^ SYS_EVENT_MSG);

     }

     //发送消息输出-此事件由计时器生成

     // (在 GenericApp_Init()中设置)。

     if (事件和 GENERICAPP_SEND_MSG_EVT)

     {

    HalAdcInit ();

    HalAdcSetReference (HAL_ADC_REF_125V);

    ui16Dummy = HalAdcRead (HAL_ADC_CHN_AIN7、HAL_ADC_Resolution_12);

    //发送“该”消息

      GenericApp_SendTheMessage();

    OSAL_SET_EVENT (GenericApp_TaskID、GENERICAPP_SEND_MSG_EVT);

      //设置以再次发送消息

    /*

      OSAL_START_timerEx (GenericApp_TaskID、

                GENERICAPP_SEND_MSG_EVT、

                GENERICAPP_SEND_MSG_TIMEOUT );

    *

      //返回未处理的事件

      返回(事件^ GENERICAPP_SEND_MSG_EVT);

     }

    #if defined (IAR_ARMCM3_LM)

     //接收来自 RTOS 队列的消息

     if (事件和 GENERICAPP_RTOS_MSG_EVT)

     {

      //处理来自 RTOS 队列的消息

      GenericApp_ProcessrtosMessage();

      //返回未处理的事件

      返回(事件^ GENERICAPP_RTOS_MSG_EVT);

     }

    #endif

     //丢弃未知事件

     返回0;

    静态空 GenericApp_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg )

     switch ( inMsg->clusterID )

     {

      Case End_Device_Bind_rsp:

       if ( ZDO_ParseBindRsp( inMsg )=ZSuccessess )

       {

        //光 LED

        HalLedSet (HAL_LED_4、HAL_LED_MODE_ON);

       }

    #if defined (blink_LEDs)

       其他

       {

        //闪存 LED 以显示故障

        HalLedSet (HAL_LED_4、HAL_LED_MODE_FLASH);

       }

    #endif

       中断;

      案例匹配_DESC_rsp:

       {

        ZDO_ActiveEndpointRsp_t *PRSP = ZDO_ParseEPListRsp( inMsg );

        if (减贫战略文件)

        {

         if ( PRSP--> STATUS =ZSuccessess && PRSP--> cnt )

         {

          GenericApp_DstAddr.addrMode =(afAddrMode_t) Addr16位;

          GenericApp_DstAddr.addr.shortAddr = PRSP->nwkAddr;

          //获取第一个端点,可以更改以搜索端点

          GenericApp_DstAddr.endpoint = PRSP->epList[0];

    #if defined (ENDDEVICE)(如果已定义)

          OSAL_START_timerEx (GenericApp_TaskID、

                    GENERICAPP_SEND_MSG_EVT、

                   GENERICAPP_SEND_MSG_TIMEOUT);

    #endif       

          //光 LED

          HalLedSet (HAL_LED_4、HAL_LED_MODE_ON);

         }

         OSAL_mem_free ( PRSP );

        }

       }

       中断;

     }

    静态空 GenericApp_HandleKeys (uint8 shift、uint8 key)

     //zAddrType_t dstAddr;

     //移位用于使每个按钮/开关具有双重用途。

     如果(SHIFT)

     {

      if (keys & HAL_key_sw_1)

      {

      }

      if (keys & HAL_key_sw_2)

      {

      }

      if (键& HAL_KEY_SW_3)

      {

      }

      if (keys & HAL_key_sw_4)

      {

      }

     }

     其他

     {

      if (keys & HAL_key_sw_1)

      {

    #if defined (Switch1_bind)

       //对于只有一个开关的器件,我们可以使用 SW1来模拟 SW2,

       键|= HAL_KEY_SW_2;

    #elif defined (Switch1_match)

       //或使用 SW1为只有一个开关的器件模拟 SW4

       键|= HAL_KEY_SW_4;

    /*

    其他

       //通常,SW1会更改消息的发送速率

       if ( txMsgDelay >100)(如果 txMsgDelay >100)

       {

        //将消息 TX 延迟减半

        txMsgDelay /= 2;

       }

       其他

       {

        //重置为默认值

        txMsgDelay = GENERICAPP_SEND_MSG_TIMEOUT;

       }

       *

    #endif

      }

      if (keys & HAL_key_sw_2)

      {

       HalLedSet (HAL_LED_4、HAL_LED_MODE_OFF);

       //为强制端点启动终端设备绑定请求

       dstAddr.addrMode = Addr16Bit;

       dstAddr.addr.shortAddr = 0x0000;//协调器

       ZDP_EndDeviceBindReq (&dstAddr、NLME_GetShortAddr ()、

                  GenericApp_epDesc.endpoint、

                  GENERICAPP_PROFID、

                  GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                  GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                  false );

      }

      if (键& HAL_KEY_SW_3)

      {

      }

      if (keys & HAL_key_sw_4)

      {

       HalLedSet (HAL_LED_4、HAL_LED_MODE_OFF);

       //启动匹配描述请求(服务发现)

       dstAddr.addrMode = AddrBroadcast;

       dstAddr.addr.shortAddr = nwk_broadcast_SHORTADDR;

       ZDP_MatchDescReq (&dstAddr、NWK_broadcast_SHORTADDR、

                GENERICAPP_PROFID、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、

                false );

      }

     }

    /*********

    *本地函数

    *

    /*********

    *@fn   GenericApp_MessageMSGCB

    *

    *@简短 的数据消息处理器回调。  此函数处理

    *      任何传入数据-可能来自其他设备。  基于

    *      在群集 ID 上、执行预期的操作。

    *

    *@param none

    *

    *@返回 无

    *

    静态空 GenericApp_MessageMSGCB (afIncomingMSGPacket_t *pktt)

     交换机(pkt->clusterid)

     {

      案例 GENERICAPP_clusterid:

     // rxMsgCount += 1; //计算此消息

       HalLedSet (HAL_LED_4、HAL_LED_MODE_BLINK); //闪烁 LED

    #if defined (LCD_SUPPORTED)

       HalLcdWriteString ((char*) pkt->cmd.Data、HAL_LCD_LINE_1);

      // HalLcdWriteStringValue(“Rcvd:”,rxMsgCount,10,HAL_LCD_LINE_2 );

    #Elif Defined( WIN32 )

       WPRINTSTR( pkt->cmd.Data );

    #endif

       中断;

     }

    /*********

    *@fn   GenericApp_SendTheMessage

    *

    *@简短 发送"消息。

    *

    *@param none

    *

    *@返回 无

    *

    静态空 GenericApp_SendTheMessage( void )

     //char theMessageData[]="I am EDGENODE 12";

      uint16 len= TransmitApp_MaxDataLength;

     if (AF_DataRequest (&GenericApp_DstAddr、&GenericApp_epDesc、

               GENERICAPP_clusterid、

             len、//(byte) osal_strlen (theMessageData)+ 1、

               (字节*) ui16Dummy、

               GenericApp_TransID (GenericApp_TransID)、

               AF_DISCV_route、AF_DEFAULT_RADIUS )== afStatus_Success )

     {

      //已成功请求发送。

     }

     其他

     {

      //请求发送时出错。

     }

    您好、先生、

    我正在读取 ADC (例如、 正弦波作为端器件的输入)值。

    当我给协调器上的电路板加电时、它会显示 在之后发送的 MSP Desc req RSP (我认为协调器已成功加入 n/w)  

    这在时间结束后的几秒钟内、设备显示 Assoc CONF 失败、并且在发送数据的几分钟后未传输任何 ADC 数据。 我的代码中是否有任何错误?

    COM7是 ENDDEVICE

    COM18是协调员

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这通常是由于协调器和设备之间的安全设置不一致造成的。 确保您的协调器和器件都使用 f8wconfig.cfg 中的-DSECURE=0来重建代码以再次进行测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正如我在上述帖子中提到的、我的代码是否正确、因为终端设备在不按按钮的情况下加入了 n/w、并且用于 ADC 读取和传输?

    我是否可以按如下方式读取 ADC



    #define PACKETSIZE 60
    字节 theMessageData[PACKETSIZE];

    HalAdcInit ();
    HalAdcSetReference (HAL_ADC_REF_125V);
    MessageData[index1]= HalAdcRead (HAL_ADC_CHN_AIN7、HAL_ADC_Resolution_12);

    //thesMessageData[index1]=(Int16)(ADCL);               
    //thesMessageData[index1]|=(Int16)(ADCH << 8);  

    索引1++;
           IF (索引1 =>(PACKETSIZE-1))
             {
               索引1 = 0;
                ADCCON1 &=~HAL_ADC_EOC;  //禁用 ADC 转换
                 }
     我认为没有使用彩色的行,因为 functoin HalAdcRead() wil 返回相同的操作值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否确定 HAL_ADC_CHN_AIN7引脚上存在电压变化?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我连接到 AIN6引脚、但当我看到 USBUART 端口中的输出时、它会像这样提供。 我的代码中是否有任何错误

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看不到您如何将 ADC 读数输出到 UART。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、先生、
    我使用的是来自 cc2538基础固件的 UART 轮询示例,用于 UART1,在终端中,我没有看到任何输出有误
    #define Example_PIN_UART_RXD GPIO_PIN_0
    #define Example_PIN_UART_TXD GPIO_PIN_1
    #define Example_GPIO_base GPIO_A_base
    内部
    main (空)

    char cThisChar;

    SysCtrlClockSet (false、false、SYS_CTRL_SYSDIV_32MHz);
    SysCtrlIOClockSet (SYS_CTRL_SYSDIV_32MHz);
    SysCtrlPeripheralEnable (SYS_CTRL_Periph_UART1);
    UARTDisable (UART1_base);
    UARTIntDisable (UART1_BASE、0x1FFF);
    UARTClockSourceSet (UART1_base、UART_CLOCK_PIOSC);
    IOCPinConfigPeriphOutput (example_GPIO_base、example_PIN_UART_TXD、IOC_MUX_OUT_SEL_UART1_TXD);
    GPIOPinTypeUARTOutput (example_GPIO_base、example_PIN_UART_TXD);
    IOCPinConfigPeriphInput (Example_GPIO_base、Example_PIN_UART_RXD、IOC_UARTRXD_UART1);
    GPIOPinTypeUARTInput (Example_GPIO_base、Example_PIN_UART_RXD);
    UARTConfigSetExpClk (UART1_base、SysCtrlClockGet ()、115200、
    (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
    UART_CONFIG_PAR_NONE));
    UARTEnable (UART1_BASE);
    UARTCharPut (UART1_base、'!');
    操作

    cThisChar = UARTCharGet (UART1_BASE);
    UARTCharPut (UART1_base、cThisChar);

    while ((cThisChar!='\n')&&(cThisChar!='\r\n');
    UARTCharPut (UART1_base、'@');
    while (1)


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     请重放先生

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我目前还没有 CC2538DK 来测试这一点,但我看到您只能在不更改 TX/RX 引脚的情况下将设置从 UART0更改为 UART1。 如果您没有更改 TX/RX 引脚、为什么需要更改为 UART1?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、先生、我将 UART0更改为 UART1。
    我认为 smarttrf06板上的 RX/TX 引脚适用于 UART1。
    我想将 cc2538的 RX/TX 引脚连接到 Raspberry PI RX/TX 引脚、因此需要使用外部 UART。
    您是否要向我说明如何在 ZStack mesh 1.0中配置外部 UART?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我正确地记得、Z-Stack 网状网络中的 CC2538 ZNP 将通过 USB-UART、这意味着您在 CC2538EMK 和 Raspberry Pi 之间连接 USB 电缆、您应该会看到它被仿真为 ttyACM0。 您可以通过来自 Raspberry Pi 的 ttyACM0进行通信。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    UART1的端口引脚是什么
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    基本上、您可以将任何引脚/端口定义为 UART1 TX/RX 引脚。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    主席先生,

    1) 1)我想在调试代码后使用 cc2538而不使用 smarttrf06、然后可以或不可以使用从终端设备到协调器的传感器数据、我使用数据包监听器工具来检查传输。

    2) 2)我想制作一个 PCB (安装 cc2538、端口 A 引脚和 UART (RF1.7和 RF1.9)引脚)、并且我可以使用 USB 电源为电路板供电(请参考图片)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.是的
    2.是的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢主席先生,

    我使用的是 ZStack mesh hello world 示例而不是 ZNP。

    如图所示,我可以确认它是否正确。

    ADC 读数

    if (事件和 GENERICAPP_SEND_MSG_EVT)
     {

    HalAdcInit ();
    HalAdcSetReference (HAL_ADC_REF_125V);

    ui16Dummy = HalAdcRead (HAL_ADC_CHN_AIN6、HAL_ADC_Resolution_12);

    我想通过 UART 传输数据(ui16Dummy (0至2047))。 如何传输数据

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.从 GenericApp 编译选项中删除 ZTOOL_P1和 MT_TASK。
    2.将 HAL_UART=true 添加到 GenericApp 编译选项中。
    3.您可以通过调用 GenericApp_Init()中的 API HalUARTOpen 来初始化 UART。
    然后、您可以使用 API HalUARTWrite 将数据发送到 UART、以供 PC 接收。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这些是编译器选项

    Feature_reset_macro

    ewarm

    xZTOOL_P1

    XMT_TASK

    MT_SYS_FUNC

    CC2538_use_alternate_interrupt_map=1

    MT_ZDO_FUNC

    LCD_supported=调试

    HAL_UART=true

    HAL_ADC=true

    NV_INIT

    NV_RESTORE

    我已初始化 UART、但遇到错误

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你开个玩笑吗? 如何在 GenericApp_Init 中放置函数 initUart0和 uart0RxCb?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对不起,先生,
    1) 1)什么是我的回调 fn。 是否为空?
    2)我认为我需要在 GenericApp_ProcessEvent 中使用 haluartwrite API。 先生,请改正我的问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这与回调无关。 您的 C 语法不正确。
    2.初始化后、除了在 ISR 中、您可以在任何地方使用 UART 写入。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1) 1)我删除了 initUart0和 uart0RxCb fn

    2) 2)我的 UART 端口引脚配置是否正确。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果在 CC2538EMK 上使用默认 UART 引脚、则不必设置 UART 引脚/端口。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    主席先生,

    我验证了 Teraterm、bray tereminal 和 PuTTy 中的输出。 我得到了这个、我认为这不是波特率、我的代码中有问题、您可以建议我哪里出错了。 HalUartwite API 中是否存在任何错误。

    我定义 uint8 ui8dmummy;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否确定可以进行 C 编程? ui8dmummy 假设为字符串或字符数组。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、先生、好的

    但是、如果我需要将值转换为字符串、HalAdcRead 将返回整数值

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、您必须将值转换为字符串。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    字符 theMessageData[20];
    uint16 ui16dummy;

    void ui16dummy 到 Messagedata (char str[]、int num)

    int i、rem、len = 0、n;
    N = num;
    while (n!= 0)

    Len++;
    N /= 10;

    对于(i = 0;i < len;i++)

    REM = num % 10;
    num = num / 10;
    STR[长度-(I + 1)]= rem +'0';

    STR[len]='\0';



    主席先生,
    通过使用上面的代码、我能够将整数转换为字符串。 但我的终端设备无法传输数据,通过使用给定正弦波的函数发生器作为终端设备 PA6引脚的输入,输出没有变化,如果为协调器 PA6提供正弦波,则输出会发生变化。

    uint16 GenericApp_ProcessEvent( uint8 task_id,uint16事件)

    .
    .
    案例 AF_Incoming_MSG_CMD:
    HalAdcInit ();
    HalAdcSetReference (HAL_ADC_REF_125V);
    ui16dumul= HalAdcRead (HAL_ADC_CHN_AIN6、HAL_ADC_Resolution);

    ui16dummy 到 Messagedata (MessageData、ui16dummy);


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为我需要这样定义
    #if defined (ENDDEVICE)(如果已定义)

    HalAdcInit ();
    HalAdcSetReference (HAL_ADC_REF_125V);
    ui16dumul= HalAdcRead (HAL_ADC_CHN_AIN6、HAL_ADC_Resolution);
    ui16dummy 到 Messagedata (MessageData、ui16dummy);

    #endif
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    输出到 PA6引脚意味着什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将正弦波作为 HAL_ADC_CHN_AIN6引脚的输入
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看不到您在代码中的任何位置发送任何内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、先生、
    我在"thesMessageData"中具有 ADC 值。如何从需要进行更改的终端设备将其传输到协调器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Z-Stack 网状1.0.0中的 GenericApp 已向您展示如何将“Hello World”发送给协调器。 您可以采用类似的方法来实现它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢主席先生。

    我可以将数据从终端设备传输到协调器、但我会获得上述数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否停止 UART 的原始 MT 命令输出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Feature_reset_macro
    ewarm
    xZTOOL_P1
    XMT_TASK
    MT_SYS_FUNC
    CC2538_use_alternate_interrupt_map=1
    MT_ZDO_FUNC
    LCD_supported=调试
    HAL_UART=true
    HAL_ADC=true
    NV_INIT
    NV_RESTORE


    是否需要删除这些选项 MT_SYS_FUNC MT_ZDO_FUNC? 或不是
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您将其删除。 您是否检查这些 UART 输出的十六进制值?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     否、
    我启用了对 ZTOOL_P1和 MT_TASK 进行编程、然后获得如上图所示的输出
    如果我禁用这些、我没有获得任何输出。 COM7是协调器、COM16是端器件

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尝试保留 ZTOOL_P1并删除 MT_TASK 以再次进行测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     我出错了

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只需注释掉代码中的 sebug_str 即可。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试过、但终端上没有显示任何输出
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的代码是否转到 UART 初始化?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、先生