打印
[ZLG-ARM]

请教ZLG-ARM关于LPC2368关闭PLL使用串口的问题?

[复制链接]
1544|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
litaoonly|  楼主 | 2009-3-20 17:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问关闭了LPC2368的PLL,直接使用晶振时钟Fosc=11520000,在使用JTAG_H调试时,通过串口0发送数据正常
但是脱机之后运行不正常?不知是何原因?请周工帮忙看看,问题出在哪里?
#define Fosc                11059200        //    OSC = 11059200MHz
#define Fcclk            (Fosc)            // 主频 Fcclk = Fosc
#define Fpclk            (Fosc)
#define CCLKDivValue        (0)

if ( PLLSTAT & (1 << 25) )
    {
        PLLCON = 1;                // Enable PLL, disconnected 
        PLLFEED = 0xAA;
        PLLFEED = 0x55;
    }  
PLLCON = 0;                        //Disable PLL, disconnected 
PLLFEED = 0xAA;
PLLFEED = 0x55;
while(PLLSTAT & (3 << 24));

SCS = (SCS & 0x04)|0x20;                     // Enable the main OSC,,1MHz~20MHz  
while((SCS & 0x40) == 0 );                // Wait until main OSC is usable 
CCLKCFG = CCLKDivValue;

// 以下保留模板的设置不变
#if (Fpclk / (Fcclk / 4)) == 1
    PCLKSEL0 = 0x00000000;                // PCLK is 1/4 CCLK 
    PCLKSEL1 = 0x00000000;
#else

    #if (Fpclk / (Fcclk / 4)) == 2
    PCLKSEL0 = 0xAAAAAAAA;                // PCLK is 1/2 CCLK 
    PCLKSEL1 = 0xAAAAAAAA;     
    #else
    PCLKSEL0 = 0x55555555;                // PCLK is the same as CCLK 
    PCLKSEL1 = 0x55555555;    
    #endif 
#endif

//   Set memory accelerater module     
   MAMCR = 0;
#if Fcclk < 20000000
    MAMTIM = 1;
#else
    #if Fcclk < 40000000
        MAMTIM = 2;
    #else
           MAMTIM = 3;
    #endif
#endif
    MAMCR = 2;          
    // Add your codes here 

// 函数名称 :UART0_AllIni
// 函数功能 :令串口0完成全部初始化工作
// 入口参数 :无。
// 出口参数 :无。
#define    Baut_Uart0        115200                //调试串口
void    UART0_AllIni(void)
{
    uint32 bak = 0;
    PINSEL0 = PINSEL0|((0x01 << 4) | (0x01 << 6));    // 设置P0.2和P0.3连接到UART0
    U0LCR = 0x80;                                    // DLAB = 1    
    bak   = (Fpclk >> 4) / Baut_Uart0;
    U0DLM = bak >> 8;
    U0DLL = bak & 0xFF;
    bak   = 8 - 5;                            // 设置数据位个数
    bak &= ~0x04;                            // 设置为1位停止位
    bak &= ~(0x01 << 4);                    // 设置为无奇偶校验 
    U0LCR = bak;                            // 将模式设置字写入U2LCR
    U0IER = 0x01;                            // 设置中断使能寄存器
    U0FCR = 0x81;                            // 使能FIFO,并设置触发点为8字节,缓冲区为8个字节
    VICIntEnClr |= 1 << 6;                    // 禁止本中断
    VICVectPri6 = 0x06;                        // 设置串口中断优先级
    VICVectAddr6 = (uint32)IRQ_UART0;        // 装入串口中断服务程序地址
    VICIntEnable |= 1 << 6;                    // 使能本中断
}

void  UART0_SendByte(uint8 data)
{  
        U0THR = data;                                        // 发送数据
        while( (U0LSR&0x40)==0 );                                // 等待数据发送完毕
}

请周工帮忙看看,问题出在哪里?方便的话能不能E-MAIL一份关闭LPC2368的PLL使用串口通信的例子?
litaoonly@163.com,十分感谢!?

相关帖子

沙发
reeper| | 2009-4-3 10:18 | 只看该作者

是裸奔吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