| 
 
| 请问关闭了LPC2368的PLL,直接使用晶振时钟Fosc=11520000,在使用JTAG_H调试时,通过串口0发送数据正常<br />但是脱机之后运行不正常?不知是何原因?请周工帮忙看看,问题出在哪里?<br />#define Fosc                11059200        //    OSC = 11059200MHz<br />#define Fcclk            (Fosc)            // 主频 Fcclk = Fosc<br />#define Fpclk            (Fosc)<br />#define CCLKDivValue        (0)<br /><br />if ( PLLSTAT & (1 << 25) )<br />    {<br />        PLLCON = 1;                // Enable PLL, disconnected <br />        PLLFEED = 0xAA;<br />        PLLFEED = 0x55;<br />    }  <br />PLLCON = 0;                        //Disable PLL, disconnected <br />PLLFEED = 0xAA;<br />PLLFEED = 0x55;<br />while(PLLSTAT & (3 << 24));<br /><br />SCS = (SCS & 0x04)|0x20;                     // Enable the main OSC,,1MHz~20MHz  <br />while((SCS & 0x40) == 0 );                // Wait until main OSC is usable <br />CCLKCFG = CCLKDivValue;<br /><br />// 以下保留模板的设置不变<br />#if (Fpclk / (Fcclk / 4)) == 1<br />    PCLKSEL0 = 0x00000000;                // PCLK is 1/4 CCLK <br />    PCLKSEL1 = 0x00000000;<br />#else<br /><br />    #if (Fpclk / (Fcclk / 4)) == 2<br />    PCLKSEL0 = 0xAAAAAAAA;                // PCLK is 1/2 CCLK <br />    PCLKSEL1 = 0xAAAAAAAA;     <br />    #else<br />    PCLKSEL0 = 0x55555555;                // PCLK is the same as CCLK <br />    PCLKSEL1 = 0x55555555;    <br />    #endif <br />#endif<br /><br />//   Set memory accelerater module     <br />   MAMCR = 0;<br />#if Fcclk < 20000000<br />    MAMTIM = 1;<br />#else<br />    #if Fcclk < 40000000<br />        MAMTIM = 2;<br />    #else<br />           MAMTIM = 3;<br />    #endif<br />#endif<br />    MAMCR = 2;          <br />    // Add your codes here <br /><br />// 函数名称 :UART0_AllIni<br />// 函数功能 :令串口0完成全部初始化工作<br />// 入口参数 :无。<br />// 出口参数 :无。<br />#define    Baut_Uart0        115200                //调试串口<br />void    UART0_AllIni(void)<br />{<br />    uint32 bak = 0;<br />    PINSEL0 = PINSEL0|((0x01 << 4) | (0x01 << 6));    // 设置P0.2和P0.3连接到UART0<br />    U0LCR = 0x80;                                    // DLAB = 1    <br />    bak   = (Fpclk >> 4) / Baut_Uart0;<br />    U0DLM = bak >> 8;<br />    U0DLL = bak & 0xFF;<br />    bak   = 8 - 5;                            // 设置数据位个数<br />    bak &= ~0x04;                            // 设置为1位停止位<br />    bak &= ~(0x01 << 4);                    // 设置为无奇偶校验 <br />    U0LCR = bak;                            // 将模式设置字写入U2LCR<br />    U0IER = 0x01;                            // 设置中断使能寄存器<br />    U0FCR = 0x81;                            // 使能FIFO,并设置触发点为8字节,缓冲区为8个字节<br />    VICIntEnClr |= 1 << 6;                    // 禁止本中断<br />    VICVectPri6 = 0x06;                        // 设置串口中断优先级<br />    VICVectAddr6 = (uint32)IRQ_UART0;        // 装入串口中断服务程序地址<br />    VICIntEnable |= 1 << 6;                    // 使能本中断<br />}<br /><br />void  UART0_SendByte(uint8 data)<br />{  <br />        U0THR = data;                                        // 发送数据<br />        while( (U0LSR&0x40)==0 );                                // 等待数据发送完毕<br />}<br /><br />请周工帮忙看看,问题出在哪里?方便的话能不能E-MAIL一份关闭LPC2368的PLL使用串口通信的例子?<br /> | 
 |