9e44362179
Unfortunately, the crippled versions of “Bluepill” boards with STM32F103C6xx chips instead of STM32F103C8xx are now sold all over the place, sometimes advertised in a confusing way to make the difference not noticeable until too late. Add minimal support for these MCUs in the common “Bluepill with stm32duino” configuration, so that it could be possible to make something useful from those boards (although fitting QMK into the available 24 KiB of flash may be rather hard). (In fact, I'm not sure whether the “STM32” part of the chip name is actually correct for those boards of uncertain origin, so the onekey board name is `bluepill_f103c6`; another reason for that name is to match the existing `blackpill_f401` and `blackpill_f411`.) The EEPROM emulation support is not included on purpose, because enabling it without having a working firmware size check would be irresponsible with such flash size (the chance that someone would build a firmware where the EEPROM backing store ends up overlapping some firmware code is really high). Other than that, enabling the EEPROM emulation code is mostly trivial (the `wear_leveling` driver with the `embedded_flash` backing store even works without any custom configuration, although its code is significantly larger than the `vendor` driver, which may also be important for such flash size).
59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
/*
|
|
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
#include <hal.h>
|
|
|
|
/**
|
|
* @brief PAL setup.
|
|
* @details Digital I/O ports static configuration as defined in @p board.h.
|
|
* This variable is used by the HAL when initializing the PAL driver.
|
|
*/
|
|
#if HAL_USE_PAL || defined(__DOXYGEN__)
|
|
const PALConfig pal_default_config =
|
|
{
|
|
{VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
|
|
{VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
|
|
{VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
|
|
{VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
|
|
# if STM32_HAS_GPIOE
|
|
{VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
|
|
# endif
|
|
};
|
|
#endif
|
|
|
|
__attribute__((weak)) void enter_bootloader_mode_if_requested(void) {}
|
|
|
|
/*
|
|
* Early initialization code.
|
|
* This initialization must be performed just after stack setup and before
|
|
* any other initialization.
|
|
*/
|
|
void __early_init(void) {
|
|
enter_bootloader_mode_if_requested();
|
|
|
|
stm32_clock_init();
|
|
}
|
|
|
|
/*
|
|
* Board-specific initialization code.
|
|
*/
|
|
void boardInit(void) {
|
|
//JTAG-DP Disabled and SW-DP Enabled
|
|
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
|
|
//Set backup register DR10 to enter bootloader on reset
|
|
BKP->DR10 = RTC_BOOTLOADER_FLAG;
|
|
}
|