able to build and blink with metro m0

This commit is contained in:
hathach 2018-11-20 23:49:37 +07:00
parent 18f8217f4f
commit 867d3cb02d
4 changed files with 80 additions and 25 deletions

View File

@ -158,7 +158,7 @@
</folder> </folder>
<folder Name="hpl"> <folder Name="hpl">
<folder Name="core"> <folder Name="core">
<file file_name="../../../../../../../adafruit/circuitpython/thach_cp/ports/atmel-samd/asf4/samd51/hpl/core/hpl_init.c" /> <file file_name="../../../../hw/mcu/microchip/samd/asf4/samd51/hpl/core/hpl_init.c" />
</folder> </folder>
<folder Name="osc32kctrl"> <folder Name="osc32kctrl">
<file file_name="../../../../hw/mcu/microchip/samd/asf4/samd51/hpl/osc32kctrl/hpl_osc32kctrl.c" /> <file file_name="../../../../hw/mcu/microchip/samd/asf4/samd51/hpl/osc32kctrl/hpl_osc32kctrl.c" />
@ -201,22 +201,21 @@
Name="Common" Name="Common"
Placement="Flash" Placement="Flash"
Target="nRF52840_xxAA" Target="nRF52840_xxAA"
arm_architecture="v7EM" arm_architecture="v6M"
arm_core_type="Cortex-M4" arm_core_type="Cortex-M0+"
arm_endian="Little" arm_endian="Little"
arm_fp_abi="Hard" arm_fpu_type="None"
arm_fpu_type="FPv4-SP-D16"
arm_interwork="No" arm_interwork="No"
arm_linker_heap_size="1024" arm_linker_heap_size="1024"
arm_linker_process_stack_size="0" arm_linker_process_stack_size="0"
arm_linker_stack_size="1024" arm_linker_stack_size="1024"
arm_simulator_memory_simulation_parameter="RX 00000000,00080000,FFFFFFFF;RWX 20000000,00030000,CDCDCDCD" arm_simulator_memory_simulation_parameter="RX 00000000,00080000,FFFFFFFF;RWX 20000000,00030000,CDCDCDCD"
arm_target_debug_interface_type="ADIv5" arm_target_debug_interface_type="ADIv5"
arm_target_device_name="ATSAMD51J19" arm_target_device_name="ATSAMD21G18A"
arm_target_interface_type="SWD" arm_target_interface_type="SWD"
build_treat_warnings_as_errors="Yes" build_treat_warnings_as_errors="Yes"
c_preprocessor_definitions="__SAMD21G18A__;__SAMD21_FAMILY;__SAM_D21_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;CIRCUITPY_GCLK_INIT_1ST=0xffff;BOARD_METRO_M0_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD21" c_preprocessor_definitions="__SAMD21G18A__;__SAMD21_FAMILY;__SAM_D21_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;CIRCUITPY_GCLK_INIT_1ST=0xffff;BOARD_METRO_M0_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD21"
c_user_include_directories="../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk" c_user_include_directories="../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(asf4Dir)/hpl/pm"
debug_register_definition_file="ses_samd21/ATSAMD21G18A_Registers.xml" debug_register_definition_file="ses_samd21/ATSAMD21G18A_Registers.xml"
debug_target_connection="J-Link" debug_target_connection="J-Link"
gcc_entry_point="Reset_Handler" gcc_entry_point="Reset_Handler"
@ -228,7 +227,7 @@
project_directory="" project_directory=""
project_type="Executable" project_type="Executable"
target_reset_script="Reset();" target_reset_script="Reset();"
target_script_file="$(ProjectDir)/ses_samd51/SAMD51_Target.js" target_script_file="$(ProjectDir)/ses_samd21/SAMD21_Target.js"
target_trace_initialize_script="EnableTrace(&quot;$(TraceInterfaceType)&quot;)" /> target_trace_initialize_script="EnableTrace(&quot;$(TraceInterfaceType)&quot;)" />
<folder <folder
Name="tinyusb" Name="tinyusb"
@ -249,25 +248,22 @@
<folder Name="microchip"> <folder Name="microchip">
<folder Name="samd"> <folder Name="samd">
<folder Name="asf4"> <folder Name="asf4">
<folder Name="samd51"> <folder Name="samd21">
<folder Name="gcc"> <folder Name="gcc">
<file file_name="../../../../hw/mcu/microchip/samd/asf4/samd51/gcc/system_samd51.c" /> <file file_name="../../../../hw/mcu/microchip/samd/asf4/samd21/gcc/system_samd21.c" />
</folder> </folder>
<folder Name="hpl"> <folder Name="hpl">
<folder Name="core"> <folder Name="core">
<file file_name="../../../../../../../adafruit/circuitpython/thach_cp/ports/atmel-samd/asf4/samd51/hpl/core/hpl_init.c" /> <file file_name="../../../../hw/mcu/microchip/samd/asf4/samd21/hpl/core/hpl_init.c" />
</folder>
<folder Name="osc32kctrl">
<file file_name="../../../../hw/mcu/microchip/samd/asf4/samd51/hpl/osc32kctrl/hpl_osc32kctrl.c" />
</folder>
<folder Name="oscctrl">
<file file_name="../../../../hw/mcu/microchip/samd/asf4/samd51/hpl/oscctrl/hpl_oscctrl.c" />
</folder>
<folder Name="mclk">
<file file_name="../../../../hw/mcu/microchip/samd/asf4/samd51/hpl/mclk/hpl_mclk.c" />
</folder> </folder>
<folder Name="gclk"> <folder Name="gclk">
<file file_name="../../../../hw/mcu/microchip/samd/asf4/samd51/hpl/gclk/hpl_gclk.c" /> <file file_name="../../../../hw/mcu/microchip/samd/asf4/samd21/hpl/gclk/hpl_gclk.c" />
</folder>
<folder Name="pm">
<file file_name="../../../../hw/mcu/microchip/samd/asf4/samd21/hpl/pm/hpl_pm.c" />
</folder>
<folder Name="sysctrl">
<file file_name="../../../../hw/mcu/microchip/samd/asf4/samd21/hpl/sysctrl/hpl_sysctrl.c" />
</folder> </folder>
</folder> </folder>
</folder> </folder>
@ -283,7 +279,7 @@
filter="*.c;*.h" filter="*.c;*.h"
path="../src" path="../src"
recurse="Yes" /> recurse="Yes" />
<folder Name="samd21"> <folder Name="ses_samd21">
<file file_name="ses_samd21/ATSAMD21G18A_MemoryMap.xml" /> <file file_name="ses_samd21/ATSAMD21G18A_MemoryMap.xml" />
<file file_name="ses_samd21/ATSAMD21G18A_Registers.xml" /> <file file_name="ses_samd21/ATSAMD21G18A_Registers.xml" />
<file file_name="ses_samd21/ATSAMD21G18A_Vectors.s" /> <file file_name="ses_samd21/ATSAMD21G18A_Vectors.s" />

