diff --git a/boards.txt b/boards.txt index 1be75eaf0c..24e619702a 100644 --- a/boards.txt +++ b/boards.txt @@ -527,6 +527,15 @@ GenF1.build.series=STM32F1xx GenF1.build.cmsis_lib_gcc=arm_cortexM3l_math GenF1.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} +# BLUEPILL_F103C6 board +# Support: Serial2 (USART2 on PA3, PA2) +GenF1.menu.pnum.BLUEPILL_F103C6=BluePill F103C6 (32K) +GenF1.menu.pnum.BLUEPILL_F103C6.upload.maximum_size=32768 +GenF1.menu.pnum.BLUEPILL_F103C6.upload.maximum_data_size=10240 +GenF1.menu.pnum.BLUEPILL_F103C6.build.board=BLUEPILL_F103C6 +GenF1.menu.pnum.BLUEPILL_F103C6.build.product_line=STM32F103x6 +GenF1.menu.pnum.BLUEPILL_F103C6.build.variant=BLUEPILL_F103XX + # BLUEPILL_F103C8 board # Support: Serial2 (USART2 on PA3, PA2) and Serial3 (USART3 on PB11, PB10) GenF1.menu.pnum.BLUEPILL_F103C8=BluePill F103C8 @@ -534,14 +543,14 @@ GenF1.menu.pnum.BLUEPILL_F103C8.upload.maximum_size=65536 GenF1.menu.pnum.BLUEPILL_F103C8.upload.maximum_data_size=20480 GenF1.menu.pnum.BLUEPILL_F103C8.build.board=BLUEPILL_F103C8 GenF1.menu.pnum.BLUEPILL_F103C8.build.product_line=STM32F103xB -GenF1.menu.pnum.BLUEPILL_F103C8.build.variant=BLUEPILL_F103C8 +GenF1.menu.pnum.BLUEPILL_F103C8.build.variant=BLUEPILL_F103XX GenF1.menu.pnum.BLUEPILL_F103C8B=BluePill F103C8 (128k) GenF1.menu.pnum.BLUEPILL_F103C8B.upload.maximum_size=131072 GenF1.menu.pnum.BLUEPILL_F103C8B.upload.maximum_data_size=20480 GenF1.menu.pnum.BLUEPILL_F103C8B.build.board=BLUEPILL_F103C8 GenF1.menu.pnum.BLUEPILL_F103C8B.build.product_line=STM32F103xB -GenF1.menu.pnum.BLUEPILL_F103C8B.build.variant=BLUEPILL_F103C8 +GenF1.menu.pnum.BLUEPILL_F103C8B.build.variant=BLUEPILL_F103XX # BLACKPILL_F103C8 board # Support: Serial2 (USART2 on PA3, PA2) and Serial3 (USART3 on PB11, PB10) @@ -550,14 +559,14 @@ GenF1.menu.pnum.BLACKPILL_F103C8.upload.maximum_size=65536 GenF1.menu.pnum.BLACKPILL_F103C8.upload.maximum_data_size=20480 GenF1.menu.pnum.BLACKPILL_F103C8.build.board=BLACKPILL_F103C8 GenF1.menu.pnum.BLACKPILL_F103C8.build.product_line=STM32F103xB -GenF1.menu.pnum.BLACKPILL_F103C8.build.variant=BLUEPILL_F103C8 +GenF1.menu.pnum.BLACKPILL_F103C8.build.variant=BLUEPILL_F103XX GenF1.menu.pnum.BLACKPILL_F103C8B=BlackPill F103C8 (128k) GenF1.menu.pnum.BLACKPILL_F103C8B.upload.maximum_size=131072 GenF1.menu.pnum.BLACKPILL_F103C8B.upload.maximum_data_size=20480 GenF1.menu.pnum.BLACKPILL_F103C8B.build.board=BLACKPILL_F103C8 GenF1.menu.pnum.BLACKPILL_F103C8B.build.product_line=STM32F103xB -GenF1.menu.pnum.BLACKPILL_F103C8B.build.variant=BLUEPILL_F103C8 +GenF1.menu.pnum.BLACKPILL_F103C8B.build.variant=BLUEPILL_F103XX # MAPLEMINI_F103CB board # Support: Serial2 (USART2 on PA3, PA2) and Serial3 (USART3 on PB11, PB10) diff --git a/cores/arduino/stm32/PinAF_STM32F1.h b/cores/arduino/stm32/PinAF_STM32F1.h index 7ce42461af..d032de9a91 100644 --- a/cores/arduino/stm32/PinAF_STM32F1.h +++ b/cores/arduino/stm32/PinAF_STM32F1.h @@ -223,6 +223,7 @@ static inline void pin_SetF1AFPin(uint32_t afnum) case AFIO_USART2_DISABLE: __HAL_AFIO_REMAP_USART2_DISABLE(); break; +#if defined(AFIO_MAPR_USART3_REMAP) case AFIO_USART3_ENABLE: __HAL_AFIO_REMAP_USART3_ENABLE(); break; @@ -232,6 +233,7 @@ static inline void pin_SetF1AFPin(uint32_t afnum) case AFIO_USART3_DISABLE: __HAL_AFIO_REMAP_USART3_DISABLE(); break; +#endif case AFIO_TIM1_ENABLE: __HAL_AFIO_REMAP_TIM1_ENABLE(); break; @@ -262,12 +264,14 @@ static inline void pin_SetF1AFPin(uint32_t afnum) case AFIO_TIM3_DISABLE: __HAL_AFIO_REMAP_TIM3_DISABLE(); break; +#if defined(AFIO_MAPR_TIM4_REMAP) case AFIO_TIM4_ENABLE: __HAL_AFIO_REMAP_TIM4_ENABLE(); break; case AFIO_TIM4_DISABLE: __HAL_AFIO_REMAP_TIM4_DISABLE(); break; +#endif #if defined(AFIO_MAPR_CAN_REMAP1) case AFIO_CAN1_1: __HAL_AFIO_REMAP_CAN1_1(); diff --git a/variants/BLUEPILL_F103C8/PeripheralPins.c b/variants/BLUEPILL_F103XX/PeripheralPins.c similarity index 96% rename from variants/BLUEPILL_F103C8/PeripheralPins.c rename to variants/BLUEPILL_F103XX/PeripheralPins.c index 4126a377d1..92a9ae8bea 100644 --- a/variants/BLUEPILL_F103C8/PeripheralPins.c +++ b/variants/BLUEPILL_F103XX/PeripheralPins.c @@ -26,7 +26,7 @@ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* - * Automatically generated from STM32F103C(8-B)Tx.xml + * Automatically generated from STM32F103C(4-6)|(8-B)Tx.xml */ #include "Arduino.h" #include "PeripheralPins.h" @@ -73,7 +73,9 @@ const PinMap PinMap_ADC[] = { const PinMap PinMap_I2C_SDA[] = { {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_I2C1_ENABLE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, +#endif {NC, NP, 0} }; #endif @@ -82,7 +84,9 @@ const PinMap PinMap_I2C_SDA[] = { const PinMap PinMap_I2C_SCL[] = { {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_I2C1_ENABLE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, +#endif {NC, NP, 0} }; #endif @@ -122,10 +126,12 @@ const PinMap PinMap_PWM[] = { {PB_3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 2, 0)}, // TIM2_CH2 {PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 1, 0)}, // TIM3_CH1 {PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM3_PARTIAL, 2, 0)}, // TIM3_CH2 +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_6, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 1, 0)}, // TIM4_CH1 {PB_7, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 2, 0)}, // TIM4_CH2 {PB_8, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 3, 0)}, // TIM4_CH3 {PB_9, TIM4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE, 4, 0)}, // TIM4_CH4 +#endif // {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 3, 0)}, // TIM2_CH3 {PB_10, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_ENABLE, 3, 0)}, // TIM2_CH3 // {PB_11, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_TIM2_PARTIAL_2, 4, 0)}, // TIM2_CH4 @@ -144,7 +150,9 @@ const PinMap PinMap_UART_TX[] = { {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, {PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, {PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART1_ENABLE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, +#endif {NC, NP, 0} }; #endif @@ -154,7 +162,9 @@ const PinMap PinMap_UART_RX[] = { {PA_3, USART2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)}, {PA_10, USART1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)}, {PB_7, USART1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_USART1_ENABLE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_11, USART3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, AFIO_NONE)}, +#endif {NC, NP, 0} }; #endif @@ -163,8 +173,10 @@ const PinMap PinMap_UART_RX[] = { const PinMap PinMap_UART_RTS[] = { {PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, {PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // {PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_PARTIAL)}, +#endif {NC, NP, 0} }; #endif @@ -173,8 +185,10 @@ const PinMap PinMap_UART_RTS[] = { const PinMap PinMap_UART_CTS[] = { {PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, {PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, // {PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_USART3_PARTIAL)}, +#endif {NC, NP, 0} }; #endif @@ -185,7 +199,9 @@ const PinMap PinMap_UART_CTS[] = { const PinMap PinMap_SPI_MOSI[] = { {PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, {PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, +#endif {NC, NP, 0} }; #endif @@ -194,7 +210,9 @@ const PinMap PinMap_SPI_MOSI[] = { const PinMap PinMap_SPI_MISO[] = { {PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, {PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, +#endif {NC, NP, 0} }; #endif @@ -203,7 +221,9 @@ const PinMap PinMap_SPI_MISO[] = { const PinMap PinMap_SPI_SCLK[] = { {PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, {PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, +#endif {NC, NP, 0} }; #endif @@ -212,7 +232,9 @@ const PinMap PinMap_SPI_SCLK[] = { const PinMap PinMap_SPI_SSEL[] = { {PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, {PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_SPI1_ENABLE)}, +#ifndef ARDUINO_BLUEPILL_F103C6 {PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, AFIO_NONE)}, +#endif {NC, NP, 0} }; #endif diff --git a/variants/BLUEPILL_F103C8/PinNamesVar.h b/variants/BLUEPILL_F103XX/PinNamesVar.h similarity index 100% rename from variants/BLUEPILL_F103C8/PinNamesVar.h rename to variants/BLUEPILL_F103XX/PinNamesVar.h diff --git a/variants/BLUEPILL_F103C8/ldscript.ld b/variants/BLUEPILL_F103XX/ldscript.ld similarity index 93% rename from variants/BLUEPILL_F103C8/ldscript.ld rename to variants/BLUEPILL_F103XX/ldscript.ld index fb1183a93f..b56dad0d04 100644 --- a/variants/BLUEPILL_F103C8/ldscript.ld +++ b/variants/BLUEPILL_F103XX/ldscript.ld @@ -5,7 +5,7 @@ ** File : ldscript.ld ** ** Abstract : Linker script for STM32F103C(8-B)Tx Device with -** 64/128KByte FLASH, 20KByte RAM +** 32/64/128KByte FLASH, 10/20KByte RAM ** ** Set heap size, stack size and stack location according ** to application requirements. @@ -52,7 +52,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ -_estack = 0x20005000; /* end of RAM */ +_estack = 0x20000000 + LD_MAX_DATA_SIZE; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Stack_Size = 0x400; /* required amount of stack */ @@ -60,7 +60,7 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY { -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = LD_MAX_DATA_SIZE FLASH (rx) : ORIGIN = 0x8000000, LENGTH = LD_MAX_SIZE } diff --git a/variants/BLUEPILL_F103C8/stm32f1xx_hal_conf.h b/variants/BLUEPILL_F103XX/stm32f1xx_hal_conf.h similarity index 100% rename from variants/BLUEPILL_F103C8/stm32f1xx_hal_conf.h rename to variants/BLUEPILL_F103XX/stm32f1xx_hal_conf.h diff --git a/variants/BLUEPILL_F103C8/variant.cpp b/variants/BLUEPILL_F103XX/variant.cpp similarity index 100% rename from variants/BLUEPILL_F103C8/variant.cpp rename to variants/BLUEPILL_F103XX/variant.cpp diff --git a/variants/BLUEPILL_F103C8/variant.h b/variants/BLUEPILL_F103XX/variant.h similarity index 99% rename from variants/BLUEPILL_F103C8/variant.h rename to variants/BLUEPILL_F103XX/variant.h index af3d8ca493..061f6c5434 100644 --- a/variants/BLUEPILL_F103C8/variant.h +++ b/variants/BLUEPILL_F103XX/variant.h @@ -110,7 +110,7 @@ extern const PinName digitalPin[]; // Timer Definitions // Do not use timer used by PWM pins when possible. See PinMap_PWM. -#define TIMER_TONE TIM4 +#define TIMER_TONE TIM3 // Do not use basic timer: OC is required #define TIMER_SERVO TIM2 //TODO: advanced-control timers don't work