||
最后是UART0的编程:
第一步:设置管脚连接寄存器PINSEL0 = 0x00000005;开启RXD/TXD的功能。
第二步:设置UART0 线控制寄存器U0LCR,低2位是字长度选择,默认是00:5位字符长度,我们一般使用的是8位字符长度,所以设置为11。同时最高位DLAB=1,使能访问除数寄存器。
第三步:根据波特率和外设时钟设置除数寄存器U0DLM/U0DLL。
最后:设置DLAB=0,禁止修改波特率
主要代码如下:
#include <LPC214X.H>
#include <stdio.h>
#define Fpclk 15000000
//Startup.s启动代码里面设置了系统设置60M,外设时钟15M
#define BAUD 9600
void Uart0_Init(void)
{
unsigned int Fdiv;
/* initialize the serial interface */
PINSEL0 = 0x00000005; /* Enable RxD0 and TxD0 */
U0LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit*/
//DLAB=1,可以设置波特率
Fdiv=(Fpclk/16)/BAUD;
U0DLM =Fdiv/256;
U0DLL =Fdiv%256;
U0LCR = 0x03; /* DLAB = 0 */
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
U0THR = ch;
while( (U0LSR&0x40)==0 ); // 等待数据发送完毕
return ch;
}
void delay (unsigned int i)
{ /* Delay function */
unsigned int n;
while(i>1)
{
for(n=65535;n>1;n--);
i--;
}
}
int main(void)
{
Uart0_Init();
while(1)
{
puts("EEWORLD GOOD\r\n") ;
delay(200);
}