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:写入 GPIO PC5

Guru**** 2454880 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/638610/ek-tm4c1294xl-writing-to-gpio-pc5

器件型号:EK-TM4C1294XL

我将使用 Enet_S2E 应用。 我需要切换 PC5。

我在 pinout.c 例程的末尾有以下代码来启用引脚:

ROM_GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_5);  
MAP_GPIOPadConfigSet (GPIO_PORTC_BASE、GPIO_PIN_5、GPIO_Strength _12mA、GPIO_PIN_TYPE_STD);
ROM_GPIOPinWrite (GPIO_PORTC_BASE、GPIO_PIN_5、0);  

每次 telnet 收到字符并将其发送到 UART 进行传输时,我都要在 SerialSend()中切换引脚 PC5。

GPIOPinWrite (GPIO_PORTC_BASE、GPIO_PIN_5、1);// U9 TX_EN
UARTCharPut (g_ui32UARTBase [ui32Port]、ui8Char);
GPIOPinWrite (GPIO_PORTC_BASE、GPIO_PIN_5、0);// U9 RX_EN

当我使用示波器对引脚 PC5进行监控时、我无法获取有关该引脚的活动???

从 TM4C1294XL 数据表的第10节 PUC 中、PUC 后的默认状态为 GPIO 输入。

我没有为该引脚配置 GPIOAFSEL、但我不确定 TI 提供的软件是否在某个位置没有这样做????

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

    [报价用户="Gary Armstring"]当我使用示波器监控 PC5时、我无法获取有关该引脚的活动????

    这是事实-在本例中-您(显而易见的)过去的经验是:"与您对抗!"    您的代码行:

    [引用用户="Gary Armstring]GPIOPinWrite (GPIO_PORTC_BASE、GPIO_PIN_5、1);// U9 TX_EN[/引用]

    它采用"1"来(通常)设置位-在这里只适用于(仅) GPIO_PIN_0!   最后一个(第三个)参数是"位打包字节"、因此需要位位置的唯一值来设置目标位。  例如:GPIO_PIN_7的加权值为128、 GPIO_PIN_5为32、 GPIO_PIN_2为4。   请注意、参数2在参数上的行为类似-只有那些"匹配的位"。 2和3 -将"设置"。

    当您试图"设置所有端口位"时(尚未在端口 C (JTAG!)上) 参数2和3应扩展到255 (0xFF)  (如果您选择 GPIO_PIN_0 -则"1"将具有"设置该位"-但您可能会有"在此过程中丢失 JTAG 连接"。   (软件尝试防止此类" JTAG 丢失"的发生频率太高、此论坛对此进行了很好的记录...)

    您的其余代码显示正确、但对于大多数"正常"应用、12mA 输出驱动的选择似乎"有点多"。   (并将减少来自四侧 MCU 同一侧的"其他引脚"的可用驱动量。)   MCU 手册详细信息-可能在末尾-在 MCU 规格下...

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

    非常好、我会在早上回到工作岗位时尝试一下。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这方面也很出色-您的"发现"证明是"无害的"-肯定会殴打那些不幸的(许多)、他们从 JTAG "锁住自己"... 由于我的团队使用多家供应商的 ARM MCU 工作、并且每个 MCU 都提供(不同) API -我们在每个工作站维护"关键代码规则"、以最大程度地减少不同器件之间不可避免的"干扰"。

    我"保证"您的"用适当的"位打包值替换"1"将打开该输出。 (实际上、如果可以打开它...)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    进行了更改、但仍然无法控制 PC5?? 我在 FreeRTOS 下的 EK-TM4C1294XL Launchpad 上运行 Enet_S2E 项目。 其他一些任务必须控制 PC5。我对程序所做的唯一更改是控制 PC5。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、它会切换位、但它的速度太快、我没有在示波器上捕获它、 my bad :(在从 TX 引脚获取 char 时有一个延迟,使我的 enable 函数被否定,在我对线路驱动器上的 TX EN 求反之前,我需要监视 UART 忙标志。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    GPIOPinWrite (GPIO_PORTC_BASE、GPIO_PIN_5、GPIO_PIN_5); // U9 TX_EN
    UARTCharPut (g_ui32UARTBase [ui32Port]、ui8Char);
    while (UARTBusy (g_ui32UARTBase [ui32Port]))


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

    您是否认为(仅)您的帖子应该"已解决"?    似乎第一个回答问题的帖子-相当好-为您的路径铺平了道路...

    您可能会注意到、当使用"符号表示法"时-如果您试图设置多个位-您的代码通常会扩展到多行...  (增加了拼写错误/其他错误的风险)

    使用 GPIO_PIN_5确实提供了设置该位所需的"位打包值"。    (如(真实)"解析"帖子所述...)   示波器触发器故障不应否定您的(正确)奖励...  (即使是"共享奖"。)

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

    非常抱歉、我非常感谢您的帮助和明显出色的 InSite。 我返回到您的帖子、但没有看到有人发布它来解决问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我能弄清楚如何撤消我上面的"这解决了我的问题"、我会这样做的。 我当时假设这是一种终止线程的方法。 我对这些要点不太关心。 再次感谢您的帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您(两者)似乎已经掌握了"后置解析机制"和"设置 GPIO 输出位"。   做得很好,谢谢你,很棒的酒店