APP 1 S5.

Dependencies:   mbed

Committer:
vinbel93
Date:
Mon Jan 11 19:07:16 2016 +0000
Revision:
9:f35a5cde61a3
Parent:
6:ccdbd5923e37
Child:
10:f58cbb203c59
Pls work

Who changed what in which revision?

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