hey guys i am beginner with lpc1768 and trying to run it at 100mhz with a 12mhz onboard crystal this is the code i have written is it right?am i missing something?
- include "LPC17xx.h"
volatile uint32_t temp;
void _delay(uint32_t del);
void pllfeed()
{
LPC_SC->PLL0FEED=0x000000AA;
LPC_SC->PLL0FEED=0x00000055;
}
void setpll()
{
uint16_t n,m,d;
the external crystal oscillator is 12 MHz
main oscillator frequency 300 MHz: M = (300 x N) / (2 x 12)
n=2;
m=25;
processor clock 100 MHz = 300 MHz / D
d=3;
disconnect
LPC_SC->PLL0CON=0x00000001; pllfeed();
disable
LPC_SC->PLL0CON=0x00000000; pllfeed();
select the on board crystal
LPC_SC->CLKSRCSEL =1;
set new PLL values
LPC_SC->PLL0CFG=((n-1)<<16)|(m-1); pllfeed();
enable
LPC_SC->PLL0CON=0x00000001; pllfeed();
set cpu clock divider
LPC_SC->CCLKCFG=d-1;
wait for lock
while ((LPC_SC->PLL0STAT&0x04000000)==0);
connect
LPC_SC->PLL0CON=0x00000003; pllfeed();
SystemCoreClockUpdate();
}
int main (void)
{
SystemInit();
setpll();
LPC_SC->PCONP |= ( 1 << 15 ); power up GPIO
LPC_GPIO1->FIODIR |= 1 << 29; puts P1.29 into output mode.
while(1)
{
LPC_GPIO1->FIOPIN |= 1 << 29; make P1.29 high
_delay( 1 << 30 );
LPC_GPIO1->FIOPIN &= ( 1 << 29 ); make P1.29 low
_delay( 1 << 30 );
}
}
void _delay(uint32_t del)
{
uint32_t i;
for(i=0;i<del;i++)
temp = i;
}
hey guys i am beginner with lpc1768 and trying to run it at 100mhz with a 12mhz onboard crystal this is the code i have written is it right?am i missing something?
volatile uint32_t temp;
void _delay(uint32_t del);
void pllfeed() {
LPC_SC->PLL0FEED=0x000000AA; LPC_SC->PLL0FEED=0x00000055;
}
void setpll() { uint16_t n,m,d;
the external crystal oscillator is 12 MHz
main oscillator frequency 300 MHz: M = (300 x N) / (2 x 12) n=2;
m=25;
processor clock 100 MHz = 300 MHz / D
d=3; disconnect
LPC_SC->PLL0CON=0x00000001; pllfeed();
disable
LPC_SC->PLL0CON=0x00000000; pllfeed();
select the on board crystal
LPC_SC->CLKSRCSEL =1;
set new PLL values
LPC_SC->PLL0CFG=((n-1)<<16)|(m-1); pllfeed();
enable
LPC_SC->PLL0CON=0x00000001; pllfeed();
set cpu clock divider
LPC_SC->CCLKCFG=d-1;
wait for lock
while ((LPC_SC->PLL0STAT&0x04000000)==0);
connect
LPC_SC->PLL0CON=0x00000003; pllfeed();
SystemCoreClockUpdate();
}
int main (void) {
SystemInit();
setpll();
LPC_SC->PCONP |= ( 1 << 15 ); power up GPIO
LPC_GPIO1->FIODIR |= 1 << 29; puts P1.29 into output mode.
while(1) {
LPC_GPIO1->FIOPIN |= 1 << 29; make P1.29 high
_delay( 1 << 30 );
LPC_GPIO1->FIOPIN &= ( 1 << 29 ); make P1.29 low
_delay( 1 << 30 );
}
}
void _delay(uint32_t del) {
uint32_t i;
for(i=0;i<del;i++)
temp = i;
}