From 621d1529d6bc07a3f4bd27fb2d02d5b3161a3a6a Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 11 Sep 2018 00:08:17 -0700 Subject: [PATCH] altos/stm32f4: Add STM32F413 disco board support Discovery development board Signed-off-by: Keith Packard --- src/stm32f4-disco/Makefile | 30 ++++++++++++++++++++++++ src/stm32f4-disco/ao_disco.c | 37 ++++++++++++++++++++++++++++++ src/stm32f4-disco/ao_pins.h | 44 ++++++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 src/stm32f4-disco/Makefile create mode 100644 src/stm32f4-disco/ao_disco.c create mode 100644 src/stm32f4-disco/ao_pins.h diff --git a/src/stm32f4-disco/Makefile b/src/stm32f4-disco/Makefile new file mode 100644 index 00000000..2d912b22 --- /dev/null +++ b/src/stm32f4-disco/Makefile @@ -0,0 +1,30 @@ +include ../stm32f4/Makefile-raw.defs + +ALTOS_SRC = \ + ao_interrupt.c \ + ao_panic.c \ + ao_timer.c + +CFLAGS = $(STM32F4_CFLAGS) + +PROG=stm32f4-disco-$(VERSION) +ELF=$(PROG).elf +IHX=$(PROG).ihx + +SRC=$(ALTOS_SRC) ao_disco.c +OBJ=$(SRC:.c=.o) +MAP=$(PROG).map + +all: $(ELF) $(IHX) + +$(ELF): Makefile $(OBJ) + $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJ) -Wl,-M=$(MAP) $(LIBS) + +distclean: clean + +clean: + rm -f *.o *.elf *.ihx + +install: + +uninstall: diff --git a/src/stm32f4-disco/ao_disco.c b/src/stm32f4-disco/ao_disco.c new file mode 100644 index 00000000..efbed947 --- /dev/null +++ b/src/stm32f4-disco/ao_disco.c @@ -0,0 +1,37 @@ +/* + * Copyright © 2018 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 + * General Public License for more details. + */ + +#include + +void main(void) +{ + float x; + int r = 1; + int g = 0; + + ao_clock_init(); + + ao_timer_init(); + + ao_enable_output(LED_GREEN_PORT, LED_GREEN_PIN, 0); + ao_enable_output(LED_RED_PORT, LED_RED_PIN, 1); + for (;;) { + ao_gpio_set(LED_GREEN_PORT, LED_GREEN_PIN, g); + ao_gpio_set(LED_RED_PORT, LED_RED_PIN, r); + g ^= 1; + r ^= 1; + for (x = 0.0f; x < 100000.0f; x = x + 0.1f) + ao_arch_nop(); + } +} diff --git a/src/stm32f4-disco/ao_pins.h b/src/stm32f4-disco/ao_pins.h new file mode 100644 index 00000000..3bbace1a --- /dev/null +++ b/src/stm32f4-disco/ao_pins.h @@ -0,0 +1,44 @@ +/* + * Copyright © 2018 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 + * General Public License for more details. + */ +#ifndef _AO_PINS_H_ +#define _AO_PINS_H_ + +#define HAS_BEEP 0 + +#define B_USER_PORT (&stm_gpioa) +#define B_USER_PIN 0 + +#define LED_GREEN_PORT (&stm_gpioc) +#define LED_GREEN_PIN 5 +#define LED_RED_PORT (&stm_gpioe) +#define LED_RED_PIN 3 + +#define AO_HSE 8000000 /* fed from st/link processor */ +#define AO_HSE_BYPASS 1 /* no xtal, directly fed */ + +#define AO_PLL_M 8 /* down to 1MHz */ + +#define AO_PLL1_N 192 /* up to 192MHz */ +#define AO_PLL1_P 2 /* down to 96MHz */ +#define AO_PLL1_Q 4 /* down to 48MHz for USB and SDIO */ + +#define AO_AHB_PRESCALER 1 +#define AO_RCC_CFGR_HPRE_DIV STM_RCC_CFGR_HPRE_DIV_1 + +#define AO_APB1_PRESCALER 1 +#define AO_RCC_CFGR_PPRE1_DIV STM_RCC_CFGR_PPRE1_DIV_1 +#define AO_APB2_PRESCALER 1 +#define AO_RCC_CFGR_PPRE2_DIV STM_RCC_CFGR_PPRE2_DIV_1 + +#endif /* _AO_PINS_H_ */ -- 2.30.2