请问关闭了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 /> |
|