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.

[参考译文] RTOS/TM4C129ENCZAD:UARTStdioConfig、此函数记录在哪里? 什么代码文件定义了它?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/618714/rtos-tm4c129enczad-uartstdioconfig-where-is-this-function-documented-what-code-file-defines-it

器件型号:TM4C129ENCZAD

工具/软件:TI-RTOS

我搜索了我找到的所有 Tivaware 和 TiRTOS 文档、尝试查找函数 UARTStdioConfig 的定义位置。 我想知道第一个参数字段是什么以及它的有效参数值是多少。

如果在任何文档中都没有描述它、那么它的代码在哪里? 我在其他论坛上看到它应该在 utils/uartstdio.c 中 不在我 的安装中-该文件中只有以下声明:

extern void UARTStdioConfig (uint32_t ui32port、uint32_t ui32Baud、uint32_t ui32SrcClock);

我从 arg 名称 ui32Port 中假设、如果我使用 UART 端口7、则该 arg 应为7。 这可能是正确的???

感谢您提供一些指导。

谢谢你。

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

    更新:
    因此、雾最终清除、函数位于 uartstdio.c 文件中。 开始时将显示以下代码:
    //
    //检查参数。
    //
    assert ((ui32PortNum =0)||(ui32PortNum =1)||
    (ui32PortNum==2));

    这表明、为该参数输入7 (如 UART 端口7)将不起作用、对吧?

    当我在调试中单步执行此操作时、程序在以下调用时(在第365行)崩溃:

    //
    //启用 UART 外设以供使用。
    //
    MAP_SysCtlPeripheralEnable (g_ui32UARTPeriph[ui32PortNum]);

    我假设它的 ARG 值为7、这会导致此崩溃。

    有人能告诉我什么是激活 UART 端口7 (连接到电路板上的"调试"连接器)的正确方法吗?

    BTW:UART 端口-0 (我们也使用它)工作正常。



    谢谢你。

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

    以下是 UART 7的初始化代码:

    空 InitUART_DebugPort (空)

    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH);
    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART7);
    ROM_GPIOPinConfigure (GPIO_PH6_U7RX);
    ROM_GPIOPinConfigure (GPIO_pH2_U7TX);
    ROM_GPIOPinTypeUART (GPIO_Porth_BASE、GPIO_PIN_6 | GPIO_PIN_7);
    ROM_UARTClockSourceSet (host_UART_base、UART_CLOCK_PIOSC);
    UARTStdioConfig (7、UART_BAUD_RATE、16000000);

    其中 host_UART_base    =       UART7_BASE

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

    继续搜索论坛。 在以下论坛上讨论了如何启用/初始化0、1、2以上端口的这个问题(2014年开始-有点古老...)

    e2e.ti.com/.../1283926

    底线是、根据这一点、用户必须编辑 UART 库文件、在初始3之外添加额外的端口。 3年后、我想情况仍然如此? 或者我应该遵循另一条路径吗?

    我对修改供应商库文件非常犹豫-我不记得之前有过这样的操作。



    谢谢你。

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

    我根据上述论坛修改了 uartsdio.c 文件、为 UART 端口7添加了缺失的字段。 这将经历崩溃。 现在代码在 UART.c 文件中的第1278行挂起、该文件位于函数 UARTCharPut 内:

    //
    //等待空间可用。
    //
    while (HWREG (ui32Base + UART_O_FR)和 UART_FR_TXFF)

    调试器卡在该 while 循环上。

    UARTCharPut 从一个任务中调用、我要从该任务中将计算得出的32位值(每次传输一个、而不是连续流)发送到主机 PC (运行 RealTerm)、主机 PC 通过电路板上的引脚接头物理连接到 UART 端口7。 通过 USB-RS232电缆进行连接。 RealTerm 显示端口处于活动状态。

    示波器探头显示 RX 和 TX 线被拉高。 当然、端口7未传输任何内容。

    又来了……

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

    您是否正在使用 TI-RTOS? 如果是、您为什么不只使用随附的 UART 驱动程序、而不是在 TivaWare 中使用 driverlib 调用。

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

    我们以这种方式开始了(几个月前)、但这有自己的一系列问题。 我不再回忆这些细节、但某些事情会导致我们通过 UART0传输的位丢失。 当我们切换到使用 TivaC 库时、问题消失了。

    将此值应用于 UART7时、UARTCharPut 函数将挂起。 如果我正确地解释了代码中的注释、代码行似乎在等待发送 FIFO 中的空间。 是否可能存在某种复位、我应该对该端口进行应用、以使其脱离看起来像混淆状态的状态?

    感谢您的建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在执行 UART7事务的任务启动时应用了以下函数调用:

    UARTDisable (host_UART_base);
    while (UARTBusy (host_UART_base))


    UARTEnable (HOST_UART_BASE);

    现在 UARTCharPut 不再挂起、UART 将数据从 TX 端口传输出去(范围捕获确认...)。 但是,RealTerm 不会显示传入数据。 也许我不知道如何运行 RealTerm。 然而、更令人担忧的是、同一位序列也出现在 RX 引脚与 TX 同时出现、但 V 摆幅为~1/4。

    将在断开 USB-UART 电缆的情况下重复测试。 也会检查电路板走线是否是电缆引起的。 还有其他需要考虑的问题吗?


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

    观察示波器捕获、位时间是否正确? 您能帮助我了解硬件吗? 您将 PH6和 pH7连接到 RS232收发器、然后将 RS232线路连接到 RS232转 USB 转换器/电缆? 您在 RX 线上看到 TX 波形的哪个点?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    UC 端口和 Gearmo GM-TTL3VT USB-TTL RS232接口之间没有 RS232 xciever。 GM 负责电平转换。

    看起来 GM 上的 TXD 端口连接到 uC 上的 TXD 端口、并且两侧都在该引脚上再次连接。 因此、我需要交换 GM 连接器上的信号线以缓解这种情况。

    关于 时序、示波器捕获显示位周期~9usec。 波特率设置为115200、因此我认为这是可以的。

    我不记得曾经在其他 UART 上看到过 TXD 信号出现在 RXD 线上(尽管这里 RXD 振幅是1/8 TXD)、我过去曾尝试过(CH1 =TXD;CH2 =RXD。 请注意垂直设置2V 与1V)。 这是从板上的接头引脚(来自 uC 的信号)捕获的、未连接 UART 电缆。 当从 GM 电缆捕获时、它是相同的(不会改变连接到目标的状态、也不会改变)。

    这两个接口(uC 和 GM 电缆、无论是否连接)都是如此。 我需要重新连接、进行电缆交换并重新测试。 我向 GM 提交了有关 TXD/RXD 争用的查询、以阐明他们如何定义这两个引脚的方向(尚未回复)。 我认为电路板的电路板设计人员假定 GM 的 TXD 引脚对应于目标的 TXD 引脚(因此方向是发送到主机)。 但是、看起来是相反的。

    有什么想法、为什么在加电和初始化之后、我仍然需要发出 UART 禁用/启用信号才能使其正常工作(请参阅上一篇文章)? 这是不是需要担心的?

    谢谢你。

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

    RX 信号看起来就像是从 TX 线进行电容(或电感)耦合。 这意味着没有任何东西驱动 RX 线。 我希望 Gearmo GM-TTL3VT 的 TX 连接到 TM4C 的 RX、但我将让 GM 澄清这一点。