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:
Tue Dec 16 08:15:08 2014 +0000
Revision:
440:8a0b45cd594f
Parent:
428:4ddf7f7eabbb
Synchronized with git revision 67fbbf0b635d0c0d93fbe433306c537c2ad206aa

Full URL: https://github.com/mbedmicro/mbed/commit/67fbbf0b635d0c0d93fbe433306c537c2ad206aa/

Targets: nrf51 - updating app_timer.c from Norid'c SDKv7.1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 133:d4dda5c437f0 1 /* mbed Microcontroller Library
mbed_official 133:d4dda5c437f0 2 *******************************************************************************
mbed_official 133:d4dda5c437f0 3 * Copyright (c) 2014, STMicroelectronics
mbed_official 133:d4dda5c437f0 4 * All rights reserved.
mbed_official 133:d4dda5c437f0 5 *
mbed_official 133:d4dda5c437f0 6 * Redistribution and use in source and binary forms, with or without
mbed_official 133:d4dda5c437f0 7 * modification, are permitted provided that the following conditions are met:
mbed_official 133:d4dda5c437f0 8 *
mbed_official 133:d4dda5c437f0 9 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 133:d4dda5c437f0 10 * this list of conditions and the following disclaimer.
mbed_official 133:d4dda5c437f0 11 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 133:d4dda5c437f0 12 * this list of conditions and the following disclaimer in the documentation
mbed_official 133:d4dda5c437f0 13 * and/or other materials provided with the distribution.
mbed_official 133:d4dda5c437f0 14 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 133:d4dda5c437f0 15 * may be used to endorse or promote products derived from this software
mbed_official 133:d4dda5c437f0 16 * without specific prior written permission.
mbed_official 133:d4dda5c437f0 17 *
mbed_official 133:d4dda5c437f0 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 133:d4dda5c437f0 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 133:d4dda5c437f0 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 133:d4dda5c437f0 21 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 133:d4dda5c437f0 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 133:d4dda5c437f0 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 133:d4dda5c437f0 24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 133:d4dda5c437f0 25 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 133:d4dda5c437f0 26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 133:d4dda5c437f0 27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 133:d4dda5c437f0 28 *******************************************************************************
mbed_official 133:d4dda5c437f0 29 */
mbed_official 242:7074e42da0b2 30 #include "mbed_assert.h"
mbed_official 133:d4dda5c437f0 31 #include "serial_api.h"
mbed_official 242:7074e42da0b2 32
mbed_official 242:7074e42da0b2 33 #if DEVICE_SERIAL
mbed_official 242:7074e42da0b2 34
mbed_official 133:d4dda5c437f0 35 #include "cmsis.h"
mbed_official 133:d4dda5c437f0 36 #include "pinmap.h"
mbed_official 133:d4dda5c437f0 37 #include <string.h>
mbed_official 428:4ddf7f7eabbb 38 #include "PeripheralPins.h"
mbed_official 133:d4dda5c437f0 39
mbed_official 133:d4dda5c437f0 40 #define UART_NUM (3)
mbed_official 133:d4dda5c437f0 41
mbed_official 242:7074e42da0b2 42 static uint32_t serial_irq_ids[UART_NUM] = {0, 0, 0};
mbed_official 133:d4dda5c437f0 43
mbed_official 133:d4dda5c437f0 44 static uart_irq_handler irq_handler;
mbed_official 133:d4dda5c437f0 45
mbed_official 133:d4dda5c437f0 46 UART_HandleTypeDef UartHandle;
mbed_official 133:d4dda5c437f0 47
mbed_official 133:d4dda5c437f0 48 int stdio_uart_inited = 0;
mbed_official 133:d4dda5c437f0 49 serial_t stdio_uart;
mbed_official 133:d4dda5c437f0 50
mbed_official 133:d4dda5c437f0 51 static void init_uart(serial_t *obj) {
mbed_official 133:d4dda5c437f0 52 UartHandle.Instance = (USART_TypeDef *)(obj->uart);
mbed_official 133:d4dda5c437f0 53
mbed_official 133:d4dda5c437f0 54 UartHandle.Init.BaudRate = obj->baudrate;
mbed_official 133:d4dda5c437f0 55 UartHandle.Init.WordLength = obj->databits;
mbed_official 133:d4dda5c437f0 56 UartHandle.Init.StopBits = obj->stopbits;
mbed_official 133:d4dda5c437f0 57 UartHandle.Init.Parity = obj->parity;
mbed_official 133:d4dda5c437f0 58 UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
mbed_official 133:d4dda5c437f0 59 UartHandle.Init.Mode = UART_MODE_TX_RX;
mbed_official 133:d4dda5c437f0 60
mbed_official 227:7bd0639b8911 61 HAL_UART_Init(&UartHandle);
mbed_official 133:d4dda5c437f0 62 }
mbed_official 133:d4dda5c437f0 63
mbed_official 227:7bd0639b8911 64 void serial_init(serial_t *obj, PinName tx, PinName rx) {
mbed_official 133:d4dda5c437f0 65 // Determine the UART to use (UART_1, UART_2, ...)
mbed_official 133:d4dda5c437f0 66 UARTName uart_tx = (UARTName)pinmap_peripheral(tx, PinMap_UART_TX);
mbed_official 133:d4dda5c437f0 67 UARTName uart_rx = (UARTName)pinmap_peripheral(rx, PinMap_UART_RX);
mbed_official 133:d4dda5c437f0 68
mbed_official 133:d4dda5c437f0 69 // Get the peripheral name (UART_1, UART_2, ...) from the pin and assign it to the object
mbed_official 133:d4dda5c437f0 70 obj->uart = (UARTName)pinmap_merge(uart_tx, uart_rx);
mbed_official 227:7bd0639b8911 71 MBED_ASSERT(obj->uart != (UARTName)NC);
mbed_official 133:d4dda5c437f0 72
mbed_official 133:d4dda5c437f0 73 // Enable USART clock
mbed_official 133:d4dda5c437f0 74 if (obj->uart == UART_1) {
mbed_official 133:d4dda5c437f0 75 __USART1_CLK_ENABLE();
mbed_official 242:7074e42da0b2 76 obj->index = 0;
mbed_official 133:d4dda5c437f0 77 }
mbed_official 133:d4dda5c437f0 78 if (obj->uart == UART_2) {
mbed_official 133:d4dda5c437f0 79 __USART2_CLK_ENABLE();
mbed_official 242:7074e42da0b2 80 obj->index = 1;
mbed_official 133:d4dda5c437f0 81 }
mbed_official 133:d4dda5c437f0 82 if (obj->uart == UART_6) {
mbed_official 133:d4dda5c437f0 83 __USART6_CLK_ENABLE();
mbed_official 242:7074e42da0b2 84 obj->index = 2;
mbed_official 133:d4dda5c437f0 85 }
mbed_official 133:d4dda5c437f0 86
mbed_official 133:d4dda5c437f0 87 // Configure the UART pins
mbed_official 133:d4dda5c437f0 88 pinmap_pinout(tx, PinMap_UART_TX);
mbed_official 133:d4dda5c437f0 89 pinmap_pinout(rx, PinMap_UART_RX);
mbed_official 339:40bd4701f3e2 90 if (tx != NC) {
mbed_official 339:40bd4701f3e2 91 pin_mode(tx, PullUp);
mbed_official 339:40bd4701f3e2 92 }
mbed_official 339:40bd4701f3e2 93 if (rx != NC) {
mbed_official 339:40bd4701f3e2 94 pin_mode(rx, PullUp);
mbed_official 339:40bd4701f3e2 95 }
mbed_official 133:d4dda5c437f0 96
mbed_official 133:d4dda5c437f0 97 // Configure UART
mbed_official 133:d4dda5c437f0 98 obj->baudrate = 9600;
mbed_official 133:d4dda5c437f0 99 obj->databits = UART_WORDLENGTH_8B;
mbed_official 133:d4dda5c437f0 100 obj->stopbits = UART_STOPBITS_1;
mbed_official 227:7bd0639b8911 101 obj->parity = UART_PARITY_NONE;
mbed_official 133:d4dda5c437f0 102
mbed_official 242:7074e42da0b2 103 obj->pin_tx = tx;
mbed_official 242:7074e42da0b2 104 obj->pin_rx = rx;
mbed_official 133:d4dda5c437f0 105
mbed_official 242:7074e42da0b2 106 init_uart(obj);
mbed_official 133:d4dda5c437f0 107
mbed_official 133:d4dda5c437f0 108 // For stdio management
mbed_official 133:d4dda5c437f0 109 if (obj->uart == STDIO_UART) {
mbed_official 133:d4dda5c437f0 110 stdio_uart_inited = 1;
mbed_official 133:d4dda5c437f0 111 memcpy(&stdio_uart, obj, sizeof(serial_t));
mbed_official 133:d4dda5c437f0 112 }
mbed_official 133:d4dda5c437f0 113
mbed_official 133:d4dda5c437f0 114 }
mbed_official 133:d4dda5c437f0 115
mbed_official 133:d4dda5c437f0 116 void serial_free(serial_t *obj) {
mbed_official 242:7074e42da0b2 117 // Reset UART and disable clock
mbed_official 242:7074e42da0b2 118 if (obj->uart == UART_1) {
mbed_official 242:7074e42da0b2 119 __USART1_FORCE_RESET();
mbed_official 242:7074e42da0b2 120 __USART1_RELEASE_RESET();
mbed_official 242:7074e42da0b2 121 __USART1_CLK_DISABLE();
mbed_official 242:7074e42da0b2 122 }
mbed_official 242:7074e42da0b2 123 if (obj->uart == UART_2) {
mbed_official 242:7074e42da0b2 124 __USART2_FORCE_RESET();
mbed_official 242:7074e42da0b2 125 __USART2_RELEASE_RESET();
mbed_official 242:7074e42da0b2 126 __USART2_CLK_DISABLE();
mbed_official 242:7074e42da0b2 127 }
mbed_official 242:7074e42da0b2 128 if (obj->uart == UART_6) {
mbed_official 242:7074e42da0b2 129 __USART6_FORCE_RESET();
mbed_official 242:7074e42da0b2 130 __USART6_RELEASE_RESET();
mbed_official 242:7074e42da0b2 131 __USART6_CLK_DISABLE();
mbed_official 242:7074e42da0b2 132 }
mbed_official 242:7074e42da0b2 133
mbed_official 242:7074e42da0b2 134 // Configure GPIOs
mbed_official 242:7074e42da0b2 135 pin_function(obj->pin_tx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
mbed_official 242:7074e42da0b2 136 pin_function(obj->pin_rx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
mbed_official 242:7074e42da0b2 137
mbed_official 133:d4dda5c437f0 138 serial_irq_ids[obj->index] = 0;
mbed_official 133:d4dda5c437f0 139 }
mbed_official 133:d4dda5c437f0 140
mbed_official 133:d4dda5c437f0 141 void serial_baud(serial_t *obj, int baudrate) {
mbed_official 133:d4dda5c437f0 142 obj->baudrate = baudrate;
mbed_official 133:d4dda5c437f0 143 init_uart(obj);
mbed_official 133:d4dda5c437f0 144 }
mbed_official 133:d4dda5c437f0 145
mbed_official 133:d4dda5c437f0 146 void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
mbed_official 133:d4dda5c437f0 147 if (data_bits == 8) {
mbed_official 133:d4dda5c437f0 148 obj->databits = UART_WORDLENGTH_8B;
mbed_official 242:7074e42da0b2 149 } else {
mbed_official 133:d4dda5c437f0 150 obj->databits = UART_WORDLENGTH_9B;
mbed_official 133:d4dda5c437f0 151 }
mbed_official 133:d4dda5c437f0 152
mbed_official 133:d4dda5c437f0 153 switch (parity) {
mbed_official 133:d4dda5c437f0 154 case ParityOdd:
mbed_official 133:d4dda5c437f0 155 case ParityForced0:
mbed_official 133:d4dda5c437f0 156 obj->parity = UART_PARITY_ODD;
mbed_official 133:d4dda5c437f0 157 break;
mbed_official 133:d4dda5c437f0 158 case ParityEven:
mbed_official 227:7bd0639b8911 159 case ParityForced1:
mbed_official 133:d4dda5c437f0 160 obj->parity = UART_PARITY_EVEN;
mbed_official 133:d4dda5c437f0 161 break;
mbed_official 133:d4dda5c437f0 162 default: // ParityNone
mbed_official 133:d4dda5c437f0 163 obj->parity = UART_PARITY_NONE;
mbed_official 133:d4dda5c437f0 164 break;
mbed_official 133:d4dda5c437f0 165 }
mbed_official 133:d4dda5c437f0 166
mbed_official 133:d4dda5c437f0 167 if (stop_bits == 2) {
mbed_official 133:d4dda5c437f0 168 obj->stopbits = UART_STOPBITS_2;
mbed_official 242:7074e42da0b2 169 } else {
mbed_official 133:d4dda5c437f0 170 obj->stopbits = UART_STOPBITS_1;
mbed_official 133:d4dda5c437f0 171 }
mbed_official 133:d4dda5c437f0 172
mbed_official 133:d4dda5c437f0 173 init_uart(obj);
mbed_official 133:d4dda5c437f0 174 }
mbed_official 133:d4dda5c437f0 175
mbed_official 133:d4dda5c437f0 176 /******************************************************************************
mbed_official 133:d4dda5c437f0 177 * INTERRUPTS HANDLING
mbed_official 133:d4dda5c437f0 178 ******************************************************************************/
mbed_official 133:d4dda5c437f0 179
mbed_official 133:d4dda5c437f0 180 static void uart_irq(UARTName name, int id) {
mbed_official 133:d4dda5c437f0 181 UartHandle.Instance = (USART_TypeDef *)name;
mbed_official 133:d4dda5c437f0 182 if (serial_irq_ids[id] != 0) {
mbed_official 133:d4dda5c437f0 183 if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_TC) != RESET) {
mbed_official 133:d4dda5c437f0 184 irq_handler(serial_irq_ids[id], TxIrq);
mbed_official 133:d4dda5c437f0 185 __HAL_UART_CLEAR_FLAG(&UartHandle, UART_FLAG_TC);
mbed_official 133:d4dda5c437f0 186 }
mbed_official 133:d4dda5c437f0 187 if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET) {
mbed_official 133:d4dda5c437f0 188 irq_handler(serial_irq_ids[id], RxIrq);
mbed_official 133:d4dda5c437f0 189 __HAL_UART_CLEAR_FLAG(&UartHandle, UART_FLAG_RXNE);
mbed_official 133:d4dda5c437f0 190 }
mbed_official 133:d4dda5c437f0 191 }
mbed_official 133:d4dda5c437f0 192 }
mbed_official 133:d4dda5c437f0 193
mbed_official 242:7074e42da0b2 194 static void uart1_irq(void) {
mbed_official 242:7074e42da0b2 195 uart_irq(UART_1, 0);
mbed_official 242:7074e42da0b2 196 }
mbed_official 242:7074e42da0b2 197 static void uart2_irq(void) {
mbed_official 242:7074e42da0b2 198 uart_irq(UART_2, 1);
mbed_official 242:7074e42da0b2 199 }
mbed_official 242:7074e42da0b2 200 static void uart6_irq(void) {
mbed_official 242:7074e42da0b2 201 uart_irq(UART_6, 2);
mbed_official 242:7074e42da0b2 202 }
mbed_official 133:d4dda5c437f0 203
mbed_official 133:d4dda5c437f0 204 void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) {
mbed_official 133:d4dda5c437f0 205 irq_handler = handler;
mbed_official 133:d4dda5c437f0 206 serial_irq_ids[obj->index] = id;
mbed_official 133:d4dda5c437f0 207 }
mbed_official 133:d4dda5c437f0 208
mbed_official 133:d4dda5c437f0 209 void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) {
mbed_official 133:d4dda5c437f0 210 IRQn_Type irq_n = (IRQn_Type)0;
mbed_official 133:d4dda5c437f0 211 uint32_t vector = 0;
mbed_official 133:d4dda5c437f0 212
mbed_official 133:d4dda5c437f0 213 UartHandle.Instance = (USART_TypeDef *)(obj->uart);
mbed_official 133:d4dda5c437f0 214
mbed_official 133:d4dda5c437f0 215 if (obj->uart == UART_1) {
mbed_official 133:d4dda5c437f0 216 irq_n = USART1_IRQn;
mbed_official 133:d4dda5c437f0 217 vector = (uint32_t)&uart1_irq;
mbed_official 133:d4dda5c437f0 218 }
mbed_official 133:d4dda5c437f0 219
mbed_official 133:d4dda5c437f0 220 if (obj->uart == UART_2) {
mbed_official 133:d4dda5c437f0 221 irq_n = USART2_IRQn;
mbed_official 133:d4dda5c437f0 222 vector = (uint32_t)&uart2_irq;
mbed_official 133:d4dda5c437f0 223 }
mbed_official 133:d4dda5c437f0 224
mbed_official 133:d4dda5c437f0 225 if (obj->uart == UART_6) {
mbed_official 133:d4dda5c437f0 226 irq_n = USART6_IRQn;
mbed_official 133:d4dda5c437f0 227 vector = (uint32_t)&uart6_irq;
mbed_official 133:d4dda5c437f0 228 }
mbed_official 133:d4dda5c437f0 229
mbed_official 133:d4dda5c437f0 230 if (enable) {
mbed_official 133:d4dda5c437f0 231
mbed_official 133:d4dda5c437f0 232 if (irq == RxIrq) {
mbed_official 133:d4dda5c437f0 233 __HAL_UART_ENABLE_IT(&UartHandle, UART_IT_RXNE);
mbed_official 242:7074e42da0b2 234 } else { // TxIrq
mbed_official 133:d4dda5c437f0 235 __HAL_UART_ENABLE_IT(&UartHandle, UART_IT_TC);
mbed_official 227:7bd0639b8911 236 }
mbed_official 133:d4dda5c437f0 237
mbed_official 133:d4dda5c437f0 238 NVIC_SetVector(irq_n, vector);
mbed_official 133:d4dda5c437f0 239 NVIC_EnableIRQ(irq_n);
mbed_official 133:d4dda5c437f0 240
mbed_official 133:d4dda5c437f0 241 } else { // disable
mbed_official 133:d4dda5c437f0 242
mbed_official 133:d4dda5c437f0 243 int all_disabled = 0;
mbed_official 133:d4dda5c437f0 244
mbed_official 133:d4dda5c437f0 245 if (irq == RxIrq) {
mbed_official 133:d4dda5c437f0 246 __HAL_UART_DISABLE_IT(&UartHandle, UART_IT_RXNE);
mbed_official 133:d4dda5c437f0 247 // Check if TxIrq is disabled too
mbed_official 133:d4dda5c437f0 248 if ((UartHandle.Instance->CR1 & USART_CR1_TXEIE) == 0) all_disabled = 1;
mbed_official 242:7074e42da0b2 249 } else { // TxIrq
mbed_official 133:d4dda5c437f0 250 __HAL_UART_DISABLE_IT(&UartHandle, UART_IT_TXE);
mbed_official 133:d4dda5c437f0 251 // Check if RxIrq is disabled too
mbed_official 227:7bd0639b8911 252 if ((UartHandle.Instance->CR1 & USART_CR1_RXNEIE) == 0) all_disabled = 1;
mbed_official 133:d4dda5c437f0 253 }
mbed_official 133:d4dda5c437f0 254
mbed_official 133:d4dda5c437f0 255 if (all_disabled) NVIC_DisableIRQ(irq_n);
mbed_official 133:d4dda5c437f0 256
mbed_official 227:7bd0639b8911 257 }
mbed_official 133:d4dda5c437f0 258 }
mbed_official 133:d4dda5c437f0 259
mbed_official 133:d4dda5c437f0 260 /******************************************************************************
mbed_official 133:d4dda5c437f0 261 * READ/WRITE
mbed_official 133:d4dda5c437f0 262 ******************************************************************************/
mbed_official 133:d4dda5c437f0 263
mbed_official 133:d4dda5c437f0 264 int serial_getc(serial_t *obj) {
mbed_official 133:d4dda5c437f0 265 USART_TypeDef *uart = (USART_TypeDef *)(obj->uart);
mbed_official 133:d4dda5c437f0 266 while (!serial_readable(obj));
mbed_official 133:d4dda5c437f0 267 return (int)(uart->DR & 0x1FF);
mbed_official 133:d4dda5c437f0 268 }
mbed_official 133:d4dda5c437f0 269
mbed_official 133:d4dda5c437f0 270 void serial_putc(serial_t *obj, int c) {
mbed_official 133:d4dda5c437f0 271 USART_TypeDef *uart = (USART_TypeDef *)(obj->uart);
mbed_official 133:d4dda5c437f0 272 while (!serial_writable(obj));
mbed_official 133:d4dda5c437f0 273 uart->DR = (uint32_t)(c & 0x1FF);
mbed_official 133:d4dda5c437f0 274 }
mbed_official 133:d4dda5c437f0 275
mbed_official 133:d4dda5c437f0 276 int serial_readable(serial_t *obj) {
mbed_official 133:d4dda5c437f0 277 int status;
mbed_official 133:d4dda5c437f0 278 UartHandle.Instance = (USART_TypeDef *)(obj->uart);
mbed_official 133:d4dda5c437f0 279 // Check if data is received
mbed_official 133:d4dda5c437f0 280 status = ((__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET) ? 1 : 0);
mbed_official 133:d4dda5c437f0 281 return status;
mbed_official 133:d4dda5c437f0 282 }
mbed_official 133:d4dda5c437f0 283
mbed_official 133:d4dda5c437f0 284 int serial_writable(serial_t *obj) {
mbed_official 133:d4dda5c437f0 285 int status;
mbed_official 133:d4dda5c437f0 286 UartHandle.Instance = (USART_TypeDef *)(obj->uart);
mbed_official 133:d4dda5c437f0 287 // Check if data is transmitted
mbed_official 133:d4dda5c437f0 288 status = ((__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_TXE) != RESET) ? 1 : 0);
mbed_official 133:d4dda5c437f0 289 return status;
mbed_official 133:d4dda5c437f0 290 }
mbed_official 133:d4dda5c437f0 291
mbed_official 133:d4dda5c437f0 292 void serial_clear(serial_t *obj) {
mbed_official 133:d4dda5c437f0 293 UartHandle.Instance = (USART_TypeDef *)(obj->uart);
mbed_official 133:d4dda5c437f0 294 __HAL_UART_CLEAR_FLAG(&UartHandle, UART_FLAG_TXE);
mbed_official 133:d4dda5c437f0 295 __HAL_UART_CLEAR_FLAG(&UartHandle, UART_FLAG_RXNE);
mbed_official 133:d4dda5c437f0 296 }
mbed_official 133:d4dda5c437f0 297
mbed_official 133:d4dda5c437f0 298 void serial_pinout_tx(PinName tx) {
mbed_official 133:d4dda5c437f0 299 pinmap_pinout(tx, PinMap_UART_TX);
mbed_official 133:d4dda5c437f0 300 }
mbed_official 133:d4dda5c437f0 301
mbed_official 133:d4dda5c437f0 302 void serial_break_set(serial_t *obj) {
mbed_official 133:d4dda5c437f0 303 UartHandle.Instance = (USART_TypeDef *)(obj->uart);
mbed_official 133:d4dda5c437f0 304 HAL_LIN_SendBreak(&UartHandle);
mbed_official 133:d4dda5c437f0 305 }
mbed_official 133:d4dda5c437f0 306
mbed_official 133:d4dda5c437f0 307 void serial_break_clear(serial_t *obj) {
mbed_official 133:d4dda5c437f0 308 }
mbed_official 242:7074e42da0b2 309
mbed_official 242:7074e42da0b2 310 #endif