mbed libraries for KL25Z
serial_api.h@7:73c5efe92a6c, 2012-10-23 (annotated)
- 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?
User | Revision | Line number | New 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 |