APP 1 S5.

Dependencies:   mbed

Committer:
vinbel93
Date:
Sun Jan 10 22:24:00 2016 +0000
Revision:
6:ccdbd5923e37
Parent:
5:c6f70b61aea5
Child:
8:e38cd9e16055
Child:
9:f35a5cde61a3
UART without mbed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vinbel93 6:ccdbd5923e37 1 #include "UART.h"
vinbel93 6:ccdbd5923e37 2 #include "APP.h"
vinbel93 6:ccdbd5923e37 3
IC_Blood 5:c6f70b61aea5 4
vinbel93 6:ccdbd5923e37 5 void UARTInit(uint32_t baudrate)
IC_Blood 5:c6f70b61aea5 6 {
vinbel93 6:ccdbd5923e37 7 uint32_t Fdiv;
vinbel93 6:ccdbd5923e37 8 uint32_t pclkdiv, pclk;
vinbel93 6:ccdbd5923e37 9
vinbel93 6:ccdbd5923e37 10 LPC_SC->PCONP |= 1 << 25; // Activate UART3 in PCONP register.
vinbel93 6:ccdbd5923e37 11 pclkdiv = (LPC_SC->PCLKSEL1 >> 18) & 0x03; // Bits 18~19 are for UART3
IC_Blood 5:c6f70b61aea5 12
vinbel93 6:ccdbd5923e37 13 switch (pclkdiv)
vinbel93 6:ccdbd5923e37 14 {
vinbel93 6:ccdbd5923e37 15 case 0x00:
vinbel93 6:ccdbd5923e37 16 default:
vinbel93 6:ccdbd5923e37 17 pclk = SYSTEM_CLOCK_FREQUENCY/4;
vinbel93 6:ccdbd5923e37 18 break;
vinbel93 6:ccdbd5923e37 19 case 0x01:
vinbel93 6:ccdbd5923e37 20 pclk = SYSTEM_CLOCK_FREQUENCY;
vinbel93 6:ccdbd5923e37 21 break;
vinbel93 6:ccdbd5923e37 22 case 0x02:
vinbel93 6:ccdbd5923e37 23 pclk = SYSTEM_CLOCK_FREQUENCY/2;
vinbel93 6:ccdbd5923e37 24 break;
vinbel93 6:ccdbd5923e37 25 case 0x03:
vinbel93 6:ccdbd5923e37 26 pclk = SYSTEM_CLOCK_FREQUENCY/8;
vinbel93 6:ccdbd5923e37 27 break;
vinbel93 6:ccdbd5923e37 28 }
vinbel93 6:ccdbd5923e37 29
vinbel93 6:ccdbd5923e37 30 LPC_PINCON->PINSEL0 &= ~0x00000003;
vinbel93 6:ccdbd5923e37 31 LPC_PINCON->PINSEL0 |= 0x00000002;
IC_Blood 5:c6f70b61aea5 32
vinbel93 6:ccdbd5923e37 33 LPC_UART3->LCR = 0x83; // 8 bits, no Parity, 1 Stop bit, DLAB = 1
vinbel93 6:ccdbd5923e37 34 Fdiv = (pclk / 16) / baudrate; // baud rate
vinbel93 6:ccdbd5923e37 35 LPC_UART3->DLM = Fdiv / 256;
vinbel93 6:ccdbd5923e37 36 LPC_UART3->DLL = Fdiv % 256;
vinbel93 6:ccdbd5923e37 37 LPC_UART3->LCR = 0x03; // DLAB = 0
vinbel93 6:ccdbd5923e37 38 }
vinbel93 6:ccdbd5923e37 39
vinbel93 6:ccdbd5923e37 40 void UARTSend(uint8_t byte)
vinbel93 6:ccdbd5923e37 41 {
vinbel93 6:ccdbd5923e37 42 LPC_UART3->THR = byte;
vinbel93 6:ccdbd5923e37 43 }
vinbel93 6:ccdbd5923e37 44
vinbel93 6:ccdbd5923e37 45 void UARTSend(uint8_t *buffer, uint32_t length)
vinbel93 6:ccdbd5923e37 46 {
vinbel93 6:ccdbd5923e37 47 while (length != 0)
vinbel93 6:ccdbd5923e37 48 {
vinbel93 6:ccdbd5923e37 49 LPC_UART3->THR = *buffer;
vinbel93 6:ccdbd5923e37 50 buffer++;
vinbel93 6:ccdbd5923e37 51 length--;
vinbel93 6:ccdbd5923e37 52 }
vinbel93 6:ccdbd5923e37 53 }