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.

[参考译文] EK-TM4C1294XL:使用 UARTCharPut()时如何打印新行?

Guru**** 2477705 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/687560/ek-tm4c1294xl-how-can-i-print-a-new-line-when-using-uartcharput

器件型号:EK-TM4C1294XL

我正在使用多个 UART 端口、但我无法成功修改 UARTstdio.c 或.h 文件、以允许我在多个端口上使用 UARTprintf 函数、因此我正在创建自己的文件。 不确定它是否适合我的最终用途、但现在它的方向是正确的。 不过、我想知道如何添加某种类型的格式、例如新行、空格等 这只是打印一组字符。

我不确定如何将类似"\n"的内容传递给 UARTCharPUT()?

如果您认为我的方向错误、请告诉我、我对此非常陌生。

如果有任何建议或指出正确的方向,将受到高度赞赏。

谢谢!

void UARTprint (const char* text)
{
const char* p;

对于(p =文本;*p!='\0';p++)
{
UARTCharPut (UART0_BASE、*p);
}
} 

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

    "\n"的问题是您在结尾创建一个数组大小为2的 C 字符串和一个0 (NULL)字符 它就像写入 char str[2]={10, 0};

    证明我的点的黑客方法是写入 UARTCharPut (UART0_BASE、"\n"[0]);

    实际上不会发布这样的代码。

    编辑:考虑您的代码后、您似乎理解了这一点。 设置有其他问题。 我希望您的代码发送新的行字符。 Windows 有时需要新的换行符"\r\n"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿、发生了奇怪的事情、如果我直接在 UARTCharPut 中传递"\n"、它将不起作用、而是打印\0x0。 我认为你在回答中提到了这一点。
    但是、当我传递该 char 数组时:

    字符行[]="\n";

    对于我在上面发布的函数、它最终创建了一个新的行、没有问题。
    我想知道您是否能让我了解这种情况的原因? 我认为它可能会作为行[]=[\、n、0]传入。 但是,我不确定。 我将尝试将其中的每一个单独传递给 UARTCharPut (base、"\")、然后将 UARTCharPut (base、"n")、但我无法写入第一个部分。

    我认为这很有趣、因为如果我无法通过"\"、那么我的线路[]是如何传入的? 如果它作为此类行传递[]=[\n,0]、那么为什么 UARTCharPut (base、"\n"\})会失败?

    我很难解释我的问题是什么(如果你不理解、我会再次尝试澄清)、我确实找到了某种解决方案、但我想更深入地了解背后可能发生的事情、 我认为这在道路上真的很有用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您将遇到复杂的 C 语言细节。"\n"的含义会根据上下文而变化。

    将"\n"传递到函数会将指针传递字符串数组中的第一个字符。 传递"\n"[0]将传递第0个(第一个)元素(即10)处的值。

    最初将"\n"分配给字符串会将第一个字符设置为10和0。 请注意、我说的是"初始"。 在初始化之后,不能将字符串文字分配给字符数组。 这将尝试将指针指定第一个字符到 const char 指针(由于其 const 而无法实现)。 您可以使用字符指针来执行此操作。

    您将从阅读 K&R 第二版封面中受益。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    也许我在这里遗漏了一些东西、但你不能只将'\n'(不是"\n"\})传递给 UARTCharPut? UARTCharPut 需要字符、而不是字符串。

    此致、

    Dave