为了测试我想打印到 Tera Term 的 UART 设置、如果我使用 UART0 (很明显在端口 A 的引脚0和1上)、它将起作用、但如果我将代码更改为 UART4、 并更改掩码值和寄存器、使其端口 C 的引脚4和5字符不会打印到 Tera Term。 我已包含我的代码、我是否缺少某些内容?
int main (空)
{
UARTM();
// UARTJ();
字符 c;
while (1){
C = ReadChar();
WriteChar (c);
}
}
字符读取字符(空)
{
字符 c;
while ((UART4_FR & 0x10)== 0x10){};
C = UART4_DR;
返回 c;
}
空 WriteChar (char c)
{
while ((UART4_FR & 0x20)== 0x20){};
UART4_DR = c;
}
空 UARTJ (空)
{
SYSCTL_RCGUART |= 1;
while ((SYSCTL_PRUART & 1)!= 1);
UART0_CTL &=~0x21;
UART0_IBRD = 17;
UART0_FBRD = 23;
UART0_LCRH &=~0xE;
UART0_LCRH |= 0x60;
UART0_CTL |= 0x301;
SYSCTL_RCGCGPIO |= 1;
while ((SYSCTL_PRGPIO & 1)!= 1);
GPIOA_DIR &=~0x1;
GPIOA_PUR |= 0x1;
GPIOA_DIR |= 0x2;
GPIOA_DEN |= 0x3;
GPIOA_AFSEL |= 0x3;
GPIOA_PCTL &=~0xFF;
GPIOA_PCTL |= 0x11;
}
void UARTM (void)
{
SYSCTL_RCGUART |= 0x10;
while ((SYSCTL_PRUART & 0x10)!= 0x10);
UART4_CTL &=~21;
UART4_IBRD = 17;
UART4_FBRD = 23;
UART4_LCRH &&~0xE;//57600波特率、8个数据位、无奇偶校验、1个停止位、 16位预分频器
UART4_LCRH |= 0x60;
UART4_CTL |= 0x301;
SYSCTL_RCGCGPIO |= 0x4;
while ((SYSCTL_PRGPIO & 0x4)!= 0x4);
GPIOC_DIR &=~ 0x10;
GPIOC_PUR |= 0x10;
GPIOC_DIR |= 0x20;
GPIOC_DEN |= 0x30;
GPIOC_AFSEL |= 0x30;
GPIOC_PCTL &=~0x0000;
GPIOC_PCTL |= 0x110000;
}