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.
我正在处理 TM4C123GXL 的 UART1、在此之前、我尝试使用 "TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\UART_echo "对 UART0上的字符进行回显、这是成功的。 然后、我对 UART1尝试了相同的代码、只 做了一些小改动、但仍然无法打印字符。
此外、在调试时、我将断点放置在此行"ui32Status = MAP_UARTIntStatus (UART1_base、true)"上;"我观察到我在"ui32Status"中得到0x40值、这意味着每当我们将数据放在 UART1上时、"MIS"寄存器"RTMIS"位就会被置位。 这到底意味着什么? 我阅读 了数据表、但我没有任何想法。
当我通过串行终端发送字符"G"时、我看到 UART1的数据寄存器发生了变化。
每当我们进入任何字符控制 时、我观察到的另一件事是进入 UART 处理程序。 那么,不在终端上打印的原因应该是什么?
我要附加代码以及寄存器 PICS。 任何帮助都是真的
谢谢。 谢谢你。
#include #include #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "driverlib/debug.h" #include "driverlib/fpu.h" #include "driverlib/gpio.h" #include "driverlib/interrupt.h" #include "driverlib/pin_map.h" #include "driverlib/driverlib.rom"#include"#driverlib/driverlib/rom.rom.include" #include "driverlib/driverlib"#driverlib_rom.intrate.h"#include"#include "driverlib_rom.ine.h" // // UART 中断处理程序。 //// ***************** 空 UARTIntHandler (void) { uint32_t ui32Status; // //获取中断状态。 // ui32Status = MAP_UARTIntStatus (UART1_BASE、TRUE); // //清除已发出的中断。 // MAP_UARTIntClear (UART1_BASE、ui32Status); // //在接收 FIFO 中有字符时循环。 // while (MAP_UARTCharsAvail (UART1_BASE)) { // //从 UART 读取下一个字符并将其写回 UART。 // MAP_UARTCharPutNonBlocking (UART1_base、MAP_UARTCharGetNonBlocking (UART1_base)); // //闪烁 LED 以显示字符传输正在发生。 // GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_2); // //延迟1毫秒。 每个 SysCtlDelay 大约为3个时钟。 // SysCtlDelay (SysCtlClockGet ()/(1000 * 3)); // //关闭 LED // GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0); } } //********* // //向 UART 发送字符串。 //// ***************** void UARTSend (const uint8_t * pui8Buffer、uint32_t ui32Count) { // //循环,同时有更多字符要发送。 // while (ui32Count---) { // //将下一个字符写入 UART。 // MAP_UARTCharPutNonBlocking (UART1_base、* pui8Buffer++); } } //********* // //此示例演示了如何将一串数据发送到 UART。 //// ***************** int main (void) { // //为中断处理程序启用怠惰堆栈。 这允许使用浮点 //在中断处理程序中使用的指令,但代价是 //额外的堆栈用法。 // MAP_FPUEnable(); MAP_FULazyStackingEnable(); // //将时钟设置为直接从晶体运行。 // MAP_SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz); // //启用用于板载 LED 的 GPIO 端口。 // MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF); // //为 LED 启用 GPIO 引脚(PF2)。 // MAP_GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2); // //启用此示例使用的外设。 // MAP_SysCtlPeripheralEnable (SYSCTL_Periph_UART1); MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC); // //启用处理器中断。 // MAP_IntMasterEnable(); // //将 GPIO A0和 A1设置为 UART 引脚。 // GPIOPinConfigure (GPIO_PC5_U1TX); GPIOPinConfigure (GPIO_PC4_U1RX); MAP_GPIOPinTypeUART (GPIO_PORTC_BASE、GPIO_PIN_5 | GPIO_PIN_4); // //将 UART 配置为115、200、8-N-1操作。 // MAP_UARTConfigSetExpClk (UART1_base、MAP_SysCtlClockGet ()、115200、 (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); // //启用 UART 中断。 // MAP_IntEnable (INT_UART1); MAP_UARTIntEnable (UART1_BASE、UART_INT_RX | UART_INT_RT); // //提示输入文本。 // UARTSend ((uint8_t *)"\033[2JEnter 文本:"、16); // //循环通过 UART 永久回显数据。 // while (1) { } }
好的、非常感谢您对代码的遵守。 我将再次检查。
此致
Omkar