本帖最后由 wangqiuyunchen 于 2013-4-18 11:04 编辑
都是按手册,判断是否发送完成,但是停在while((U0LSR & 0x00000040) == 0);了
#include "config.h"
#include "LPC2400.h"
#define UARTBAUD 115200
char snd = 'a';
void delay (int x)
{ int i,j;
for (i=0;i<x;i++)
for(j=0;j<100;j++);
}
void UART_SendByte(char dat)
{
U0THR = dat;
while((U0LSR & 0x00000040) == 0);
}
void UART0_Init(void)
{
uint16 Fdiv = 0;
PCONP |= 1 << 3;
PINSEL0 = (0x01 << 4)|(0x01 << 6);
U0LCR = 0x83;
Fdiv = (Fpclk/16)/UARTBAUD;
U0DLM = Fdiv/256;
U0DLL = Fdiv%256;
U0LCR = 0x03;
U0FCR = 0x81;
}
int main(void)
{
UART0_Init();
while(1)
{
//while((U0LSR & 0x40) == 0);
UART_SendByte(snd);
U0IER |=0x02;
delay(5);
}
return(0);
}
去掉这一句的话,程序虽然能全部运行,但是串口助手没有收到数据,说明U0THR还是没有发送出来。。。。郁闷了都是按手册上来的 |