From fa75a8948f22ac46738632c46fb9c776ae721934 Mon Sep 17 00:00:00 2001 From: imi415 Date: Tue, 24 Aug 2021 20:17:44 +0800 Subject: [PATCH] Added more frequency profiles. --- Core/Inc/user_power_mgmt.h | 3 + Core/Inc/user_power_mgmt_profiles.h | 192 ++++++++++++++++++++++++++++ Core/Src/main.c | 39 ++++-- Core/Src/user_power_mgmt.c | 89 +------------ Makefile | 2 +- STM32F407ZE_MRB.ioc | 137 +++++++++++++++----- 6 files changed, 338 insertions(+), 124 deletions(-) create mode 100644 Core/Inc/user_power_mgmt_profiles.h diff --git a/Core/Inc/user_power_mgmt.h b/Core/Inc/user_power_mgmt.h index 9e5c62a..8498c62 100644 --- a/Core/Inc/user_power_mgmt.h +++ b/Core/Inc/user_power_mgmt.h @@ -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); diff --git a/Core/Inc/user_power_mgmt_profiles.h b/Core/Inc/user_power_mgmt_profiles.h new file mode 100644 index 0000000..49c39ff --- /dev/null +++ b/Core/Inc/user_power_mgmt_profiles.h @@ -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 \ No newline at end of file diff --git a/Core/Src/main.c b/Core/Src/main.c index 5644656..73e4f89 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -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 */ } diff --git a/Core/Src/user_power_mgmt.c b/Core/Src/user_power_mgmt.c index ec50ceb..9558a36 100644 --- a/Core/Src/user_power_mgmt.c +++ b/Core/Src/user_power_mgmt.c @@ -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. diff --git a/Makefile b/Makefile index 9f1b74c..8650826 100644 --- a/Makefile +++ b/Makefile @@ -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] ########################################################################################################################## # ------------------------------------------------ diff --git a/STM32F407ZE_MRB.ioc b/STM32F407ZE_MRB.ioc index 67c0620..3f95eac 100644 --- a/STM32F407ZE_MRB.ioc +++ b/STM32F407ZE_MRB.ioc @@ -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