
see http://mbed.org/users/no2chem/notebook/mbed-clock-control--benchmarks/
ClockControl/ClockControl.cpp@0:b5d3bd64d2dc, 2010-01-24 (annotated)
- Committer:
- no2chem
- Date:
- Sun Jan 24 15:46:26 2010 +0000
- Revision:
- 0:b5d3bd64d2dc
Who changed what in which revision?
User | Revision | Line number | New 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 | } |