1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-24 08:45:36 +03:00

Merge pull request #7382 from etracer65/prevent_msc_bootloop

Fix boot loop if mass storage mode init fails
This commit is contained in:
Michael Keller 2019-01-14 13:36:46 +13:00 committed by GitHub
commit 5c5520ecf4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 7 deletions

View file

@ -32,3 +32,4 @@ uint8_t mscStart(void);
bool mscCheckButton(void);
void mscWaitForButton(void);
void systemResetToMsc(int timezoneOffsetMinutes);
void systemResetFromMsc(void);

View file

@ -152,9 +152,7 @@ void mscWaitForButton(void)
while (true) {
asm("NOP");
if (mscCheckButton()) {
*((uint32_t *)0x2001FFF0) = 0xFFFFFFFF;
delay(1);
NVIC_SystemReset();
systemResetFromMsc();
}
}
}
@ -173,4 +171,13 @@ void systemResetToMsc(int timezoneOffsetMinutes)
#endif
NVIC_SystemReset();
}
void systemResetFromMsc(void)
{
*((uint32_t *)0x2001FFF0) = 0xFFFFFFFF;
delay(1);
__disable_irq();
NVIC_SystemReset();
}
#endif

View file

@ -157,9 +157,7 @@ void mscWaitForButton(void)
while (true) {
asm("NOP");
if (mscCheckButton()) {
*((uint32_t *)0x2001FFF0) = 0xFFFFFFFF;
delay(1);
NVIC_SystemReset();
systemResetFromMsc();
}
}
}
@ -178,4 +176,13 @@ void systemResetToMsc(int timezoneOffsetMinutes)
#endif
NVIC_SystemReset();
}
void systemResetFromMsc(void)
{
*((__IO uint32_t*) BKPSRAM_BASE + 16) = 0xFFFFFFFF;
delay(1);
__disable_irq();
NVIC_SystemReset();
}
#endif

View file

@ -447,7 +447,7 @@ void init(void)
if (mscStart() == 0) {
mscWaitForButton();
} else {
NVIC_SystemReset();
systemResetFromMsc();
}
}
#endif