|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
仿真图
#include<lpc21xx.h>
#define uchar unsigned char
#define uint unsigned int
#define UART0_BPS 2400
#define Fosc 11059200 //晶振频率,10MHZ~25MHZ,应和实际一致
#define Fcclk (Fosc*1) //系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ
#define Fcc0 (Fcclk*4) //cco频率,必须为Fcclk的2、4、8、16倍,范围(156MHZ~320MHZ)
#define Fpclk (Fcclk/4)*4 //VPB时钟频率,只能为(Fcclk/4)的1~4倍
uchar SEND_STRING[]="HELLO WORLD!";
void PLL_Init(void)
{
PLLCON=1;
#if ((Fcclk/4)/Fpclk)==1
VPBDIV=0;
#endif
#if ((Fcclk/4)/Fpclk)==2
VPBDIV=2;
#endif
#if ((Fcclk/4)/Fpclk)==4
VPBDIV=1;
#endif
#if (Fcco/Fcclk)==2
PLLCFG=((Fcclk/Fosc)-1)|(0<<5);
#endif
#if (Fcco/Fcclk)==4
PLLCFG=((Fcclk/Fosc)-1)|(1<<5);
#endif
#if (Fcco/Fcclk)==8
PLLCFG=((Fcclk/Fosc)-1)|(2<<5);
#endif
#if (Fcco/Fcclk)==16
PLLCFG=((Fcclk/Fosc)-1)|(3<<5);
#endif
PLLFEED=0xaa;
PLLFEED=0X55;
while((PLLSTAT&(1<<10))==0);
PLLCON=3;
PLLFEED=0xaa;
PLLFEED=0X55;
}
void UART0_SendByte(uchar data)
{
U0THR=data;
while((U0LSR&0X40)==0);
}
void Delay(uchar ms)
{
uchar i;
while(ms--)
{
for(i=0;i<250;i++);
}
}
void UART0_Init()
{
uchar Fdiv;
U0LCR=0x83;
Fdiv=(Fpclk/16)/UART0_BPS;
U0DLM=Fdiv/256;
U0DLL=Fdiv%256;
U0LCR=0x03;
}
void UART0_SendStr(uchar *str)
{
while(1)
{
if(*str=='\0')break;
UART0_SendByte(*str++);
}
}
int main()
{
PINSEL0=0X00000005;
PLL_Init();
UART0_Init();
while(1)
{
UART0_SendStr(SEND_STRING);
Delay(100);
}
} |
|