LPC17XX 串口接收发送中断(含RS485)最全面驱动程序
FIFO_CNT--; 431 } 432433//如果还有数据未发送完,则使能串口中断。反之,则关闭串口中断.434if(UART_CHK_LSR(COM,LSR_THRE) == RESET) //THR不为空.435 { 436 UART_IRQ_CFG(COM, IRQ_THRE, ENABLE); //使能串口发送中断.437 UART_INFO->TX_OK = FALSE; 438 } 439else440 { 441 UART_IRQ_CFG(COM, IRQ_THRE, DISABLE); //关闭串口发送中断.442 UART_INFO->TX_OK=TRUE; 443 UART_INFO->TX_cnt=0; 444 UART_INFO->TX_len=0; 445446while(UART_CHK_LSR(COM,LSR_TEMT)==RESET); //等待THR和TSR为空,即最后一个数据发送完成(已移出TSR).447 RS485_EN(COM, RESET, USE_RS485); //RS485收发使能信号---RST_x为低---接收数据.448 } 449} 450451/*452****************************************************************************************************** 453**函数名称: void UART_IRQ_SendBytes(uint8 COM, uint8 *txbuf, uint16 len, State USE_RS485) ** 454**函数描述:串口UART中断发送多个字节(供外部文件调用) ** 455**参 数: COM---------串口: 0,1,2,3 ** 456** txbuf-------数据指针,指向发送缓冲区 ** 457** len---------待发送字节数 ** 458** USE_RS485---DISABLE:不使能RS485_EN ENABLE:使能RS485_EN ** 459**返 回: ERR---发送失败 OK---发送成功 ** 460****************************************************************************************************** 461*/462void UART_IRQ_SendBytes(uint8 COM, uint8 *txbuf, uint16 len, State USE_RS485) 463{ 464 uart_info *UART_INFO; 465466 UART_INFO = BUF_SELECT(COM); //选择对应的串口信息结构.467while(!UART_INFO->TX_OK); //等待串口空闲.468469 memcpy(UART_INFO->TX_Buffer, txbuf, len); //复制等待发送的数据到发送缓冲区.470 UART_INFO->TX_len=len; 471 UART_INFO->TX_cnt=0; 472 UART_INFO->TX_OK=FALSE; 473474 UART_IRQ_Send(COM, USE_RS485); //将数据写到THR.475476} 477478/*479****************************************************************************************************** 480**函数名称: void UART_IRQ_SendStrings(uint8 COM, char *txbuf, State USE_RS485) ** 481**函数描述:串口UART中断发送字符串(供外部文件调用)
LPC17XX串口接收发送中断RS48 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)