mbed libraries for KL25Z

Dependents:   FRDM_RGBLED

Committer:
emilmont
Date:
Tue Oct 23 09:20:18 2012 +0000
Revision:
7:73c5efe92a6c
Child:
8:c14af7958ef5
Make the C++ library completely TARGET independent.; Implement "gpio_irq_api" and "port_api" to KL25Z.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 7:73c5efe92a6c 1 /* mbed Microcontroller Library - serial_api
emilmont 7:73c5efe92a6c 2 * Copyright (c) 2009-2011 ARM Limited. All rights reserved.
emilmont 7:73c5efe92a6c 3 */
emilmont 7:73c5efe92a6c 4 #ifndef MBED_SERIAL_API_H
emilmont 7:73c5efe92a6c 5 #define MBED_SERIAL_API_H
emilmont 7:73c5efe92a6c 6
emilmont 7:73c5efe92a6c 7 #include "device.h"
emilmont 7:73c5efe92a6c 8
emilmont 7:73c5efe92a6c 9 #if DEVICE_SERIAL
emilmont 7:73c5efe92a6c 10
emilmont 7:73c5efe92a6c 11 #include "PinNames.h"
emilmont 7:73c5efe92a6c 12 #include "PeripheralNames.h"
emilmont 7:73c5efe92a6c 13
emilmont 7:73c5efe92a6c 14 #ifdef __cplusplus
emilmont 7:73c5efe92a6c 15 extern "C" {
emilmont 7:73c5efe92a6c 16 #endif
emilmont 7:73c5efe92a6c 17
emilmont 7:73c5efe92a6c 18 typedef enum {
emilmont 7:73c5efe92a6c 19 ParityNone = 0,
emilmont 7:73c5efe92a6c 20 ParityOdd = 1,
emilmont 7:73c5efe92a6c 21 ParityEven = 2,
emilmont 7:73c5efe92a6c 22 ParityForced1 = 3,
emilmont 7:73c5efe92a6c 23 ParityForced0 = 4
emilmont 7:73c5efe92a6c 24 } SerialParity;
emilmont 7:73c5efe92a6c 25
emilmont 7:73c5efe92a6c 26 typedef enum {
emilmont 7:73c5efe92a6c 27 TxIrq,
emilmont 7:73c5efe92a6c 28 RxIrq
emilmont 7:73c5efe92a6c 29 } SerialIrq;
emilmont 7:73c5efe92a6c 30
emilmont 7:73c5efe92a6c 31 typedef void (*uart_irq_handler)(uint32_t id, SerialIrq event);
emilmont 7:73c5efe92a6c 32
emilmont 7:73c5efe92a6c 33 typedef struct {
emilmont 7:73c5efe92a6c 34 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
emilmont 7:73c5efe92a6c 35 LPC_UART_TypeDef *uart;
emilmont 7:73c5efe92a6c 36
emilmont 7:73c5efe92a6c 37 #elif defined(TARGET_LPC11U24)
emilmont 7:73c5efe92a6c 38 LPC_USART_Type *uart;
emilmont 7:73c5efe92a6c 39
emilmont 7:73c5efe92a6c 40 #elif defined(TARGET_KL25Z)
emilmont 7:73c5efe92a6c 41 UARTLP_Type *uart;
emilmont 7:73c5efe92a6c 42 #endif
emilmont 7:73c5efe92a6c 43 int index;
emilmont 7:73c5efe92a6c 44 } serial_object;
emilmont 7:73c5efe92a6c 45
emilmont 7:73c5efe92a6c 46 void serial_init (serial_object *obj, PinName tx, PinName rx);
emilmont 7:73c5efe92a6c 47 void serial_free (serial_object *obj);
emilmont 7:73c5efe92a6c 48 void serial_baud (serial_object *obj, int baudrate);
emilmont 7:73c5efe92a6c 49 void serial_format (serial_object *obj, int data_bits, SerialParity parity, int stop_bits);
emilmont 7:73c5efe92a6c 50
emilmont 7:73c5efe92a6c 51 void serial_irq_handler(serial_object *obj, uart_irq_handler handler, uint32_t id);
emilmont 7:73c5efe92a6c 52 void serial_irq_set (serial_object *obj, SerialIrq irq, uint32_t enable);
emilmont 7:73c5efe92a6c 53
emilmont 7:73c5efe92a6c 54 int serial_getc (serial_object *obj);
emilmont 7:73c5efe92a6c 55 void serial_putc (serial_object *obj, int c);
emilmont 7:73c5efe92a6c 56 int serial_readable (serial_object *obj);
emilmont 7:73c5efe92a6c 57 int serial_writable (serial_object *obj);
emilmont 7:73c5efe92a6c 58 void serial_clear (serial_object *obj);
emilmont 7:73c5efe92a6c 59
emilmont 7:73c5efe92a6c 60 void serial_pinout_tx(PinName tx);
emilmont 7:73c5efe92a6c 61
emilmont 7:73c5efe92a6c 62 #ifdef __cplusplus
emilmont 7:73c5efe92a6c 63 }
emilmont 7:73c5efe92a6c 64 #endif
emilmont 7:73c5efe92a6c 65
emilmont 7:73c5efe92a6c 66 #endif
emilmont 7:73c5efe92a6c 67
emilmont 7:73c5efe92a6c 68 #endif