请问关闭了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使用串口通信的例子?
|