Wouter van Kleunen
/
advanced-microcontroller-dma-2017
Template for advanced microcontrollers assignment 'DMA' 2017
main.cpp@1:1db1c42a2348, 2017-10-16 (annotated)
- 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?
User | Revision | Line number | New 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 |