您好: 我把lanchpad 的Uart5和Uart7收发短接起来,测试收 发,主要程序如下。
#define MASTERUARTBASE UART7_BASE
#define SLAVERUARTBASE UART5_BASE
#define UARTBAUD 115200
unsigned int imasterrevdat[16];
unsigned int iindexm = 0;
unsigned int islaverrevdat[16];
unsigned int iindexs = 0;
void
PortFunctionInit(void)
{
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART5);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART7);
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
MAP_GPIOPinConfigure(GPIO_PE5_U5TX);
MAP_GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_5);
MAP_GPIOPinConfigure(GPIO_PE4_U5RX);
MAP_GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_4);
MAP_GPIOPinConfigure(GPIO_PE0_U7RX);
MAP_GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_0);
MAP_GPIOPinConfigure(GPIO_PE1_U7TX);
MAP_GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_1);
MAP_UARTConfigSetExpClk(MASTERUARTBASE, MAP_SysCtlClockGet(), UARTBAUD,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
MAP_UARTConfigSetExpClk(SLAVERUARTBASE, MAP_SysCtlClockGet(), UARTBAUD,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
}
int
main(void)
{
unsigned int i = 0;
SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
SYSCTL_OSC_MAIN);
PortFunctionInit();
MAP_IntMasterEnable();
MAP_IntEnable(INT_UART5);
MAP_UARTIntEnable(SLAVERUARTBASE , UART_INT_RX | UART_INT_RT);
MAP_IntEnable(INT_UART7);
MAP_UARTIntEnable(MASTERUARTBASE , UART_INT_RX | UART_INT_RT);
while(1)
{
for(i = 0;i<=0xF;i++)
{
while(!UARTCharPutNonBlocking(MASTERUARTBASE ,i));
SysCtlDelay(SysCtlClockGet() / (500 * 3));
}
for(i = 0;i<=0xF;i++)
{
while(!UARTCharPutNonBlocking(SLAVERUARTBASE ,i));
SysCtlDelay(SysCtlClockGet() / (500 * 3));
}
}
}
void MasterReceiveIsr(void)
{
uint32_t ui32Status;
ui32Status = MAP_UARTIntStatus(MASTERUARTBASE, true);
MAP_UARTIntClear(MASTERUARTBASE, ui32Status);
while(MAP_UARTCharsAvail(MASTERUARTBASE))
{
imasterrevdat[iindexm++] = MAP_UARTCharGetNonBlocking(MASTERUARTBASE);
}
}
void SlaverReceiveIsr(void)
{
uint32_t ui32Status;
ui32Status = MAP_UARTIntStatus(SLAVERUARTBASE, true);
MAP_UARTIntClear(SLAVERUARTBASE, ui32Status);
while(MAP_UARTCharsAvail(SLAVERUARTBASE))
{
islaverrevdat[iindexs++] = MAP_UARTCharGetNonBlocking(SLAVERUARTBASE);
}
}
第二个循环
以后的几次循环
请指点一下,怎么会这样?哪里出现问题了,