请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PM 主题中讨论的其他器件:TM4C123
您好!
我正在使用 UART0和 UART3时没有任何问题、但当我尝试使用 UART2发送数据时、它不起作用。 我用示波器查看引脚10 (U2Tx)、在发送数据时甚至看不到任何电压变化或活动。
奇怪的是、我将 UART2配置为与 UART0和 UART3相同。
下面是 UART2初始化:
void UART2_Init (void)
{
//
//启用 UART 使用的 GPIO 外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
//
//启用 UART2
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART2);
//等待 UART2模块准备就绪
while (!ROM_SysCtlPeripheralReady (SYSCTL_Periph_UART2))
{
}
//
//为 UART 模式配置 GPIO 引脚。
//
ROM_GPIOPinConfigure (GPIO_PD6_U2RX);
ROM_GPIOPinConfigure (GPIO_PD7_U2TX);
ROM_GPIOPinTypeUART (GPIO_PORTD_base、GPIO_PIN_6 | GPIO_PIN_7);
//
//将 UART 配置为115、200、8-N-1操作。
//
ROM_UARTConfigSetExpClk (UART2_base、SysCtlClockGet ()、115200、
(UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE |UART_CONFIG_WLEN_8);//115200、9600
//
//启用 UART 操作。
//
ROM_UARTEnable (UART2_base);
}
在 main 中、我每秒向 UART2写入一个字符以测试端口、但是、正如我说过的、似乎没有发送任何内容:
int main (void) { /*设置系统时钟*/ ROM_SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN); UART0_Init(); UART2_Init(); UART3_Init(); // UART2测试 while (1){ //将字符"A"写入 UART2 UARTCharPut (UART2_base、'a'); Timer1_WAIT_ms (1000);//正常工作的自定义函数 } }
我缺少什么吗?
谢谢!