Simple mbed library with macros

Dependents:   SimpleTimer SimpleUART SimpleTimer Stoppuhr1

Committer:
Alkorin
Date:
Tue Nov 09 12:40:55 2010 +0000
Revision:
4:afddc4848b6c
Parent:
3:0b94bf95c552
Child:
5:b3aa0a49e21f
Added interrupt names and default handlers (from CMSIS)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Alkorin 4:afddc4848b6c 1 #ifndef __SERIAL_H__
Alkorin 4:afddc4848b6c 2 #define __SERIAL_H__
Alkorin 4:afddc4848b6c 3
Alkorin 4:afddc4848b6c 4 #include "interrupt.h"
Alkorin 4:afddc4848b6c 5 #include "mbed_globals.h"
Alkorin 4:afddc4848b6c 6
Alkorin 4:afddc4848b6c 7 /** Serial port (Choose UARTn (0,2,3)) **/
Alkorin 4:afddc4848b6c 8 #define UART_BASE LPC_UART0
Alkorin 4:afddc4848b6c 9
Alkorin 4:afddc4848b6c 10 /** Bits **/
Alkorin 4:afddc4848b6c 11 // RBR Interrupt Enable (UnIER, 14.4.4 p302)
Alkorin 4:afddc4848b6c 12 #define RBR_INT_BIT 0
Alkorin 4:afddc4848b6c 13 // Receiver Data Ready (UnLSR, 14.4.8 p306)
Alkorin 4:afddc4848b6c 14 #define RDR_BIT 0
Alkorin 4:afddc4848b6c 15 // Transmitter Holding Register Empty (UnLSR, 14.4.8 p306)
Alkorin 4:afddc4848b6c 16 #define THRE_BIT 5
Alkorin 4:afddc4848b6c 17
Alkorin 4:afddc4848b6c 18 /** Macros **/
Alkorin 4:afddc4848b6c 19 #define SERIAL_PUTCHAR(c) while (GET_BIT_VALUE(UART_BASE->LSR, THRE_BIT) == 0); \
Alkorin 4:afddc4848b6c 20 UART_BASE->THR = c;
Alkorin 4:afddc4848b6c 21
Alkorin 4:afddc4848b6c 22 #define SERIAL_DATA_TO_READ() (GET_BIT_VALUE(UART_BASE->LSR, RDR_BIT) == 1)
Alkorin 4:afddc4848b6c 23
Alkorin 4:afddc4848b6c 24 #define SERIAL_GETCHAR() (UART_BASE->RBR)
Alkorin 4:afddc4848b6c 25
Alkorin 4:afddc4848b6c 26 // See 14.4.5 p303
Alkorin 4:afddc4848b6c 27 inline int SERIAL_CHECK_INTERRUPT(void) {
Alkorin 4:afddc4848b6c 28 uint32_t serialStatus = UART_BASE->IIR;
Alkorin 4:afddc4848b6c 29
Alkorin 4:afddc4848b6c 30 if (serialStatus & 1) // IntStatus, 1 = No Interrupt is pending.
Alkorin 4:afddc4848b6c 31 return 0;
Alkorin 4:afddc4848b6c 32
Alkorin 4:afddc4848b6c 33 serialStatus = (serialStatus >> 1) & 0x3; // IntId, 2 = More than threshold data to read, 6 = Some caracters to read
Alkorin 4:afddc4848b6c 34 if (serialStatus != 2 && serialStatus != 6)
Alkorin 4:afddc4848b6c 35 return 0;
Alkorin 4:afddc4848b6c 36
Alkorin 4:afddc4848b6c 37 return 1;
Alkorin 4:afddc4848b6c 38 }
Alkorin 4:afddc4848b6c 39
Alkorin 4:afddc4848b6c 40 #define SERIAL_SETBAUD(baud)
Alkorin 4:afddc4848b6c 41
Alkorin 0:aa3c3d1a5918 42 #endif