Added LTDC initialization code.
continuous-integration/drone/push Build is passing Details

This commit is contained in:
imi415 2021-03-03 01:33:59 +08:00
parent 446b9220da
commit 37bfc7094a
Signed by: imi415
GPG Key ID: 17F01E106F9F5E0A
17 changed files with 649 additions and 167 deletions

View File

@ -23,10 +23,11 @@ set(C_SOURCES
"Core/Src/stm32h7xx_it.c"
"Core/Src/stm32h7xx_hal_msp.c"
"Core/Src/stm32h7xx_hal_timebase_tim.c"
"Core/Src/user_tasks.c"
"Core/Src/tasks/sdram_task.c"
"Core/Src/printf_impl.c"
"Core/Src/system_stm32h7xx.c"
"Core/Src/user_tasks.c"
"Core/Src/user_lvgl_impl.c"
"Core/Src/user_printf_impl.c"
"Core/Src/tasks/user_hello_task.c"
"Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c"
"Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c"
"Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c"
@ -51,6 +52,8 @@ set(C_SOURCES
"Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sdram.c"
"Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c"
"Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c"
"Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc.c"
"Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc_ex.c"
"Middlewares/Third_Party/FreeRTOS/Source/croutine.c"
"Middlewares/Third_Party/FreeRTOS/Source/event_groups.c"
"Middlewares/Third_Party/FreeRTOS/Source/list.c"

View File

@ -80,14 +80,14 @@ typedef int16_t lv_coord_t;
#define LV_MEM_CUSTOM 0
#if LV_MEM_CUSTOM == 0
/* Size of the memory used by `lv_mem_alloc` in bytes (>= 2kB)*/
# define LV_MEM_SIZE (32U * 1024U)
# define LV_MEM_SIZE (1024U * 1024U)
/* Compiler prefix for a big array declaration */
# define LV_MEM_ATTR
/* Set an address for the memory pool instead of allocating it as an array.
* Can be in external SRAM too. */
# define LV_MEM_ADR 0
# define LV_MEM_ADR 0xD0000000
/* Automatically defrag. on free. Defrag. means joining the adjacent free cells. */
# define LV_MEM_AUTO_DEFRAG 1
@ -192,7 +192,7 @@ typedef void * lv_group_user_data_t;
#define LV_USE_GPU_STM32_DMA2D 0
/*If enabling LV_USE_GPU_STM32_DMA2D, LV_GPU_DMA2D_CMSIS_INCLUDE must be defined to include path of CMSIS header of target processor
e.g. "stm32f769xx.h" or "stm32f429xx.h" */
#define LV_GPU_DMA2D_CMSIS_INCLUDE
#define LV_GPU_DMA2D_CMSIS_INCLUDE "stm32h750xx.h"
/*1: Use PXP for CPU off-load on NXP RTxxx platforms */
#define LV_USE_GPU_NXP_PXP 0
@ -311,7 +311,7 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i
*===============*/
/*1: Enable the log module*/
#define LV_USE_LOG 0
#define LV_USE_LOG 1
#if LV_USE_LOG
/* How important log should be added:
* LV_LOG_LEVEL_TRACE A lot of logs to give detailed information
@ -320,7 +320,7 @@ typedef void * lv_indev_drv_user_data_t; /*Type of user data in the i
* LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail
* LV_LOG_LEVEL_NONE Do not log anything
*/
# define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
# define LV_LOG_LEVEL LV_LOG_LEVEL_INFO
/* 1: Print the log with 'printf';
* 0: user need to register a callback with `lv_log_register_print_cb`*/

View File

@ -60,6 +60,8 @@ void Error_Handler(void);
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
#define LTDC_BL_Pin GPIO_PIN_13
#define LTDC_BL_GPIO_Port GPIOD
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */

View File

@ -63,7 +63,7 @@
/* #define HAL_SMBUS_MODULE_ENABLED */
/* #define HAL_IWDG_MODULE_ENABLED */
/* #define HAL_LPTIM_MODULE_ENABLED */
/* #define HAL_LTDC_MODULE_ENABLED */
#define HAL_LTDC_MODULE_ENABLED
/* #define HAL_QSPI_MODULE_ENABLED */
/* #define HAL_RNG_MODULE_ENABLED */
#define HAL_RTC_MODULE_ENABLED

View File

@ -56,10 +56,14 @@ void DebugMon_Handler(void);
void PVD_AVD_IRQHandler(void);
void FLASH_IRQHandler(void);
void RCC_IRQHandler(void);
void TIM2_IRQHandler(void);
void TIM3_IRQHandler(void);
void USART1_IRQHandler(void);
void FMC_IRQHandler(void);
void TIM7_IRQHandler(void);
void FPU_IRQHandler(void);
void LTDC_IRQHandler(void);
void LTDC_ER_IRQHandler(void);
void HSEM1_IRQHandler(void);
/* USER CODE BEGIN EFP */

10
Core/Inc/user_lvgl_impl.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef __USER_LVGL_IMPL_H
#define __USER_LVGL_IMPL_H
#include <stdint.h>
#include "lvgl.h"
void user_lvgl_impl_log_cb(lv_log_level_t level, const char *file, uint32_t line, const char *fn_name, const char *dsc);
#endif

View File

@ -5,8 +5,8 @@
void user_tasks_init(void);
extern osThreadId_t g_sdram_task_handle;
extern osThreadAttr_t g_sdram_task_attributes;
void sdram_task(void * argument);
extern osThreadId_t g_user_hello_task_handle;
extern osThreadAttr_t g_user_hello_task_attributes;
void user_hello_task(void * argument);
#endif

View File

@ -44,6 +44,8 @@
/* Private variables ---------------------------------------------------------*/
LTDC_HandleTypeDef hltdc;
RTC_HandleTypeDef hrtc;
TIM_HandleTypeDef htim2;
@ -66,6 +68,7 @@ const osThreadAttr_t defaultTask_attributes = {
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
void PeriphCommonClock_Config(void);
static void MPU_Config(void);
static void MX_GPIO_Init(void);
static void MX_RTC_Init(void);
@ -73,6 +76,7 @@ static void MX_TIM3_Init(void);
static void MX_TIM2_Init(void);
static void MX_FMC_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_LTDC_Init(void);
void StartDefaultTask(void *argument);
/* USER CODE BEGIN PFP */
@ -115,6 +119,9 @@ int main(void)
/* Configure the system clock */
SystemClock_Config();
/* Configure the peripherals common clocks */
PeriphCommonClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
@ -126,6 +133,7 @@ int main(void)
MX_TIM2_Init();
MX_FMC_Init();
MX_USART1_UART_Init();
MX_LTDC_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
@ -238,6 +246,94 @@ void SystemClock_Config(void)
HAL_RCC_EnableCSS();
}
/**
* @brief Peripherals Common Clock Configuration
* @retval None
*/
void PeriphCommonClock_Config(void)
{
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
/** Initializes the peripherals clock
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_LTDC;
PeriphClkInitStruct.PLL3.PLL3M = 25;
PeriphClkInitStruct.PLL3.PLL3N = 172;
PeriphClkInitStruct.PLL3.PLL3P = 2;
PeriphClkInitStruct.PLL3.PLL3Q = 4;
PeriphClkInitStruct.PLL3.PLL3R = 10;
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0;
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM;
PeriphClkInitStruct.PLL3.PLL3FRACN = 1762;
PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_PLL3;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
}
/**
* @brief LTDC Initialization Function
* @param None
* @retval None
*/
static void MX_LTDC_Init(void)
{
/* USER CODE BEGIN LTDC_Init 0 */
/* USER CODE END LTDC_Init 0 */
LTDC_LayerCfgTypeDef pLayerCfg = {0};
/* USER CODE BEGIN LTDC_Init 1 */
/* USER CODE END LTDC_Init 1 */
hltdc.Instance = LTDC;
hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
hltdc.Init.HorizontalSync = 19;
hltdc.Init.VerticalSync = 9;
hltdc.Init.AccumulatedHBP = 65;
hltdc.Init.AccumulatedVBP = 32;
hltdc.Init.AccumulatedActiveW = 865;
hltdc.Init.AccumulatedActiveH = 512;
hltdc.Init.TotalWidth = 1075;
hltdc.Init.TotalHeigh = 534;
hltdc.Init.Backcolor.Blue = 0;
hltdc.Init.Backcolor.Green = 0;
hltdc.Init.Backcolor.Red = 0;
if (HAL_LTDC_Init(&hltdc) != HAL_OK)
{
Error_Handler();
}
pLayerCfg.WindowX0 = 0;
pLayerCfg.WindowX1 = 799;
pLayerCfg.WindowY0 = 0;
pLayerCfg.WindowY1 = 479;
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
pLayerCfg.Alpha = 255;
pLayerCfg.Alpha0 = 255;
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
pLayerCfg.FBStartAdress = 0xD0100000;
pLayerCfg.ImageWidth = 800;
pLayerCfg.ImageHeight = 480;
pLayerCfg.Backcolor.Blue = 0;
pLayerCfg.Backcolor.Green = 0;
pLayerCfg.Backcolor.Red = 0;
if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN LTDC_Init 2 */
/* USER CODE END LTDC_Init 2 */
}
/**
* @brief RTC Initialization Function
* @param None
@ -553,10 +649,13 @@ static void MX_FMC_Init(void)
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOI_CLK_ENABLE();
__HAL_RCC_GPIOK_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOJ_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
@ -565,6 +664,16 @@ static void MX_GPIO_Init(void)
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(LTDC_BL_GPIO_Port, LTDC_BL_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : LTDC_BL_Pin */
GPIO_InitStruct.Pin = LTDC_BL_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LTDC_BL_GPIO_Port, &GPIO_InitStruct);
}
/* USER CODE BEGIN 4 */
@ -587,6 +696,9 @@ void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN 5 */
// Enable LCD backlight
HAL_GPIO_WritePin(LTDC_BL_GPIO_Port, LTDC_BL_Pin, GPIO_PIN_SET);
user_tasks_init();
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);

