Kaynağa Gözat

board_test example run with lpcxpresso51u68

hathach 6 yıl önce
ebeveyn
işleme
fa796de6cd

+ 2 - 1
hw/bsp/lpcxpresso51u68/board.mk

@@ -15,7 +15,8 @@ LD_FILE = hw/bsp/lpcxpresso51u68/LPC51U68_flash.ld
 SRC_C += \
 SRC_C += \
 	hw/mcu/nxp/lpcopen/lpc51u6x/system_LPC51U68.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_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 += \
 INC += \
 	$(TOP)/hw/mcu/nxp/lpcopen/lpc51u6x \
 	$(TOP)/hw/mcu/nxp/lpcopen/lpc51u6x \

+ 62 - 6
hw/bsp/lpcxpresso51u68/lpcxpresso51u68.c

@@ -25,6 +25,7 @@
  */
  */
 
 
 #include "../board.h"
 #include "../board.h"
+#include "LPC51U68.h"
 #include "fsl_gpio.h"
 #include "fsl_gpio.h"
 
 
 #define LED_PORT      0
 #define LED_PORT      0
@@ -37,11 +38,66 @@
 
 
 void board_init(void)
 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