From f198b3377a1226f88146177fb75adf6bbf53afd2 Mon Sep 17 00:00:00 2001 From: imi415 Date: Thu, 22 Apr 2021 01:24:01 +0800 Subject: [PATCH] Use DMA mem2mem with LCD. --- CMakeLists.txt | 9 ++++ Core/Inc/main.h | 2 - Core/Inc/otm_lcd_impl.h | 6 +++ Core/Inc/stm32h7xx_hal_conf.h | 2 +- Core/Src/main.c | 75 +++++++++++++++++++++++++------ Core/Src/otm_lcd_impl.c | 16 +++++++ Core/Src/stm32h7xx_hal_msp.c | 85 ++++++++++++++++++++++++++++++++++- Core/Src/user_task_hello.c | 2 +- Core/Src/user_task_lvgl.c | 6 ++- Makefile | 6 ++- STM32H750_LCD.ioc | 76 +++++++++++++++++-------------- 11 files changed, 230 insertions(+), 55 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 161fef9..af47e03 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -169,4 +169,13 @@ add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_QSPI_FLASH.hex" add_custom_target("${CMAKE_PROJECT_NAME}_QSPI_FLASH_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_QSPI_FLASH.hex" +) + +add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_QSPI_FLASH.bin" + COMMAND ${CMAKE_OBJCOPY} "-O" "binary" "${CMAKE_PROJECT_NAME}_QSPI_FLASH.elf" "${CMAKE_PROJECT_NAME}_QSPI_FLASH.bin" + DEPENDS "${CMAKE_PROJECT_NAME}_QSPI_FLASH.elf" +) + +add_custom_target("${CMAKE_PROJECT_NAME}_QSPI_FLASH_BIN" + DEPENDS "${CMAKE_PROJECT_NAME}_QSPI_FLASH.bin" ) \ No newline at end of file diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 64b03d2..c0ea051 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -62,8 +62,6 @@ void Error_Handler(void); #define SDMMC_CD_GPIO_Port GPIOC #define LCD_BL_Pin GPIO_PIN_1 #define LCD_BL_GPIO_Port GPIOB -#define LED2_Pin GPIO_PIN_15 -#define LED2_GPIO_Port GPIOA #define LED1_Pin GPIO_PIN_11 #define LED1_GPIO_Port GPIOC /* USER CODE BEGIN Private defines */ diff --git a/Core/Inc/otm_lcd_impl.h b/Core/Inc/otm_lcd_impl.h index 75618e4..7d2a85d 100644 --- a/Core/Inc/otm_lcd_impl.h +++ b/Core/Inc/otm_lcd_impl.h @@ -1,8 +1,14 @@ #ifndef __OTM_LCD_IMPL_H #define __OTM_LCD_IMPL_H +#include "cmsis_os.h" + #include "otm8009a_lcd.h" +typedef struct { + osSemaphoreId_t dma_semphr; +} _otm_impl_t; + otm_ret_t _otm_impl_write_reg(void *handle, otm_data_t *reg, uint8_t len); otm_ret_t _otm_impl_write_data(void *handle, otm_data_t *data, uint32_t len); otm_ret_t _otm_impl_delay(void *handle, uint32_t usec); diff --git a/Core/Inc/stm32h7xx_hal_conf.h b/Core/Inc/stm32h7xx_hal_conf.h index 8e46f1c..53c1644 100644 --- a/Core/Inc/stm32h7xx_hal_conf.h +++ b/Core/Inc/stm32h7xx_hal_conf.h @@ -74,7 +74,7 @@ /* #define HAL_SPI_MODULE_ENABLED */ /* #define HAL_SWPMI_MODULE_ENABLED */ #define HAL_TIM_MODULE_ENABLED -/* #define HAL_UART_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED /* #define HAL_USART_MODULE_ENABLED */ /* #define HAL_IRDA_MODULE_ENABLED */ /* #define HAL_SMARTCARD_MODULE_ENABLED */ diff --git a/Core/Src/main.c b/Core/Src/main.c index ebb2ddb..30cd61f 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -51,6 +51,8 @@ RTC_HandleTypeDef hrtc; SD_HandleTypeDef hsd2; +UART_HandleTypeDef huart1; + DMA_HandleTypeDef hdma_memtomem_dma1_stream0; SRAM_HandleTypeDef hsram1; @@ -75,6 +77,7 @@ static void MX_FMC_Init(void); static void MX_QUADSPI_Init(void); static void MX_RTC_Init(void); static void MX_SDMMC2_SD_Init(void); +static void MX_USART1_UART_Init(void); void StartDefaultTask(void *argument); /* USER CODE BEGIN PFP */ @@ -137,6 +140,7 @@ int main(void) MX_RTC_Init(); MX_SDMMC2_SD_Init(); MX_FATFS_Init(); + MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ @@ -204,15 +208,22 @@ void SystemClock_Config(void) __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} + /** Configure LSE Drive Capability + */ + HAL_PWR_EnableBkUpAccess(); + __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); + /** Macro to configure the PLL clock source + */ + __HAL_RCC_PLL_PLLSOURCE_CONFIG(RCC_PLLSOURCE_HSE); /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI - |RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE + |RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.HSIState = RCC_HSI_DIV1; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - RCC_OscInitStruct.LSIState = RCC_LSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 8; @@ -395,6 +406,54 @@ static void MX_SDMMC2_SD_Init(void) } +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 921600; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1; + huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) + { + Error_Handler(); + } + if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + /** * Enable DMA controller clock * Configure DMA for memory to memory transfers @@ -506,9 +565,6 @@ static void MX_GPIO_Init(void) /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(LCD_BL_GPIO_Port, LCD_BL_Pin, GPIO_PIN_RESET); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); - /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); @@ -525,13 +581,6 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(LCD_BL_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pin : LED2_Pin */ - GPIO_InitStruct.Pin = LED2_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(LED2_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pin : LED1_Pin */ GPIO_InitStruct.Pin = LED1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; diff --git a/Core/Src/otm_lcd_impl.c b/Core/Src/otm_lcd_impl.c index dca0294..06cd1d2 100644 --- a/Core/Src/otm_lcd_impl.c +++ b/Core/Src/otm_lcd_impl.c @@ -6,6 +6,20 @@ #define LCD_REGISTER_ADDR 0x60000000 #define LCD_DATA_ADDR 0x60020000 +static void _otm_dma_transfer_complete(DMA_HandleTypeDef *DmaHandle) { + //osSemaphoreRelease(DmaHandle->); +} + +static void _otm_dma_transfer_error(DMA_HandleTypeDef *DmaHandle) { + // osSemaphoreGive +} + +void _otm_impl_init(void *handle) { + _otm_impl_t *impl = handle; + + impl->dma_semphr = osSemaphoreNew(1, 0, NULL); +} + otm_ret_t _otm_impl_write_reg(void *handle, otm_data_t *reg, uint8_t len) { *(uint16_t *)LCD_REGISTER_ADDR = *reg; for(uint8_t i = 1; i < len; i++) { @@ -20,6 +34,8 @@ otm_ret_t _otm_impl_write_data(void *handle, otm_data_t *data, uint32_t len) { *(uint16_t *)LCD_DATA_ADDR = data[i]; } + //HAL_DMA_RegisterCallback() + return OTM_OK; } diff --git a/Core/Src/stm32h7xx_hal_msp.c b/Core/Src/stm32h7xx_hal_msp.c index ba255f5..9e4e538 100644 --- a/Core/Src/stm32h7xx_hal_msp.c +++ b/Core/Src/stm32h7xx_hal_msp.c @@ -230,7 +230,7 @@ void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc) /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; - PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI; + PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); @@ -365,6 +365,89 @@ void HAL_SD_MspDeInit(SD_HandleTypeDef* hsd) } +/** +* @brief UART MSP Initialization +* This function configures the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +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.PLL2.PLL2M = 8; + PeriphClkInitStruct.PLL2.PLL2N = 150; + PeriphClkInitStruct.PLL2.PLL2P = 2; + PeriphClkInitStruct.PLL2.PLL2Q = 3; + PeriphClkInitStruct.PLL2.PLL2R = 2; + PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_0; + PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOMEDIUM; + PeriphClkInitStruct.PLL2.PLL2FRACN = 0; + PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_PLL2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /* Peripheral clock enable */ + __HAL_RCC_USART1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF7_USART1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART1_MspInit 1 */ + + /* USER CODE END USART1_MspInit 1 */ + } + +} + +/** +* @brief UART MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) +{ + if(huart->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspDeInit 0 */ + + /* USER CODE END USART1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART1_CLK_DISABLE(); + + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); + + /* USER CODE BEGIN USART1_MspDeInit 1 */ + + /* USER CODE END USART1_MspDeInit 1 */ + } + +} + static uint32_t FMC_Initialized = 0; static void HAL_FMC_MspInit(void){ diff --git a/Core/Src/user_task_hello.c b/Core/Src/user_task_hello.c index 8288dff..3fb3a1d 100644 --- a/Core/Src/user_task_hello.c +++ b/Core/Src/user_task_hello.c @@ -1,4 +1,4 @@ -#include "cmsis_os2.h" +#include "cmsis_os.h" #include "fatfs.h" diff --git a/Core/Src/user_task_lvgl.c b/Core/Src/user_task_lvgl.c index bc0d976..8baf6c6 100644 --- a/Core/Src/user_task_lvgl.c +++ b/Core/Src/user_task_lvgl.c @@ -1,4 +1,4 @@ -#include "cmsis_os2.h" +#include "cmsis_os.h" #include "main.h" #include "fatfs.h" @@ -31,6 +31,8 @@ osSemaphoreId_t g_lvgl_semaphore; lv_disp_buf_t g_disp_buf; lv_color_t g_disp_buf_array[DISP_BUF_SIZE]; +_otm_impl_t g_lcd_impl; + otm_t g_lcd = { .cb = { .delay_cb = _otm_impl_delay, @@ -38,7 +40,7 @@ otm_t g_lcd = { .write_reg_cb = _otm_impl_write_reg, .backlight_cb = _otm_impl_backlight }, - .user_data = NULL + .user_data = &g_lcd_impl }; void lvgl_tick_thread(void *parameters); diff --git a/Makefile b/Makefile index 74e330b..b35a9c6 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [3.13.0-B3] date: [Sat Apr 17 23:48:08 CST 2021] +# File automatically-generated by tool: [projectgenerator] version: [3.13.0-B3] date: [Thu Apr 22 00:41:45 CST 2021] ########################################################################################################################## # ------------------------------------------------ @@ -205,7 +205,9 @@ Middlewares/Third_Party/FatFs/src/ff.c \ Middlewares/Third_Party/FatFs/src/ff_gen_drv.c \ Middlewares/Third_Party/FatFs/src/option/syscall.c \ Middlewares/Third_Party/FatFs/src/option/cc932.c \ -FATFS/Target/fatfs_platform.c +FATFS/Target/fatfs_platform.c \ +Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c \ +Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c # ASM sources ASM_SOURCES = \ diff --git a/STM32H750_LCD.ioc b/STM32H750_LCD.ioc index 799000f..840ba51 100644 --- a/STM32H750_LCD.ioc +++ b/STM32H750_LCD.ioc @@ -109,6 +109,7 @@ Mcu.IP0=CORTEX_M7 Mcu.IP1=DEBUG Mcu.IP10=SDMMC2 Mcu.IP11=SYS +Mcu.IP12=USART1 Mcu.IP2=DMA Mcu.IP3=FATFS Mcu.IP4=FMC @@ -117,7 +118,7 @@ Mcu.IP6=NVIC Mcu.IP7=QUADSPI Mcu.IP8=RCC Mcu.IP9=RTC -Mcu.IPNb=12 +Mcu.IPNb=13 Mcu.Name=STM32H750VBTx Mcu.Package=LQFP100 Mcu.Pin0=PE2 @@ -142,32 +143,33 @@ Mcu.Pin25=PD14 Mcu.Pin26=PD15 Mcu.Pin27=PC7 Mcu.Pin28=PC9 -Mcu.Pin29=PA13 (JTMS/SWDIO) +Mcu.Pin29=PA9 Mcu.Pin3=PC15-OSC32_OUT (OSC32_OUT) -Mcu.Pin30=PA14 (JTCK/SWCLK) -Mcu.Pin31=PA15 (JTDI) -Mcu.Pin32=PC10 -Mcu.Pin33=PC11 -Mcu.Pin34=PD0 -Mcu.Pin35=PD1 -Mcu.Pin36=PD4 -Mcu.Pin37=PD5 -Mcu.Pin38=PD6 -Mcu.Pin39=PD7 +Mcu.Pin30=PA10 +Mcu.Pin31=PA13 (JTMS/SWDIO) +Mcu.Pin32=PA14 (JTCK/SWCLK) +Mcu.Pin33=PC10 +Mcu.Pin34=PC11 +Mcu.Pin35=PD0 +Mcu.Pin36=PD1 +Mcu.Pin37=PD4 +Mcu.Pin38=PD5 +Mcu.Pin39=PD6 Mcu.Pin4=PH0-OSC_IN (PH0) -Mcu.Pin40=PB3 (JTDO/TRACESWO) -Mcu.Pin41=PB4 (NJTRST) -Mcu.Pin42=VP_FATFS_VS_SDIO -Mcu.Pin43=VP_FREERTOS_VS_CMSIS_V2 -Mcu.Pin44=VP_RTC_VS_RTC_Activate -Mcu.Pin45=VP_RTC_VS_RTC_Calendar -Mcu.Pin46=VP_SYS_VS_tim6 +Mcu.Pin40=PD7 +Mcu.Pin41=PB3 (JTDO/TRACESWO) +Mcu.Pin42=PB4 (NJTRST) +Mcu.Pin43=VP_FATFS_VS_SDIO +Mcu.Pin44=VP_FREERTOS_VS_CMSIS_V2 +Mcu.Pin45=VP_RTC_VS_RTC_Activate +Mcu.Pin46=VP_RTC_VS_RTC_Calendar +Mcu.Pin47=VP_SYS_VS_tim6 Mcu.Pin5=PH1-OSC_OUT (PH1) Mcu.Pin6=PA1 Mcu.Pin7=PB1 Mcu.Pin8=PB2 Mcu.Pin9=PE7 -Mcu.PinsNb=47 +Mcu.PinsNb=48 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32H750VBTx @@ -200,14 +202,14 @@ NVIC.TimeBaseIP=TIM6 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false PA1.Mode=Single Bank 1 PA1.Signal=QUADSPI_BK1_IO3 +PA10.Mode=Asynchronous +PA10.Signal=USART1_RX PA13\ (JTMS/SWDIO).Mode=Serial_Wire PA13\ (JTMS/SWDIO).Signal=DEBUG_JTMS-SWDIO PA14\ (JTCK/SWCLK).Mode=Serial_Wire PA14\ (JTCK/SWCLK).Signal=DEBUG_JTCK-SWCLK -PA15\ (JTDI).GPIOParameters=GPIO_Label -PA15\ (JTDI).GPIO_Label=LED2 -PA15\ (JTDI).Locked=true -PA15\ (JTDI).Signal=GPIO_Output +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX PB1.GPIOParameters=PinState,GPIO_Label PB1.GPIO_Label=LCD_BL PB1.Locked=true @@ -306,7 +308,7 @@ ProjectManager.TargetToolchain=Makefile ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=false ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_FMC_Init-FMC-false-HAL-true,5-MX_QUADSPI_Init-QUADSPI-false-HAL-true,6-MX_RTC_Init-RTC-false-HAL-true,7-MX_SDMMC2_SD_Init-SDMMC2-false-HAL-true,8-MX_FATFS_Init-FATFS-false-HAL-false,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true -RCC.ADCFreq_Value=16125000 +RCC.ADCFreq_Value=75000000 RCC.AHB12Freq_Value=84000000 RCC.AHB4Freq_Value=84000000 RCC.APB1Freq_Value=84000000 @@ -322,16 +324,19 @@ RCC.D1CPREFreq_Value=168000000 RCC.DFSDMACLkFreq_Value=84000000 RCC.DFSDMFreq_Value=84000000 RCC.DIVM1=8 +RCC.DIVM2=8 RCC.DIVN1=336 +RCC.DIVN2=150 RCC.DIVP1Freq_Value=168000000 -RCC.DIVP2Freq_Value=16125000 +RCC.DIVP2Freq_Value=75000000 RCC.DIVP3Freq_Value=16125000 RCC.DIVQ1=4 RCC.DIVQ1Freq_Value=84000000 -RCC.DIVQ2Freq_Value=16125000 +RCC.DIVQ2=3 +RCC.DIVQ2Freq_Value=50000000 RCC.DIVQ3Freq_Value=16125000 RCC.DIVR1Freq_Value=168000000 -RCC.DIVR2Freq_Value=16125000 +RCC.DIVR2Freq_Value=75000000 RCC.DIVR3Freq_Value=16125000 RCC.EnbaleCSS=true RCC.FDCANFreq_Value=84000000 @@ -345,7 +350,7 @@ RCC.HRTIMFreq_Value=84000000 RCC.HSE_VALUE=8000000 RCC.I2C123Freq_Value=84000000 RCC.I2C4Freq_Value=84000000 -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,DIVN1,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,EnbaleCSS,FDCANFreq_Value,FMCCLockSelection,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HRTIMFreq_Value,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLLSourceVirtual,QSPICLockSelection,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,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,DIVN1,DIVN2,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,EnbaleCSS,FDCANFreq_Value,FMCCLockSelection,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HRTIMFreq_Value,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLLSourceVirtual,QSPICLockSelection,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,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=84000000 RCC.LPTIM2Freq_Value=84000000 RCC.LPTIM345Freq_Value=84000000 @@ -357,7 +362,8 @@ RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE RCC.QSPICLockSelection=RCC_QSPICLKSOURCE_CLKP RCC.QSPIFreq_Value=64000000 RCC.RNGFreq_Value=48000000 -RCC.RTCFreq_Value=32000 +RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE +RCC.RTCFreq_Value=32768 RCC.SAI1Freq_Value=84000000 RCC.SAI23Freq_Value=84000000 RCC.SAI4AFreq_Value=84000000 @@ -373,14 +379,15 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK RCC.Tim1OutputFreq_Value=84000000 RCC.Tim2OutputFreq_Value=84000000 RCC.TraceFreq_Value=168000000 -RCC.USART16Freq_Value=84000000 +RCC.USART16CLockSelection=RCC_USART16CLKSOURCE_PLL2 +RCC.USART16Freq_Value=50000000 RCC.USART234578Freq_Value=84000000 RCC.USBFreq_Value=84000000 RCC.VCO1OutputFreq_Value=336000000 -RCC.VCO2OutputFreq_Value=32250000 +RCC.VCO2OutputFreq_Value=150000000 RCC.VCO3OutputFreq_Value=32250000 RCC.VCOInput1Freq_Value=1000000 -RCC.VCOInput2Freq_Value=250000 +RCC.VCOInput2Freq_Value=1000000 RCC.VCOInput3Freq_Value=250000 SH.FMC_A16_CLE.0=FMC_A16,A16_1 SH.FMC_A16_CLE.ConfNb=1 @@ -420,6 +427,9 @@ SH.FMC_NOE.0=FMC_NOE,Lcd1 SH.FMC_NOE.ConfNb=1 SH.FMC_NWE.0=FMC_NWE,Lcd1 SH.FMC_NWE.ConfNb=1 +USART1.BaudRate=921600 +USART1.IPParameters=VirtualMode-Asynchronous,BaudRate +USART1.VirtualMode-Asynchronous=VM_ASYNC VP_FATFS_VS_SDIO.Mode=SDIO VP_FATFS_VS_SDIO.Signal=FATFS_VS_SDIO VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2