[FL-3226] Deep Sleep Idle (#2569)

* Improve RNG error handling
* Sync RTC shadow registers on Stop mode exit
* Implement working STOP2 mode
* Fix formatting
* FuriHal: disable SWD pins if debug is disabled
* Power: cleanup battery info view, handle zero current report from gauge
* Fbt: add command line argument for extra global defines
* FuriHal: cleanup debug defines in power and os, drop deep_insomnia counter.
* Add a setting to disable deep sleep
* Clean up furi_hal_power
* FuriHal,FapLoader,Debug: implement debug in stop mode, workaround resume in stop
* FuriHal: document OS and power subsystems debugging
* Furi: enable debug interface on crash

---------

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
Georgii Surkov
2023-04-13 17:47:38 +03:00
committed by GitHub
parent 5d7bdca835
commit 37fb330b36
26 changed files with 246 additions and 120 deletions
@@ -63,6 +63,10 @@ void furi_hal_clock_init() {
LL_RCC_HSI_Enable();
while(!HS_CLOCK_IS_READY())
;
/* Select HSI as system clock source after Wake Up from Stop mode
* Must be set before enabling CSS */
LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI);
LL_RCC_HSE_EnableCSS();
/* LSE and LSI1 configuration and activation */
@@ -215,11 +219,14 @@ void furi_hal_clock_switch_to_hsi() {
void furi_hal_clock_switch_to_pll() {
LL_RCC_HSE_Enable();
LL_RCC_PLL_Enable();
LL_RCC_PLLSAI1_Enable();
while(!LL_RCC_HSE_IsReady())
;
while(!LL_RCC_PLL_IsReady())
;
while(!LL_RCC_PLLSAI1_IsReady())
;
LL_FLASH_SetLatency(LL_FLASH_LATENCY_3);
@@ -296,4 +303,4 @@ void furi_hal_clock_mco_disable() {
LL_RCC_MSI_Disable();
while(LL_RCC_MSI_IsReady() != 0)
;
}
}