当调用 IntEnable(UART1_BASE) 函数时,就会进入 FaultISR() 死循环。
FPUEnable();
FPULazyStackingEnable();
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);
//设置时钟直接使用外部晶振
SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL |SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
//配置PB0和PB1为串口1引脚
//配置PB0和PB1为串口1引脚
GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPinConfigure(GPIO_PB0_U1RX);
GPIOPinConfigure(GPIO_PB1_U1TX);
UARTEnable(UART1_BASE);
SysCtlPeripheralReset(SYSCTL_PERIPH_UART1);//复位UART1
//配置UART0为115200,8-N-1
UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 9600,(UART_CONFIG_WLEN_8 |UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
//使能中断
//使能中断
IntMasterEnable();
//使能串口中断
IntEnable(UART1_BASE);
xyz549040622:
你的中断函数呢,单步调试,看看是从哪句进去的FaultISR() 死循环。FaultISR()中提示是哪个错误,信息不全,无法判断,建议烧官方的程序看看。
san zhang5:
回复 xyz549040622:
谢谢!已经解决了。是常量用错了,应该是IntEnable(int_UART1).
xyz549040622:
回复 san zhang5:
仔细看了看,还真是用错了。我也是粗心大意了,没用心看,经验呀!中断中的中断变量的定义,是在inc/hw_ints.h中定义的,不是在pin_map.h中定义的,我记得你另外的那个帖子中,用的还是正确的,这个就用错了。
TI中文支持网
