/* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. * THE AUTHORS SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. USE IT AT YOUR OWN RISK */ #include //#define SPI #define IRQ_BLINKY //#define BLINKY #ifdef DMA #include "dac.h" #include "sample.h" int main (void) { dac_init(); // int i = 0; while(1) { //fiprintf(stderr, "Play #%d: %d samples\n\r", i++, sizeof(samples) / sizeof(short)); dac_play_samples(samples, sizeof(samples) / sizeof(short)); } return 0; } #endif volatile uint32_t temp; void _delay(uint32_t del); #ifdef IRQ_BLINKY volatile int resume = 0; void TIMER0_IRQHandler (void) { LPC_TIM0->IR = 1; /* clear interrupt flag */ resume = 1 - resume; //timer0_counter++; return; } int main (void) { LPC_SC->PCONP |= ( 1 << 15 ); // power up GPIO LPC_GPIO1->FIODIR |= 1 << 29; // puts P1.29 into output mode. int delayInMs = 1000; // Enable timer interrupts LPC_TIM0->MR0 = delayInMs * (9000000 / 1000-1); // interval LPC_TIM0->MCR = 3; // Interrupt and Reset on MR0 NVIC_EnableIRQ(TIMER0_IRQn); LPC_TIM0->TCR = 1; while(1) { LPC_GPIO1->FIOPIN |= 1 << 29; // make P1.29 high while(resume == 0) __WFI(); LPC_GPIO1->FIOPIN &= ~( 1 << 29 ); // make P1.29 low while(resume == 1) __WFI(); } return 0; } #endif #ifdef BLINKY int main (void) { 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 << 24 ); LPC_GPIO1->FIOPIN &= ~( 1 << 29 ); // make P1.29 low _delay( 1 << 24 ); } return 0; } #endif #ifdef UART #include "LPC17xx.h" #include #include "uart.h" int main (void) { /* SystemClockUpdate() updates the SystemFrequency variable */ // SystemCoreClockUpdate();//SystemClockUpdate(); UARTInit(0, 115200); /* baud rate setting */ // UARTInit(1, 8000); /* baud rate setting */ 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 //LPC_UART0->IER = IER_THRE | IER_RLS; // Disable RBR UARTSend(0, (uint8_t *)"hello\n\r", 7); //LPC_UART0->IER = IER_THRE | IER_RLS | IER_RBR; // Re-enable RBR _delay( 1 << 22 ); /// LPC_GPIO1->FIOPIN &= ~( 1 << 29 ); // make P1.29 low /* LPC_UART0->IER = IER_THRE | IER_RLS; // Disable RBR UARTSend( 0, (uint8_t *)"l", 1); LPC_UART0->IER = IER_THRE | IER_RLS | IER_RBR; // Re-enable RBR */ _delay( 1 << 22 ); } } #endif #ifdef SPI #include #include #include int main (void) { // SystemCoreClockUpdate(); // SystemInit(); LED_Init(); cli_init(); cli_write("init"); _delay(1 << 22); WM8523_init(); cli_write("pre"); _delay(1 << 22); WM8523_configure(); cli_write("post"); } #endif void _delay(uint32_t del) { uint32_t i; for(i=0;i