MP3 Player. You can change fwd/rev speed and skip. see: http://mbed.org/users/okini3939/notebook/lpc4088_madplayer/
Dependencies: I2SSlave SDFileSystem TLV320 mbed
main.cpp@0:8ba6230eefbd, 2014-02-18 (annotated)
- Committer:
- okini3939
- Date:
- Tue Feb 18 00:22:50 2014 +0000
- Revision:
- 0:8ba6230eefbd
1st build
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:8ba6230eefbd | 1 | #include "mbed.h" |
okini3939 | 0:8ba6230eefbd | 2 | #include "player.h" |
okini3939 | 0:8ba6230eefbd | 3 | |
okini3939 | 0:8ba6230eefbd | 4 | Serial pc(USBTX, USBRX); |
okini3939 | 0:8ba6230eefbd | 5 | DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); |
okini3939 | 0:8ba6230eefbd | 6 | |
okini3939 | 0:8ba6230eefbd | 7 | Ticker ticker; |
okini3939 | 0:8ba6230eefbd | 8 | |
okini3939 | 0:8ba6230eefbd | 9 | extern int dac_step; |
okini3939 | 0:8ba6230eefbd | 10 | |
okini3939 | 0:8ba6230eefbd | 11 | |
okini3939 | 0:8ba6230eefbd | 12 | extern "C" void HardFault_Handler() { |
okini3939 | 0:8ba6230eefbd | 13 | printf("Hard Fault!\r\n"); |
okini3939 | 0:8ba6230eefbd | 14 | exit(-1); |
okini3939 | 0:8ba6230eefbd | 15 | } |
okini3939 | 0:8ba6230eefbd | 16 | |
okini3939 | 0:8ba6230eefbd | 17 | void isr_ticker () |
okini3939 | 0:8ba6230eefbd | 18 | { |
okini3939 | 0:8ba6230eefbd | 19 | static int w = 0; |
okini3939 | 0:8ba6230eefbd | 20 | |
okini3939 | 0:8ba6230eefbd | 21 | // LED off |
okini3939 | 0:8ba6230eefbd | 22 | w ++; |
okini3939 | 0:8ba6230eefbd | 23 | if (w >= 10) { |
okini3939 | 0:8ba6230eefbd | 24 | led4 = 0; |
okini3939 | 0:8ba6230eefbd | 25 | w = 0; |
okini3939 | 0:8ba6230eefbd | 26 | } |
okini3939 | 0:8ba6230eefbd | 27 | } |
okini3939 | 0:8ba6230eefbd | 28 | |
okini3939 | 0:8ba6230eefbd | 29 | void poll () { |
okini3939 | 0:8ba6230eefbd | 30 | int i; |
okini3939 | 0:8ba6230eefbd | 31 | static char buf[40]; |
okini3939 | 0:8ba6230eefbd | 32 | static char count = 0; |
okini3939 | 0:8ba6230eefbd | 33 | |
okini3939 | 0:8ba6230eefbd | 34 | // serial control |
okini3939 | 0:8ba6230eefbd | 35 | if (pc.readable()) { |
okini3939 | 0:8ba6230eefbd | 36 | i = pc.getc(); |
okini3939 | 0:8ba6230eefbd | 37 | if (i == 0x0d || i == 0x0a) { |
okini3939 | 0:8ba6230eefbd | 38 | buf[count] = 0; |
okini3939 | 0:8ba6230eefbd | 39 | count = 0; |
okini3939 | 0:8ba6230eefbd | 40 | led3 = 0; |
okini3939 | 0:8ba6230eefbd | 41 | if (command(buf)) { |
okini3939 | 0:8ba6230eefbd | 42 | led3 = 1; |
okini3939 | 0:8ba6230eefbd | 43 | } |
okini3939 | 0:8ba6230eefbd | 44 | } else |
okini3939 | 0:8ba6230eefbd | 45 | if (i >= 0x20 && i < 0x7f && count < sizeof(buf) - 1) { |
okini3939 | 0:8ba6230eefbd | 46 | buf[count] = i; |
okini3939 | 0:8ba6230eefbd | 47 | count ++; |
okini3939 | 0:8ba6230eefbd | 48 | } |
okini3939 | 0:8ba6230eefbd | 49 | } |
okini3939 | 0:8ba6230eefbd | 50 | } |
okini3939 | 0:8ba6230eefbd | 51 | |
okini3939 | 0:8ba6230eefbd | 52 | int main(int argc, char *argv[]) |
okini3939 | 0:8ba6230eefbd | 53 | { |
okini3939 | 0:8ba6230eefbd | 54 | int i; |
okini3939 | 0:8ba6230eefbd | 55 | |
okini3939 | 0:8ba6230eefbd | 56 | pc.baud(115200); |
okini3939 | 0:8ba6230eefbd | 57 | pc.printf("madplayer LPC4088\r\n"); |
okini3939 | 0:8ba6230eefbd | 58 | ticker.attach(&isr_ticker, 0.01); |
okini3939 | 0:8ba6230eefbd | 59 | wait_ms(100); |
okini3939 | 0:8ba6230eefbd | 60 | if (init_audio()) return -1; |
okini3939 | 0:8ba6230eefbd | 61 | |
okini3939 | 0:8ba6230eefbd | 62 | led1 = 0; |
okini3939 | 0:8ba6230eefbd | 63 | led2 = 1; |
okini3939 | 0:8ba6230eefbd | 64 | |
okini3939 | 0:8ba6230eefbd | 65 | for (;;) { |
okini3939 | 0:8ba6230eefbd | 66 | poll(); |
okini3939 | 0:8ba6230eefbd | 67 | } |
okini3939 | 0:8ba6230eefbd | 68 | } |