请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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