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/>.
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
44 void enableGPIOPowerUsageAndNoiseReductions(void)
46 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
| RCC_APB2Periph_GPIOB
| RCC_APB2Periph_GPIOC
, ENABLE
);
52 gpioInit(GPIOA
, &gpio
);
53 gpioInit(GPIOB
, &gpio
);
54 gpioInit(GPIOC
, &gpio
);
57 bool isMPUSoftReset(void)
59 if (cachedRccCsrValue
& RCC_CSR_SFTRSTF
)