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.

[参考译文] TM4C123GH6PM:UART 问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/595289/tm4c123gh6pm-uart-issues

器件型号:TM4C123GH6PM

大家好、我已经尝试使用以下代码实现了一个简单的 UART 接口:

/*********
*丹麦南部大学
*嵌入式编程(EMP)
*
* MODULENAME。:main.c
*
项目....:EMP
*
说明:分配4、主模块。 无 main.h 文件。
*
*更改日志:
*********
*日期 ID 更改
* YYMMDD*
---
*创建了290417 MOH 模块。
*
* /

/************* 包含文件******* /#include

#include "glob_def.h"
#include "tm4c123ghp6.h"
#include "emp_type.h"
#include "uart0.h"
// LED 灯
#define RESET_RGB 0x0E
#define GREEN 0b00000110
#define Yellow 0b00001010
#define RED 0b00001100
#define LED_OFF 0b00001110

//函
数 char ReadChar (void);
void PrintChar (char c);
void PrintString (char * string);
char c;


int main (void){

//启用用于板载 LED 的 GPIO 端口。
//
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOA | SYSCTL_RCGC2_GPIOC | SYSCTL_RCGC2_GPIOD | SYSCTL_RCGC2_GPIOF;
SYSCTL_RCGC1_R |= 0x00000001;
//init_SysTick ();



//
//为 LED 启用 GPIO 引脚(PF3)。 将方向设置为输出、然后
//启用 GPIO 引脚以实现数字功能。
//
GPIO_PORTC_DIR_R = 0xF0;
GPIO_PORTC_DEN_R = 0xF0;

GPIO_PORTD_DIR_R = 0x4C;
GPIO_PORTD_DEN_R = 0x4C;

GPIO_PORTF_DIR_R = 0x0E;
GPIO_PORTF_DEN_R = 0x1F;
//初始化 UART
uart0_init (9600、8、1、'n');
while (1)
{

PrintString ("输入\"r\"、\"g\"或\"y\":\n\n"); //显示字符串

C = ReadChar();
PrintChar (c);
PrintString ("\n\n"r);

开关(c)//根据外壳显示 LED 颜色
{
案例"R":
GPIO_PORTF_DATA_R &=~Ω(RESET_RGB);
GPIO_PORTF_DATA_R |=红色;
中断;
案例"G":
GPIO_PORTF_DATA_R &=~Ω(RESET_RGB);
GPIO_PORTF_DATA_R |=绿色;

中断;
案例"y":

GPIO_PORTF_DATA_R &=~Ω(RESET_RGB);
GPIO_PORTF_DATA_R |=黄色;
中断;
默认值:
GPIO_PORTF_DATA_R &=~Ω(RESET_RGB);
GPIO_PORTF_DATA_R |= LED_OFF;
中断;




}

}




空 PrintChar (char c)
{
while (uart0_TX_rdy ()!= 0);
uart0_putc (c);

}

字符读取字符(空)
{
字符 c;
while (uart0_Rx_rdy ()!=0);
uart0_getc();
}

空 PrintString (char * string)
{
while (*字符串);

PrintChar (*(string++));

}

函数 GetChar 和 Printchar 使用以下模块中的函数:e2e.ti.com/.../uart0.c

根据我按下键盘上的按钮、代码只应显示红色、黄色或绿色。

我没有错误、但 我没有收到任何错误、直到我正在使用的终端(PuTTy)。 值得注意的是、我也尝试过其他终端。  

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

    需要澄清和检查的一些问题。
    -您是否在 COM 端口上设置了与 UART0相同的波特率和停止位数?
    - PrintString()是否起作用?
    -您的 ReadChar()是否起作用?
    -调用 ReadChar()时,您得到了什么字符?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    需要注意的是、您的主题是"UART 问题"、但这是您的大部分设置/配置。 代码涉及 R-G-B LED -仅很少(直接在此处)显示 UART 设置。   ("访问站点"(收集关键信息)会对帮助者造成额外的时间/精力-这是考虑的好吗?)

    "switch (c)"的"Fall Thru (掉电)"子句(如下所示)

    GPIO_PORTF_DATA_R &=~Ω(RESET_RGB);
    GPIO_PORTF_DATA_R |= LED_OFF;

    与"双半冒号""LED_OFF"一起提供无(附加)值。    (~(RESET_RGB)-上面的行-很好地实现了您的目标(清除所有 LED)-不需要其他帮助。)

    我们被告知:"主导代码"应该做什么"-但正如查尔斯所提到的-从不、"它是否真正成功"。

    示波器的使用-连接到 MCU 的 UART_TX -显示(两者)数据的存在和波特率-在诊断中非常有用...