LPC17XX 串口接收发送中断(含RS485)最全面驱动程序
<(RX_FIFO_SIZE-1); cnt++) 547 { 548 UART_INFO->RX_Buffer[UART_INFO->RX_cnt] = UART_Recv(COM); 549 UART_INFO->RX_cnt++; 550 } 551break; 552//字符超时中断. 553case IIR_CTI: 554while(UART_CHK_LSR(COM,LSR_RDR)==SET) //判断FIFO中是否还包仿有效数据,有则继续读取. 555 { 556 UART_INFO->RX_Buffer[UART_INFO->RX_cnt] = UART_Recv(COM); 557 UART_INFO->RX_cnt++; 558 } 559 UART_INFO->RX_len = UART_INFO->RX_cnt; 560 UART_INFO->RX_OK = TRUE; //串口接收完成标志置位.561break; 562 } 563564 UART_IRQ_CFG(COM, IRQ_RBR, ENABLE); //使能串口接收中断.565} 566567/*568****************************************************************************************************** 569**函数名称: void UART_IRQ_SERVICE(uint8 COM) ** 570**函数描述:串口中断服务程序回调函数 ** 571**参 数: COM--------串口: 0,1,2,3 ** 572**返 回: 无 ** 573****************************************************************************************************** 574*/575void UART_IRQ_SERVICE(uint8 COM) 576{ 577uint32 IIR_ID; 578579 IIR_ID = UART_GET_IIR(COM) & IIR_MASK; 580581//接收线状态中断---本例不作处理,也没有使能该中断.582583/****处理程序****/584585//接收数据中断586if((IIR_ID == IIR_RDA) || (IIR_ID == IIR_CTI)) 587 { 588 UART_IRQ_RecvBytes(COM, IIR_ID); 589 } 590591//发送数据中断592if(IIR_ID == IIR_THRE) 593 { 594 UART_IRQ_Send(COM, ENABLE); 595 } 596} 597598/*599****************************************************************************************************** 600**函数名称: void UART0_IRQHandler(void) ** 601**函数描述:UART0中断服务程序 ** 602**参 数: 无 ** 603**返 回: 无 ** 604****************************************************************************************************** 605*/606void UART0_IRQHandler(void) 607{ 608609 UART_IRQ_SERVICE(UART0); 610611} 612613/*614****************************************************************************************************** 615**函数名称: void UART1_IRQHandler(void) ** 616**函数描述:UART1中断服务程序 ** 617**参 数: 无
LPC17XX串口接收发送中断RS48 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)