mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Aug 06 08:15:07 2014 +0100
Revision:
274:6937b19af361
Parent:
227:7bd0639b8911
Child:
339:40bd4701f3e2
Synchronized with git revision 5b145e4f6c509376173c3ea2aa35a6da879a2124

Full URL: https://github.com/mbedmicro/mbed/commit/5b145e4f6c509376173c3ea2aa35a6da879a2124/

[TARGET_LPC11UXX] PeripheralNames.h and PinMap definitions separation for LPC11UXX platforms

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 82:0b31dbcd4769 1 /* mbed Microcontroller Library
mbed_official 82:0b31dbcd4769 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 82:0b31dbcd4769 3 *
mbed_official 82:0b31dbcd4769 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 82:0b31dbcd4769 5 * you may not use this file except in compliance with the License.
mbed_official 82:0b31dbcd4769 6 * You may obtain a copy of the License at
mbed_official 82:0b31dbcd4769 7 *
mbed_official 82:0b31dbcd4769 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 82:0b31dbcd4769 9 *
mbed_official 82:0b31dbcd4769 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 82:0b31dbcd4769 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 82:0b31dbcd4769 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 82:0b31dbcd4769 13 * See the License for the specific language governing permissions and
mbed_official 82:0b31dbcd4769 14 * limitations under the License.
mbed_official 82:0b31dbcd4769 15 */
mbed_official 227:7bd0639b8911 16 #include "mbed_assert.h"
mbed_official 82:0b31dbcd4769 17 #include "serial_api.h"
mbed_official 82:0b31dbcd4769 18
mbed_official 82:0b31dbcd4769 19 // math.h required for floating point operations for baud rate calculation
mbed_official 82:0b31dbcd4769 20 #include <math.h>
mbed_official 82:0b31dbcd4769 21
mbed_official 82:0b31dbcd4769 22 #include <string.h>
mbed_official 82:0b31dbcd4769 23
mbed_official 82:0b31dbcd4769 24 #include "cmsis.h"
mbed_official 82:0b31dbcd4769 25 #include "pinmap.h"
mbed_official 82:0b31dbcd4769 26 #include "clk_freqs.h"
mbed_official 82:0b31dbcd4769 27 #include "PeripheralPins.h"
mbed_official 82:0b31dbcd4769 28
mbed_official 82:0b31dbcd4769 29 //Devices either user UART0 or UARTLP
mbed_official 82:0b31dbcd4769 30 #ifndef UARTLP_BASES
mbed_official 82:0b31dbcd4769 31 #define UARTLP_C2_RE_MASK UART0_C2_RE_MASK
mbed_official 82:0b31dbcd4769 32 #define UARTLP_C2_TE_MASK UART0_C2_TE_MASK
mbed_official 82:0b31dbcd4769 33 #define UARTLP_BDH_SBNS_MASK UART0_BDH_SBNS_MASK
mbed_official 82:0b31dbcd4769 34 #define UARTLP_BDH_SBNS_SHIFT UART0_BDH_SBNS_SHIFT
mbed_official 82:0b31dbcd4769 35 #define UARTLP_S1_TDRE_MASK UART0_S1_TDRE_MASK
mbed_official 82:0b31dbcd4769 36 #define UARTLP_S1_OR_MASK UART0_S1_OR_MASK
mbed_official 82:0b31dbcd4769 37 #define UARTLP_C2_RIE_MASK UART0_C2_RIE_MASK
mbed_official 82:0b31dbcd4769 38 #define UARTLP_C2_TIE_MASK UART0_C2_TIE_MASK
mbed_official 82:0b31dbcd4769 39 #define UARTLP_C2_SBK_MASK UART0_C2_SBK_MASK
mbed_official 82:0b31dbcd4769 40 #define UARTLP_S1_RDRF_MASK UART0_S1_RDRF_MASK
mbed_official 82:0b31dbcd4769 41 #endif
mbed_official 82:0b31dbcd4769 42
mbed_official 82:0b31dbcd4769 43 #ifdef UART2
mbed_official 82:0b31dbcd4769 44 #define UART_NUM 3
mbed_official 82:0b31dbcd4769 45 #else
mbed_official 82:0b31dbcd4769 46 #define UART_NUM 1
mbed_official 82:0b31dbcd4769 47 #endif
mbed_official 82:0b31dbcd4769 48
mbed_official 82:0b31dbcd4769 49 /******************************************************************************
mbed_official 82:0b31dbcd4769 50 * INITIALIZATION
mbed_official 82:0b31dbcd4769 51 ******************************************************************************/
mbed_official 82:0b31dbcd4769 52
mbed_official 82:0b31dbcd4769 53 static uint32_t serial_irq_ids[UART_NUM] = {0};
mbed_official 82:0b31dbcd4769 54 static uart_irq_handler irq_handler;
mbed_official 82:0b31dbcd4769 55
mbed_official 82:0b31dbcd4769 56 int stdio_uart_inited = 0;
mbed_official 82:0b31dbcd4769 57 serial_t stdio_uart;
mbed_official 82:0b31dbcd4769 58
mbed_official 82:0b31dbcd4769 59 void serial_init(serial_t *obj, PinName tx, PinName rx) {
mbed_official 82:0b31dbcd4769 60 // determine the UART to use
mbed_official 82:0b31dbcd4769 61 UARTName uart_tx = (UARTName)pinmap_peripheral(tx, PinMap_UART_TX);
mbed_official 82:0b31dbcd4769 62 UARTName uart_rx = (UARTName)pinmap_peripheral(rx, PinMap_UART_RX);
mbed_official 82:0b31dbcd4769 63 UARTName uart = (UARTName)pinmap_merge(uart_tx, uart_rx);
mbed_official 227:7bd0639b8911 64 MBED_ASSERT((int)uart != NC);
mbed_official 82:0b31dbcd4769 65
mbed_official 82:0b31dbcd4769 66 obj->uart = (UARTLP_Type *)uart;
mbed_official 82:0b31dbcd4769 67 // enable clk
mbed_official 82:0b31dbcd4769 68 switch (uart) {
mbed_official 82:0b31dbcd4769 69 case UART_0: if (mcgpllfll_frequency() != 0) //PLL/FLL is selected
mbed_official 82:0b31dbcd4769 70 SIM->SOPT2 |= (1<<SIM_SOPT2_UART0SRC_SHIFT);
mbed_official 82:0b31dbcd4769 71 else
mbed_official 82:0b31dbcd4769 72 SIM->SOPT2 |= (2<<SIM_SOPT2_UART0SRC_SHIFT);
mbed_official 82:0b31dbcd4769 73 SIM->SCGC4 |= SIM_SCGC4_UART0_MASK; break;
mbed_official 82:0b31dbcd4769 74 #if UART_NUM > 1
mbed_official 82:0b31dbcd4769 75 case UART_1: SIM->SCGC4 |= SIM_SCGC4_UART1_MASK; break;
mbed_official 82:0b31dbcd4769 76 case UART_2: SIM->SCGC4 |= SIM_SCGC4_UART2_MASK; break;
mbed_official 82:0b31dbcd4769 77 #endif
mbed_official 82:0b31dbcd4769 78 }
mbed_official 82:0b31dbcd4769 79 // Disable UART before changing registers
mbed_official 82:0b31dbcd4769 80 obj->uart->C2 &= ~(UARTLP_C2_RE_MASK | UARTLP_C2_TE_MASK);
mbed_official 82:0b31dbcd4769 81
mbed_official 82:0b31dbcd4769 82 switch (uart) {
mbed_official 82:0b31dbcd4769 83 case UART_0: obj->index = 0; break;
mbed_official 82:0b31dbcd4769 84 #if UART_NUM > 1
mbed_official 82:0b31dbcd4769 85 case UART_1: obj->index = 1; break;
mbed_official 82:0b31dbcd4769 86 case UART_2: obj->index = 2; break;
mbed_official 82:0b31dbcd4769 87 #endif
mbed_official 82:0b31dbcd4769 88 }
mbed_official 82:0b31dbcd4769 89
mbed_official 82:0b31dbcd4769 90 // set default baud rate and format
mbed_official 82:0b31dbcd4769 91 serial_baud (obj, 9600);
mbed_official 82:0b31dbcd4769 92 serial_format(obj, 8, ParityNone, 1);
mbed_official 82:0b31dbcd4769 93
mbed_official 82:0b31dbcd4769 94 // pinout the chosen uart
mbed_official 82:0b31dbcd4769 95 pinmap_pinout(tx, PinMap_UART_TX);
mbed_official 82:0b31dbcd4769 96 pinmap_pinout(rx, PinMap_UART_RX);
mbed_official 82:0b31dbcd4769 97
mbed_official 82:0b31dbcd4769 98 // set rx/tx pins in PullUp mode
mbed_official 82:0b31dbcd4769 99 pin_mode(tx, PullUp);
mbed_official 82:0b31dbcd4769 100 pin_mode(rx, PullUp);
mbed_official 82:0b31dbcd4769 101
mbed_official 82:0b31dbcd4769 102 obj->uart->C2 |= (UARTLP_C2_RE_MASK | UARTLP_C2_TE_MASK);
mbed_official 82:0b31dbcd4769 103
mbed_official 82:0b31dbcd4769 104 if (uart == STDIO_UART) {
mbed_official 82:0b31dbcd4769 105 stdio_uart_inited = 1;
mbed_official 82:0b31dbcd4769 106 memcpy(&stdio_uart, obj, sizeof(serial_t));
mbed_official 82:0b31dbcd4769 107 }
mbed_official 82:0b31dbcd4769 108 }
mbed_official 82:0b31dbcd4769 109
mbed_official 82:0b31dbcd4769 110 void serial_free(serial_t *obj) {
mbed_official 82:0b31dbcd4769 111 serial_irq_ids[obj->index] = 0;
mbed_official 82:0b31dbcd4769 112 }
mbed_official 82:0b31dbcd4769 113
mbed_official 82:0b31dbcd4769 114 // serial_baud
mbed_official 82:0b31dbcd4769 115 //
mbed_official 82:0b31dbcd4769 116 // set the baud rate, taking in to account the current SystemFrequency
mbed_official 82:0b31dbcd4769 117 void serial_baud(serial_t *obj, int baudrate) {
mbed_official 82:0b31dbcd4769 118
mbed_official 82:0b31dbcd4769 119 // save C2 state
mbed_official 82:0b31dbcd4769 120 uint8_t c2_state = (obj->uart->C2 & (UARTLP_C2_RE_MASK | UARTLP_C2_TE_MASK));
mbed_official 82:0b31dbcd4769 121
mbed_official 82:0b31dbcd4769 122 // Disable UART before changing registers
mbed_official 82:0b31dbcd4769 123 obj->uart->C2 &= ~(UARTLP_C2_RE_MASK | UARTLP_C2_TE_MASK);
mbed_official 82:0b31dbcd4769 124
mbed_official 82:0b31dbcd4769 125 uint32_t PCLK;
mbed_official 82:0b31dbcd4769 126 if (obj->uart == UART0) {
mbed_official 82:0b31dbcd4769 127 if (mcgpllfll_frequency() != 0)
mbed_official 82:0b31dbcd4769 128 PCLK = mcgpllfll_frequency();
mbed_official 82:0b31dbcd4769 129 else
mbed_official 82:0b31dbcd4769 130 PCLK = extosc_frequency();
mbed_official 82:0b31dbcd4769 131 } else
mbed_official 82:0b31dbcd4769 132 PCLK = bus_frequency();
mbed_official 82:0b31dbcd4769 133
mbed_official 82:0b31dbcd4769 134 // First we check to see if the basic divide with no DivAddVal/MulVal
mbed_official 82:0b31dbcd4769 135 // ratio gives us an integer result. If it does, we set DivAddVal = 0,
mbed_official 82:0b31dbcd4769 136 // MulVal = 1. Otherwise, we search the valid ratio value range to find
mbed_official 82:0b31dbcd4769 137 // the closest match. This could be more elegant, using search methods
mbed_official 82:0b31dbcd4769 138 // and/or lookup tables, but the brute force method is not that much
mbed_official 82:0b31dbcd4769 139 // slower, and is more maintainable.
mbed_official 82:0b31dbcd4769 140 uint16_t DL = PCLK / (16 * baudrate);
mbed_official 82:0b31dbcd4769 141
mbed_official 82:0b31dbcd4769 142 // set BDH and BDL
mbed_official 82:0b31dbcd4769 143 obj->uart->BDH = (obj->uart->BDH & ~(0x1f)) | ((DL >> 8) & 0x1f);
mbed_official 82:0b31dbcd4769 144 obj->uart->BDL = (obj->uart->BDL & ~(0xff)) | ((DL >> 0) & 0xff);
mbed_official 82:0b31dbcd4769 145
mbed_official 82:0b31dbcd4769 146 // restore C2 state
mbed_official 82:0b31dbcd4769 147 obj->uart->C2 |= c2_state;
mbed_official 82:0b31dbcd4769 148 }
mbed_official 82:0b31dbcd4769 149
mbed_official 82:0b31dbcd4769 150 void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
mbed_official 227:7bd0639b8911 151 MBED_ASSERT((stop_bits == 1) || (stop_bits == 2));
mbed_official 227:7bd0639b8911 152 MBED_ASSERT((parity == ParityNone) || (parity == ParityOdd) || (parity == ParityEven));
mbed_official 227:7bd0639b8911 153 MBED_ASSERT(data_bits == 8); // TODO: Support other number of data bits (also in the write method!)
mbed_official 227:7bd0639b8911 154
mbed_official 82:0b31dbcd4769 155 // save C2 state
mbed_official 82:0b31dbcd4769 156 uint8_t c2_state = (obj->uart->C2 & (UARTLP_C2_RE_MASK | UARTLP_C2_TE_MASK));
mbed_official 82:0b31dbcd4769 157
mbed_official 82:0b31dbcd4769 158 // Disable UART before changing registers
mbed_official 82:0b31dbcd4769 159 obj->uart->C2 &= ~(UARTLP_C2_RE_MASK | UARTLP_C2_TE_MASK);
mbed_official 82:0b31dbcd4769 160
mbed_official 82:0b31dbcd4769 161
mbed_official 82:0b31dbcd4769 162 uint8_t parity_enable, parity_select;
mbed_official 82:0b31dbcd4769 163 switch (parity) {
mbed_official 82:0b31dbcd4769 164 case ParityNone: parity_enable = 0; parity_select = 0; break;
mbed_official 82:0b31dbcd4769 165 case ParityOdd : parity_enable = 1; parity_select = 1; data_bits++; break;
mbed_official 82:0b31dbcd4769 166 case ParityEven: parity_enable = 1; parity_select = 0; data_bits++; break;
mbed_official 82:0b31dbcd4769 167 default:
mbed_official 227:7bd0639b8911 168 break;
mbed_official 82:0b31dbcd4769 169 }
mbed_official 82:0b31dbcd4769 170
mbed_official 82:0b31dbcd4769 171 stop_bits -= 1;
mbed_official 82:0b31dbcd4769 172
mbed_official 82:0b31dbcd4769 173 // data bits, parity and parity mode
mbed_official 82:0b31dbcd4769 174 obj->uart->C1 = ((parity_enable << 1)
mbed_official 82:0b31dbcd4769 175 | (parity_select << 0));
mbed_official 82:0b31dbcd4769 176
mbed_official 82:0b31dbcd4769 177 // stop bits
mbed_official 82:0b31dbcd4769 178 obj->uart->BDH &= ~UARTLP_BDH_SBNS_MASK;
mbed_official 82:0b31dbcd4769 179 obj->uart->BDH |= (stop_bits << UARTLP_BDH_SBNS_SHIFT);
mbed_official 82:0b31dbcd4769 180
mbed_official 82:0b31dbcd4769 181 // restore C2 state
mbed_official 82:0b31dbcd4769 182 obj->uart->C2 |= c2_state;
mbed_official 82:0b31dbcd4769 183 }
mbed_official 82:0b31dbcd4769 184
mbed_official 82:0b31dbcd4769 185 /******************************************************************************
mbed_official 82:0b31dbcd4769 186 * INTERRUPTS HANDLING
mbed_official 82:0b31dbcd4769 187 ******************************************************************************/
mbed_official 82:0b31dbcd4769 188 static inline void uart_irq(uint8_t status, uint32_t index) {
mbed_official 82:0b31dbcd4769 189 if (serial_irq_ids[index] != 0) {
mbed_official 82:0b31dbcd4769 190 if (status & UARTLP_S1_TDRE_MASK)
mbed_official 82:0b31dbcd4769 191 irq_handler(serial_irq_ids[index], TxIrq);
mbed_official 82:0b31dbcd4769 192
mbed_official 82:0b31dbcd4769 193 if (status & UARTLP_S1_RDRF_MASK)
mbed_official 82:0b31dbcd4769 194 irq_handler(serial_irq_ids[index], RxIrq);
mbed_official 82:0b31dbcd4769 195 }
mbed_official 82:0b31dbcd4769 196 }
mbed_official 82:0b31dbcd4769 197
mbed_official 82:0b31dbcd4769 198 void uart0_irq() {
mbed_official 82:0b31dbcd4769 199 uart_irq(UART0->S1, 0);
mbed_official 82:0b31dbcd4769 200 if (UART0->S1 & UARTLP_S1_OR_MASK)
mbed_official 82:0b31dbcd4769 201 UART0->S1 |= UARTLP_S1_OR_MASK;
mbed_official 82:0b31dbcd4769 202 }
mbed_official 82:0b31dbcd4769 203 #if UART_NUM > 1
mbed_official 82:0b31dbcd4769 204 void uart1_irq() {uart_irq(UART1->S1, 1);}
mbed_official 82:0b31dbcd4769 205 void uart2_irq() {uart_irq(UART2->S1, 2);}
mbed_official 82:0b31dbcd4769 206 #endif
mbed_official 82:0b31dbcd4769 207
mbed_official 82:0b31dbcd4769 208 void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) {
mbed_official 82:0b31dbcd4769 209 irq_handler = handler;
mbed_official 82:0b31dbcd4769 210 serial_irq_ids[obj->index] = id;
mbed_official 82:0b31dbcd4769 211 }
mbed_official 82:0b31dbcd4769 212
mbed_official 82:0b31dbcd4769 213 void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) {
mbed_official 82:0b31dbcd4769 214 IRQn_Type irq_n = (IRQn_Type)0;
mbed_official 82:0b31dbcd4769 215 uint32_t vector = 0;
mbed_official 82:0b31dbcd4769 216 switch ((int)obj->uart) {
mbed_official 82:0b31dbcd4769 217 case UART_0: irq_n=UART0_IRQn; vector = (uint32_t)&uart0_irq; break;
mbed_official 82:0b31dbcd4769 218 #if UART_NUM > 1
mbed_official 82:0b31dbcd4769 219 case UART_1: irq_n=UART1_IRQn; vector = (uint32_t)&uart1_irq; break;
mbed_official 82:0b31dbcd4769 220 case UART_2: irq_n=UART2_IRQn; vector = (uint32_t)&uart2_irq; break;
mbed_official 82:0b31dbcd4769 221 #endif
mbed_official 82:0b31dbcd4769 222 }
mbed_official 82:0b31dbcd4769 223
mbed_official 82:0b31dbcd4769 224 if (enable) {
mbed_official 82:0b31dbcd4769 225 switch (irq) {
mbed_official 82:0b31dbcd4769 226 case RxIrq: obj->uart->C2 |= (UARTLP_C2_RIE_MASK); break;
mbed_official 82:0b31dbcd4769 227 case TxIrq: obj->uart->C2 |= (UARTLP_C2_TIE_MASK); break;
mbed_official 82:0b31dbcd4769 228 }
mbed_official 82:0b31dbcd4769 229 NVIC_SetVector(irq_n, vector);
mbed_official 82:0b31dbcd4769 230 NVIC_EnableIRQ(irq_n);
mbed_official 82:0b31dbcd4769 231
mbed_official 82:0b31dbcd4769 232 } else { // disable
mbed_official 82:0b31dbcd4769 233 int all_disabled = 0;
mbed_official 82:0b31dbcd4769 234 SerialIrq other_irq = (irq == RxIrq) ? (TxIrq) : (RxIrq);
mbed_official 82:0b31dbcd4769 235 switch (irq) {
mbed_official 82:0b31dbcd4769 236 case RxIrq: obj->uart->C2 &= ~(UARTLP_C2_RIE_MASK); break;
mbed_official 82:0b31dbcd4769 237 case TxIrq: obj->uart->C2 &= ~(UARTLP_C2_TIE_MASK); break;
mbed_official 82:0b31dbcd4769 238 }
mbed_official 82:0b31dbcd4769 239 switch (other_irq) {
mbed_official 82:0b31dbcd4769 240 case RxIrq: all_disabled = (obj->uart->C2 & (UARTLP_C2_RIE_MASK)) == 0; break;
mbed_official 82:0b31dbcd4769 241 case TxIrq: all_disabled = (obj->uart->C2 & (UARTLP_C2_TIE_MASK)) == 0; break;
mbed_official 82:0b31dbcd4769 242 }
mbed_official 82:0b31dbcd4769 243 if (all_disabled)
mbed_official 82:0b31dbcd4769 244 NVIC_DisableIRQ(irq_n);
mbed_official 82:0b31dbcd4769 245 }
mbed_official 82:0b31dbcd4769 246 }
mbed_official 82:0b31dbcd4769 247
mbed_official 82:0b31dbcd4769 248 /******************************************************************************
mbed_official 82:0b31dbcd4769 249 * READ/WRITE
mbed_official 82:0b31dbcd4769 250 ******************************************************************************/
mbed_official 82:0b31dbcd4769 251 int serial_getc(serial_t *obj) {
mbed_official 82:0b31dbcd4769 252 while (!serial_readable(obj));
mbed_official 82:0b31dbcd4769 253 return obj->uart->D;
mbed_official 82:0b31dbcd4769 254 }
mbed_official 82:0b31dbcd4769 255
mbed_official 82:0b31dbcd4769 256 void serial_putc(serial_t *obj, int c) {
mbed_official 82:0b31dbcd4769 257 while (!serial_writable(obj));
mbed_official 82:0b31dbcd4769 258 obj->uart->D = c;
mbed_official 82:0b31dbcd4769 259 }
mbed_official 82:0b31dbcd4769 260
mbed_official 82:0b31dbcd4769 261 int serial_readable(serial_t *obj) {
mbed_official 82:0b31dbcd4769 262 // check overrun
mbed_official 82:0b31dbcd4769 263 if (obj->uart->S1 & UARTLP_S1_OR_MASK) {
mbed_official 82:0b31dbcd4769 264 obj->uart->S1 |= UARTLP_S1_OR_MASK;
mbed_official 82:0b31dbcd4769 265 }
mbed_official 82:0b31dbcd4769 266 return (obj->uart->S1 & UARTLP_S1_RDRF_MASK);
mbed_official 82:0b31dbcd4769 267 }
mbed_official 82:0b31dbcd4769 268
mbed_official 82:0b31dbcd4769 269 int serial_writable(serial_t *obj) {
mbed_official 82:0b31dbcd4769 270 // check overrun
mbed_official 82:0b31dbcd4769 271 if (obj->uart->S1 & UARTLP_S1_OR_MASK) {
mbed_official 82:0b31dbcd4769 272 obj->uart->S1 |= UARTLP_S1_OR_MASK;
mbed_official 82:0b31dbcd4769 273 }
mbed_official 82:0b31dbcd4769 274 return (obj->uart->S1 & UARTLP_S1_TDRE_MASK);
mbed_official 82:0b31dbcd4769 275 }
mbed_official 82:0b31dbcd4769 276
mbed_official 82:0b31dbcd4769 277 void serial_clear(serial_t *obj) {
mbed_official 82:0b31dbcd4769 278 }
mbed_official 82:0b31dbcd4769 279
mbed_official 82:0b31dbcd4769 280 void serial_pinout_tx(PinName tx) {
mbed_official 82:0b31dbcd4769 281 pinmap_pinout(tx, PinMap_UART_TX);
mbed_official 82:0b31dbcd4769 282 }
mbed_official 82:0b31dbcd4769 283
mbed_official 82:0b31dbcd4769 284 void serial_break_set(serial_t *obj) {
mbed_official 227:7bd0639b8911 285 obj->uart->C2 |= UARTLP_C2_SBK_MASK;
mbed_official 82:0b31dbcd4769 286 }
mbed_official 82:0b31dbcd4769 287
mbed_official 82:0b31dbcd4769 288 void serial_break_clear(serial_t *obj) {
mbed_official 82:0b31dbcd4769 289 obj->uart->C2 &= ~UARTLP_C2_SBK_MASK;
mbed_official 82:0b31dbcd4769 290 }
mbed_official 82:0b31dbcd4769 291