Create set-home.md
[u360gts.git] / src / main / drivers / system_stm32f10x.c
blob17f3638f915bca4aea3ec3bd33bf0efb75880d87
1 /*
2 * This file is part of Cleanflight.
4 * Cleanflight is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * Cleanflight is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
18 #include <stdbool.h>
19 #include <stdint.h>
20 #include <stdlib.h>
22 #include "platform.h"
24 #include "gpio.h"
25 #include "system.h"
27 #define AIRCR_VECTKEY_MASK ((uint32_t)0x05FA0000)
29 void systemReset(void)
31 // Generate system reset
32 SCB->AIRCR = AIRCR_VECTKEY_MASK | (uint32_t)0x04;
35 void systemResetToBootloader(void) {
36 // 1FFFF000 -> 20000200 -> SP
37 // 1FFFF004 -> 1FFFF021 -> PC
39 *((uint32_t *)0x20004FF0) = 0xDEADBEEF; // 20KB STM32F103
40 systemReset();
44 void enableGPIOPowerUsageAndNoiseReductions(void)
46 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
48 gpio_config_t gpio;
50 gpio.mode = Mode_AIN;
51 gpio.pin = Pin_All;
52 gpioInit(GPIOA, &gpio);
53 gpioInit(GPIOB, &gpio);
54 gpioInit(GPIOC, &gpio);
57 bool isMPUSoftReset(void)
59 if (cachedRccCsrValue & RCC_CSR_SFTRSTF)
60 return true;
61 else
62 return false;