LPC2131 串口通信电脑接收数据不一致,求指教
时间:10-02
整理:3721RD
点击:
程序代码:
#include <LPC213x.h>
#define Fosc 11059200
#define Fcclk Fosc*5
#define Fpclk Fcclk/4
#define UART_BPS 115200 /* 定义通讯波特率 */
typedef unsigned char u8;
typedef unsigned short u16;
void UART0_Ini(void)
{ u16 Fdiv;
PINSEL0=(PINSEL0 & (~0x0F))|0x5;//设置I/O连接到UART0,设置引脚P0.0,P0.1分别为TxD和RxD
U0LCR = 0x83; // DLAB = 1 ,可设置波特率 线控制寄存器
Fdiv = (Fpclk / 16) / UART_BPS; // 设置波特率 波特率的除数计算如下:UxDLM,UxDLL=Fpclk/16/baud(baud为所需要的波特率)
//U0DLM,U0DLL一起构成一个16位除数,用于产生波特率
U0DLM = Fdiv / 256; // 除数锁存LSB寄存器
U0DLL = Fdiv % 256; // 除数锁存MSB寄存器
U0LCR = 0x03;
}
void UART0_SendByte(u8 data)
{
U0THR = data; // 发送数据 发送器保持寄存器
while( (U0LSR&0x40)==0 ); // 等待数据发送完毕 U0LSR线状态寄存器
}
u8 UART0_RcvByte(void)
{
u8 rcv_data;
while((U0LSR&0x01) == 0);
rcv_data = U0RBR; //接收器缓存寄存器
return(rcv_data);
}
void delay(int dTime)
{
int i,j;
for(i=0;i<dTime;i++)
for(j=0;j<5000;j++);
}
int main (void)
{
int i=0;
u8 code1[11]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0x00,0xff};
UART0_Ini(); //初始化串口
for(i=0;i<10;i++)
{
UART0_SendByte(code1[i]);
delay(500);
}
}
运行四次的串口助手输出的数据:
00 11 22 33 44 D5 66 77 88 99
00 11 22 33 44 55 66 77 88 99
00 11 22 33 44 55 66 77 88 99
00 91 22 33 44 D5 66 77 88 99
#include <LPC213x.h>
#define Fosc 11059200
#define Fcclk Fosc*5
#define Fpclk Fcclk/4
#define UART_BPS 115200 /* 定义通讯波特率 */
typedef unsigned char u8;
typedef unsigned short u16;
void UART0_Ini(void)
{ u16 Fdiv;
PINSEL0=(PINSEL0 & (~0x0F))|0x5;//设置I/O连接到UART0,设置引脚P0.0,P0.1分别为TxD和RxD
U0LCR = 0x83; // DLAB = 1 ,可设置波特率 线控制寄存器
Fdiv = (Fpclk / 16) / UART_BPS; // 设置波特率 波特率的除数计算如下:UxDLM,UxDLL=Fpclk/16/baud(baud为所需要的波特率)
//U0DLM,U0DLL一起构成一个16位除数,用于产生波特率
U0DLM = Fdiv / 256; // 除数锁存LSB寄存器
U0DLL = Fdiv % 256; // 除数锁存MSB寄存器
U0LCR = 0x03;
}
void UART0_SendByte(u8 data)
{
U0THR = data; // 发送数据 发送器保持寄存器
while( (U0LSR&0x40)==0 ); // 等待数据发送完毕 U0LSR线状态寄存器
}
u8 UART0_RcvByte(void)
{
u8 rcv_data;
while((U0LSR&0x01) == 0);
rcv_data = U0RBR; //接收器缓存寄存器
return(rcv_data);
}
void delay(int dTime)
{
int i,j;
for(i=0;i<dTime;i++)
for(j=0;j<5000;j++);
}
int main (void)
{
int i=0;
u8 code1[11]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0x00,0xff};
UART0_Ini(); //初始化串口
for(i=0;i<10;i++)
{
UART0_SendByte(code1[i]);
delay(500);
}
}
运行四次的串口助手输出的数据:
00 11 22 33 44 D5 66 77 88 99
00 11 22 33 44 55 66 77 88 99
00 11 22 33 44 55 66 77 88 99
00 91 22 33 44 D5 66 77 88 99