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.

[参考译文] TM4C129XNCZAD:UART 通信

Guru**** 2403135 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1028484/tm4c129xnczad-uart-communication

器件型号:TM4C129XNCZAD

尊敬的先生:

我正在通过 UART 发送数据。   float Disp_array[37]是 float 数组

以下 行用于发送数据  

UARTSend ((char*)&Disp_array、sizeof (Disp_array));

disp_array 是浮点数组。 但是、我在接收器侧、即终端上仅获得17个字节

其中、使用  以下修改的代码  、我将获取接收器终端上的所有字节

for (count_number=0;count_number<37;count_number++)

UARTSend (((char*)&Disp_array[count_number]、sizeof (Disp_array[count_number]));
对于(x=0;x<=20000;x++);

下面是数组  

空 UARTSend (const unsigned char * pucBuffer、unsigned long ulCount)

//循环,同时有更多字符要发送。
while (ulCount---)

MAP_UARTCharPutNonBlocking (UART3_base、* puBuffer++);//将下一个字符写入 UART。

为什么简单   UARTSend ((char*)&Disp_array、sizeof (Disp_array));不起作用?

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

    您好!

     请将 UARTSend 更改为使用 ROM_UARTCharPut()而不是  ROM_UARTCharPutNonBlocking ()。 我试过它、它对我来说很有用。  

    无效
    UARTSend (const uint8_t * pui8缓冲器、uint32_t ui32计数)

    //
    //循环,同时有更多字符要发送。
    //
    while (ui32Count---)

    //
    //将下一个字符写入 UART。
    //
    ROM_UARTCharPut (UART0_BASE、* pui8Buffer++);

    如果要使用 UARTCharPutNonBlocking、则需要检查返回值是否为 true。 发生的情况是、当您尝试将37x4=148字节的数据写入 FIFO 而不等待数据成功发送时、FIFO 中没有更多空间。 使用 UARTCharPut 可确保函数在写入前等待 FIFO 中有可用空间。 有关详细信息、请参阅外设驱动程序用户指南。  

    30.2.2.10 UARTCharPutNonBlocking
    向指定端口发送字符。
    原型:
    布尔
    UARTCharPutNonBlocking (uint32_t ui32Base、
    unsigned char ucData)
    参数:
    ui32Base 是 UART 端口的基地址。
    ucData 是要传输的字符。
    描述:
    此函数将字符 ucData 写入指定端口的发送 FIFO 中。 这种情况
    函数不会阻止、因此如果没有可用空间、则返回 FALSE、然后返回
    应用程序必须稍后重试此功能。
    返回:
    如果字符已成功放入发送 FIFO、则返回 TRUE;如果存在、则返回 FALSE
    发送 FIFO 中没有可用空间。