//****************************************************************************************** // Project : LPC1114 Sample Program // Program Name : // Programer : // Create date : Version 1.0 H24.10.15 // History : // Laungage : //****************************************************************************************** // (1)Description // CLOCKOUT : PIO(0_1) //****************************************************************************************** #include "LPC11xx.h" void IntCLKOUT(uint32_t, unsigned char ); #define PI_CLKOUT_IRC 0 #define PI_CLKOUT_SYSOSC 1 #define PI_CLKOUT_WTOSC 2 #define PI_CLKOUT_MAINCLK 3 int main(void) { // ******************** // 1.Initialized // ******************** // (1)Define I/O PORT (Configuration) // PIO0_1 Reset PIN LPC_IOCON->PIO0_1 = 0b01; //PIO0_1/CLKOUT/CT32B0_MAT2 (R/W) LPC_IOCON->PIO0_2 = 0b00; //PIO0_2/SSEL0/CT16B0_CAP0 (R/W) LPC_IOCON->PIO0_3 = 0b00; //PIO0_3 (R/W) LPC_IOCON->PIO0_4 = 0b00; //PIO0_4(open-drain)/SCL (R/W) LPC_IOCON->PIO0_5 = 0b00; //PIO0_5(open-drain)/SDA (R/W) LPC_IOCON->PIO0_6 = 0b00; //PIO0_6/SCK0 (R/W) LPC_IOCON->PIO0_7 = 0b00; //PIO0_7/nCTS (R/W) // LPC_IOCON->R_PIO1_0 = 0b00; //TMS/PIO1_0/AD1/CT32B1_CAP0 (R/W) // LPC_IOCON->R_PIO1_1 = 0b00; //TDO/PIO1_1/AD2/CT32B1_MAT0 (R/W) // LPC_IOCON->R_PIO1_2 = 0b00; //nTRST/PIO1_2/AD3/CT32B1_MAT1 (R/W) // LPC_IOCON->SWDIO_PIO1_3 = 0b00; //SWDIO/PIO1_3/AD4/CT32B1_MAT2 (R/W) // LPC_IOCON->PIO1_4 = 0b00; //PIO1_4/AD5/CT32B1_MAT3 (R/W) // LPC_IOCON->PIO1_5 = 0b00; //PIO1_5/nRTS/CT32B0_CAP0 (R/W) // LPC_IOCON->PIO1_6 = 0b00; //PIO1_6/RXD/CT32B0_MAT0 (R/W) // LPC_IOCON->PIO1_7 = 0b00; //PIO1_7/TXD/CT32B0_MAT1 (R/W) // (2)Define I/O PORT (Direction) LPC_GPIO0->DIR = 0x00000000; // (3)Clock OUT // IntCLKOUT((uint32_t)PI_CLKOUT_IRC, (unsigned char)1); //IRC oscillator (12MHz) IntCLKOUT((uint32_t)PI_CLKOUT_SYSOSC, (unsigned char)1); //System oscillator(12.000MHz) // IntCLKOUT((uint32_t)PI_CLKOUT_WTOSC, (unsigned char)1); //Watchdog oscillator(No output) // IntCLKOUT((uint32_t)PI_CLKOUT_MAINCLK, (unsigned char)1); //Main clock(32MHz) // ******************** // 2.Main // ******************** while(1); } //****************************************************************************************** // Function Name : IntCLKOUT // Title : // Input : // Output : //****************************************************************************************** void IntCLKOUT(uint32_t out_mode, unsigned char c_dev) { // **************************************** // CLKOUTCLKSEL (CLKOUT clock source select register) // **************************************** // CLKOUTCLKSEL[1:0] SEL: CLKOUT clock source Reset value : 0x00 // 0x0 IRC oscillator // 0x1 System oscillator // 0x2 Watchdog oscillator // 0x3 Main clock // CLKOUTCLKSEL[31:2] Reserved LPC_SYSCON->CLKOUTCLKSEL = out_mode; // **************************************** // CLKOUTUEN (CLKOUT clock source update enable register) // **************************************** // CLKOUTUEN[0] ENA: Enable CLKOUT clock source update // 0 No change // 1 Update clock source // CLKOUTUEN[31:1] Reserved LPC_SYSCON->CLKOUTUEN = 0x01; // Update clock LPC_SYSCON->CLKOUTUEN = 0x00; // Toggle update register once LPC_SYSCON->CLKOUTUEN = 0x01; while ( !(LPC_SYSCON->CLKOUTUEN & 0x01) ); // Wait until updated // **************************************** // CLKOUTCLKDIV (CLKOUT clock divider register) // **************************************** // CLKOUTCLKDIV[7:0]: DIV Clock output divider values // 0: Disable CLKOUT. // 1: Divide by 1. // * * * * * // 255: Divide by 255. // CLKOUTCLKDIV[31:8]: Reserved LPC_SYSCON->CLKOUTDIV = c_dev; // Divided by 1 }