在线时间0 小时
UID163383
注册时间2009-12-14
NXP金币0
该用户从未签到
新手上路

- 积分
- 43
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2010-3-31 11:33:15
|
显示全部楼层
回复:困扰了很久的串口问题!
谢谢安,问题依然没有解决! 我把我的时钟设置部分 和串口初始化部分程序发上来,大家帮忙研究下
void SetClock(void)/*目的是设置总线时钟=8M,外部晶振是4M*/
{
// 从FEI转换到FBE
MCGC2=0x36; //MCGSC_OSCINIT=1;
while(MCGSC_OSCINIT==0){__RESET_WATCHDOG();}
// 禁止中断(如果适用,在CCR 中设置中断位)。
MCGC1=0xb8;
while(MCGSC_IREFST==1){;}
while(!(MCGSC_CLKST==0b10)) {;} //0x02
// 从FBE转换到BLPE
MCGC2_LP=1;
//使能中断(如果适用,清除CCR 中的中断位)
MCGC1=0x90;
MCGC3=0x44;
while(MCGSC_PLLST != 1);
// 从BLPE 模式转换到PBE 模式
if(MCGC2_LP==1)
MCGC2=0x36;
// while(MCGSC_PLLST==0){;}
while(MCGSC_LOCK==0){;}
// 从PBE 模式转换到 PEE 模式
MCGC1=0x10;
while(!(MCGSC_CLKST==0b11)) {;}
}
//设置UART1方式
//选择波特率为38400bps
void Uart1_Init(void)
{
SCI1BD =8000000/16/scibandrate; /*scibandrate =38400在头文件申明了*/
SCI1C1 = 0x00; /* start + 8 data bits (LSB first) + stop ,No hardware parity*/
SCI1C2 = 0x2C; /* TCIE,RIE enable ,Receiver on,Transmitter on. no TIE*/
//PrintMsg("UART1 bps is 38400 ");
}
以上就是采用内部时钟,调制总线频率是8M,其实我看了debugger的command输出窗口,它显示的CPU clock SPEED是7642000 ,我也尝试用MCGTRM来调整,但一直达不到或者接近8000000,(从小到大输了几十个值来调,但时钟频率不是7600000左右就是8600000左右), 我也查过资料,采用内部时钟,肯定会不准确,但现在要使用串口通信,这样肯定是实现不了。
希望技术开发人员能帮忙研究下,以帮助我解决这2问题! |
|