[FL-667] Power saving: deep sleep in tickless state (#300)

* SYSTEM: tickless mode with deep sleep.
* Move FreeRTOS ticks to lptim2.
* API: move all sumbodules init routines to one place.
* Timebase: working lptim2 at tick source.
* API Timebase: lp-timer routines, timer access safe zones prediction and synchronization. 
* FreeRTOS: adjust configuration for tickless mode.
* NFC: support for tickless mode.
* API Timebase: improve tick error handling in IRQ. 
* Apploader: use insomnia mode to run applications.
* BLE: prevent sleep while core2 starting.
* HAL: nap while in insomnia mode.

Co-authored-by: coreglitch <mail@s3f.ru>
This commit is contained in:
あく
2021-01-18 18:08:58 +03:00
committed by GitHub
parent c3a8af8448
commit c8aca9ef48
44 changed files with 395 additions and 200 deletions

View File

@@ -30,7 +30,7 @@ PinOutPanel.RotationAngle=0
RCC.MCO1PinFreq_Value=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
SH.GPXTI13.0=GPIO_EXTI13
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM1Freq_Value=32768
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false
FREERTOS.configENABLE_FPU=1
NVIC.EXTI1_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true
@@ -69,7 +69,6 @@ MxDb.Version=DB.6.0.10
PB0.GPIOParameters=GPIO_Label
PA1.GPIOParameters=GPIO_Speed,PinState,GPIO_Label,GPIO_ModeDefaultOutputPP
ProjectManager.BackupPrevious=false
VP_SYS_VS_tim17.Signal=SYS_VS_tim17
PC4.GPIO_Label=CC1101_G0
FREERTOS.HEAP_NUMBER=4
RCC.LSE_Drive_Capability=RCC_LSEDRIVE_MEDIUMLOW
@@ -95,15 +94,14 @@ Mcu.Package=VFQFPN68
TIM2.Prescaler=64-1
PB1.Signal=GPXTI1
PA5.Locked=true
NVIC.TimeBase=TIM1_TRG_COM_TIM17_IRQn
SPI2.Mode=SPI_MODE_MASTER
PA2.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
SH.GPXTI11.0=GPIO_EXTI11
SH.GPXTI8.0=GPIO_EXTI8
VP_PKA_VS_PKA.Mode=PKA_Activate
PA14.Locked=true
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
SH.GPXTI8.ConfNb=1
NVIC.TimeBaseIP=TIM17
RCC.LSCOPinFreq_Value=32000
PA10.Signal=I2C1_SDA
VP_RTC_VS_RTC_Calendar.Mode=RTC_Calendar
@@ -138,12 +136,11 @@ RCC.PLLQoutputFreq_Value=64000000
ProjectManager.ProjectFileName=f4.ioc
RCC.SMPSFreq_Value=4000000
PA3.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
FREERTOS.Tasks01=defaultTask,24,1024,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;app_main,8,1024,app,As external,NULL,Dynamic,NULL,NULL
FREERTOS.Tasks01=app_main,24,1024,app,As weak,NULL,Dynamic,NULL,NULL
ADC1.Rank-0\#ChannelRegularConversion=1
PA15.GPIOParameters=GPIO_PuPd,GPIO_Label
Mcu.PinsNb=69
PC11.Locked=true
VP_SYS_VS_tim17.Mode=TIM17
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,master,EnableAnalogWatchDog1,ContinuousConvMode
PC13.Locked=true
ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
@@ -170,7 +167,7 @@ Mcu.Pin60=VP_PKA_VS_PKA
Mcu.Pin61=VP_RNG_VS_RNG
Mcu.Pin66=VP_TIM2_VS_ClockSourceINT
Mcu.Pin67=VP_TIM16_VS_ClockSourceINT
Mcu.Pin64=VP_SYS_VS_tim17
Mcu.Pin64=VP_SYS_VS_Systick
Mcu.Pin65=VP_TIM1_VS_ClockSourceINT
PD0.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PC3.GPIOParameters=GPIO_Label
@@ -332,6 +329,7 @@ PD0.GPIO_Label=CC1101_CS
PC0.GPIO_Label=PC0
PA11.Mode=Device
PB0.GPIO_Label=DISPLAY_RST
FREERTOS.configTICK_RATE_HZ=1000
VP_RTC_VS_RTC_Calendar.Signal=RTC_VS_RTC_Calendar
PB11.GPIO_PuPd=GPIO_PULLUP
PC13.GPIO_Label=BUTTON_BACK
@@ -374,7 +372,7 @@ Mcu.Pin7=PC1
Mcu.Pin8=PC2
Mcu.Pin9=PC3
OSC_OUT.Mode=HSE-External-Oscillator
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,HEAP_NUMBER,configUSE_TIMERS,configUSE_IDLE_HOOK,FootprintOK,configCHECK_FOR_STACK_OVERFLOW,configRECORD_STACK_HIGH_ADDRESS,configGENERATE_RUN_TIME_STATS,configENABLE_FPU
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,HEAP_NUMBER,configUSE_TIMERS,configUSE_IDLE_HOOK,FootprintOK,configCHECK_FOR_STACK_OVERFLOW,configRECORD_STACK_HIGH_ADDRESS,configGENERATE_RUN_TIME_STATS,configENABLE_FPU,configUSE_TICKLESS_IDLE,configENABLE_BACKWARD_COMPATIBILITY,INCLUDE_vTaskCleanUpResources,configTICK_RATE_HZ
OSC_OUT.Signal=RCC_OSC_OUT
RCC.AHBFreq_Value=64000000
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16
@@ -392,9 +390,10 @@ FREERTOS.configUSE_TIMERS=1
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PH3-BOOT0.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
Mcu.IP10=RCC
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:true
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:true\:false\:false
Mcu.IP12=RNG
Mcu.IP11=RF
FREERTOS.configENABLE_BACKWARD_COMPATIBILITY=0
Mcu.IP18=TIM2
Mcu.IP17=TIM1
NVIC.TIM1_TRG_COM_TIM17_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
@@ -422,6 +421,7 @@ PB7.Signal=USART1_RX
Mcu.IP21=USB
PB8.Locked=true
Mcu.IP20=USART1
FREERTOS.INCLUDE_vTaskCleanUpResources=1
Mcu.IP22=USB_DEVICE
PE4.Signal=GPIO_Output
PB0.Locked=true
@@ -474,6 +474,7 @@ USB_DEVICE.VirtualModeFS=Cdc_FS
PC4.GPIO_PuPd=GPIO_PULLDOWN
NVIC.SavedSvcallIrqHandlerGenerated=false
PC11.Signal=GPIO_Output
FREERTOS.configUSE_TICKLESS_IDLE=2
PC4.Signal=GPXTI4
ProjectManager.DefaultFWLocation=true
PC2.Mode=Full_Duplex_Master
@@ -504,6 +505,7 @@ RCC.HCLKRFFreq_Value=16000000
PC5.GPIOParameters=GPIO_Label
PB9.Mode=PWM Generation3 CH3N
PB2.GPIOParameters=GPIO_Label
RCC.LPTIM1CLockSelection=RCC_LPTIM1CLKSOURCE_LSE
SH.GPXTI12.ConfNb=1
PE4.Locked=true
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPhase
@@ -535,13 +537,14 @@ RCC.PLLSAI1QoutputFreq_Value=48000000
RCC.ADCFreq_Value=48000000
PC1.GPIO_Label=PC1
PA10.GPIOParameters=GPIO_Speed,GPIO_Label
VP_SYS_VS_Systick.Mode=SysTick
VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input
SH.SharedAnalog_PC5.1=ADC1_IN14,IN14-Single-Ended
OSC_OUT.Locked=true
PA4.GPIOParameters=GPIO_Label
PH3-BOOT0.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING
PB15.GPIOParameters=GPIO_Label
RCC.IPParameters=ADCFreq_Value,AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,EnableCSSLSE,EnbaleCSS,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_Drive_Capability,LSE_Timout,LSI_VALUE,MCO1PinFreq_Value,MSIOscState,PLLM,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1N,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PREFETCH_ENABLE,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGCLockSelection,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSCLockSelectionVirtual,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
RCC.IPParameters=ADCFreq_Value,AHB2CLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,Cortex2Freq_Value,CortexFreq_Value,EnableCSSLSE,EnbaleCSS,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1CLockSelection,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_Drive_Capability,LSE_Timout,LSI_VALUE,MCO1PinFreq_Value,MSIOscState,PLLM,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1N,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSourceVirtual,PREFETCH_ENABLE,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGCLockSelection,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSCLockSelectionVirtual,SMPSDivider,SMPSFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value
ProjectManager.AskForMigrate=true
Mcu.Name=STM32WB55RGVx
NVIC.SavedPendsvIrqHandlerGenerated=false