View File

@ -1,5 +1,5 @@
<!DOCTYPE Board_Memory_Definition_File> <!DOCTYPE Board_Memory_Definition_File>
<root name="ATSAMD21G18A"> <root name="ATSAMD21G18A">
<MemorySegment name="FLASH" start="0x00000000" size="0x00040000" access="ReadOnly" /> <MemorySegment name="FLASH" start="0x00002000" size="0x0003E000" access="ReadOnly" />
<MemorySegment name="RAM" start="0x20000000" size="0x00008000" access="Read/Write" /> <MemorySegment name="RAM" start="0x20000000" size="0x00008000" access="Read/Write" />
</root> </root>

View File

@ -36,12 +36,71 @@
*/ */
/**************************************************************************/ /**************************************************************************/
#include "bsp/board.h"
#include "sam.h"
#include "hal/include/hal_gpio.h"
#include "hal/include/hal_init.h"
#include "peripheral_clk_config.h"
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
#define LED_STATE_ON 1
void board_init(void) void board_init(void)
{ {
//init_mcu();
gpio_set_pin_direction(BOARD_LED0, GPIO_DIRECTION_OUT);
gpio_set_pin_level(BOARD_LED0, 1-LED_STATE_ON);
#if CFG_TUSB_OS == OPT_OS_NONE
// Tick init
SysTick_Config(SystemCoreClock/1000);
#endif
#if 0
/* USB Clock init
* The USB module requires a GCLK_USB of 48 MHz ~ 0.25% clock
* for low speed and full speed operation. */
hri_gclk_write_PCHCTRL_reg(GCLK, USB_GCLK_ID, CONF_GCLK_USB_SRC | GCLK_PCHCTRL_CHEN);
hri_mclk_set_AHBMASK_USB_bit(MCLK);
hri_mclk_set_APBBMASK_USB_bit(MCLK);
// USB Pin Init
gpio_set_pin_direction(PIN_PA24, GPIO_DIRECTION_OUT);
gpio_set_pin_level(PIN_PA24, false);
gpio_set_pin_pull_mode(PIN_PA24, GPIO_PULL_OFF);
gpio_set_pin_direction(PIN_PA25, GPIO_DIRECTION_OUT);
gpio_set_pin_level(PIN_PA25, false);
gpio_set_pin_pull_mode(PIN_PA25, GPIO_PULL_OFF);
gpio_set_pin_function(PIN_PA24, PINMUX_PA24H_USB_DM);
gpio_set_pin_function(PIN_PA25, PINMUX_PA25H_USB_DP);
#endif
} }
void board_led_control(uint32_t led_id, bool state)
{
gpio_set_pin_level(led_id, state ? LED_STATE_ON : (1-LED_STATE_ON));
}
/*------------------------------------------------------------------*/
/* TUSB HAL MILLISECOND
*------------------------------------------------------------------*/
#if CFG_TUSB_OS == OPT_OS_NONE
volatile uint32_t system_ticks = 0;
void SysTick_Handler (void)
{
system_ticks++;
}
uint32_t tusb_hal_millis(void)
{
return board_tick2ms(system_ticks);
}
#endif

View File

@ -43,7 +43,7 @@
#endif #endif
#define BOARD_LED_NUM 1 #define BOARD_LED_NUM 1
#define BOARD_LED0 13 #define BOARD_LED0 17
#ifdef __cplusplus #ifdef __cplusplus
} }