微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LPC2131 串口通信电脑接收数据不一致,求指教

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top