diff --git a/Makefile b/Makefile index 7204b1d..b2149e6 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ TARGETS += lpc/lpc13xx lpc/lpc17xx #lpc/lpc43xx TARGETS += tiva/lm3s tiva/lm4f TARGETS += efm32/efm32tg efm32/efm32g efm32/efm32lg efm32/efm32gg TARGETS += vf6xx +TARGETS += sam/d # Be silent per default, but 'make V=1' will show all compiler calls. ifneq ($(V),1) diff --git a/examples/sam/d/Makefile.include b/examples/sam/d/Makefile.include new file mode 100644 index 0000000..6d54b1f --- /dev/null +++ b/examples/sam/d/Makefile.include @@ -0,0 +1,33 @@ +## +## This file is part of the libopencm3 project. +## +## This library is free software: you can redistribute it and/or modify +## it under the terms of the GNU Lesser General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public License +## along with this library. If not, see . +## + +# You should use linker script generation! Specify device! +ifeq ($(DEVICE),) +LIBNAME = opencm3_samd +DEFS += -DSAMD +FP_FLAGS ?= -msoft-float +ARCH_FLAGS = -mthumb -mcpu=cortex-m0plus $(FP_FLAGS) +endif + +################################################################################ +# OpenOCD specific variables + +OOCD ?= openocd +OOCD_INTERFACE ?= cmsis-dap +OOCD_BOARD ?= + +include ../../../../Makefile.rules diff --git a/examples/sam/d/d10-xplained-mini/miniblink/Makefile b/examples/sam/d/d10-xplained-mini/miniblink/Makefile new file mode 100644 index 0000000..9ecc382 --- /dev/null +++ b/examples/sam/d/d10-xplained-mini/miniblink/Makefile @@ -0,0 +1,22 @@ +## +## This file is part of the libopencm3 project. +## +## This library is free software: you can redistribute it and/or modify +## it under the terms of the GNU Lesser General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public License +## along with this library. If not, see . +## + +BINARY = miniblink +DEVICE = samd10d14 + +include ../../Makefile.include + diff --git a/examples/sam/d/d10-xplained-mini/miniblink/miniblink.c b/examples/sam/d/d10-xplained-mini/miniblink/miniblink.c new file mode 100644 index 0000000..f1445b4 --- /dev/null +++ b/examples/sam/d/d10-xplained-mini/miniblink/miniblink.c @@ -0,0 +1,47 @@ +/* + * This file is part of the libopencm3 project. + * + * Copyright (C) 2016 Karl Palsson + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#include +#include + +// led is on PA09 + +static void gpio_setup(void) +{ + PORT_DIR(PORTA) = (1<<9); + PORT_PINCFG(PORTA, 9) = 0; +} + +int main(void) +{ + int i, j; + + gpio_setup(); + + while (1) { + for (j = 0; j < 10; j++) { + PORT_OUTTGL(PORTA) = 1<<9; + for (i = 0; i < (5000 + (j) * 10000); i++) { /* Wait a bit. */ + __asm__("nop"); + } + } + } + + return 0; +}