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:
commit
5c5520ecf4
4 changed files with 22 additions and 7 deletions
|
@ -32,3 +32,4 @@ uint8_t mscStart(void);
|
|||
bool mscCheckButton(void);
|
||||
void mscWaitForButton(void);
|
||||
void systemResetToMsc(int timezoneOffsetMinutes);
|
||||
void systemResetFromMsc(void);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -447,7 +447,7 @@ void init(void)
|
|||
if (mscStart() == 0) {
|
||||
mscWaitForButton();
|
||||
} else {
|
||||
NVIC_SystemReset();
|
||||
systemResetFromMsc();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue