78 lines
1.3 KiB
C
78 lines
1.3 KiB
C
/*
|
|
cpulib: Routines for CPU initialization and configuration.
|
|
|
|
Target : iSYSTEM LPC2138-M minitarget board (ARM7TDMI)
|
|
Source : iSYSTEM iF-DEV-LPC kit
|
|
Changes : Tidorum Ltd (N. Holsti)
|
|
|
|
$Id: cpulib.c,v 1.1 2008/04/08 09:44:55 niklas Exp $
|
|
*/
|
|
|
|
#include "cpulib.h"
|
|
|
|
void cpulib_init_cpu ( void )
|
|
{
|
|
// The MAM is assumed to be initialized in crt0.s.
|
|
|
|
// Turn off the LED:
|
|
|
|
IO0DIR |= IO_LED; // Set pin direction to output.
|
|
IO0SET |= IO_LED; // Set pin value to 1 = turn off LED.
|
|
}
|
|
|
|
|
|
void cpulib_go_fast ( unsigned int mode )
|
|
{
|
|
// Turn on PLL from 12 MHz to 60 MHz cclk:
|
|
|
|
PLLCFG = 0x24;
|
|
PLLCON = 0x1;
|
|
PLLFEED = 0xAA;
|
|
PLLFEED = 0x55;
|
|
while ( !( PLLSTAT & 0x400 ) ) {};
|
|
PLLCON = 0x3;
|
|
PLLFEED = 0xAA;
|
|
PLLFEED = 0x55;
|
|
}
|
|
|
|
|
|
void cpulib_set_led ( int state )
|
|
{
|
|
if ( state )
|
|
IO0CLR = IO_LED; // LED on.
|
|
else
|
|
IO0SET = IO_LED; // LED off.
|
|
}
|
|
|
|
|
|
static volatile int flash_timer;
|
|
/* Loop counter for timing flash_led. */
|
|
|
|
|
|
void cpulib_flash_led ( void )
|
|
{
|
|
cpulib_set_led ( 1 );
|
|
|
|
flash_timer = 10000;
|
|
while ( flash_timer > 0 ) flash_timer--;
|
|
|
|
cpulib_set_led ( 0 );
|
|
}
|
|
|
|
|
|
void cpulib_blink_led ( void )
|
|
{
|
|
cpulib_set_led ( 0 );
|
|
|
|
flash_timer = 30000;
|
|
while ( flash_timer > 0 ) flash_timer--;
|
|
|
|
cpulib_set_led ( 1 );
|
|
|
|
flash_timer = 10000;
|
|
while ( flash_timer > 0 ) flash_timer--;
|
|
|
|
cpulib_set_led ( 0 );
|
|
}
|
|
|