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.
你(们)好
我使用 TM4C1294NCPDT 设计了自己的电路板。
我已经检查了 UART0、UART2和 UART4中断、它们工作正常。
但我遇到了 UART3问题。 程序卡在 uart3_init 函数中。
INIT 函数和中断处理程序函数与其他有效 UART 相同
功能如下:
//
void uart3_init (uint32_t ui32SysClock)
{
//
// PJ0-1用于 UART3。
//
ROM_GPIOPinConfigure (GPIO_PJ0_U3RX);
ROM_GPIOPinConfigure (GPIO_PJ1_U3TX);
ROM_GPIOPinTypeUART (GPIO_PORTJ_BASE、GPIO_PIN_0 | GPIO_PIN_1);
//已启用 GPIO 端口 D
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART3);
//
//将 UART 配置为115、200、8-N-1操作。
//
ROM_UARTConfigSetExpClk (UART3_base、ui32SysClock、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
//
//启用 UART 中断。
//
ROM_IntEnable (INT_UART3);
ROM_UARTIntEnable (UART3_base、UART_INT_RX | UART_INT_RT);
}
//
void uart4_init (uint32_t ui32SysClock)
{
//
// PA2-3用于 UART4。
//
ROM_GPIOPinConfigure (GPIO_PA2_U4RX);
ROM_GPIOPinConfigure (GPIO_PA3_U4TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_2 | GPIO_PIN_3);
//已启用 GPIO 端口 A
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART4);
//
//将 UART 配置为115、200、8-N-1操作。
//
ROM_UARTConfigSetExpClk (UART4_base、ui32SysClock、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
//
//启用 UART 中断。
//
ROM_IntEnable (INT_UART4);
ROM_UARTIntEnable (UART4_base、UART_INT_RX | UART_INT_RT);
}
//
// UART3中断处理程序。
空 UART3IntHandler (空)
{
uint32_t ui32Status;
//
//获取中断状态。
//
ui32Status = ROM_UARTIntStatus (UART3_base、true);
//
//清除已发出的中断。
//
ROM_UARTIntClear (UART3_base、ui32Status);
//
//在接收 FIFO 中有字符时循环。
//
while (ROM_UARTCharsAvail (UART3_base))
{
//
//从 UART3读取字符并将其写入 UART4。
//
ROM_UARTCharPutNonBlocking (UART4_base、UARTCharGetNonBlocking (UART3_base));
}
}
//
// UART4中断处理程序。
空 UART4IntHandler (空)
{
uint32_t ui32Status;
//
//获取中断状态。
//
ui32Status = ROM_UARTIntStatus (UART4_base、true);
//
//清除已发出的中断。
//
ROM_UARTIntClear (UART4_base、ui32Status);
//
//在接收 FIFO 中有字符时循环。
//
while (ROM_UARTCharsAvail (UART4_base))
{
//
//从 UART4读取下一个字符并将其写回 UART4。
//
ROM_UARTCharPutNonBlocking (UART4_base、UARTCharGetNonBlocking (UART4_base));
}
}
//
int main (空)
{
uint32_t ui32User0、ui32User1、ui32AnePos、ui32Color;
uint8_t pui8MACArray[8]、i;
tRectangle sRect;
//
//从 PLL 以120MHz 运行。
//
G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
//
//配置器件引脚。
//
init_pinconfig();
delay_ms (10);
uart0_init (g_ui32SysClock);
uart2_init (g_ui32SysClock);
uart3_init (g_ui32SysClock);
uart4_init (g_ui32SysClock);
while (1)
{
}
}
//
此外,我还在 init_pinconfig()函数中初始化了所需的 UART 外设。
是否有人可以帮助解决 UART3通信问题?
Kiran、
当您说代码被卡住时、最好让我们知道发生了什么... 它是否转到了 FAULT_ISR? 还有事吗?
话虽如此、您是否启用了 UART3引脚所在的 GPIO 端口?
此致
布鲁诺
谢谢 Bruno、
谢谢 Amit、
启用 GPIO 端口引脚 PJ0和 PJ1后、解决了该问题。
此致、
Kiran
尊敬的 Amit:
这些是在 init_pinconfig()函数中编写的
void init_pinconfig()
{
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);
GPIO_PORta_AHB_DIR_R |= 0xC8;//端口 A
GPIO_PORta_AHB_DEN_R |= 0xFC;
GPIO_PORTB_AHB_DIR_= 0x34;//端口 B
GPIO_PORTB_AHB_DEN_R |= 0x34;
GPIO_PORTC_AHB_DIR_R |= 0x30;//端口 C
GPIO_PORTC_AHB_DEN_R |= 0x30;
GPIO_PORTD_AHB_DIR_R |= 0x20;//端口 D
GPIO_PORTD_AHB_DEN_R |= 0x3F;
GPIO_Porte AHB_DIR_R |= 0x3C;//端口 E
GPIO_Porte AHB_DEN_R |= 0x3D;
GPIO_PORTF_AHB_DIR_= 0x0C;//端口 F
GPIO_PORTF_AHB_DEN_R |= 0x0C;
GPIO_PORTG_AHB_DIR_R |= 0x01;//端口 G
GPIO_PORTG_AHB_DEN_R |= 0x03;
GPIO_Porth_AHB_DIR_= 0x00;//端口 H
GPIO_Porth_AHB_DEN_R |= 0x0F;
GPIO_PORTJ_AHB_DIR_|= 0x02;//端口 J
GPIO_PORTJ_AHB_DEN_R |= 0x03;
GPIO_PORTK_DIR_R |= 0x9F;//端口 K
GPIO_PORTK_DEN_R |= 0xFF;
GPIO_PORTM_DIR_R = 0xFF;//端口 M
GPIO_PORTM_DEN_R = 0xFF;
GPIO_PORTN_DIR_R |= 0x3D;//端口 N
GPIO_PORTN_DEN_R |= 0x3F;
GPIO_PORTP_DIR_R |= 0x04;//端口 P
GPIO_PORTP_DEN_R |= 0x04;
GPIO_PORTQ_DIR_= 0x12;//端口 Q
GPIO_PORTQ_DEN_R |= 0x1A;
delay_ms (1);
/*
GPIO_PORTC_AHB_DATA_R |=(0x20);// Output1
GPIO_PORTC_AHB_DATA_R |=(0x10);// output2
GPIO_PORTK_DATA_R |=(0x04);// Output3
GPIO_PORTK_DATA_R |=(0x08);// Output4
GPIO_PORTK_DATA_R |=(0x01);// Output5
GPIO_PORTK_DATA_R |=(0x02);// Output6
GPIO_PORTB_AHB_DATA_R |=(0x10);// Output7
GPIO_Porte AHB_DATA_R |=(0x04);// Output8
*
ROM_GPIOPinWrite (GPIO_PORTB_BASE、GPS、GPS_ON);//GPS 电源启用
ROM_GPIOPinWrite (GPIO_PORTN_BASE、SDI12、SDI12_DISABLE);
ROM_GPIOPinWrite (GPIO_PORTK_base、ADC_PWR、ADC_ON);// ADC 电源使能
ROM_GPIOPinWrite (GPIO_PORTK_base、ADC、ADC_DISABLE);// ADS1243禁用
ROM_GPIOPinWrite (GPIO_PORTQ_BASE、wifi、WIFI_ON);// Wifi 模块电源启用
ROM_GPIOPinWrite (GPIO_PORTB_BASE、ICDI、ICDI_ON);// ICDI 电源启用
ROM_GPIOPinWrite (GPIO_Porta_base、LCD、LCD_ON);// LCD 模块启用
ROM_GPIOPinWrite (GPIO_PORTP_BASE、RS485、RS485_ON);// 5V 电源使能
ROM_GPIOPinWrite (GPIO_PORTN_BASE、RS485、RS485_RX_ENABLE);// RS485 RX 启用
ROM_GPIOPinWrite (GPIO_Porte _BASE、FLASH_PWR、FLASH_ON);//启用闪存电源
ROM_GPIOPinWrite (GPIO_PORTQ_BASE、FLASH、FLASH_DISABLE);// MX66禁用
ROM_GPIOPinWrite (GPIO_Porte _BASE、LED、LED_OFF);//用户 LED
//
// PF0/PF4-5/PH4/PQ0-2用于 SPI 闪存(板载和 SD 卡)。
// PH4选择 SD 卡、PQ1选择板载 SPI 闪存。
//
ROM_GPIOPinConfigure (GPIO_PF0_SSI3XDAT1);
// ROM_GPIOPinConfigure (GPIO_PF4_SSI3XDAT2);
// ROM_GPIOPinConfigure (GPIO_P1_SSI3XDAT3);
ROM_GPIOPinConfigure (GPIO_PQ0_SSI3CLK);
ROM_GPIOPinConfigure (GPIO_PQ2_SSI3XDAT0);
ROM_GPIOPinTypeSSI (GPIO_PORTF_BASE、GPIO_PIN_0);
ROM_GPIOPinTypeGPIOOutput (GPIO_Porte _BASE、GPIO_PIN_1);
ROM_GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_1、GPIO_PIN_1);
ROM_GPIOPinTypeSSI (GPIO_PORTQ_BASE、GPIO_PIN_0 | GPIO_PIN_2);
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTQ_BASE、GPIO_PIN_1);
ROM_GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_1、GPIO_PIN_1);
}
此致、
Kiran
Amit、您好!
我正在使用 PJ0和 PJ1端口引脚,并在 uart3_init()函数中提到。
是否有任何特定原因不使用 DRM。
示例程序中给出了这种情况、即闪烁。 那么、我已经使用了。
此致、
Kiran