This is a part of the Kinetiszer project.

Dependents:   kinetisizer

Files at this revision

API Documentation at this revision

Comitter:
Clemo
Date:
Tue Oct 28 12:20:47 2014 +0000
Commit message:
Error & warning free.

Changed in this revision

board.c Show annotated file Show diff for this revision Revisions of this file
board.h Show annotated file Show diff for this revision Revisions of this file
board_api.h Show annotated file Show diff for this revision Revisions of this file
board_sysinit.c Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r e0042c0c4d2d board.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/board.c	Tue Oct 28 12:20:47 2014 +0000
@@ -0,0 +1,279 @@
+/*
+ * @brief LPCXpresso 1347 board file
+ *
+ * @note
+ * Copyright(C) NXP Semiconductors, 2013
+ * All rights reserved.
+ *
+ * @par
+ * Software that is described herein is for illustrative purposes only
+ * which provides customers with programming information regarding the
+ * LPC products.  This software is supplied "AS IS" without any warranties of
+ * any kind, and NXP Semiconductors and its licensor disclaim any and
+ * all warranties, express or implied, including all implied warranties of
+ * merchantability, fitness for a particular purpose and non-infringement of
+ * intellectual property rights.  NXP Semiconductors assumes no responsibility
+ * or liability for the use of the software, conveys no license or rights under any
+ * patent, copyright, mask work right, or any other intellectual property rights in
+ * or to any products. NXP Semiconductors reserves the right to make changes
+ * in the software without notification. NXP Semiconductors also makes no
+ * representation or warranty that such application will be suitable for the
+ * specified use without further testing or modification.
+ *
+ * @par
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation is hereby granted, under NXP Semiconductors' and its
+ * licensor's relevant copyrights in the software, without fee, provided that it
+ * is used in conjunction with NXP Semiconductors microcontrollers.  This
+ * copyright, permission, and disclaimer notice must appear in all copies of
+ * this code.
+ */
+
+#include "board.h"
+//#include "retarget.h"
+
+/*****************************************************************************
+ * Private types/enumerations/variables
+ ****************************************************************************/
+
+#if defined (BOARD_ELEKTOR_140182)
+	#define BUTTONS_BUTTON1_GPIO_PORT_NUM           BOARD_KEYBOARD_ISP_PORT
+	#define BUTTONS_BUTTON1_GPIO_BIT_NUM            BOARD_KEYBOARD_ISP_PIN
+#else
+	#define BUTTONS_BUTTON1_GPIO_PORT_NUM           0
+	#define BUTTONS_BUTTON1_GPIO_BIT_NUM            16
+#endif
+
+
+/*****************************************************************************
+ * Public types/enumerations/variables
+ ****************************************************************************/
+
+/*****************************************************************************
+ * Private functions
+ ****************************************************************************/
+
+/* System oscillator rate and clock rate on the CLKIN pin */
+const uint32_t OscRateIn = 12000000;
+const uint32_t ExtRateIn = 0;
+
+/*****************************************************************************
+ * Public functions
+ ****************************************************************************/
+
+/* Initialize pin muxing for UART interface */
+void Board_UART_Init(void)
+{
+	/* Pin Muxing has already been done during SystemInit */
+}
+
+/* Sends a character on the UART */
+void Board_UARTPutChar(char ch)
+{
+#if defined(DEBUG_ENABLE)
+	/* Wait for space in FIFO */
+	while ((Chip_UART_ReadLineStatus(DEBUG_UART) & UART_LSR_THRE) == 0) {}
+	Chip_UART_SendByte(DEBUG_UART, (uint8_t) ch);
+#endif
+}
+
+/* Gets a character from the UART, returns EOF if no character is ready */
+int Board_UARTGetChar(void)
+{
+#if defined(DEBUG_ENABLE)
+	if (Chip_UART_ReadLineStatus(DEBUG_UART) & UART_LSR_RDR) {
+		return (int) Chip_UART_ReadByte(DEBUG_UART);
+	}
+#endif
+	return EOF;
+}
+
+/* Outputs a string on the debug UART */
+void Board_UARTPutSTR(char *str)
+{
+#if defined(DEBUG_ENABLE)
+	while (*str != '\0') {
+		Board_UARTPutChar(*str++);
+	}
+#endif
+}
+
+/* Initialize debug output via UART for board */
+void Board_Debug_Init(void)
+{
+#if defined(DEBUG_ENABLE)
+	Board_UART_Init();
+
+	/* Setup UART for 115.2K8N1 */
+	Chip_UART_Init(LPC_USART);
+	Chip_UART_SetBaud(LPC_USART, 115200);
+	Chip_UART_ConfigData(LPC_USART, (UART_LCR_WLEN8 | UART_LCR_SBS_1BIT));
+	Chip_UART_SetupFIFOS(LPC_USART, (UART_FCR_FIFO_EN | UART_FCR_TRG_LEV2));
+	Chip_UART_TXEnable(LPC_USART);
+#endif
+}
+
+/* Initializes board LED(s) */
+void Board_LED_Init(void)
+{
+	// Set PIO0_8, _9, _10 & _18 as output.
+	//Chip_GPIO_WriteDirBit(LPC_GPIO_PORT,BOARD_LED2_RED_PORT,BOARD_LED2_RED_PIN,OUTPUT);
+	//Chip_GPIO_WriteDirBit(LPC_GPIO_PORT,BOARD_LED1_RED_PORT,BOARD_LED1_RED_PIN,OUTPUT);
+	//Chip_GPIO_WriteDirBit(LPC_GPIO_PORT,BOARD_LED2_GREEN_PORT,BOARD_LED2_GREEN_PIN,OUTPUT);
+	//Chip_GPIO_WriteDirBit(LPC_GPIO_PORT,BOARD_LED1_GREEN_PORT,BOARD_LED1_GREEN_PIN,OUTPUT);
+	// Set PIO1_31 as output.
+	//Chip_GPIO_WriteDirBit(LPC_GPIO_PORT,BOARD_LED3_PORT,BOARD_LED3_PIN,OUTPUT);
+}
+
+/* Sets the state of a board LED to on or off */
+void Board_LED_Set(uint8_t LEDNumber, bool On)
+{
+	if (LEDNumber==BOARD_LED1_GREEN)
+	{
+		//Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LED1_GREEN_PORT,BOARD_LED1_GREEN_PIN,On);
+	}
+	else if (LEDNumber==BOARD_LED1_RED)
+	{
+		//Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LED1_RED_PORT,BOARD_LED1_RED_PIN,On);
+	}
+	else if (LEDNumber==BOARD_LED2_GREEN)
+	{
+		//Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LED2_GREEN_PORT,BOARD_LED2_GREEN_PIN,On);
+	}
+	else if (LEDNumber==BOARD_LED2_RED)
+	{
+		//Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LED2_RED_PORT,BOARD_LED2_RED_PIN,On);
+	}
+	else if (LEDNumber==BOARD_LED3)
+	{
+		//Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LED3_PORT,BOARD_LED3_PIN,On);
+	}
+}
+
+/* Returns the current state of a board LED */
+bool Board_LED_Test(uint8_t LEDNumber)
+{
+	bool state = false;
+
+	if (LEDNumber==BOARD_LED1_GREEN)
+	{
+		//state = Chip_GPIO_ReadPortBit(LPC_GPIO_PORT,BOARD_LED1_GREEN_PORT,BOARD_LED1_GREEN_PIN);
+	}
+	else if (LEDNumber==BOARD_LED1_RED)
+	{
+		//state = Chip_GPIO_ReadPortBit(LPC_GPIO_PORT,BOARD_LED1_RED_PORT,BOARD_LED1_RED_PIN);
+	}
+	else if (LEDNumber==BOARD_LED2_GREEN)
+	{
+		//state = Chip_GPIO_ReadPortBit(LPC_GPIO_PORT,BOARD_LED2_GREEN_PORT,BOARD_LED2_GREEN_PIN);
+	}
+	else if (LEDNumber==BOARD_LED2_RED)
+	{
+		//state = Chip_GPIO_ReadPortBit(LPC_GPIO_PORT,BOARD_LED2_RED_PORT,BOARD_LED2_RED_PIN);
+	}
+	else if (LEDNumber==BOARD_LED3)
+	{
+		//state = Chip_GPIO_ReadPortBit(LPC_GPIO_PORT,BOARD_LED3_PORT,BOARD_LED3_PIN);
+	}
+
+	return state;
+}
+
+void Board_LED_Toggle(uint8_t LEDNumber)
+{
+	Board_LED_Set(LEDNumber,Board_LED_Test(LEDNumber)==false?true:false);
+}
+
+
+void Board_LCD_Init(void)
+{
+	// Setup backlight control.
+	//Chip_IOCON_PinMuxSet(LPC_IOCON,BOARD_LCD_BACKLIGHT_PORT,BOARD_LCD_BACKLIGHT_PIN,IOCON_DIGMODE_EN);
+	//Chip_GPIO_WriteDirBit(LPC_GPIO_PORT,BOARD_LCD_BACKLIGHT_PORT,BOARD_LCD_BACKLIGHT_PIN,OUTPUT);
+
+	// Setup reset control.
+	//Chip_IOCON_PinMuxSet(LPC_IOCON,BOARD_LCD_RESET_PORT,BOARD_LCD_RESET_PIN,IOCON_DIGMODE_EN);
+	//Chip_GPIO_WriteDirBit(LPC_GPIO_PORT,BOARD_LCD_RESET_PORT,BOARD_LCD_RESET_PIN,OUTPUT);
+}
+
+
+void Board_LCD_ResetAssert(void)
+{
+	//Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LCD_RESET_PORT,BOARD_LCD_RESET_PIN,false);
+}
+
+
+void Board_LCD_ResetDeassert(void)
+{
+	//Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LCD_RESET_PORT,BOARD_LCD_RESET_PIN,true);
+}
+
+
+void Board_LCD_SetBacklight(uint8_t Intensity)
+{
+	//if (Intensity!=0) Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LCD_BACKLIGHT_PORT,BOARD_LCD_BACKLIGHT_PIN,BOARD_LCD_BACKLIGHT_ON);
+	//else Chip_GPIO_WritePortBit(LPC_GPIO_PORT,BOARD_LCD_BACKLIGHT_PORT,BOARD_LCD_BACKLIGHT_PIN,BOARD_LCD_BACKLIGHT_OFF);
+}
+
+
+/* Set up and initialize all required blocks and functions related to the
+   board hardware */
+void Board_Init(void)
+{
+	/* Sets up DEBUG UART */
+	DEBUGINIT();
+
+	/* Initialize GPIO */
+	//Chip_GPIO_Init(LPC_GPIO_PORT);
+
+	/* Initialize LEDs */
+	Board_LED_Init();
+	Board_LED_Set(BOARD_LED1_GREEN,BOARD_LED_OFF);
+	Board_LED_Set(BOARD_LED1_RED,BOARD_LED_OFF);
+	Board_LED_Set(BOARD_LED2_GREEN,BOARD_LED_OFF);
+	Board_LED_Set(BOARD_LED2_RED,BOARD_LED_OFF);
+	Board_LED_Set(BOARD_LED3,BOARD_LED_ON); // LED3 is inverted compared to LED1 & LED2.
+
+	// Initialize LCD.
+	Board_LCD_Init();
+	// Put it in reset.
+	Board_LCD_ResetAssert();
+	// Backlight off.
+	Board_LCD_SetBacklight(false);
+}
+
+/* Initialize pin muxing for SSP interface */
+void Board_SSP_Init(LPC_SSP_T *pSSP)
+{
+	if (pSSP == LPC_SSP0) {
+	}
+	else {
+		//Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 23, (IOCON_FUNC2 | IOCON_MODE_PULLUP)); /* PIO1_23 connected to SSEL1 */
+		//Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 20, (IOCON_FUNC2 | IOCON_MODE_PULLUP)); /* PIO1_20 connected to SCK1 */
+		//Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 21, (IOCON_FUNC2 | IOCON_MODE_PULLUP)); /* PIO1_21 connected to MISO1 */
+		//Chip_IOCON_PinMuxSet(LPC_IOCON, 1, 22, (IOCON_FUNC2 | IOCON_MODE_PULLUP)); /* PIO1_22 connected to MOSI1 */
+	}
+}
+
+/* Configure pin for ADC channel 0 */
+void Board_ADC_Init(void)
+{
+	/* Muxing already setup as part of SystemInit for AD0 */
+}
+
+/* Initialize buttons on the board */
+void Board_Buttons_Init(void)
+{
+	//Chip_GPIO_WriteDirBit(LPC_GPIO_PORT, BUTTONS_BUTTON1_GPIO_PORT_NUM, BUTTONS_BUTTON1_GPIO_BIT_NUM, false);
+}
+
+/* Get button status */
+uint32_t Buttons_GetStatus(void)
+{
+	uint8_t ret = NO_BUTTON_PRESSED;
+	//if (Chip_GPIO_ReadPortBit(LPC_GPIO_PORT, BUTTONS_BUTTON1_GPIO_PORT_NUM, BUTTONS_BUTTON1_GPIO_BIT_NUM) == 0x00) {
+	//	ret |= BUTTONS_BUTTON1;
+	//}
+	return ret;
+}
+
diff -r 000000000000 -r e0042c0c4d2d board.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/board.h	Tue Oct 28 12:20:47 2014 +0000
@@ -0,0 +1,291 @@
+/*
+ * @brief NXP LPCXpresso 1347 board file
+ *
+ * @note
+ * Copyright(C) NXP Semiconductors, 2013
+ * All rights reserved.
+ *
+ * @par
+ * Software that is described herein is for illustrative purposes only
+ * which provides customers with programming information regarding the
+ * LPC products.  This software is supplied "AS IS" without any warranties of
+ * any kind, and NXP Semiconductors and its licensor disclaim any and
+ * all warranties, express or implied, including all implied warranties of
+ * merchantability, fitness for a particular purpose and non-infringement of
+ * intellectual property rights.  NXP Semiconductors assumes no responsibility
+ * or liability for the use of the software, conveys no license or rights under any
+ * patent, copyright, mask work right, or any other intellectual property rights in
+ * or to any products. NXP Semiconductors reserves the right to make changes
+ * in the software without notification. NXP Semiconductors also makes no
+ * representation or warranty that such application will be suitable for the
+ * specified use without further testing or modification.
+ *
+ * @par
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation is hereby granted, under NXP Semiconductors' and its
+ * licensor's relevant copyrights in the software, without fee, provided that it
+ * is used in conjunction with NXP Semiconductors microcontrollers.  This
+ * copyright, permission, and disclaimer notice must appear in all copies of
+ * this code.
+ */
+
+#ifndef __BOARD_H_
+#define __BOARD_H_
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#define STATIC static
+#define IOCON_FUNC0  (0)
+#define IOCON_FUNC1  (1)
+#define IOCON_FUNC2  (2)
+#define IOCON_FUNC3  (3)
+#define IOCON_RESERVED_BIT_7  (0)
+#define IOCON_SFI2C_EN  (1)
+#define IOCON_DIGMODE_EN  (2)
+#define IOCON_INV_EN  (3)
+#define IOCON_MODE_PULLUP  (4)
+
+//#include "chip.h"
+/* board_api.h is included at the bottom of this file after DEBUG setup */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @defgroup BOARD_NXP_LPCXPRESSO_1347 NXP LPC1347 Xpresso board support functions
+ * @ingroup LPCOPEN_13XX_BOARD_LPCXPRESSO_1347
+ * @{
+ */
+
+/** @defgroup BOARD_NXP_LPCXPRESSO_1347_OPTIONS BOARD: NXP LPC1347 Xpresso board build options
+ * This board has options that configure its operation at build-time.<br>
+ * @{
+ */
+ 
+ /** Define DEBUG_ENABLE to enable IO via the DEBUGSTR, DEBUGOUT, and
+    DEBUGIN macros. If not defined, DEBUG* functions will be optimized
+	out of the code at build time.
+ */
+//#define DEBUG_ENABLE
+
+/** Define DEBUG_SEMIHOSTING along with DEBUG_ENABLE to enable IO support
+    via semihosting. You may need to use a C library that supports
+	semihosting with this option.
+ */
+//#define DEBUG_SEMIHOSTING
+
+/** Board UART used for debug output and input using the DEBUG* macros. This
+    is also the port used for Board_UARTPutChar, Board_UARTGetChar, and
+	Board_UARTPutSTR functions.
+ */
+#define DEBUG_UART LPC_USART
+
+/**
+ * @}
+ */
+
+/* Board name */
+#define BOARD_ELEKTOR_140182
+
+#define OUTPUT  true
+#define INPUT  false
+
+// LED(s).
+#define BOARD_LED1_GREEN_PORT  (0)
+#define BOARD_LED1_GREEN_PIN  (18)
+#define BOARD_LED1_RED_PORT  (0)
+#define BOARD_LED1_RED_PIN  (9)
+#define BOARD_LED2_GREEN_PORT  (0)
+#define BOARD_LED2_GREEN_PIN  (10)
+#define BOARD_LED2_RED_PORT  (0)
+#define BOARD_LED2_RED_PIN  (8)
+#define BOARD_LED3_PORT  (1)
+#define BOARD_LED3_PIN  (31)
+#define BOARD_LED1_GREEN  (0)
+#define BOARD_LED1_RED  (1)
+#define BOARD_LED2_GREEN  (2)
+#define BOARD_LED2_RED  (3)
+#define BOARD_LED3  (4)
+#define BOARD_LED_OFF  (true)
+#define BOARD_LED_ON  (false)
+// The other LED function prototypes are in board_api.h
+void Board_LED_Init(void);
+
+
+// LCD (2x16) with I2C interface, based on ST7032i chip.
+#define BOARD_LCD_LINES  (2)
+#define BOARD_LCD_CHARS_PER_LINE  (16)
+#define BOARD_LCD_RESET_PORT  (1)
+#define BOARD_LCD_RESET_PIN  (15)
+#define BOARD_LCD_RESET_ON  (0)
+#define BOARD_LCD_RESET_OFF  (1)
+#define BOARD_LCD_BACKLIGHT_PORT  (1)
+#define BOARD_LCD_BACKLIGHT_PIN  (16)
+#define BOARD_LCD_BACKLIGHT_ON  (0)
+#define BOARD_LCD_BACKLIGHT_OFF  (1)
+void Board_LCD_Init(void);
+void Board_LCD_ResetAssert(void);
+void Board_LCD_ResetDeassert(void);
+void Board_LCD_SetBacklight(uint8_t Intensity);
+
+
+// Keyboard.
+#define BOARD_KEYBOARD_R0_PORT  (1)
+#define BOARD_KEYBOARD_R0_PIN  (23)
+#define BOARD_KEYBOARD_R1_PORT  (1)
+#define BOARD_KEYBOARD_R1_PIN  (24)
+#define BOARD_KEYBOARD_R2_PORT  (1)
+#define BOARD_KEYBOARD_R2_PIN  (25)
+#define BOARD_KEYBOARD_C0_PORT  (1)
+#define BOARD_KEYBOARD_C0_PIN  (26)
+#define BOARD_KEYBOARD_C1_PORT  (1)
+#define BOARD_KEYBOARD_C1_PIN  (28)
+#define BOARD_KEYBOARD_C2_PORT  (1)
+#define BOARD_KEYBOARD_C2_PIN  (29)
+
+#define BOARD_KEYBOARD_ISP_PORT  (0)
+#define BOARD_KEYBOARD_ISP_PIN  (1)
+
+#define BOARD_KEYBOARD_RESET_PORT  (0)
+#define BOARD_KEYBOARD_RESET_PIN  (0)
+// Uncomment if you don't need a reset pin in your system.
+//#define RESET_IS_GPIO
+
+// ---------------------------------------------------
+//  Keys.
+// ---------------------------------------------------
+#define BOARD_KEYBOARD_S00  (0)  /* S1 push */
+#define BOARD_KEYBOARD_S01  (1)  /* S2 push */
+#define BOARD_KEYBOARD_S02  (2)  /* S3 push */
+#define BOARD_KEYBOARD_S10  (3)  /* S4 push */
+#define BOARD_KEYBOARD_S11  (4)  /* S5 push */
+#define BOARD_KEYBOARD_S12  (5)  /* S6 push */
+#define BOARD_KEYBOARD_S20  (6)  /* S7 push */
+#define BOARD_KEYBOARD_S21  (7)  /* S8 push */
+#define BOARD_KEYBOARD_S22  (8)  /* S11 (spare) */
+#define BOARD_KEYBOARD_ISP  (9)  /* S9 */
+#if defined RESET_IS_GPIO
+#define BOARD_KEYBOARD_RESET  (10)  /* S10 */
+#endif
+// Other non-matrix keys go here.
+
+// --------------------------------------------------------------
+//  Rotary encoders.
+// --------------------------------------------------------------
+#define BOARD_KEYBOARD_RE0  /* S1 */
+#define BOARD_KEYBOARD_RE1  /* S2 */
+#define BOARD_KEYBOARD_RE2  /* S3 */
+#define BOARD_KEYBOARD_RE3  /* S4 */
+#define BOARD_KEYBOARD_RE4  /* S5 */
+#define BOARD_KEYBOARD_RE5  /* S6 */
+#define BOARD_KEYBOARD_RE6  /* S7 */
+#define BOARD_KEYBOARD_RE7  /* S8 */
+
+#if defined(BOARD_KEYBOARD_RE0)  /* S1 */
+#define BOARD_KEYBOARD_RE0_A_PORT  (1)
+#define BOARD_KEYBOARD_RE0_A_PIN  (19)
+#define BOARD_KEYBOARD_RE0_B_PORT  (1)
+#define BOARD_KEYBOARD_RE0_B_PIN  (20)
+#endif
+
+#if defined(BOARD_KEYBOARD_RE1)  /* S2 */
+#define BOARD_KEYBOARD_RE1_A_PORT  (1)
+#define BOARD_KEYBOARD_RE1_A_PIN  (21)
+#define BOARD_KEYBOARD_RE1_B_PORT  (1)
+#define BOARD_KEYBOARD_RE1_B_PIN  (22)
+#endif
+
+#if defined(BOARD_KEYBOARD_RE2)  /* S3 */
+#define BOARD_KEYBOARD_RE2_A_PORT  (0)
+#define BOARD_KEYBOARD_RE2_A_PIN  (2)
+#define BOARD_KEYBOARD_RE2_B_PORT  (0)
+#define BOARD_KEYBOARD_RE2_B_PIN  (11)
+#endif
+
+#if defined(BOARD_KEYBOARD_RE3)  /* S4 */
+#define BOARD_KEYBOARD_RE3_A_PORT  (0)
+#define BOARD_KEYBOARD_RE3_A_PIN  (7)
+#define BOARD_KEYBOARD_RE3_B_PORT  (0)
+#define BOARD_KEYBOARD_RE3_B_PIN  (12)
+#endif
+
+#if defined(BOARD_KEYBOARD_RE4)  /* S5 */
+#define BOARD_KEYBOARD_RE4_A_PORT  (0)
+#define BOARD_KEYBOARD_RE4_A_PIN  (17)
+#define BOARD_KEYBOARD_RE4_B_PORT  (0)
+#define BOARD_KEYBOARD_RE4_B_PIN  (14)
+#endif
+
+#if defined(BOARD_KEYBOARD_RE5)  /* S6 */
+#define BOARD_KEYBOARD_RE5_A_PORT  (0)
+#define BOARD_KEYBOARD_RE5_A_PIN  (19)
+#define BOARD_KEYBOARD_RE5_B_PORT  (0)
+#define BOARD_KEYBOARD_RE5_B_PIN  (16)
+#endif
+
+#if defined(BOARD_KEYBOARD_RE6)  /* S7 */
+#define BOARD_KEYBOARD_RE6_A_PORT  (0)
+#define BOARD_KEYBOARD_RE6_A_PIN  (20)
+#define BOARD_KEYBOARD_RE6_B_PORT  (0)
+#define BOARD_KEYBOARD_RE6_B_PIN  (22)
+#endif
+
+#if defined(BOARD_KEYBOARD_RE7)  /* S8 */
+#define BOARD_KEYBOARD_RE7_A_PORT  (0)
+#define BOARD_KEYBOARD_RE7_A_PIN  (21)
+#define BOARD_KEYBOARD_RE7_B_PORT  (0)
+#define BOARD_KEYBOARD_RE7_B_PIN  (23)
+#endif
+
+#define BOARD_KEYBOARD_REPEAT_DELAY  (500) /* [ms] */
+#define BOARD_KEYBOARD_REPEAT_RATE  (100) /* [ms] */
+#define BOARD_KEYBOARD_DOUBLE_CLICK_MIN (100)  /* [ms] */
+#define BOARD_KEYBOARD_DOUBLE_CLICK_MAX (BOARD_KEYBOARD_DOUBLE_CLICK_MIN+300)  /* [ms] */
+
+
+/**
+ * Button defines
+ */
+#define BUTTONS_BUTTON1     0x01
+#define NO_BUTTON_PRESSED   0x00
+
+
+/**
+ * @brief	Initialize buttons on the board
+ * @return	Nothing
+ */
+void Board_Buttons_Init(void);
+
+/**
+ * @brief	Get button status
+ * @return	status of button
+ */
+uint32_t Buttons_GetStatus(void);
+
+/**
+ * @brief	Sets up board specific ADC interface
+ * @return	Nothing
+ */
+void Board_ADC_Init(void);
+
+typedef uint32_t LPC_SSP_T;
+#define LPC_SSP0 ((uint32_t*)0)
+/**
+ * @brief	Initialize pin muxing for SSP interface
+ * @param	pSSP	: Pointer to SSP interface to initialize
+ * @return	Nothing
+ */
+void Board_SSP_Init(LPC_SSP_T *pSSP);
+
+/**
+ * @}
+ */
+
+#include "board_api.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __BOARD_H_ */
diff -r 000000000000 -r e0042c0c4d2d board_api.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/board_api.h	Tue Oct 28 12:20:47 2014 +0000
@@ -0,0 +1,176 @@
+/*
+ * @brief Common board API functions
+ *
+ * @note
+ * Copyright(C) NXP Semiconductors, 2013
+ * All rights reserved.
+ *
+ * @par
+ * Software that is described herein is for illustrative purposes only
+ * which provides customers with programming information regarding the
+ * LPC products.  This software is supplied "AS IS" without any warranties of
+ * any kind, and NXP Semiconductors and its licensor disclaim any and
+ * all warranties, express or implied, including all implied warranties of
+ * merchantability, fitness for a particular purpose and non-infringement of
+ * intellectual property rights.  NXP Semiconductors assumes no responsibility
+ * or liability for the use of the software, conveys no license or rights under any
+ * patent, copyright, mask work right, or any other intellectual property rights in
+ * or to any products. NXP Semiconductors reserves the right to make changes
+ * in the software without notification. NXP Semiconductors also makes no
+ * representation or warranty that such application will be suitable for the
+ * specified use without further testing or modification.
+ *
+ * @par
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation is hereby granted, under NXP Semiconductors' and its
+ * licensor's relevant copyrights in the software, without fee, provided that it
+ * is used in conjunction with NXP Semiconductors microcontrollers.  This
+ * copyright, permission, and disclaimer notice must appear in all copies of
+ * this code.
+ */
+
+#ifndef __BOARD_API_H_
+#define __BOARD_API_H_
+
+//#include "lpc_types.h"
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @defgroup BOARD_COMMON_API BOARD: Common board functions
+ * @ingroup BOARD_Common
+ * This file contains common board definitions that are shared across
+ * boards and devices. All of these functions do not need to be
+ * implemented for a specific board, but if they are implemented, they
+ * should use this API standard.
+ * @{
+ */
+
+/**
+ * @brief	Setup and initialize hardware prior to call to main()
+ * @return	None
+ * @note	Board_SystemInit() is called prior to the application and sets up system
+ * clocking, memory, and any resources needed prior to the application
+ * starting.
+ */
+void Board_SystemInit(void);
+
+/**
+ * @brief	Setup pin multiplexer per board schematics
+ * @return	None
+ * @note	Board_SetupMuxing() should be called from SystemInit() prior to application
+ * main() is called. So that the PINs are set in proper state.
+ */
+void Board_SetupMuxing(void);
+
+/**
+ * @brief	Setup system clocking 
+ * @return	None
+ * @note	This sets up board clocking.
+ */
+void Board_SetupClocking(void);
+
+/**
+ * @brief	Setup external system memory
+ * @return	None
+ * @note	This function is typically called after pin mux setup and clock setup and
+ * sets up any external memory needed by the system (DRAM, SRAM, etc.). Not all
+ * boards need this function.
+ */
+void Board_SetupExtMemory(void);
+
+/**
+ * @brief	Set up and initialize all required blocks and functions related to the board hardware.
+ * @return	None
+ */
+void Board_Init(void);
+
+/**
+ * @brief	Initializes board UART for output, required for printf redirection
+ * @return	None
+ */
+void Board_Debug_Init(void);
+
+/**
+ * @brief	Sends a single character on the UART, required for printf redirection
+ * @param	ch	: character to send
+ * @return	None
+ */
+void Board_UARTPutChar(char ch);
+
+/**
+ * @brief	Get a single character from the UART, required for scanf input
+ * @return	EOF if not character was received, or character value
+ */
+int Board_UARTGetChar(void);
+
+/**
+ * @brief	Prints a string to the UART
+ * @param	str	: Terminated string to output
+ * @return	None
+ */
+void Board_UARTPutSTR(char *str);
+
+/**
+ * @brief	Sets the state of a board LED to on or off
+ * @param	LEDNumber	: LED number to set state for
+ * @param	State		: true for on, false for off
+ * @return	None
+ */
+void Board_LED_Set(uint8_t LEDNumber, bool State);
+
+/**
+ * @brief	Returns the current state of a board LED
+ * @param	LEDNumber	: LED number to set state for
+ * @return	true if the LED is on, otherwise false
+ */
+bool Board_LED_Test(uint8_t LEDNumber);
+
+/**
+ * @brief	Toggles the current state of a board LED
+ * @param	LEDNumber	: LED number to change state for
+ * @return	None
+ */
+void Board_LED_Toggle(uint8_t LEDNumber);
+
+/**
+ * @brief Function prototype for a MS delay function. Board layers or example code may
+ *        define this function as needed.
+ */
+typedef void (*p_msDelay_func_t)(uint32_t);
+
+/* The DEBUG* functions are selected based on system configuration.
+   Code that uses the DEBUG* functions will have their I/O routed to
+   the UART, semihosting, or nowhere. */
+#if defined(DEBUG_ENABLE)
+#if defined(DEBUG_SEMIHOSTING)
+#define DEBUGINIT()
+#define DEBUGOUT(...) printf(__VA_ARGS__)
+#define DEBUGSTR(str) printf(str)
+#define DEBUGIN() (int) EOF
+
+#else
+#define DEBUGINIT() Board_Debug_Init()
+#define DEBUGOUT(...) printf(__VA_ARGS__)
+#define DEBUGSTR(str) Board_UARTPutSTR(str)
+#define DEBUGIN() Board_UARTGetChar()
+#endif /* defined(DEBUG_SEMIHOSTING) */
+
+#else
+#define DEBUGINIT()
+#define DEBUGOUT(...)
+#define DEBUGSTR(str)
+#define DEBUGIN() (int) EOF
+#endif /* defined(DEBUG_ENABLE) */
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __BOARD_API_H_ */
diff -r 000000000000 -r e0042c0c4d2d board_sysinit.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/board_sysinit.c	Tue Oct 28 12:20:47 2014 +0000
@@ -0,0 +1,97 @@
+/*
+ * @brief LPCXpresso 1347 Sysinit file
+ *
+ * @note
+ * Copyright(C) NXP Semiconductors, 2013
+ * All rights reserved.
+ *
+ * @par
+ * Software that is described herein is for illustrative purposes only
+ * which provides customers with programming information regarding the
+ * LPC products.  This software is supplied "AS IS" without any warranties of
+ * any kind, and NXP Semiconductors and its licensor disclaim any and
+ * all warranties, express or implied, including all implied warranties of
+ * merchantability, fitness for a particular purpose and non-infringement of
+ * intellectual property rights.  NXP Semiconductors assumes no responsibility
+ * or liability for the use of the software, conveys no license or rights under any
+ * patent, copyright, mask work right, or any other intellectual property rights in
+ * or to any products. NXP Semiconductors reserves the right to make changes
+ * in the software without notification. NXP Semiconductors also makes no
+ * representation or warranty that such application will be suitable for the
+ * specified use without further testing or modification.
+ *
+ * @par
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation is hereby granted, under NXP Semiconductors' and its
+ * licensor's relevant copyrights in the software, without fee, provided that it
+ * is used in conjunction with NXP Semiconductors microcontrollers.  This
+ * copyright, permission, and disclaimer notice must appear in all copies of
+ * this code.
+ */
+
+#include "board.h"
+#include "string.h"
+
+/* The System initialization code is called prior to the application and
+   initializes the board for run-time operation. Board initialization
+   includes clock setup and default pin muxing configuration. */
+
+/*****************************************************************************
+ * Private types/enumerations/variables
+ ****************************************************************************/
+
+/*****************************************************************************
+ * Public types/enumerations/variables
+ ****************************************************************************/
+
+/* Pin muxing table, only items that need changing from their default pin
+   state are in this table. */
+/*STATIC const PINMUX_GRP_T pinmuxing[] = {
+	{ 0,  3, (IOCON_FUNC1 | IOCON_RESERVED_BIT_7) }, // PIO0_3 used for USB_VBUS
+	{ 0,  4, (IOCON_FUNC1 | IOCON_SFI2C_EN) }, // PIO0_4 used for SCL 
+	{ 0,  5, (IOCON_FUNC1 | IOCON_SFI2C_EN) }, // PIO0_5 used for SDA 
+	{ 0,  6, (IOCON_FUNC1 | IOCON_RESERVED_BIT_7) }, // PIO0_6 used for USB_CONNECT 
+	{ 0, 11, (IOCON_FUNC1 | IOCON_DIGMODE_EN) }, // PIO0_11 used for GPIO 
+	{ 0, 12, (IOCON_FUNC1 | IOCON_DIGMODE_EN) }, // PIO0_12 used for GPIO 
+	{ 0, 13, (IOCON_FUNC3 | IOCON_DIGMODE_EN) }, // PIO0_13 used for CT32B1_MAT0 
+	{ 0, 14, (IOCON_FUNC1 | IOCON_DIGMODE_EN) }, // PIO0_14 used for GPIO 
+	{ 0, 10, (IOCON_FUNC1 | IOCON_RESERVED_BIT_7) }, // PIO0_10 used for GPIO 
+	{ 0, 15, (IOCON_FUNC3 | IOCON_DIGMODE_EN) }, // PIO0_15 used for CT32B1_MAT2 
+	{ 1, 13, (IOCON_FUNC3 | IOCON_RESERVED_BIT_7) }, // PIO1_13 used for TXD 
+	{ 1, 14, (IOCON_FUNC3 | IOCON_RESERVED_BIT_7) }, // PIO1_14 used for RXD 
+	{ 1, 27, (IOCON_FUNC1 | IOCON_RESERVED_BIT_7) }, // PIO1_27 used for CT32B0_MAT3 
+};*/
+
+/*****************************************************************************
+ * Private functions
+ ****************************************************************************/
+
+/*****************************************************************************
+ * Public functions
+ ****************************************************************************/
+
+/* Sets up system pin muxing */
+void Board_SetupMuxing(void)
+{
+	/* Enable IOCON clock */
+	//Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_IOCON);
+
+	//Chip_IOCON_SetPinMuxing(LPC_IOCON, pinmuxing, sizeof(pinmuxing) / sizeof(PINMUX_GRP_T));
+}
+
+/* Set up and initialize clocking prior to call to main */
+void Board_SetupClocking(void)
+{
+	//Chip_SetupXtalClocking();
+}
+
+/* Set up and initialize hardware prior to call to main */
+void Board_SystemInit(void)
+{
+	/* Booting from FLASH, so remap vector table to FLASH */
+	//Chip_SYSCTL_Map(REMAP_USER_FLASH_MODE);
+
+	/* Setup system clocking and muxing */
+	Board_SetupMuxing();
+	Board_SetupClocking();
+}