Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-src by
Diff: targets/hal/TARGET_NXP/TARGET_LPC23XX/serial_api.c
- Revision:
- 227:7bd0639b8911
- Parent:
- 140:ca60b7a31055
- Child:
- 231:e72bc43fb91c
--- a/targets/hal/TARGET_NXP/TARGET_LPC23XX/serial_api.c Wed Jun 11 09:45:09 2014 +0100
+++ b/targets/hal/TARGET_NXP/TARGET_LPC23XX/serial_api.c Wed Jun 11 16:00:09 2014 +0100
@@ -14,6 +14,7 @@
* limitations under the License.
*/
// math.h required for floating point operations for baud rate calculation
+#include "mbed_assert.h"
#include <math.h>
#include <string.h>
#include <stdlib.h>
@@ -21,7 +22,6 @@
#include "serial_api.h"
#include "cmsis.h"
#include "pinmap.h"
-#include "error.h"
/******************************************************************************
* INITIALIZATION
@@ -65,9 +65,7 @@
UARTName uart_tx = (UARTName)pinmap_peripheral(tx, PinMap_UART_TX);
UARTName uart_rx = (UARTName)pinmap_peripheral(rx, PinMap_UART_RX);
UARTName uart = (UARTName)pinmap_merge(uart_tx, uart_rx);
- if ((int)uart == NC) {
- error("Serial pinout mapping failed");
- }
+ MBED_ASSERT((int)uart != NC);
obj->uart = (LPC_UART_TypeDef *)uart;
// enable power
@@ -123,6 +121,7 @@
// serial_baud
// set the baud rate, taking in to account the current SystemFrequency
void serial_baud(serial_t *obj, int baudrate) {
+ MBED_ASSERT((int)obj->uart <= UART_3);
// The LPC2300 and LPC1700 have a divider and a fractional divider to control the
// baud rate. The formula is:
//
@@ -138,7 +137,7 @@
case UART_1: LPC_SC->PCLKSEL0 &= ~(0x3 << 8); LPC_SC->PCLKSEL0 |= (0x1 << 8); break;
case UART_2: LPC_SC->PCLKSEL1 &= ~(0x3 << 16); LPC_SC->PCLKSEL1 |= (0x1 << 16); break;
case UART_3: LPC_SC->PCLKSEL1 &= ~(0x3 << 18); LPC_SC->PCLKSEL1 |= (0x1 << 18); break;
- default: error("serial_baud"); break;
+ default: break;
}
uint32_t PCLK = SystemCoreClock;
@@ -218,16 +217,12 @@
}
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
- // 0: 1 stop bits, 1: 2 stop bits
- if (stop_bits != 1 && stop_bits != 2) {
- error("Invalid stop bits specified");
- }
+ MBED_ASSERT((stop_bits == 1) || (stop_bits == 2)); // 0: 1 stop bits, 1: 2 stop bits
+ MBED_ASSERT((data_bits > 4) && (data_bits < 9)); // 0: 5 data bits ... 3: 8 data bits
+ MBED_ASSERT((parity == ParityNone) || (parity == ParityOdd) || (parity == ParityEven) ||
+ (parity == ParityForced1) || (parity == ParityForced0));
+
stop_bits -= 1;
-
- // 0: 5 data bits ... 3: 8 data bits
- if (data_bits < 5 || data_bits > 8) {
- error("Invalid number of bits (%d) in serial format, should be 5..8", data_bits);
- }
data_bits -= 5;
int parity_enable, parity_select;
@@ -238,8 +233,7 @@
case ParityForced1: parity_enable = 1; parity_select = 2; break;
case ParityForced0: parity_enable = 1; parity_select = 3; break;
default:
- error("Invalid serial parity setting");
- return;
+ break;
}
obj->uart->LCR = data_bits << 0
