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:使用 ISR 时 LaunchPad EK-TM4C123GXL UART2数据接收/发送问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1131680/tm4c123gh6pm-launch-pad-ek-tm4c123gxl-uart2-data-receive-transmit-problem-using-isr

器件型号:TM4C123GH6PM
Thread 中讨论的其他器件:EK-TM4C123GXL

您好!  

我希望大家都好。

我正在 Code Composer Studio 版本12.0.0.00009中测试 TivaWare_C_Series-2.2.0.295 UART Echo 示例。 我已针对 EK-TM4C123GXL 上的 UART 0成功测试了此示例。 现在、我已经更改 了 EK-TM4C123GXL 上 UART 2的此示例。 我已将 EK-TM4C123GXL  PD6 UART2Rx 连接到 USB-TTL Tx 引脚、 将 EK-TM4C123GXL  PD7 UART2Tx 连接 到 USB-TTL Rx。

在我的计算机串行监视器测试屏幕上、我接收到来自 EK-TM4C123GXL 的字符串"Enter Text (输入文本)"。 但是当我按键盘键时、该字符不会回显。 代码如下所示。 请指导问题所在。 提前感谢您。

此致

阿西姆

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifdef 调试
无效
_error__(char * pcFilename、uint32_t ui32Line)


#endif

//
//
// UART 中断处理程序。
//
//
无效
UARTIntHandler (空)

uint32_t ui32Status;

//
//获取中断状态。
//
ui32Status = MAP_UARTIntStatus (UART2_base、true);

//
//清除已发出的中断。
//
MAP_UARTIntClear (UART2_base、ui32Status);

//
//在接收 FIFO 中有字符时循环。
//
while (MAP_UARTCharsAvail (UART2_base))

//
//从 UART 读取下一个字符并将其写回 UART。
//
MAP_UARTCharPutNonBlocking (UART2_base、MAP_UARTCharGetNonBlocking (UART2_base));


//
//
//向 UART 发送字符串。
//
//
无效
UARTSend (const uint8_t * pui8缓冲器、uint32_t ui32计数)

//
//循环,同时有更多字符要发送。
//
while (ui32Count---)

//
//将下一个字符写入 UART。
//
MAP_UARTCharPutNonBlocking (UART2_base、* pui8Buffer++);

//
//
//此示例演示了如何将一串数据发送到 UART。
//
//


内部
main (空)


//
//为中断处理程序启用怠惰堆栈。 这允许使用浮点
//在中断处理程序中使用的指令,但代价是
//额外的堆栈用法。
//
MAP_FPUEnable();
MAP_FULazyStackingEnable();

//
//启用此示例使用的外设。
//
MAP_SysCtlPeripheralDisable (SYSCTL_Periph_GPIOD);
MAP_SysCtlPeripheralReset (SYSCTL_Periph_GPIOD);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
while (!map_SysCtlPeripheralReady (SYSCTL_Periph_GPIOD))

从 JTAG 操作中//解锁 D7引脚
HWREG (GPIO_PORTD_BASE_GPIO_O_O_LOCK)= GPIO_LOCK_KEY;

HWREG (GPIO_PORTD_BASE_GPIO_O_O_CR)|= GPIO_PIN_7;

MAP_SysCtlPeripheralDisable (SYSCTL_Periph_UART2);
MAP_SysCtlPeripheralReset (SYSCTL_Periph_UART2);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_UART2);
//等待 UART2模块准备就绪
while (!map_SysCtlPeripheralReady (SYSCTL_Periph_UART2))


MAP_SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHz);

//
//启用处理器中断。
//
MAP_IntMasterEnable();

//
//将 GPIO D6和 D7设置为 UART 引脚。
//
GPIOPinConfigure (GPIO_PD6_U2RX);
GPIOPinConfigure (GPIO_PD7_U2TX);
MAP_GPIOPinTypeUART (GPIO_PORTD_BASE、GPIO_PIN_6 | GPIO_PIN_7);

//
//将 UART 配置为115、200、8-N-1操作。
//
MAP_UARTConfigSetExpClk (UART2_base、MAP_SysCtlClockGet ()、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

//
//启用 UART 中断。
//
MAP_IntEnable (INT_UART2);
MAP_UARTIntEnable (UART2_base、UART_INT_RX | UART_INT_RT);

//提示输入文本。

UARTSend ((uint8_t *)"\033[2JEnter 文本:"、16);//AZUARTSend ((uint8_t *)"\033[2JEnter 文本:"、16);

//
//循环通过 UART 永久回显数据。
//
while (1)


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

    您好!

    映射 UART2中断处理程序的 STARTUP_CCS.c 中的中断矢量已解决问题。

    谢谢。