Template for advanced microcontrollers assignment 'DMA' 2017

Dependencies:   SimpleDMA

Committer:
wkleunen
Date:
Mon Oct 16 18:55:27 2017 +0000
Revision:
1:1db1c42a2348
Parent:
0:7006377c8a24
Child:
2:9567c0734e96
Updated comments on dma example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wkleunen 0:7006377c8a24 1 #include "mbed.h"
wkleunen 0:7006377c8a24 2 #include "SimpleDMA.h"
wkleunen 0:7006377c8a24 3 #include <algorithm>
wkleunen 0:7006377c8a24 4
wkleunen 0:7006377c8a24 5 RawSerial pc(USBTX, USBRX); // PC tx, rx
wkleunen 0:7006377c8a24 6 RawSerial device(PTE0, PTE1); // UART1 tx, rx
wkleunen 0:7006377c8a24 7
wkleunen 0:7006377c8a24 8 DigitalOut led1(LED_RED);
wkleunen 0:7006377c8a24 9 DigitalOut led2(LED_GREEN);
wkleunen 0:7006377c8a24 10
wkleunen 0:7006377c8a24 11 SimpleDMA dma_device;
wkleunen 0:7006377c8a24 12
wkleunen 0:7006377c8a24 13 int main()
wkleunen 0:7006377c8a24 14 {
wkleunen 0:7006377c8a24 15 // Enable the TX and RX dma on UART1
wkleunen 0:7006377c8a24 16 UART1->C2 |= UART_C2_RIE_MASK | UART_C2_TIE_MASK ;
wkleunen 0:7006377c8a24 17 UART1->C4 |= UART_C4_RDMAS_MASK | UART_C4_TDMAS_MASK;
wkleunen 0:7006377c8a24 18
wkleunen 1:1db1c42a2348 19 // TODO: Configure dma_device to transfer data from buffer to UART1
wkleunen 0:7006377c8a24 20 // ...
wkleunen 0:7006377c8a24 21
wkleunen 0:7006377c8a24 22 uint8_t buffer[128];
wkleunen 0:7006377c8a24 23 uint8_t buffer_ptr = 0;
wkleunen 0:7006377c8a24 24
wkleunen 0:7006377c8a24 25 while(1) {
wkleunen 0:7006377c8a24 26 char c = pc.getc();
wkleunen 0:7006377c8a24 27 buffer[buffer_ptr] = c;
wkleunen 0:7006377c8a24 28 buffer_ptr = (buffer_ptr + 1) % sizeof(buffer);
wkleunen 0:7006377c8a24 29
wkleunen 0:7006377c8a24 30 if(c == '\r')
wkleunen 0:7006377c8a24 31 {
wkleunen 0:7006377c8a24 32 buffer[buffer_ptr] = '\n';
wkleunen 0:7006377c8a24 33 ++buffer_ptr;
wkleunen 0:7006377c8a24 34
wkleunen 0:7006377c8a24 35 led2 = !led2;
wkleunen 0:7006377c8a24 36
wkleunen 1:1db1c42a2348 37 // TODO: Trigger dma_device to transfer data from the buffer to UART1
wkleunen 0:7006377c8a24 38 // ....
wkleunen 0:7006377c8a24 39
wkleunen 0:7006377c8a24 40 buffer_ptr = 0;
wkleunen 0:7006377c8a24 41 }
wkleunen 0:7006377c8a24 42 }
wkleunen 0:7006377c8a24 43 }
wkleunen 0:7006377c8a24 44
wkleunen 0:7006377c8a24 45