From fa796de6cdca464f35905c54c17e07ea6a493096 Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 26 Aug 2019 12:24:46 +0700 Subject: [PATCH] board_test example run with lpcxpresso51u68 --- hw/bsp/lpcxpresso51u68/board.mk | 3 +- hw/bsp/lpcxpresso51u68/lpcxpresso51u68.c | 68 +++++++++++++++++++++--- 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