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.

[参考译文] MSP432E401Y:在 GPIO 端口上启用特殊或数字功能

Guru**** 2540460 points
Other Parts Discussed in Thread: MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1058843/msp432e401y-enabling-special-or-digital-functions-on-a-gpio-port

器件型号:MSP432E401Y

你(们)好。

我一直在尝试最大化 MSP432E401Y 的可用 GPIO 数量、同时仍使用7个串行端口与外部器件进行通信。 对于这些串行端口、我们不使用 DCD、DTR、DSR、RTS、CTS、 或 RI。 我们只需要 TX 和 RX。

例如、通过执行以下操作、我们已成功地将端口 A 设置为使用 RX 和 TX 的引脚0和1:

// setup.cpp = source file for setting up GPIOs
#include <ti/devices/msp432e4/driverlib/driverlib.h>
#include <ti/devices/msp432e4/inc/msp.h>

// ...

void setupGPIO
{
    IntDisable(INT_UART0);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
    while(!(SysCtlPeripheralReady(SYSCTL_PERIPH_UART0))) {};
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    while(!(SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA))) {};

    GPIOPinConfigure(GPIO_PA0_U0RX);
    GPIOPinConfigure(GPIO_PA1_U0TX);
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

    UARTConfigSetExpClk(UART0_BASE, Globals::g_ui32SysClock, 115200,
                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                             UART_CONFIG_PAR_NONE));

    UARTFIFOEnable(UART0_BASE);
    UARTFIFOLevelSet(UART0_BASE,
                    UART_FIFO_TX4_8,
                    UART_FIFO_RX4_8);

    UARTTxIntModeSet(UART0_BASE, UART_TXINT_MODE_EOT);
    UARTIntEnable(UART0_BASE, UART_INT_RT | UART_INT_RX | UART_INT_TX);
    UARTEnable(UART0_BASE);

    IntEnable(INT_UART0);
}

查看多路复用表(数据表中的"4-4 GPIO 引脚和备用功能")时、列出了所有端口的特殊和数字功能:

尽管我们尚未手动将端口 A 设置为在代码中使用数字函数1 (将其保持在默认 GPIO 模式)、 但会调用任何 DriverLib 函数(例如`GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);`)覆盖默认 GPIO 模式、 并强制所有端口 A 使用数字功能1? 换句话说、使用端口上的某些引脚进行串行通信是否会强制整个端口退出默认 GPIO 模式、或者其他引脚(即2至7)是否可用于其他 GPIO 功能(例如切换 LED 等)?

谢谢、

John

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

    不可以、dirverlib 函数主要只是修改函数输入参数中列出的引脚。 我建议您使用 Mod 总线来保存一些 UART 端口。