下面是我参考资料写的一个UART中断函数,大家帮我看看哪里有问题
#include "hw_types.h"
#include "hw_memmap.h"
#include "hw_ints.h"
#include "sysctl.h"
#include "gpio.h"
#include "uart.h"
#include "uartGetPut.h"
#include "stdio.h"
#include "interrupt.h"
void UART0_ISR(void) //中断服务子程序
{
//消除中断标志
unsigned long ulStatus;
ulStatus = UARTIntStatus(UART0_BASE, true);
UARTIntClear(UART0_BASE, ulStatus);
//进入中断怎返回‘s’
UARTCharPut(UART0_BASE,'S');
}
void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)
{ while(ulCount--)
{ // 通过字符串指针发送数据
UARTCharPutNonBlocking(UART0_BASE, *pucBuffer++);
}
}
void uartInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); // 使能UART0模块
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); // 使能RX/TX所在的GPIO端口
GPIOPinTypeUART(GPIO_PORTA_BASE, // 配置RX/TX所在管脚为
GPIO_PIN_0 | GPIO_PIN_1); // UART收发功能
UARTConfigSetExpClk(UART0_BASE,SysCtlClockGet(), // 配置UART端口
9600, // 波特率:9600
UART_CONFIG_WLEN_8 | // 数据位:8
UART_CONFIG_STOP_ONE | // 停止位:1
UART_CONFIG_PAR_NONE); // 校验位:无
UARTEnable(UART0_BASE); // 使能UART端口
}
int main(void) // 主函数(程序入口)
{
//char str[10],string[10];
SysCtlClockSet(SYSCTL_USE_OSC | // 系统时钟设置
SYSCTL_OSC_MAIN | // 采用主振荡器
SYSCTL_XTAL_16MHZ | // 外接16MHz晶振
SYSCTL_SYSDIV_1); // 不分频
uartInit(); // UART初始化
IntMasterEnable(); //开总中断
IntEnable(INT_UART0); //使能UART中断
UARTIntEnable(UART0_BASE,UART_INT_RT | UART_INT_RX); //使能接收中断和接收超时中断
UARTSend((unsigned char *)"Enter text: ", 12);
while(1)
{
}
}