
Template for advanced microcontrollers assignment 'DMA' 2017
main.cpp@2:9567c0734e96, 2017-10-16 (annotated)
- Committer:
- wkleunen
- Date:
- Mon Oct 16 18:58:17 2017 +0000
- Revision:
- 2:9567c0734e96
- Parent:
- 1:1db1c42a2348
Revert incorrect comment
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 | 2:9567c0734e96 | 11 | SimpleDMA dma_pc; |
wkleunen | 0:7006377c8a24 | 12 | SimpleDMA dma_device; |
wkleunen | 0:7006377c8a24 | 13 | |
wkleunen | 0:7006377c8a24 | 14 | int main() |
wkleunen | 0:7006377c8a24 | 15 | { |
wkleunen | 0:7006377c8a24 | 16 | // Enable the TX and RX dma on UART1 |
wkleunen | 0:7006377c8a24 | 17 | UART1->C2 |= UART_C2_RIE_MASK | UART_C2_TIE_MASK ; |
wkleunen | 0:7006377c8a24 | 18 | UART1->C4 |= UART_C4_RDMAS_MASK | UART_C4_TDMAS_MASK; |
wkleunen | 0:7006377c8a24 | 19 | |
wkleunen | 2:9567c0734e96 | 20 | // TODO: Configure dma_device to transfer data from UART1 to UART0 |
wkleunen | 0:7006377c8a24 | 21 | // ... |
wkleunen | 0:7006377c8a24 | 22 | |
wkleunen | 0:7006377c8a24 | 23 | uint8_t buffer[128]; |
wkleunen | 0:7006377c8a24 | 24 | uint8_t buffer_ptr = 0; |
wkleunen | 0:7006377c8a24 | 25 | |
wkleunen | 0:7006377c8a24 | 26 | while(1) { |
wkleunen | 0:7006377c8a24 | 27 | char c = pc.getc(); |
wkleunen | 0:7006377c8a24 | 28 | buffer[buffer_ptr] = c; |
wkleunen | 0:7006377c8a24 | 29 | buffer_ptr = (buffer_ptr + 1) % sizeof(buffer); |
wkleunen | 0:7006377c8a24 | 30 | |
wkleunen | 0:7006377c8a24 | 31 | if(c == '\r') |
wkleunen | 0:7006377c8a24 | 32 | { |
wkleunen | 0:7006377c8a24 | 33 | buffer[buffer_ptr] = '\n'; |
wkleunen | 0:7006377c8a24 | 34 | ++buffer_ptr; |
wkleunen | 0:7006377c8a24 | 35 | |
wkleunen | 0:7006377c8a24 | 36 | led2 = !led2; |
wkleunen | 0:7006377c8a24 | 37 | |
wkleunen | 2:9567c0734e96 | 38 | // TODO: Trigger dma_pc to transfer data from the buffer to UART1 |
wkleunen | 0:7006377c8a24 | 39 | // .... |
wkleunen | 0:7006377c8a24 | 40 | |
wkleunen | 0:7006377c8a24 | 41 | buffer_ptr = 0; |
wkleunen | 0:7006377c8a24 | 42 | } |
wkleunen | 0:7006377c8a24 | 43 | } |
wkleunen | 0:7006377c8a24 | 44 | } |
wkleunen | 0:7006377c8a24 | 45 | |
wkleunen | 0:7006377c8a24 | 46 |