View File

@ -97,6 +97,159 @@ void HAL_MspInit(void)
/* USER CODE END MspInit 1 */
}
/**
* @brief LTDC MSP Initialization
* This function configures the hardware resources used in this example
* @param hltdc: LTDC handle pointer
* @retval None
*/
void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(hltdc->Instance==LTDC)
{
/* USER CODE BEGIN LTDC_MspInit 0 */
/* USER CODE END LTDC_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_LTDC_CLK_ENABLE();
__HAL_RCC_GPIOK_CLK_ENABLE();
__HAL_RCC_GPIOJ_CLK_ENABLE();
__HAL_RCC_GPIOI_CLK_ENABLE();
/**LTDC GPIO Configuration
PK5 ------> LTDC_B6
PK4 ------> LTDC_B5
PJ15 ------> LTDC_B3
PK6 ------> LTDC_B7
PK3 ------> LTDC_B4
PK7 ------> LTDC_DE
PJ14 ------> LTDC_B2
PJ12 ------> LTDC_B0
PJ13 ------> LTDC_B1
PI12 ------> LTDC_HSYNC
PI13 ------> LTDC_VSYNC
PI14 ------> LTDC_CLK
PK2 ------> LTDC_G7
PK0 ------> LTDC_G5
PK1 ------> LTDC_G6
PJ11 ------> LTDC_G4
PJ10 ------> LTDC_G3
PJ9 ------> LTDC_G2
PJ0 ------> LTDC_R1
PJ8 ------> LTDC_G1
PJ7 ------> LTDC_G0
PJ6 ------> LTDC_R7
PI15 ------> LTDC_R0
PJ1 ------> LTDC_R2
PJ5 ------> LTDC_R6
PJ2 ------> LTDC_R3
PJ3 ------> LTDC_R4
PJ4 ------> LTDC_R5
*/
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_3
|GPIO_PIN_7|GPIO_PIN_2|GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
HAL_GPIO_Init(GPIOK, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_15|GPIO_PIN_14|GPIO_PIN_12|GPIO_PIN_13
|GPIO_PIN_11|GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_0
|GPIO_PIN_8|GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_1
|GPIO_PIN_5|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
HAL_GPIO_Init(GPIOJ, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
/* LTDC interrupt Init */
HAL_NVIC_SetPriority(LTDC_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(LTDC_IRQn);
HAL_NVIC_SetPriority(LTDC_ER_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(LTDC_ER_IRQn);
/* USER CODE BEGIN LTDC_MspInit 1 */
/* USER CODE END LTDC_MspInit 1 */
}
}
/**
* @brief LTDC MSP De-Initialization
* This function freeze the hardware resources used in this example
* @param hltdc: LTDC handle pointer
* @retval None
*/
void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
{
if(hltdc->Instance==LTDC)
{
/* USER CODE BEGIN LTDC_MspDeInit 0 */
/* USER CODE END LTDC_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_LTDC_CLK_DISABLE();
/**LTDC GPIO Configuration
PK5 ------> LTDC_B6
PK4 ------> LTDC_B5
PJ15 ------> LTDC_B3
PK6 ------> LTDC_B7
PK3 ------> LTDC_B4
PK7 ------> LTDC_DE
PJ14 ------> LTDC_B2
PJ12 ------> LTDC_B0
PJ13 ------> LTDC_B1
PI12 ------> LTDC_HSYNC
PI13 ------> LTDC_VSYNC
PI14 ------> LTDC_CLK
PK2 ------> LTDC_G7
PK0 ------> LTDC_G5
PK1 ------> LTDC_G6
PJ11 ------> LTDC_G4
PJ10 ------> LTDC_G3
PJ9 ------> LTDC_G2
PJ0 ------> LTDC_R1
PJ8 ------> LTDC_G1
PJ7 ------> LTDC_G0
PJ6 ------> LTDC_R7
PI15 ------> LTDC_R0
PJ1 ------> LTDC_R2
PJ5 ------> LTDC_R6
PJ2 ------> LTDC_R3
PJ3 ------> LTDC_R4
PJ4 ------> LTDC_R5
*/
HAL_GPIO_DeInit(GPIOK, GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_3
|GPIO_PIN_7|GPIO_PIN_2|GPIO_PIN_0|GPIO_PIN_1);
HAL_GPIO_DeInit(GPIOJ, GPIO_PIN_15|GPIO_PIN_14|GPIO_PIN_12|GPIO_PIN_13
|GPIO_PIN_11|GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_0
|GPIO_PIN_8|GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_1
|GPIO_PIN_5|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4);
HAL_GPIO_DeInit(GPIOI, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
/* LTDC interrupt DeInit */
HAL_NVIC_DisableIRQ(LTDC_IRQn);
HAL_NVIC_DisableIRQ(LTDC_ER_IRQn);
/* USER CODE BEGIN LTDC_MspDeInit 1 */
/* USER CODE END LTDC_MspDeInit 1 */
}
}
/**
* @brief RTC MSP Initialization
* This function configures the hardware resources used in this example
@ -166,6 +319,9 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
/* USER CODE END TIM2_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_TIM2_CLK_ENABLE();
/* TIM2 interrupt Init */
HAL_NVIC_SetPriority(TIM2_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);
/* USER CODE BEGIN TIM2_MspInit 1 */
/* USER CODE END TIM2_MspInit 1 */
@ -249,6 +405,9 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
/* USER CODE END TIM2_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM2_CLK_DISABLE();
/* TIM2 interrupt DeInit */
HAL_NVIC_DisableIRQ(TIM2_IRQn);
/* USER CODE BEGIN TIM2_MspDeInit 1 */
/* USER CODE END TIM2_MspDeInit 1 */
@ -279,29 +438,11 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
if(huart->Instance==USART1)
{
/* USER CODE BEGIN USART1_MspInit 0 */
/* USER CODE END USART1_MspInit 0 */
/** Initializes the peripherals clock
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1;
PeriphClkInitStruct.PLL3.PLL3M = 5;
PeriphClkInitStruct.PLL3.PLL3N = 40;
PeriphClkInitStruct.PLL3.PLL3P = 2;
PeriphClkInitStruct.PLL3.PLL3Q = 4;
PeriphClkInitStruct.PLL3.PLL3R = 2;
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_2;
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOWIDE;
PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_PLL3;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
/* Peripheral clock enable */
__HAL_RCC_USART1_CLK_ENABLE();
@ -508,6 +649,9 @@ static void HAL_FMC_MspInit(void){
GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/* Peripheral interrupt init */
HAL_NVIC_SetPriority(FMC_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(FMC_IRQn);
/* USER CODE BEGIN FMC_MspInit 1 */
/* USER CODE END FMC_MspInit 1 */
@ -619,6 +763,8 @@ static void HAL_FMC_MspDeInit(void){
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0);
/* Peripheral interrupt DeInit */
HAL_NVIC_DisableIRQ(FMC_IRQn);
/* USER CODE BEGIN FMC_MspDeInit 1 */
/* USER CODE END FMC_MspDeInit 1 */

View File

@ -56,6 +56,9 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
extern SDRAM_HandleTypeDef hsdram1;
extern LTDC_HandleTypeDef hltdc;
extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim3;
extern UART_HandleTypeDef huart1;
extern TIM_HandleTypeDef htim7;
@ -204,6 +207,20 @@ void RCC_IRQHandler(void)
/* USER CODE END RCC_IRQn 1 */
}
/**
* @brief This function handles TIM2 global interrupt.
*/
void TIM2_IRQHandler(void)
{
/* USER CODE BEGIN TIM2_IRQn 0 */
/* USER CODE END TIM2_IRQn 0 */
HAL_TIM_IRQHandler(&htim2);
/* USER CODE BEGIN TIM2_IRQn 1 */
/* USER CODE END TIM2_IRQn 1 */
}
/**
* @brief This function handles TIM3 global interrupt.
*/
@ -232,6 +249,20 @@ void USART1_IRQHandler(void)
/* USER CODE END USART1_IRQn 1 */
}
/**
* @brief This function handles FMC global interrupt.
*/
void FMC_IRQHandler(void)
{
/* USER CODE BEGIN FMC_IRQn 0 */
/* USER CODE END FMC_IRQn 0 */
HAL_SDRAM_IRQHandler(&hsdram1);
/* USER CODE BEGIN FMC_IRQn 1 */
/* USER CODE END FMC_IRQn 1 */
}
/**
* @brief This function handles TIM7 global interrupt.
*/
@ -259,6 +290,34 @@ void FPU_IRQHandler(void)
/* USER CODE END FPU_IRQn 1 */
}
/**
* @brief This function handles LTDC global interrupt.
*/
void LTDC_IRQHandler(void)
{
/* USER CODE BEGIN LTDC_IRQn 0 */
/* USER CODE END LTDC_IRQn 0 */
HAL_LTDC_IRQHandler(&hltdc);
/* USER CODE BEGIN LTDC_IRQn 1 */
/* USER CODE END LTDC_IRQn 1 */
}
/**
* @brief This function handles LTDC global error interrupt.
*/
void LTDC_ER_IRQHandler(void)
{
/* USER CODE BEGIN LTDC_ER_IRQn 0 */
/* USER CODE END LTDC_ER_IRQn 0 */
HAL_LTDC_IRQHandler(&hltdc);
/* USER CODE BEGIN LTDC_ER_IRQn 1 */
/* USER CODE END LTDC_ER_IRQn 1 */
}
/**
* @brief This function handles HSEM1 global interrupt.
*/

View File

@ -1,41 +0,0 @@
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include "printf.h"
#include "user_tasks.h"
// SDRAM BANK 2, default mapping
#define SDRAM_START 0xD0000000
#define SDRAM_END 0xD4000000
osThreadId_t g_sdram_task_handle;
osThreadAttr_t g_sdram_task_attributes = {
.name = "SDRAMT",
.stack_size = 256 * 4,
.priority = (osPriority_t) osPriorityNormal,
};
void sdram_task(void * argument) {
printf("SDRAM test started...\r\n");
for(uint32_t i = SDRAM_START; i < SDRAM_END; i += 4) {
*(uint32_t *)i = i;
if(i % 0x10000 == 0) {
printf("Write: 0x%08lx\r\n", i);
}
}
for(uint32_t i = SDRAM_START; i < SDRAM_END; i += 4) {
if(*(uint32_t *)i != i) {
printf("Verify err: 0x%08lx\r\n", i);
break;
}
if(i % 0x10000 == 0) {
printf("Verify: 0x%08lx\r\n", i);
}
}
printf("SDRAM test completed.\r\n");
osThreadExit();
}

View File

@ -0,0 +1,26 @@
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include "lvgl.h"
#include "user_tasks.h"
// SDRAM BANK 2, default mapping
#define SDRAM_START 0xD0000000
#define SDRAM_END 0xD4000000
osThreadId_t g_user_hello_task_handle;
osThreadAttr_t g_user_hello_task_attributes = {
.name = "HELO",
.stack_size = 256 * 4,
.priority = (osPriority_t) osPriorityNormal,
};
void user_hello_task(void * argument) {
LV_LOG_INFO("Hello task initialized.");
for(;;) {
LV_LOG_INFO("Hello world @%ld.", osKernelGetTickCount());
osDelay(1000);
}
}

14
Core/Src/user_lvgl_impl.c Normal file
View File

@ -0,0 +1,14 @@
#include "printf.h"
#include "user_lvgl_impl.h"
void user_lvgl_impl_log_cb(lv_log_level_t level, const char *file, uint32_t line, const char *fn_name, const char *dsc) {
if(level == LV_LOG_LEVEL_ERROR) printf("\033[31m [ERROR] ");
if(level == LV_LOG_LEVEL_WARN) printf("\033[33m [ WARN] ");
if(level == LV_LOG_LEVEL_INFO) printf("\033[34m [ INFO] ");
if(level == LV_LOG_LEVEL_TRACE) printf("\033[36m [TRACE] ");
printf("%s:%d, %s(): %s", file, line, fn_name, dsc);
printf("\033[m\r\n");
}

View File

@ -1,9 +1,12 @@
#include "lvgl.h"
#include "user_lvgl_impl.h"
#include "user_tasks.h"
void user_tasks_init(void) {
lv_init();
lv_log_register_print_cb(user_lvgl_impl_log_cb);
g_sdram_task_handle = osThreadNew(sdram_task, NULL, &g_sdram_task_attributes);
g_user_hello_task_handle = osThreadNew(user_hello_task, NULL, &g_user_hello_task_attributes);
}

View File

@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.13.0-B3] date: [Sun Feb 28 20:36:12 CST 2021]
# File automatically-generated by tool: [projectgenerator] version: [3.13.0-B3] date: [Wed Mar 03 00:08:05 CST 2021]
##########################################################################################################################
# ------------------------------------------------
@ -75,7 +75,9 @@ Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_fmc.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sdram.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc_ex.c
# ASM sources
ASM_SOURCES = \

View File

@ -54,99 +54,147 @@ FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE
FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL
FREERTOS.configTOTAL_HEAP_SIZE=81920
File.Version=6
GPIO.groupedBy=
GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false
LTDC.ActiveW=800
LTDC.Alpha0_L0=255
LTDC.Alpha_L0=255
LTDC.BlendingFactor1_L0=LTDC_BLENDING_FACTOR1_PAxCA
LTDC.BlendingFactor2_L0=LTDC_BLENDING_FACTOR2_PAxCA
LTDC.FBStartAdress_L0=0xD0100000
LTDC.HBP=46
LTDC.HFP=210
LTDC.HSync=20
LTDC.IPParameters=ActiveW,HSync,HBP,HFP,VSync,VBP,VFP,Layers,WindowX1_L0,WindowY1_L0,FBStartAdress_L0,ImageWidth_L0,ImageHeight_L0,Alpha0_L0,Alpha_L0,BlendingFactor1_L0,BlendingFactor2_L0
LTDC.ImageHeight_L0=480
LTDC.ImageWidth_L0=800
LTDC.Layers=0
LTDC.VBP=23
LTDC.VFP=22
LTDC.VSync=10
LTDC.WindowX1_L0=799
LTDC.WindowY1_L0=479
Mcu.Family=STM32H7
Mcu.IP0=CORTEX_M7
Mcu.IP1=DEBUG
Mcu.IP10=USART1
Mcu.IP10=TIM3
Mcu.IP11=USART1
Mcu.IP2=FMC
Mcu.IP3=FREERTOS
Mcu.IP4=NVIC
Mcu.IP5=RCC
Mcu.IP6=RTC
Mcu.IP7=SYS
Mcu.IP8=TIM2
Mcu.IP9=TIM3
Mcu.IPNb=11
Mcu.IP4=LTDC
Mcu.IP5=NVIC
Mcu.IP6=RCC
Mcu.IP7=RTC
Mcu.IP8=SYS
Mcu.IP9=TIM2
Mcu.IPNb=12
Mcu.Name=STM32H750XBHx
Mcu.Package=TFBGA240
Mcu.Pin0=PI6
Mcu.Pin1=PI5
Mcu.Pin10=PH14
Mcu.Pin11=PC15-OSC32_OUT (OSC32_OUT)
Mcu.Pin12=PC14-OSC32_IN (OSC32_IN)
Mcu.Pin13=PE0
Mcu.Pin14=PB3 (JTDO/TRACESWO)
Mcu.Pin15=PI3
Mcu.Pin16=PA13 (JTMS/SWDIO)
Mcu.Pin17=PG15
Mcu.Pin18=PD0
Mcu.Pin19=PA10
Mcu.Pin10=PA14 (JTCK/SWCLK)
Mcu.Pin100=VP_RTC_VS_RTC_Calendar
Mcu.Pin101=VP_SYS_VS_tim7
Mcu.Pin102=VP_TIM2_VS_ClockSourceINT
Mcu.Pin103=VP_TIM3_VS_ClockSourceINT
Mcu.Pin11=PI2
Mcu.Pin12=PH15
Mcu.Pin13=PH14
Mcu.Pin14=PC15-OSC32_OUT (OSC32_OUT)
Mcu.Pin15=PC14-OSC32_IN (OSC32_IN)
Mcu.Pin16=PE0
Mcu.Pin17=PB3 (JTDO/TRACESWO)
Mcu.Pin18=PK6
Mcu.Pin19=PK3
Mcu.Pin2=PI4
Mcu.Pin20=PA9
Mcu.Pin21=PH13
Mcu.Pin22=PI9
Mcu.Pin23=PD1
Mcu.Pin24=PI10
Mcu.Pin25=PG8
Mcu.Pin26=PF2
Mcu.Pin27=PF1
Mcu.Pin28=PF0
Mcu.Pin29=PG5
Mcu.Pin3=PI1
Mcu.Pin30=PF3
Mcu.Pin31=PG4
Mcu.Pin32=PG2
Mcu.Pin33=PH1-OSC_OUT (PH1)
Mcu.Pin34=PH0-OSC_IN (PH0)
Mcu.Pin35=PF5
Mcu.Pin36=PF4
Mcu.Pin37=PC0
Mcu.Pin38=PE10
Mcu.Pin39=PF13
Mcu.Pin4=PI0
Mcu.Pin40=PF14
Mcu.Pin41=PE9
Mcu.Pin42=PE11
Mcu.Pin43=PH10
Mcu.Pin44=PH11
Mcu.Pin45=PD15
Mcu.Pin46=PD14
Mcu.Pin47=PF12
Mcu.Pin48=PF15
Mcu.Pin49=PE12
Mcu.Pin5=PI7
Mcu.Pin50=PE15
Mcu.Pin51=PH9
Mcu.Pin52=PH12
Mcu.Pin53=PB1
Mcu.Pin54=PF11
Mcu.Pin55=PG0
Mcu.Pin56=PE8
Mcu.Pin57=PE13
Mcu.Pin58=PH6
Mcu.Pin59=PH8
Mcu.Pin6=PE1
Mcu.Pin60=PD10
Mcu.Pin61=PD9
Mcu.Pin62=PA3
Mcu.Pin63=PB0
Mcu.Pin64=PG1
Mcu.Pin65=PE7
Mcu.Pin66=PE14
Mcu.Pin67=PH7
Mcu.Pin68=PD8
Mcu.Pin69=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin7=PA14 (JTCK/SWCLK)
Mcu.Pin70=VP_RTC_VS_RTC_Activate
Mcu.Pin71=VP_RTC_VS_RTC_Calendar
Mcu.Pin72=VP_SYS_VS_tim7
Mcu.Pin73=VP_TIM2_VS_ClockSourceINT
Mcu.Pin74=VP_TIM3_VS_ClockSourceINT
Mcu.Pin8=PI2
Mcu.Pin9=PH15
Mcu.PinsNb=75
Mcu.Pin20=PI3
Mcu.Pin21=PA13 (JTMS/SWDIO)
Mcu.Pin22=PG15
Mcu.Pin23=PK7
Mcu.Pin24=PJ14
Mcu.Pin25=PJ12
Mcu.Pin26=PD0
Mcu.Pin27=PA10
Mcu.Pin28=PA9
Mcu.Pin29=PH13
Mcu.Pin3=PK5
Mcu.Pin30=PI9
Mcu.Pin31=PJ13
Mcu.Pin32=PD1
Mcu.Pin33=PI10
Mcu.Pin34=PG8
Mcu.Pin35=PF2
Mcu.Pin36=PF1
Mcu.Pin37=PF0
Mcu.Pin38=PG5
Mcu.Pin39=PI12
Mcu.Pin4=PI1
Mcu.Pin40=PI13
Mcu.Pin41=PI14
Mcu.Pin42=PF3
Mcu.Pin43=PG4
Mcu.Pin44=PG2
Mcu.Pin45=PK2
Mcu.Pin46=PH1-OSC_OUT (PH1)
Mcu.Pin47=PH0-OSC_IN (PH0)
Mcu.Pin48=PF5
Mcu.Pin49=PF4
Mcu.Pin5=PI0
Mcu.Pin50=PK0
Mcu.Pin51=PK1
Mcu.Pin52=PJ11
Mcu.Pin53=PC0
Mcu.Pin54=PJ10
Mcu.Pin55=PJ9
Mcu.Pin56=PJ0
Mcu.Pin57=PE10
Mcu.Pin58=PJ8
Mcu.Pin59=PJ7
Mcu.Pin6=PI7
Mcu.Pin60=PJ6
Mcu.Pin61=PI15
Mcu.Pin62=PJ1
Mcu.Pin63=PF13
Mcu.Pin64=PF14
Mcu.Pin65=PE9
Mcu.Pin66=PE11
Mcu.Pin67=PH10
Mcu.Pin68=PH11
Mcu.Pin69=PD15
Mcu.Pin7=PE1
Mcu.Pin70=PD14
Mcu.Pin71=PF12
Mcu.Pin72=PF15
Mcu.Pin73=PE12
Mcu.Pin74=PE15
Mcu.Pin75=PJ5
Mcu.Pin76=PH9
Mcu.Pin77=PH12
Mcu.Pin78=PD13
Mcu.Pin79=PB1
Mcu.Pin8=PK4
Mcu.Pin80=PJ2
Mcu.Pin81=PF11
Mcu.Pin82=PG0
Mcu.Pin83=PE8
Mcu.Pin84=PE13
Mcu.Pin85=PH6
Mcu.Pin86=PH8
Mcu.Pin87=PD10
Mcu.Pin88=PD9
Mcu.Pin89=PA3
Mcu.Pin9=PJ15
Mcu.Pin90=PB0
Mcu.Pin91=PJ3
Mcu.Pin92=PJ4
Mcu.Pin93=PG1
Mcu.Pin94=PE7
Mcu.Pin95=PE14
Mcu.Pin96=PH7
Mcu.Pin97=PD8
Mcu.Pin98=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin99=VP_RTC_VS_RTC_Activate
Mcu.PinsNb=104
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32H750XBHx
@ -155,10 +203,13 @@ MxDb.Version=DB.6.0.20
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.FLASH_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.FMC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.FPU_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:false
NVIC.ForceEnableDMAVector=true
NVIC.HSEM1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.LTDC_ER_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.LTDC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
NVIC.PVD_AVD_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
@ -170,6 +221,7 @@ NVIC.SavedPendsvIrqHandlerGenerated=true
NVIC.SavedSvcallIrqHandlerGenerated=true
NVIC.SavedSystickIrqHandlerGenerated=true
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:true
NVIC.TIM2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.TIM3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.TIM7_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
NVIC.TimeBase=TIM7_IRQn
@ -211,6 +263,10 @@ PD1.Locked=true
PD1.Signal=FMC_D3_DA3
PD10.Locked=true
PD10.Signal=FMC_D15_DA15
PD13.GPIOParameters=GPIO_Label
PD13.GPIO_Label=LTDC_BL
PD13.Locked=true
PD13.Signal=GPIO_Output
PD14.Locked=true
PD14.Signal=FMC_D0_DA0
PD15.Locked=true
@ -311,6 +367,18 @@ PI1.Locked=true
PI1.Signal=FMC_D25
PI10.Locked=true
PI10.Signal=FMC_D31
PI12.Locked=true
PI12.Mode=RGB888
PI12.Signal=LTDC_HSYNC
PI13.Locked=true
PI13.Mode=RGB888
PI13.Signal=LTDC_VSYNC
PI14.Locked=true
PI14.Mode=RGB888
PI14.Signal=LTDC_CLK
PI15.Locked=true
PI15.Mode=RGB888
PI15.Signal=LTDC_R0
PI2.Locked=true
PI2.Signal=FMC_D26
PI3.Locked=true
@ -325,6 +393,78 @@ PI7.Locked=true
PI7.Signal=FMC_D29
PI9.Locked=true
PI9.Signal=FMC_D30
PJ0.Locked=true
PJ0.Mode=RGB888
PJ0.Signal=LTDC_R1
PJ1.Locked=true
PJ1.Mode=RGB888
PJ1.Signal=LTDC_R2
PJ10.Locked=true
PJ10.Mode=RGB888
PJ10.Signal=LTDC_G3
PJ11.Locked=true
PJ11.Mode=RGB888
PJ11.Signal=LTDC_G4
PJ12.Locked=true
PJ12.Mode=RGB888
PJ12.Signal=LTDC_B0
PJ13.Locked=true
PJ13.Mode=RGB888
PJ13.Signal=LTDC_B1
PJ14.Locked=true
PJ14.Mode=RGB888
PJ14.Signal=LTDC_B2
PJ15.Locked=true
PJ15.Mode=RGB888
PJ15.Signal=LTDC_B3
PJ2.Locked=true
PJ2.Mode=RGB888
PJ2.Signal=LTDC_R3
PJ3.Locked=true
PJ3.Mode=RGB888
PJ3.Signal=LTDC_R4
PJ4.Locked=true
PJ4.Mode=RGB888
PJ4.Signal=LTDC_R5
PJ5.Locked=true
PJ5.Mode=RGB888
PJ5.Signal=LTDC_R6
PJ6.Locked=true
PJ6.Mode=RGB888
PJ6.Signal=LTDC_R7
PJ7.Locked=true
PJ7.Mode=RGB888
PJ7.Signal=LTDC_G0
PJ8.Locked=true
PJ8.Mode=RGB888
PJ8.Signal=LTDC_G1
PJ9.Locked=true
PJ9.Mode=RGB888
PJ9.Signal=LTDC_G2
PK0.Locked=true
PK0.Mode=RGB888
PK0.Signal=LTDC_G5
PK1.Locked=true
PK1.Mode=RGB888
PK1.Signal=LTDC_G6
PK2.Locked=true
PK2.Mode=RGB888
PK2.Signal=LTDC_G7
PK3.Locked=true
PK3.Mode=RGB888
PK3.Signal=LTDC_B4
PK4.Locked=true
PK4.Mode=RGB888
PK4.Signal=LTDC_B5
PK5.Locked=true
PK5.Mode=RGB888
PK5.Signal=LTDC_B6
PK6.Locked=true
PK6.Mode=RGB888
PK6.Signal=LTDC_B7
PK7.Locked=true
PK7.Mode=RGB888
PK7.Signal=LTDC_DE
PinOutPanel.CurrentBGAView=Top
PinOutPanel.RotationAngle=0
ProjectManager.AskForMigrate=true
@ -354,7 +494,7 @@ ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=Makefile
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_RTC_Init-RTC-false-HAL-true,4-MX_TIM3_Init-TIM3-false-HAL-true,5-MX_TIM2_Init-TIM2-false-HAL-true,6-MX_FMC_Init-FMC-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_RTC_Init-RTC-false-HAL-true,4-MX_TIM3_Init-TIM3-false-HAL-true,5-MX_TIM2_Init-TIM2-false-HAL-true,6-MX_FMC_Init-FMC-false-HAL-true,7-MX_USART1_UART_Init-USART1-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
RCC.ADCFreq_Value=133000000
RCC.AHB12Freq_Value=60000000
RCC.AHB4Freq_Value=60000000
@ -372,21 +512,22 @@ RCC.DFSDMACLkFreq_Value=120000000
RCC.DFSDMFreq_Value=60000000
RCC.DIVM1=5
RCC.DIVM2=25
RCC.DIVM3=5
RCC.DIVM3=25
RCC.DIVN1=48
RCC.DIVN2=266
RCC.DIVN3=40
RCC.DIVN3=172
RCC.DIVP1Freq_Value=120000000
RCC.DIVP2Freq_Value=133000000
RCC.DIVP3Freq_Value=100000000
RCC.DIVP3Freq_Value=86107543.9453125
RCC.DIVQ1Freq_Value=120000000
RCC.DIVQ2=10
RCC.DIVQ2Freq_Value=26600000
RCC.DIVQ3=4
RCC.DIVQ3Freq_Value=50000000
RCC.DIVQ3Freq_Value=43053771.97265625
RCC.DIVR1Freq_Value=120000000
RCC.DIVR2Freq_Value=133000000
RCC.DIVR3Freq_Value=100000000
RCC.DIVR3=10
RCC.DIVR3Freq_Value=17221508.7890625
RCC.EnbaleCSS=true
RCC.FDCANFreq_Value=120000000
RCC.FMCCLockSelection=RCC_FMCCLKSOURCE_PLL2
@ -398,14 +539,15 @@ RCC.HPRE=RCC_HCLK_DIV2
RCC.HRTIMFreq_Value=60000000
RCC.I2C123Freq_Value=60000000
RCC.I2C4Freq_Value=60000000
RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,EnbaleCSS,FDCANFreq_Value,FMCCLockSelection,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HRTIMFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLLSourceVirtual,PWR_Regulator_Voltage_Scale,ProductRev,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI23Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16CLockSelection,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3,DIVR3Freq_Value,EnbaleCSS,FDCANFreq_Value,FMCCLockSelection,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HRTIMFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL3FRACN,PLLSourceVirtual,PWR_Regulator_Voltage_Scale,ProductRev,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI23Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16CLockSelection,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
RCC.LPTIM1Freq_Value=60000000
RCC.LPTIM2Freq_Value=60000000
RCC.LPTIM345Freq_Value=60000000
RCC.LPUART1Freq_Value=60000000
RCC.LTDCFreq_Value=100000000
RCC.LTDCFreq_Value=17221508.7890625
RCC.MCO1PinFreq_Value=64000000
RCC.MCO2PinFreq_Value=120000000
RCC.PLL3FRACN=1762
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
RCC.PWR_Regulator_Voltage_Scale=PWR_REGULATOR_VOLTAGE_SCALE3
RCC.ProductRev=revV
@ -428,15 +570,15 @@ RCC.Tim1OutputFreq_Value=60000000
RCC.Tim2OutputFreq_Value=60000000
RCC.TraceFreq_Value=120000000
RCC.USART16CLockSelection=RCC_USART16CLKSOURCE_PLL3
RCC.USART16Freq_Value=50000000
RCC.USART16Freq_Value=43053771.97265625
RCC.USART234578Freq_Value=60000000
RCC.USBFreq_Value=120000000
RCC.VCO1OutputFreq_Value=240000000
RCC.VCO2OutputFreq_Value=266000000
RCC.VCO3OutputFreq_Value=200000000
RCC.VCO3OutputFreq_Value=172215087.890625
RCC.VCOInput1Freq_Value=5000000
RCC.VCOInput2Freq_Value=1000000
RCC.VCOInput3Freq_Value=5000000
RCC.VCOInput3Freq_Value=1000000
SH.FMC_A0.0=FMC_A0,13b-sda1
SH.FMC_A0.ConfNb=1
SH.FMC_A1.0=FMC_A1,13b-sda1