summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-08-26 12:24:46 +0700
committerhathach <[email protected]>2019-08-26 12:24:46 +0700
commitfa796de6cdca464f35905c54c17e07ea6a493096 (patch)
tree7c44c219a743797f16b44c310c38254f65caf193
parentd4895c4af604bf3abdd164a70ad3936e2048e1bc (diff)
board_test example run with lpcxpresso51u68
-rw-r--r--hw/bsp/lpcxpresso51u68/board.mk3
-rw-r--r--hw/bsp/lpcxpresso51u68/lpcxpresso51u68.c68
2 files changed, 64 insertions, 7 deletions
diff --git a/hw/bsp/lpcxpresso51u68/board.mk b/hw/bsp/lpcxpresso51u68/board.mk
index 7bb37e75c..9b1c5ac01 100644
--- a/hw/bsp/lpcxpresso51u68/board.mk
+++ b/hw/bsp/lpcxpresso51u68/board.mk
@@ -15,7 +15,8 @@ LD_FILE = hw/bsp/lpcxpresso51u68/LPC51U68_flash.ld
SRC_C += \
hw/mcu/nxp/lpcopen/lpc51u6x/system_LPC51U68.c \
hw/mcu/nxp/lpcopen/lpc51u6x/drivers/fsl_clock.c \
- hw/mcu/nxp/lpcopen/lpc51u6x/drivers/fsl_gpio.c
+ hw/mcu/nxp/lpcopen/lpc51u6x/drivers/fsl_gpio.c \
+ hw/mcu/nxp/lpcopen/lpc51u6x/drivers/fsl_reset.c
INC += \
$(TOP)/hw/mcu/nxp/lpcopen/lpc51u6x \
diff --git a/hw/bsp/lpcxpresso51u68/lpcxpresso51u68.c b/hw/bsp/lpcxpresso51u68/lpcxpresso51u68.c
index 76e159903..6d3e8e241 100644
--- a/hw/bsp/lpcxpresso51u68/lpcxpresso51u68.c
+++ b/hw/bsp/lpcxpresso51u68/lpcxpresso51u68.c
@@ -25,6 +25,7 @@
*/
#include "../board.h"
+#include "LPC51U68.h"
#include "fsl_gpio.h"
#define LED_PORT 0
@@ -37,11 +38,66 @@
void board_init(void)
{
- /* Board pin, clock, debug console init */
- /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
-// CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
- /* enable clock for GPIO*/
- CLOCK_EnableClock(kCLOCK_Gpio0);
- CLOCK_EnableClock(kCLOCK_Gpio1);
+ /* Board pin, clock, debug console init */
+ /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
+ // CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
+ /* enable clock for GPIO*/
+ CLOCK_EnableClock(kCLOCK_Gpio0);
+ CLOCK_EnableClock(kCLOCK_Gpio1);
+#if CFG_TUSB_OS == OPT_OS_NONE
+ // 1ms tick timer
+ SysTick_Config(SystemCoreClock / 1000);
+#elif CFG_TUSB_OS == OPT_OS_FREERTOS
+ // If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
+ NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
+#endif
+
+ // LED
+ gpio_pin_config_t led_config = { kGPIO_DigitalOutput, 0, };
+ GPIO_PortInit(GPIO, LED_PORT);
+ GPIO_PinInit(GPIO, LED_PORT, LED_PIN, &led_config);
+}
+
+//--------------------------------------------------------------------+
+// Board porting API
+//--------------------------------------------------------------------+
+
+void board_led_write(bool state)
+{
+ GPIO_PinWrite(GPIO, LED_PORT, LED_PIN, state ? LED_STATE_ON : (1-LED_STATE_ON));
+}
+
+uint32_t board_button_read(void)
+{
+ // active low
+// return Chip_GPIO_GetPinState(LPC_GPIO, BUTTON_PORT, BUTTON_PIN) ? 0 : 1;
+ return 0;
+}
+
+int board_uart_read(uint8_t* buf, int len)
+{
+ (void) buf;
+ (void) len;
+ return 0;
+}
+
+int board_uart_write(void const * buf, int len)
+{
+ (void) buf;
+ (void) len;
+ return 0;
+}
+
+#if CFG_TUSB_OS == OPT_OS_NONE
+volatile uint32_t system_ticks = 0;
+void SysTick_Handler (void)
+{
+ system_ticks++;
+}
+
+uint32_t board_millis(void)
+{
+ return system_ticks;
}
+#endif