Added more frequency profiles.

This commit is contained in:
imi415 2021-08-24 20:17:44 +08:00
parent 1f0887e8dc
commit fa75a8948f
Signed by: imi415
GPG Key ID: 17F01E106F9F5E0A
6 changed files with 338 additions and 124 deletions

View File

@ -9,6 +9,9 @@ typedef enum {
USER_PM_VFS_MID_2,
USER_PM_VFS_LOW_1,
USER_PM_VFS_LOW_2,
USER_PM_VFS_XLOW_1,
USER_PM_VFS_XLOW_2,
USER_PM_VFS_END,
} user_pm_vfs_preset_t;
HAL_StatusTypeDef user_pm_scale_vfs(user_pm_vfs_preset_t preset);

View File

@ -0,0 +1,192 @@
#ifndef USER_POWER_MGMT_PROFILES_H
#define USER_POWER_MGMT_PROFILES_H
// C standard guarantees uninitialized parts are zeros.
static user_pm_vfs_t s_user_vfs_table[] = {
{
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSI,
.HSIState = RCC_HSI_ON,
.PLL.PLLState = RCC_PLL_NONE,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_HSI,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV1,
.APB2CLKDivider = RCC_HCLK_DIV1,
},
.Flash_Latency = FLASH_LATENCY_0,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{ // HIGH_1 = 168MHz
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 168,
.PLL.PLLP = RCC_PLLP_DIV2,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV4,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_5,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE1,
},
{ // HIGH_2 = 144MHz
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 144,
.PLL.PLLP = RCC_PLLP_DIV2,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV4,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_4,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{ // MID_1 = 84MHz
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 84,
.PLL.PLLP = RCC_PLLP_DIV2,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV2,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_2,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{ // MID_2 = 64MHz
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 64,
.PLL.PLLP = RCC_PLLP_DIV2,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV2,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_2,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{ // LOW_1 = 32MHz
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 64,
.PLL.PLLP = RCC_PLLP_DIV4,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV2,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_2,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{ // LOW_2 = 24MHz
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 72,
.PLL.PLLP = RCC_PLLP_DIV6,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV2,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_0,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{ // XLOW_1 = 8MHz
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_OFF,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_HSE,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV2,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_0,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{ // XLOW_2 = 4MHz
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_OFF,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_HSE,
.AHBCLKDivider = RCC_SYSCLK_DIV2,
.APB1CLKDivider = RCC_HCLK_DIV2,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_0,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
};
#endif

View File

@ -212,6 +212,7 @@ void SystemClock_Config(void)
{
Error_Handler();
}
HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_5);
/** Enables the Clock Security System
*/
HAL_RCC_EnableCSS();
@ -295,7 +296,7 @@ static void MX_USART1_UART_Init(void)
/* USER CODE END USART1_Init 1 */
huart1.Instance = USART1;
huart1.Init.BaudRate = 921600;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
@ -319,6 +320,7 @@ static void MX_USART1_UART_Init(void)
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
@ -329,6 +331,14 @@ static void MX_GPIO_Init(void)
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin : PC9 */
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF0_MCO;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}
/* FSMC initialization function */
@ -391,16 +401,31 @@ void _putchar(char character) {
}
static void update_frequency_profile(user_pm_vfs_preset_t profile) {
// Do not switch my context out.
taskENTER_CRITICAL();
// Scale frequency.
user_pm_scale_vfs(profile);
// STM32Cube relies on the systick timer for FreeRTOS tick, update anyway.
// A timing jitter may occur.
SysTick_Config(configCPU_CLOCK_HZ / configTICK_RATE_HZ);
// Other peripherals also needs to be updated.
HAL_UART_Init(&huart1);
taskEXIT_CRITICAL();
}
static void report_system_frequencies(void) {
printf("======== Report System Clock Frequencies ========\r\n");
printf("[%012u] SYSCLK: %012uHz\r\n", xTaskGetTickCount(), HAL_RCC_GetSysClockFreq());
printf("[%012u] HCLK: %012uHz\r\n", xTaskGetTickCount(), HAL_RCC_GetHCLKFreq());
printf("[%012u] PCLK1: %012uHz\r\n", xTaskGetTickCount(), HAL_RCC_GetPCLK1Freq());
printf("[%012u] PCLK2: %012uHz\r\n", xTaskGetTickCount(), HAL_RCC_GetPCLK2Freq());
printf("================== Report Done ==================\r\n");
}
/* USER CODE END 4 */
/* USER CODE BEGIN Header_StartDefaultTask */
@ -421,13 +446,11 @@ void StartDefaultTask(void *argument)
/* Infinite loop */
for(;;)
{
update_frequency_profile(USER_PM_VFS_HIGH_1);
printf("[%012u] Set frequency to 168MHz.\r\n", xTaskGetTickCount());
osDelay(10000);
update_frequency_profile(USER_PM_VFS_MID_1);
printf("[%012u] Set frequency to 84MHz.\r\n", xTaskGetTickCount());
osDelay(10000);
for(uint8_t i = USER_PM_VFS_SAFE + 1; i < USER_PM_VFS_END; i++) {
update_frequency_profile(i);
report_system_frequencies();
osDelay(5000);
}
}
/* USER CODE END 5 */
}

View File

@ -8,92 +8,7 @@ typedef struct {
uint32_t Voltage_Scale;
} user_pm_vfs_t;
// C standard guarantees uninitialized parts are zeros.
static user_pm_vfs_t s_user_vfs_table[] = {
{
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSI,
.HSIState = RCC_HSI_ON,
.PLL.PLLState = RCC_PLL_NONE,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_HSI,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV1,
.APB2CLKDivider = RCC_HCLK_DIV1,
},
.Flash_Latency = FLASH_LATENCY_0,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 168,
.PLL.PLLP = RCC_PLLP_DIV2,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV4,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_5,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE1,
},
{
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 144,
.PLL.PLLP = RCC_PLLP_DIV2,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV4,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_4,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
{
.RCC_OscInitStruct = {
.OscillatorType = RCC_OSCILLATORTYPE_HSE,
.HSEState = RCC_HSE_ON,
.PLL.PLLState = RCC_PLL_ON,
.PLL.PLLSource = RCC_PLLSOURCE_HSE,
.PLL.PLLM = 4,
.PLL.PLLN = 84,
.PLL.PLLP = RCC_PLLP_DIV2,
.PLL.PLLQ = 4,
},
.RCC_ClkInitStruct = {
.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2,
.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK,
.AHBCLKDivider = RCC_SYSCLK_DIV1,
.APB1CLKDivider = RCC_HCLK_DIV2,
.APB2CLKDivider = RCC_HCLK_DIV2,
},
.Flash_Latency = FLASH_LATENCY_2,
.Voltage_Scale = PWR_REGULATOR_VOLTAGE_SCALE2,
},
};
#include "user_power_mgmt_profiles.h"
static void user_pm_error_handler(void) {
while(1) {
@ -148,6 +63,8 @@ static HAL_StatusTypeDef user_pm_set_vfs_mode(user_pm_vfs_t *vfs) {
*/
HAL_StatusTypeDef user_pm_scale_vfs(user_pm_vfs_preset_t preset) {
if(preset > USER_PM_VFS_END) return HAL_ERROR;
// Transition system to a stable state.
if(user_pm_set_vfs_mode(&s_user_vfs_table[USER_PM_VFS_SAFE]) != HAL_OK) {
// Something bad happened.

View File

@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.14.1] date: [Tue Aug 24 17:01:59 CST 2021]
# File automatically-generated by tool: [projectgenerator] version: [3.14.1] date: [Tue Aug 24 20:11:46 CST 2021]
##########################################################################################################################
# ------------------------------------------------

View File

@ -55,28 +55,29 @@ Mcu.Pin33=PG2
Mcu.Pin34=PG3
Mcu.Pin35=PG4
Mcu.Pin36=PG5
Mcu.Pin37=PA9
Mcu.Pin38=PA10
Mcu.Pin39=PA13
Mcu.Pin37=PC9
Mcu.Pin38=PA9
Mcu.Pin39=PA10
Mcu.Pin4=PF2
Mcu.Pin40=PA14
Mcu.Pin41=PD0
Mcu.Pin42=PD1
Mcu.Pin43=PD4
Mcu.Pin44=PD5
Mcu.Pin45=PG10
Mcu.Pin46=PE0
Mcu.Pin47=PE1
Mcu.Pin48=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin49=VP_RTC_VS_RTC_Activate
Mcu.Pin40=PA13
Mcu.Pin41=PA14
Mcu.Pin42=PD0
Mcu.Pin43=PD1
Mcu.Pin44=PD4
Mcu.Pin45=PD5
Mcu.Pin46=PG10
Mcu.Pin47=PE0
Mcu.Pin48=PE1
Mcu.Pin49=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin5=PF3
Mcu.Pin50=VP_RTC_VS_RTC_Calendar
Mcu.Pin51=VP_SYS_VS_tim7
Mcu.Pin50=VP_RTC_VS_RTC_Activate
Mcu.Pin51=VP_RTC_VS_RTC_Calendar
Mcu.Pin52=VP_SYS_VS_tim7
Mcu.Pin6=PF4
Mcu.Pin7=PF5
Mcu.Pin8=PH0-OSC_IN
Mcu.Pin9=PH1-OSC_OUT
Mcu.PinsNb=52
Mcu.PinsNb=53
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407ZETx
@ -111,11 +112,13 @@ PC14-OSC32_IN.Mode=LSE-External-Oscillator
PC14-OSC32_IN.Signal=RCC_OSC32_IN
PC15-OSC32_OUT.Mode=LSE-External-Oscillator
PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
PC9.Mode=Clock-out-2
PC9.Signal=RCC_MCO_2
PCC.Checker=false
PCC.Line=STM32F407/417
PCC.MCU=STM32F407Z(E-G)Tx
PCC.PartNumber=STM32F407ZETx
PCC.Seq0=2
PCC.Seq0=7
PCC.Seq0.Step0.Average_Current=46 mA
PCC.Seq0.Step0.CPU_Frequency=168 MHz
PCC.Seq0.Step0.Category=In DS Table
@ -131,21 +134,96 @@ PCC.Seq0.Step0.User's_Consumption=0 mA
PCC.Seq0.Step0.Vcore=Scale1-High
PCC.Seq0.Step0.Vdd=3.3
PCC.Seq0.Step0.Voltage_Source=Battery
PCC.Seq0.Step1.Average_Current=17.48 mA
PCC.Seq0.Step1.CPU_Frequency=168 MHz
PCC.Seq0.Step1.Average_Current=31 mA
PCC.Seq0.Step1.CPU_Frequency=144 MHz
PCC.Seq0.Step1.Category=In DS Table
PCC.Seq0.Step1.DMIPS=210.0
PCC.Seq0.Step1.Duration=990 ms
PCC.Seq0.Step1.DMIPS=180.0
PCC.Seq0.Step1.Duration=10 ms
PCC.Seq0.Step1.Frequency=4 MHz
PCC.Seq0.Step1.Memory=RAM/FLASH
PCC.Seq0.Step1.Mode=SLEEP
PCC.Seq0.Step1.Memory=RAM/FLASH/ART
PCC.Seq0.Step1.Mode=RUN
PCC.Seq0.Step1.Oscillator=HSE PLL
PCC.Seq0.Step1.Peripherals=FSMC GPIOA GPIOC GPIOD GPIOE GPIOF GPIOG GPIOH RTC SYS USART1
PCC.Seq0.Step1.TaMax=102.69
PCC.Seq0.Step1.Peripherals=
PCC.Seq0.Step1.TaMax=100.91
PCC.Seq0.Step1.User's_Consumption=0 mA
PCC.Seq0.Step1.Vcore=Scale1-High
PCC.Seq0.Step1.Vcore=Scale2-Medium
PCC.Seq0.Step1.Vdd=3.3
PCC.Seq0.Step1.Voltage_Source=Battery
PCC.Seq0.Step2.Average_Current=18.8 mA
PCC.Seq0.Step2.CPU_Frequency=84000000 Hz
PCC.Seq0.Step2.Category=Interpolation
PCC.Seq0.Step2.DMIPS=105.0
PCC.Seq0.Step2.Duration=10 ms
PCC.Seq0.Step2.Frequency=4 MHz
PCC.Seq0.Step2.Memory=RAM/FLASH/ART
PCC.Seq0.Step2.Mode=RUN
PCC.Seq0.Step2.Oscillator=HSE PLL
PCC.Seq0.Step2.Peripherals=
PCC.Seq0.Step2.TaMax=102.52
PCC.Seq0.Step2.User's_Consumption=0 mA
PCC.Seq0.Step2.Vcore=Scale2-Medium
PCC.Seq0.Step2.Vdd=3.3
PCC.Seq0.Step2.Voltage_Source=Battery
PCC.Seq0.Step3.Average_Current=14.8 mA
PCC.Seq0.Step3.CPU_Frequency=64000000 Hz
PCC.Seq0.Step3.Category=Interpolation
PCC.Seq0.Step3.DMIPS=80.0
PCC.Seq0.Step3.Duration=10 ms
PCC.Seq0.Step3.Frequency=4 MHz
PCC.Seq0.Step3.Memory=RAM/FLASH/ART
PCC.Seq0.Step3.Mode=RUN
PCC.Seq0.Step3.Oscillator=HSE PLL
PCC.Seq0.Step3.Peripherals=
PCC.Seq0.Step3.TaMax=103.05
PCC.Seq0.Step3.User's_Consumption=0 mA
PCC.Seq0.Step3.Vcore=Scale2-Medium
PCC.Seq0.Step3.Vdd=3.3
PCC.Seq0.Step3.Voltage_Source=Battery
PCC.Seq0.Step4.Average_Current=8.4 mA
PCC.Seq0.Step4.CPU_Frequency=32000000 Hz
PCC.Seq0.Step4.Category=Interpolation
PCC.Seq0.Step4.DMIPS=40.0
PCC.Seq0.Step4.Duration=10 ms
PCC.Seq0.Step4.Frequency=4 MHz
PCC.Seq0.Step4.Memory=RAM/FLASH/ART
PCC.Seq0.Step4.Mode=RUN
PCC.Seq0.Step4.Oscillator=HSE PLL
PCC.Seq0.Step4.Peripherals=
PCC.Seq0.Step4.TaMax=103.89
PCC.Seq0.Step4.User's_Consumption=0 mA
PCC.Seq0.Step4.Vcore=Scale2-Medium
PCC.Seq0.Step4.Vdd=3.3
PCC.Seq0.Step4.Voltage_Source=Battery
PCC.Seq0.Step5.Average_Current=2 mA
PCC.Seq0.Step5.CPU_Frequency=2400000 Hz
PCC.Seq0.Step5.Category=Interpolation
PCC.Seq0.Step5.DMIPS=3.0
PCC.Seq0.Step5.Duration=10 ms
PCC.Seq0.Step5.Frequency=2.4 MHz
PCC.Seq0.Step5.Memory=RAM/FLASH/ART
PCC.Seq0.Step5.Mode=RUN
PCC.Seq0.Step5.Oscillator=HSE
PCC.Seq0.Step5.Peripherals=
PCC.Seq0.Step5.TaMax=104.74
PCC.Seq0.Step5.User's_Consumption=0 mA
PCC.Seq0.Step5.Vcore=Scale2-Medium
PCC.Seq0.Step5.Vdd=3.3
PCC.Seq0.Step5.Voltage_Source=Battery
PCC.Seq0.Step6.Average_Current=2 mA
PCC.Seq0.Step6.CPU_Frequency=16 MHz
PCC.Seq0.Step6.Category=In DS Table
PCC.Seq0.Step6.DMIPS=20.0
PCC.Seq0.Step6.Duration=940 ms
PCC.Seq0.Step6.Frequency=16 MHz
PCC.Seq0.Step6.Memory=RAM/FLASH
PCC.Seq0.Step6.Mode=SLEEP
PCC.Seq0.Step6.Oscillator=HSE
PCC.Seq0.Step6.Peripherals=
PCC.Seq0.Step6.TaMax=104.74
PCC.Seq0.Step6.User's_Consumption=0 mA
PCC.Seq0.Step6.Vcore=Scale2-Medium
PCC.Seq0.Step6.Vdd=3.3
PCC.Seq0.Step6.Voltage_Source=Battery
PCC.Series=STM32F4
PCC.Temperature=25
PCC.Vdd=3.3
@ -240,15 +318,16 @@ RCC.HCLKFreq_Value=168000000
RCC.HSE_VALUE=8000000
RCC.HSI_VALUE=16000000
RCC.I2SClocksFreq_Value=192000000
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EnbaleCSS,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSourceVirtual,PWR_Regulator_Voltage_Scale,RCC_RTC_Clock_Source,RCC_RTC_Clock_SourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EnbaleCSS,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLSourceVirtual,PWR_Regulator_Voltage_Scale,RCC_MCODiv2,RCC_RTC_Clock_Source,RCC_RTC_Clock_SourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
RCC.LSI_VALUE=32000
RCC.MCO2PinFreq_Value=168000000
RCC.MCO2PinFreq_Value=33600000
RCC.PLLCLKFreq_Value=168000000
RCC.PLLM=4
RCC.PLLN=168
RCC.PLLQCLKFreq_Value=84000000
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
RCC.PWR_Regulator_Voltage_Scale=PWR_REGULATOR_VOLTAGE_SCALE1
RCC.RCC_MCODiv2=RCC_MCODIV_5
RCC.RCC_RTC_Clock_Source=RCC_RTCCLKSOURCE_LSE
RCC.RCC_RTC_Clock_SourceVirtual=RCC_RTCCLKSOURCE_LSE
RCC.RTCFreq_Value=32768
@ -339,7 +418,7 @@ SH.FSMC_NOE.0=FSMC_NOE,Sram1
SH.FSMC_NOE.ConfNb=1
SH.FSMC_NWE.0=FSMC_NWE,Sram1
SH.FSMC_NWE.ConfNb=1
USART1.BaudRate=921600
USART1.BaudRate=115200
USART1.IPParameters=VirtualMode,BaudRate
USART1.VirtualMode=VM_ASYNC
VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2