diff options
author | Marti Bolivar <mbolivar@leaflabs.com> | 2012-04-23 13:30:00 -0400 |
---|---|---|
committer | Marti Bolivar <mbolivar@leaflabs.com> | 2012-04-23 13:30:07 -0400 |
commit | c213a1af51dff8655d23c1b66d19533ec35b5265 (patch) | |
tree | a3aa8540eac6ec91cf663eda7a7ca92326e01715 /libmaple/stm32f1 | |
parent | 5fa30279b80cd9ae401f61a127a33034b241a2e8 (diff) | |
download | librambutan-c213a1af51dff8655d23c1b66d19533ec35b5265.tar.gz librambutan-c213a1af51dff8655d23c1b66d19533ec35b5265.zip |
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 <mbolivar@leaflabs.com>
Diffstat (limited to 'libmaple/stm32f1')
-rw-r--r-- | libmaple/stm32f1/include/series/stm32.h | 77 |
1 files 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 |