主题中讨论的其他器件: TM4C123
您好!
我尝试设置 UART1已完成 GPIO 和 UART 的设置。 我通过 UART 传输的数据将传入 UART_DR (我使用 Keil 和 CMSIS 内核库对其进行编码、在仿真窗口中、我可以读取 UART_DR 中的数据)、但我在 Keil 调试器的 UART1窗口或串行控制台上没有看到任何内容。
下面是用于配置 GPIO 和 UART 以及 main 函数的代码片段。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define U1RX (1<<4)
#define U1TX (1<<5)
#define PORTC (1<<2)
#define TXFF (1<<5)
#define RXFE (1<<4)
#define UART1EN (1<0)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
空 GPIO_Init()
{
SYSCTl->RCGCGPIO |= PORTC;//启用 PORTC
GPIO->AFSEL |=(U1TX | U1RX);//将引脚功能设置为备用功能
GPIO->PCTL =(GPIO->PCTL & 0xFF00FFFF)+ 0x00220000;//将备用功能设置为 UART1 (PMC5 = 0x0010且 PMC4 = 0x0010)
GPIO->DEN |=(U1TX | U1RX);//启用 UART 引脚的数字功能(PC4 = 1和 PC5 = 1)
GPIO->AMSEL &=~(U1TX |U1RX);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
空 UART_Init()
{
SYSCTl->RCGCUART = 0x02;//启用 UART1
UART1->CTL |=~UART1EN;//配置前禁用 UART
UART1->IBRD = 0x08;
UART1->FBRD = 0x2C;//波特时钟为16MHz,BR = 115200
UART1->LCRH = 0x60;// 8N1、FEN 被禁用
UART1->CC = 0x5;//选择时钟源作为 PIOSC 系统时钟
UART1->CTL |= UART1EN;//启用 UART
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
uint8_t data[]={"TM4C123GH6PM UART TX 演示"};
uint8_t i、ch;
GPIOC_Init();
UART_Init();
对于(i = 0;data[i]!='\0';i++)
UART_Send (data[i]);
while (1);
}
我还禁用了在启动时使用的 system_TM4C123.c 文件中的时钟设置。 因此、在执行所有这些操作后、我不理解为什么在 UART_DR 中获取控制台数据时无法获取数据?