From c213a1af51dff8655d23c1b66d19533ec35b5265 Mon Sep 17 00:00:00 2001 From: Marti Bolivar Date: Mon, 23 Apr 2012 13:30:00 -0400 Subject: stm32f1: stm32.h: Put MCU section first, allow overrides. Put the section defining MCU-specific values before the other sections. Surround the density-specific defines with #ifndef/#endif pairs. This allows any of the settings in the STM32F1 stm32.h to be overridden on a per-MCU basis. That's hopefully useful to e.g. people porting libmaple to STM32F100 MCUs, which have slower clocks. Signed-off-by: Marti Bolivar --- libmaple/stm32f1/include/series/stm32.h | 77 ++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/libmaple/stm32f1/include/series/stm32.h b/libmaple/stm32f1/include/series/stm32.h index 26c45a2..ed51ae5 100644 --- a/libmaple/stm32f1/include/series/stm32.h +++ b/libmaple/stm32f1/include/series/stm32.h @@ -36,6 +36,41 @@ extern "C" { #endif +#define STM32_MCU_SERIES STM32_SERIES_F1 + +/* + * MCU-specific values. + * + * You can use this section to override any of the below settings on a + * per-MCU basis. For example, if your MCU has different STM32_PCLK1 + * or STM32_PCLK2 values, you can set them here and the values for + * STM32F103 microcontrollers set below won't take effect. + */ + +#if defined(MCU_STM32F103RB) +# define STM32_NR_GPIO_PORTS 4 +# define STM32_SRAM_END ((void*)0x20005000) + +#elif defined(MCU_STM32F103ZE) +# define STM32_NR_GPIO_PORTS 7 +# define STM32_SRAM_END ((void*)0x20010000) + +#elif defined(MCU_STM32F103CB) + /* This STM32_NR_GPIO_PORTS is not stricly true, but only pins 0 + * and exist, and they're used for OSC (e.g. on e.g. LeafLabs + * Maple Mini), so we'll live with this for now. */ +# define STM32_NR_GPIO_PORTS 3 +# define STM32_SRAM_END ((void*)0x20005000) + +#elif defined(MCU_STM32F103RE) +# define STM32_NR_GPIO_PORTS 4 +# define STM32_SRAM_END ((void*)0x20010000) + +#else +#error "Unrecognized STM32F1 MCU, or no MCU specified. Add something like " \ + "-DMCU_STM32F103RB to your compiler arguments." +#endif + /* * Clock configuration. */ @@ -57,46 +92,28 @@ extern "C" { */ #ifdef STM32_MEDIUM_DENSITY +# ifndef STM32_NR_INTERRUPTS # define STM32_NR_INTERRUPTS 43 +# endif + +# ifndef STM32_HAVE_FSMC # define STM32_HAVE_FSMC 0 +# endif + #elif defined(STM32_HIGH_DENSITY) +# ifndef STM32_NR_INTERRUPTS # define STM32_NR_INTERRUPTS 60 +# endif + +# ifndef STM32_HAVE_FSMC # define STM32_HAVE_FSMC 1 +# endif + #else #error "Unsupported STM32F1 density, or no density specified. Add something " \ "like -DSTM32_MEDIUM_DENSITY to your compiler arguments." #endif -/* - * Series- and MCU-specific values. - */ - -#define STM32_MCU_SERIES STM32_SERIES_F1 - -#if defined(MCU_STM32F103RB) -# define STM32_NR_GPIO_PORTS 4 -# define STM32_SRAM_END ((void*)0x20005000) - -#elif defined(MCU_STM32F103ZE) -# define STM32_NR_GPIO_PORTS 7 -# define STM32_SRAM_END ((void*)0x20010000) - -#elif defined(MCU_STM32F103CB) - /* This STM32_NR_GPIO_PORTS is not stricly true, but only pins 0 - * and exist, and they're used for OSC (e.g. on e.g. LeafLabs - * Maple Mini), so we'll live with this for now. */ -# define STM32_NR_GPIO_PORTS 3 -# define STM32_SRAM_END ((void*)0x20005000) - -#elif defined(MCU_STM32F103RE) -# define STM32_NR_GPIO_PORTS 4 -# define STM32_SRAM_END ((void*)0x20010000) - -#else -#error "Unrecognized STM32F1 MCU, or no MCU specified. Add something like " \ - "-DMCU_STM32F103RB to your compiler arguments." -#endif - #ifdef __cplusplus } #endif -- cgit v1.2.3