see http://mbed.org/users/no2chem/notebook/mbed-clock-control--benchmarks/

Dependencies:   mbed

Committer:
no2chem
Date:
Sun Jan 24 15:46:26 2010 +0000
Revision:
0:b5d3bd64d2dc

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
no2chem 0:b5d3bd64d2dc 1 #include "ClockControl.h"
no2chem 0:b5d3bd64d2dc 2
no2chem 0:b5d3bd64d2dc 3 void setPLL0Frequency(unsigned char clkSrc, unsigned short M, unsigned char N)
no2chem 0:b5d3bd64d2dc 4 {
no2chem 0:b5d3bd64d2dc 5 LPC_SC->CLKSRCSEL = clkSrc;
no2chem 0:b5d3bd64d2dc 6 LPC_SC->PLL0CFG = (((unsigned int)N-1) << 16) | M-1;
no2chem 0:b5d3bd64d2dc 7 LPC_SC->PLL0CON = 0x01;
no2chem 0:b5d3bd64d2dc 8 LPC_SC->PLL0FEED = 0xAA;
no2chem 0:b5d3bd64d2dc 9 LPC_SC->PLL0FEED = 0x55;
no2chem 0:b5d3bd64d2dc 10 while (!(LPC_SC->PLL0STAT & (1<<26)));
no2chem 0:b5d3bd64d2dc 11
no2chem 0:b5d3bd64d2dc 12 LPC_SC->PLL0CON = 0x03;
no2chem 0:b5d3bd64d2dc 13 LPC_SC->PLL0FEED = 0xAA;
no2chem 0:b5d3bd64d2dc 14 LPC_SC->PLL0FEED = 0x55;
no2chem 0:b5d3bd64d2dc 15 }
no2chem 0:b5d3bd64d2dc 16
no2chem 0:b5d3bd64d2dc 17 void setPLL1Frequency(unsigned char clkSrc, unsigned short M, unsigned char N)
no2chem 0:b5d3bd64d2dc 18 {
no2chem 0:b5d3bd64d2dc 19 LPC_SC->CLKSRCSEL = clkSrc;
no2chem 0:b5d3bd64d2dc 20 LPC_SC->PLL1CFG = (((unsigned int)N-1) << 16) | M-1;
no2chem 0:b5d3bd64d2dc 21 LPC_SC->PLL1CON = 0x01;
no2chem 0:b5d3bd64d2dc 22 LPC_SC->PLL1FEED = 0xAA;
no2chem 0:b5d3bd64d2dc 23 LPC_SC->PLL1FEED = 0x55;
no2chem 0:b5d3bd64d2dc 24 while (!(LPC_SC->PLL1STAT & (1<<26)));
no2chem 0:b5d3bd64d2dc 25
no2chem 0:b5d3bd64d2dc 26 LPC_SC->PLL1CON = 0x03;
no2chem 0:b5d3bd64d2dc 27 LPC_SC->PLL1FEED = 0xAA;
no2chem 0:b5d3bd64d2dc 28 LPC_SC->PLL1FEED = 0x55;
no2chem 0:b5d3bd64d2dc 29 }
no2chem 0:b5d3bd64d2dc 30
no2chem 0:b5d3bd64d2dc 31 unsigned int setSystemFrequency(unsigned char clkDivider, unsigned char clkSrc, unsigned short M, unsigned char N)
no2chem 0:b5d3bd64d2dc 32 {
no2chem 0:b5d3bd64d2dc 33 setPLL0Frequency(clkSrc, M, N);
no2chem 0:b5d3bd64d2dc 34 LPC_SC->CCLKCFG = clkDivider - 1;
no2chem 0:b5d3bd64d2dc 35 SystemCoreClockUpdate();
no2chem 0:b5d3bd64d2dc 36 return SystemCoreClock;
no2chem 0:b5d3bd64d2dc 37 }