请教各位,谢谢,我现在用9D96,UART2能正常工作,电路板上改用UART0时,不能收到9D96返回的数据,我把UART2的程序里相应地方都改成了UART0的,引脚配置,中断向量表也改了的,请问UART0问题在哪里?谢谢
代码如下:谢谢
//*****************************************************************************
//
// uart.c -UART接收中断程序
//*****************************************************************************
#include "lm3s9d96.h"
#include "hw_ints.h"
#include "hw_memmap.h"
#include "hw_types.h"
#include "debug.h"
#include "gpio.h"
#include "interrupt.h"
#include "sysctl.h"
#include "uart.h"
//*****************************************************************************
//
// 驱动库出错进入查错程序
//
//*****************************************************************************
#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif
//*****************************************************************************
//
//串口中断服务程序
//
//*****************************************************************************
void
UARTIntHandler(void)
{
unsigned long ulStatus;
unsigned char getchar;
//
// 获取中断状态
//
ulStatus = UARTIntStatus(UART0_BASE, true);
//
// 清除中断状态,防止重复响应同一中断
//
UARTIntClear(UART0_BASE, ulStatus);
//
// 循环检查接收FIFO中是否有数据
//
while(UARTCharsAvail(UART0_BASE))
{
getchar=UARTCharGetNonBlocking(UART0_BASE);
UARTCharPutNonBlocking(UART0_BASE,getchar);
}
}
//*****************************************************************************
int
main(void)
{
// 设置时钟
//
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
// 外设使能
//串口引脚配置
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
// 使能处理器中断
//
IntMasterEnable();
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
//
// 设置串口为 9600, 8-N-1模式
//
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
// 使能串口中断
//
IntEnable(INT_UART0);
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_TX);
while(1)
{
}
}
谢谢
去掉下面两句:
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
因为PA0和PA1本来就是 UART0的第一选择管脚,所以不许要再调用上面的语句配置了。
请参考Stellarisware中C:\StellarisWare\boards\dk-lm3s9d96\uart_echo的sample。