中断已经在中断向量表中注册。
代码如下:
void UART1IntHandler(void);
void uartInit(void);
// UART1初始化
void uartInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1); // 使能UART模块
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); // 使能RX/TX所在的GPIO端口
GPIOPinConfigure(GPIO_PC6_U1RX);
GPIOPinConfigure(GPIO_PC7_U1TX);
GPIOPinTypeUART(GPIO_PORTC_BASE, // 配置RX/TX所在管脚为
GPIO_PIN_6 | GPIO_PIN_7); // UART收发功能
UARTConfigSet(UART1_BASE, // 配置UART端口
19200, // 波特率:19200
UART_CONFIG_WLEN_8 | // 数据位:8
UART_CONFIG_STOP_ONE | // 停止位:1
UART_CONFIG_PAR_NONE); // 校验位:无
UARTIntRegister(UART1_BASE,UART1IntHandler);
UARTEnable(UART1_BASE); // 使能UART端口
IntEnable(INT_UART1); // 使能UART总中断
UARTIntEnable(UART1_BASE, UART_INT_RX | UART_INT_RT); // 使能接收和接收超时中断
}
// 主函数(程序入口)
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_2 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
uartInit(); // UART初始化
IntMasterEnable();
while(1)
{
UARTCharPut(UART1_BASE, 0) ;
UARTCharPut(UART1_BASE, 1) ;
UARTCharPut(UART1_BASE, 2) ;
}
}
// UART1中断服务函数
void UART1IntHandler(void)
{
unsigned long ulStatus;
ulStatus = UARTIntStatus(UART1_BASE, 1);
UARTIntClear(UART1_BASE, ulStatus);
while(UARTCharsAvail(UART1_BASE))
{
unsigned char UartDataTmp;
UartDataTmp=UARTCharGetNonBlocking(UART1_BASE);
UARTCharPut(UART1_BASE, UartDataTmp) ;
}
}
此帖出自
小平头技术问答
一周热门 更多>