当前位置:首页 > 单片机 > 单片机
[导读]如果用Keil ARM的话自动生成的Startup.s中默认VPBDIV=0X00000000,这就导致Fpclk为4分频。导致波特率下降四倍。以下为keil中的Startup.s中默认设定的值。;// VPBDIV Setup;// Peripheral Bus Clock Rate;// VPBDI

如果用Keil ARM的话自动生成的Startup.s中默认VPBDIV=0X00000000,这就导致Fpclk为4分频。导致波特率下降四倍。以下为keil中的Startup.s中默认设定的值。;// VPBDIV Setup
;// Peripheral Bus Clock Rate
;// VPBDIV: VPB Clock
;// <0=> VPB Clock = CPU Clock / 4
;// <1=> VPB Clock = CPU Clock
;// <2=> VPB Clock = CPU Clock / 2
;// XCLKDIV: XCLK Pin
;// <0=> XCLK Pin = CPU Clock / 4
;// <1=> XCLK Pin = CPU Clock
;// <2=> XCLK Pin = CPU Clock / 2
;//

VPBDIV_SETUP EQU 0VPBDIV_Val EQU 0x00000000我们将其修改为:

VPBDIV_SETUPEQU1

VPBDIV_ValEQU0x00000001

问题解决。

#include

#include"Config.H"


#defineUART_BAUD(baud)(unsignedint)((FOSC*PLL_M)/(baud*16))


voidInit_Uart0(unsignedintBaud)

{

/*initializetheserialinterface*/

PINSEL0=0x00000005;/*EnableRxD0andTxD0*/

U0LCR=0x83;/*8bits,noParity,1Stopbit*/

U0DLM=(unsignedchar)(Baud>>8);

U0DLL=(unsignedchar)Baud;

U0LCR=0x03;/*DLAB=0*/

}


voiddelay(unsignedinti){/*Delayfunction*/

unsignedintn;

while(i>1)

{

for(n=65535;n>1;n--);

i--;

}

}

voidSent_Byte(unsignedchardata)

{

U0THR=data;//发送数据


while((U0LSR&0x40)==0);//等待数据发送完毕

}

voidSent_Str(unsignedcharconst*str)

{while(1)

{if(*str=='/0')break;

Sent_Byte(*str++);//发送数据

}

}

voidmain(void)

{

Init_Uart0(UART_BAUD(115200));

for(;;)

{

Sent_Str("www.dnp.cn/n");

delay(200);

}

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