您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > LPC1768串口配置
/***********************************************************************************************************函数名称:UART1_Cfg**功能描述:配置UART1**输入:无**输出:无********************************************************************************************************/voidUART1_Cfg(void){LPC_SC-PCONP|=(14);//打开UART1功率、时钟控制位//LPC_PINCON-PINSEL0|=(130);//设置引脚P0.15为TXD1//LPC_PINCON-PINSEL1|=(10);//设置引脚P0.16为RXD1LPC_PINCON-PINSEL4|=(20);//设置引脚P2.0为TXD1LPC_PINCON-PINSEL4|=(22);//设置引脚P2.1为RXD1LPC_UART1-LCR=0x83;//使能访问除数锁存器,设定波特率//设置串口数据格式,8位字符长度,1个停止位,无校验if(UART1_BPS==2400){LPC_UART1-DLM=((FPCLK/16)/UART1_BPS)/256;//除数高八位,没有小数情况LPC_UART1-DLL=((FPCLK/16)/UART1_BPS)%256;//除数第八位LPC_UART1-FDR=0;//小数分频寄存器关闭}elseif(UART1_BPS==9600){LPC_UART1-DLM=0;//有小数情况,高字节LPC_UART1-DLL=108;//低字节LPC_UART1-FDR=(1UL0)|(2UL4);//小数分频寄存器}elseif(UART1_BPS==38400){LPC_UART1-DLM=0;//有小数情况,高字节LPC_UART1-DLL=26;//低字节LPC_UART1-FDR=(1UL0)|(2UL4);//小数分频寄存器}elseif(UART1_BPS==115200){LPC_UART1-DLM=0;//有小数情况,高字节LPC_UART1-DLL=9;//低字节LPC_UART1-FDR=(4UL0)|(9UL4);//小数分频寄存器}LPC_UART1-LCR=0x03;//禁止访问除数锁存器,锁定波特率LPC_UART1-FCR=0x07;//控制UARTnRX和TXFIFO的操作。接收数据一个字节触发中断NVIC_EnableIRQ(UART1_IRQn);//设置中断入口NVIC_SetPriority(UART1_IRQn,NVIC_PRIORTY_UART1);//设置中断优先级LPC_UART1-IER=(1UL0)|(1UL1);//使能接收和发送中断bit0接收中断bit1发送中断}/***********************************************************************************************************函数名称:UART1_SentByte**功能描述:串口发送单字节数据**输入:无**输出:无********************************************************************************************************/voidUART1_SentByte(uint8_tdat){LPC_UART1-IER&=~(1UL1);//关闭发送中断,bit0接收中断;bit1发送中断LPC_UART1-THR=dat;while(!(LPC_UART1-LSR&0x20));//等待发送LPC_UART1-IER|=(1UL1);//使能发送中断}/***********************************************************************************************************函数名称:UART1_IRQHandler**功能描述:串口1中断处理函数**输入:无**输出:无********************************************************************************************************/voidUART1_IRQHandler(void){uint8iir,temp;iir=LPC_UART1-IIR;switch(iir&0x0F)//检查IIR的中断标示bit1~bit3{case0x04://接收数据可用case0x0C://字符超时指示{temp=LPC_UART1-LSR;while(temp&0x01)//接收到数据{if(temp&0x80)//接收到的数据包含错误temp=LPC_UART1-RBR;//丢弃接收到的错误字节else//接收FIFO有可用数据{U1Rv_Buf=LPC_UART1-RBR;//读取数据}temp=LPC_UART1-LSR;}}break;case0x02://发送中断{}break;default:break;}}
本文标题:LPC1768串口配置
链接地址:https://www.777doc.com/doc-1759668 .html