Release v1.2.10
diff --git a/Inc/Legacy/stm32_hal_legacy.h b/Inc/Legacy/stm32_hal_legacy.h
index 299ed70..48aff55 100644
--- a/Inc/Legacy/stm32_hal_legacy.h
+++ b/Inc/Legacy/stm32_hal_legacy.h
@@ -7,13 +7,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2021 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -38,6 +37,14 @@
 #define AES_CLEARFLAG_CCF               CRYP_CLEARFLAG_CCF
 #define AES_CLEARFLAG_RDERR             CRYP_CLEARFLAG_RDERR
 #define AES_CLEARFLAG_WRERR             CRYP_CLEARFLAG_WRERR
+#if defined(STM32U5)
+#define CRYP_DATATYPE_32B               CRYP_NO_SWAP
+#define CRYP_DATATYPE_16B               CRYP_HALFWORD_SWAP
+#define CRYP_DATATYPE_8B                CRYP_BYTE_SWAP
+#define CRYP_DATATYPE_1B                CRYP_BIT_SWAP
+#define CRYP_CCF_CLEAR                  CRYP_CLEAR_CCF
+#define CRYP_ERR_CLEAR                  CRYP_CLEAR_RWEIF
+#endif /* STM32U5 */
 /**
   * @}
   */
@@ -206,6 +213,20 @@
   * @{
   */
 #define __HAL_CORTEX_SYSTICKCLK_CONFIG HAL_SYSTICK_CLKSourceConfig
+#if defined(STM32U5)
+#define  MPU_DEVICE_nGnRnE          MPU_DEVICE_NGNRNE
+#define  MPU_DEVICE_nGnRE           MPU_DEVICE_NGNRE
+#define  MPU_DEVICE_nGRE            MPU_DEVICE_NGRE
+#endif /* STM32U5 */
+/**
+  * @}
+  */
+
+/** @defgroup CRC_Aliases CRC API aliases
+  * @{
+  */
+#define HAL_CRC_Input_Data_Reverse   HAL_CRCEx_Input_Data_Reverse    /*!< Aliased to HAL_CRCEx_Input_Data_Reverse for inter STM32 series compatibility  */
+#define HAL_CRC_Output_Data_Reverse  HAL_CRCEx_Output_Data_Reverse   /*!< Aliased to HAL_CRCEx_Output_Data_Reverse for inter STM32 series compatibility */
 /**
   * @}
   */
@@ -235,11 +256,18 @@
 #define DAC_WAVEGENERATION_NOISE                        DAC_WAVE_NOISE
 #define DAC_WAVEGENERATION_TRIANGLE                     DAC_WAVE_TRIANGLE
 
-#if defined(STM32G4) || defined(STM32H7)
+#if defined(STM32G4) || defined(STM32H7) || defined (STM32U5)
 #define DAC_CHIPCONNECT_DISABLE       DAC_CHIPCONNECT_EXTERNAL
 #define DAC_CHIPCONNECT_ENABLE        DAC_CHIPCONNECT_INTERNAL
 #endif
 
+#if defined(STM32U5)
+#define DAC_TRIGGER_STOP_LPTIM1_OUT  DAC_TRIGGER_STOP_LPTIM1_CH1
+#define DAC_TRIGGER_STOP_LPTIM3_OUT  DAC_TRIGGER_STOP_LPTIM3_CH1
+#define DAC_TRIGGER_LPTIM1_OUT       DAC_TRIGGER_LPTIM1_CH1
+#define DAC_TRIGGER_LPTIM3_OUT       DAC_TRIGGER_LPTIM3_CH1
+#endif
+
 #if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || defined(STM32F4) || defined(STM32G4)
 #define HAL_DAC_MSP_INIT_CB_ID       HAL_DAC_MSPINIT_CB_ID
 #define HAL_DAC_MSP_DEINIT_CB_ID     HAL_DAC_MSPDEINIT_CB_ID
@@ -382,7 +410,6 @@
 #define DAC_TRIGGER_LP2_OUT                        DAC_TRIGGER_LPTIM2_OUT
 
 #endif /* STM32H7 */
-
 /**
   * @}
   */
@@ -470,15 +497,24 @@
 #define OB_BOOT_ENTRY_FORCED_FLASH    OB_BOOT_LOCK_ENABLE
 #endif
 #if defined(STM32H7)
-#define FLASH_FLAG_SNECCE_BANK1RR FLASH_FLAG_SNECCERR_BANK1
-#define FLASH_FLAG_DBECCE_BANK1RR FLASH_FLAG_DBECCERR_BANK1
-#define FLASH_FLAG_STRBER_BANK1R  FLASH_FLAG_STRBERR_BANK1
-#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2
-#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2
-#define FLASH_FLAG_STRBER_BANK2R  FLASH_FLAG_STRBERR_BANK2
-#define FLASH_FLAG_WDW            FLASH_FLAG_WBNE
-#define OB_WRP_SECTOR_All         OB_WRP_SECTOR_ALL
+#define FLASH_FLAG_SNECCE_BANK1RR     FLASH_FLAG_SNECCERR_BANK1
+#define FLASH_FLAG_DBECCE_BANK1RR     FLASH_FLAG_DBECCERR_BANK1
+#define FLASH_FLAG_STRBER_BANK1R      FLASH_FLAG_STRBERR_BANK1
+#define FLASH_FLAG_SNECCE_BANK2RR     FLASH_FLAG_SNECCERR_BANK2
+#define FLASH_FLAG_DBECCE_BANK2RR     FLASH_FLAG_DBECCERR_BANK2
+#define FLASH_FLAG_STRBER_BANK2R      FLASH_FLAG_STRBERR_BANK2
+#define FLASH_FLAG_WDW                FLASH_FLAG_WBNE
+#define OB_WRP_SECTOR_All             OB_WRP_SECTOR_ALL
 #endif /* STM32H7 */
+#if defined(STM32U5)
+#define OB_USER_nRST_STOP             OB_USER_NRST_STOP
+#define OB_USER_nRST_STDBY            OB_USER_NRST_STDBY
+#define OB_USER_nRST_SHDW             OB_USER_NRST_SHDW
+#define OB_USER_nSWBOOT0              OB_USER_NSWBOOT0
+#define OB_USER_nBOOT0                OB_USER_NBOOT0
+#define OB_nBOOT0_RESET               OB_NBOOT0_RESET
+#define OB_nBOOT0_SET                 OB_NBOOT0_SET
+#endif /* STM32U5 */
 
 /**
   * @}
@@ -521,6 +557,7 @@
 #define HAL_SYSCFG_EnableIOAnalogSwitchVDD        HAL_SYSCFG_EnableIOSwitchVDD
 #define HAL_SYSCFG_DisableIOAnalogSwitchVDD       HAL_SYSCFG_DisableIOSwitchVDD
 #endif /* STM32G4 */
+
 /**
   * @}
   */
@@ -595,12 +632,12 @@
 #define GPIO_AF1_LPTIM                            GPIO_AF1_LPTIM1
 #define GPIO_AF2_LPTIM                            GPIO_AF2_LPTIM1
 
-#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32G4) || defined(STM32H7) || defined(STM32WB)
+#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32G4) || defined(STM32H7) || defined(STM32WB) || defined(STM32U5)
 #define  GPIO_SPEED_LOW                           GPIO_SPEED_FREQ_LOW
 #define  GPIO_SPEED_MEDIUM                        GPIO_SPEED_FREQ_MEDIUM
 #define  GPIO_SPEED_FAST                          GPIO_SPEED_FREQ_HIGH
 #define  GPIO_SPEED_HIGH                          GPIO_SPEED_FREQ_VERY_HIGH
-#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7 || STM32WB*/
+#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7 || STM32WB || STM32U5*/
 
 #if defined(STM32L1)
 #define  GPIO_SPEED_VERY_LOW    GPIO_SPEED_FREQ_LOW
@@ -616,6 +653,20 @@
 #endif /* STM32F0 || STM32F3 || STM32F1 */
 
 #define GPIO_AF6_DFSDM                            GPIO_AF6_DFSDM1
+
+#if defined(STM32U5)
+#define GPIO_AF0_RTC_50Hz                         GPIO_AF0_RTC_50HZ
+#endif /* STM32U5 */
+/**
+  * @}
+  */
+
+/** @defgroup HAL_GTZC_Aliased_Defines HAL GTZC Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#if defined(STM32U5)
+#define GTZC_PERIPH_DCMI                      GTZC_PERIPH_DCMI_PSSI
+#endif /* STM32U5 */
 /**
   * @}
   */
@@ -853,6 +904,20 @@
 #define LPTIM_TRIGSAMPLETIME_4TRANSITION        LPTIM_TRIGSAMPLETIME_4TRANSITIONS
 #define LPTIM_TRIGSAMPLETIME_8TRANSITION        LPTIM_TRIGSAMPLETIME_8TRANSITIONS
 
+
+/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose
+  * @{
+  */
+#define HAL_LPTIM_ReadCompare      HAL_LPTIM_ReadCapturedValue
+/**
+  * @}
+  */
+
+#if defined(STM32U5)
+#define LPTIM_ISR_CC1        LPTIM_ISR_CC1IF
+#define LPTIM_ISR_CC2        LPTIM_ISR_CC2IF
+#define LPTIM_CHANNEL_ALL    0x00000000U
+#endif /* STM32U5 */
 /**
   * @}
   */
@@ -1191,6 +1256,10 @@
 #define TIM_TIM3_TI1_COMP1COMP2_OUT   TIM_TIM3_TI1_COMP1_COMP2
 #endif
 
+#if defined(STM32U5) || defined(STM32MP2)
+#define OCREF_CLEAR_SELECT_Pos       OCREF_CLEAR_SELECT_POS
+#define OCREF_CLEAR_SELECT_Msk       OCREF_CLEAR_SELECT_MSK
+#endif
 /**
   * @}
   */
@@ -1379,6 +1448,20 @@
   */
 #endif  /* STM32L4 ||  STM32F7 ||  STM32F4 ||  STM32H7 */
 
+#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \
+  || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \
+  || defined(STM32H7) || defined(STM32U5)
+/** @defgroup DMA2D_Aliases DMA2D API Aliases
+  * @{
+  */
+#define HAL_DMA2D_DisableCLUT       HAL_DMA2D_CLUTLoading_Abort    /*!< Aliased to HAL_DMA2D_CLUTLoading_Abort
+                                                                        for compatibility with legacy code */
+/**
+  * @}
+  */
+
+#endif  /* STM32L4 ||  STM32F7 ||  STM32F4 ||  STM32H7 || STM32U5 */
+
 /** @defgroup HAL_PPP_Aliased_Defines HAL PPP Aliased Defines maintained for legacy purpose
   * @{
   */
@@ -1397,6 +1480,29 @@
   * @}
   */
 
+/** @defgroup HAL_DCACHE_Aliased_Functions HAL DCACHE Aliased Functions maintained for legacy purpose
+  * @{
+  */
+
+#if defined(STM32U5)
+#define HAL_DCACHE_CleanInvalidateByAddr     HAL_DCACHE_CleanInvalidByAddr
+#define HAL_DCACHE_CleanInvalidateByAddr_IT  HAL_DCACHE_CleanInvalidByAddr_IT
+#endif /* STM32U5 */
+
+/**
+  * @}
+  */
+
+#if !defined(STM32F2)
+/** @defgroup HASH_alias HASH API alias
+  * @{
+  */
+#define HAL_HASHEx_IRQHandler   HAL_HASH_IRQHandler  /*!< Redirection for compatibility with legacy code */
+/**
+  *
+  * @}
+  */
+#endif /* STM32F2 */
 /** @defgroup HAL_HASH_Aliased_Functions HAL HASH Aliased Functions maintained for legacy purpose
   * @{
   */
@@ -3329,6 +3435,31 @@
 #define RCC_DFSDM1CLKSOURCE_APB2            RCC_DFSDM1CLKSOURCE_PCLK2
 #define RCC_DFSDM2CLKSOURCE_APB2            RCC_DFSDM2CLKSOURCE_PCLK2
 #define RCC_FMPI2C1CLKSOURCE_APB            RCC_FMPI2C1CLKSOURCE_PCLK1
+#if defined(STM32U5)
+#define MSIKPLLModeSEL  RCC_MSIKPLL_MODE_SEL
+#define MSISPLLModeSEL  RCC_MSISPLL_MODE_SEL
+#define __HAL_RCC_AHB21_CLK_DISABLE           __HAL_RCC_AHB2_1_CLK_DISABLE
+#define __HAL_RCC_AHB22_CLK_DISABLE           __HAL_RCC_AHB2_2_CLK_DISABLE
+#define __HAL_RCC_AHB1_CLK_Disable_Clear      __HAL_RCC_AHB1_CLK_ENABLE
+#define __HAL_RCC_AHB21_CLK_Disable_Clear     __HAL_RCC_AHB2_1_CLK_ENABLE
+#define __HAL_RCC_AHB22_CLK_Disable_Clear     __HAL_RCC_AHB2_2_CLK_ENABLE
+#define __HAL_RCC_AHB3_CLK_Disable_Clear      __HAL_RCC_AHB3_CLK_ENABLE
+#define __HAL_RCC_APB1_CLK_Disable_Clear      __HAL_RCC_APB1_CLK_ENABLE
+#define __HAL_RCC_APB2_CLK_Disable_Clear      __HAL_RCC_APB2_CLK_ENABLE
+#define __HAL_RCC_APB3_CLK_Disable_Clear      __HAL_RCC_APB3_CLK_ENABLE
+#define IS_RCC_MSIPLLModeSelection            IS_RCC_MSIPLLMODE_SELECT
+#define RCC_PERIPHCLK_CLK48                   RCC_PERIPHCLK_ICLK
+#define RCC_CLK48CLKSOURCE_HSI48              RCC_ICLK_CLKSOURCE_HSI48
+#define RCC_CLK48CLKSOURCE_PLL2               RCC_ICLK_CLKSOURCE_PLL2
+#define RCC_CLK48CLKSOURCE_PLL1               RCC_ICLK_CLKSOURCE_PLL1
+#define RCC_CLK48CLKSOURCE_MSIK               RCC_ICLK_CLKSOURCE_MSIK
+#define __HAL_RCC_ADC1_CLK_ENABLE            __HAL_RCC_ADC12_CLK_ENABLE
+#define __HAL_RCC_ADC1_CLK_DISABLE          __HAL_RCC_ADC12_CLK_DISABLE
+#define __HAL_RCC_ADC1_IS_CLK_ENABLED       __HAL_RCC_ADC12_IS_CLK_ENABLED
+#define __HAL_RCC_ADC1_IS_CLK_DISABLED      __HAL_RCC_ADC12_IS_CLK_DISABLED
+#define __HAL_RCC_ADC1_FORCE_RESET          __HAL_RCC_ADC12_FORCE_RESET
+#define __HAL_RCC_ADC1_RELEASE_RESET       __HAL_RCC_ADC12_RELEASE_RESET
+#endif
 
 /**
   * @}
@@ -3346,7 +3477,7 @@
 /** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
   * @{
   */
-#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL)
+#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL) || defined (STM32U5)
 #else
 #define __HAL_RTC_CLEAR_FLAG                      __HAL_RTC_EXTI_CLEAR_FLAG
 #endif
@@ -3403,13 +3534,22 @@
   * @}
   */
 
-/** @defgroup HAL_SD_Aliased_Macros HAL SD Aliased Macros maintained for legacy purpose
+/** @defgroup HAL_SD_Aliased_Macros HAL SD/MMC Aliased Macros maintained for legacy purpose
   * @{
   */
 
 #define SD_OCR_CID_CSD_OVERWRIETE   SD_OCR_CID_CSD_OVERWRITE
 #define SD_CMD_SD_APP_STAUS         SD_CMD_SD_APP_STATUS
 
+#if !defined(STM32F1) && !defined(STM32F2) && !defined(STM32F4) && !defined(STM32L1)
+#define eMMC_HIGH_VOLTAGE_RANGE     EMMC_HIGH_VOLTAGE_RANGE
+#define eMMC_DUAL_VOLTAGE_RANGE     EMMC_DUAL_VOLTAGE_RANGE
+#define eMMC_LOW_VOLTAGE_RANGE      EMMC_LOW_VOLTAGE_RANGE
+
+#define SDMMC_NSpeed_CLK_DIV        SDMMC_NSPEED_CLK_DIV
+#define SDMMC_HSpeed_CLK_DIV        SDMMC_HSPEED_CLK_DIV
+#endif
+
 #if defined(STM32F4) || defined(STM32F2)
 #define  SD_SDMMC_DISABLED          SD_SDIO_DISABLED
 #define  SD_SDMMC_FUNCTION_BUSY     SD_SDIO_FUNCTION_BUSY
@@ -3752,5 +3892,4 @@
 
 #endif /* STM32_HAL_LEGACY */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 
diff --git a/Inc/Legacy/stm32f7xx_hal_can_legacy.h b/Inc/Legacy/stm32f7xx_hal_can_legacy.h
index 4984a1c..bbc514c 100644
--- a/Inc/Legacy/stm32f7xx_hal_can_legacy.h
+++ b/Inc/Legacy/stm32f7xx_hal_can_legacy.h
@@ -6,29 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * Redistribution and use in source and binary forms, with or without modification,
-  * are permitted provided that the following conditions are met:
-  *   1. Redistributions of source code must retain the above copyright notice,
-  *      this list of conditions and the following disclaimer.
-  *   2. Redistributions in binary form must reproduce the above copyright notice,
-  *      this list of conditions and the following disclaimer in the documentation
-  *      and/or other materials provided with the distribution.
-  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-  *      may be used to endorse or promote products derived from this software
-  *      without specific prior written permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -772,6 +755,3 @@
 #endif
 
 #endif /* __STM32F7xx_HAL_CAN_LEGACY_H */
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32_assert_template.h b/Inc/stm32_assert_template.h
index 4711b65..3ae73f0 100644
--- a/Inc/stm32_assert_template.h
+++ b/Inc/stm32_assert_template.h
@@ -8,13 +8,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -54,4 +53,4 @@
 #endif /* __STM32_ASSERT_H */
 
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Inc/stm32f7xx_hal.h b/Inc/stm32f7xx_hal.h
index 4df6fe3..8606b7b 100644
--- a/Inc/stm32f7xx_hal.h
+++ b/Inc/stm32f7xx_hal.h
@@ -7,13 +7,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -273,4 +272,4 @@
 
 #endif /* __STM32F7xx_HAL_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Inc/stm32f7xx_hal_adc.h b/Inc/stm32f7xx_hal_adc.h
index 38a6818..95597a3 100644
--- a/Inc/stm32f7xx_hal_adc.h
+++ b/Inc/stm32f7xx_hal_adc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -956,4 +955,3 @@
 #endif /* STM32F7xx_ADC_H */
 
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_adc_ex.h b/Inc/stm32f7xx_hal_adc_ex.h
index cef8f49..ae270a5 100644
--- a/Inc/stm32f7xx_hal_adc_ex.h
+++ b/Inc/stm32f7xx_hal_adc_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -353,4 +352,3 @@
 #endif /* STM32F7xx_ADC_EX_H */
 
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_can.h b/Inc/stm32f7xx_hal_can.h
index 5403828..5430887 100644
--- a/Inc/stm32f7xx_hal_can.h
+++ b/Inc/stm32f7xx_hal_can.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -845,6 +844,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_CAN_H */
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_cec.h b/Inc/stm32f7xx_hal_cec.h
index 721edc1..df908cc 100644
--- a/Inc/stm32f7xx_hal_cec.h
+++ b/Inc/stm32f7xx_hal_cec.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -121,14 +120,14 @@
   *          b6  Error information
   *             0  : No Error
   *             1  : Error
-  *          b5     IP initialization status
-  *             0  : Reset (IP not initialized)
-  *             1  : Init done (IP initialized. HAL CEC Init function already called)
+  *          b5     CEC peripheral initialization status
+  *             0  : Reset (peripheral not initialized)
+  *             1  : Init done (peripheral initialized. HAL CEC Init function already called)
   *          b4-b3  (not used)
   *             xx : Should be set to 00
   *          b2     Intrinsic process state
   *             0  : Ready
-  *             1  : Busy (IP busy with some configuration or internal operations)
+  *             1  : Busy (peripheral busy with some configuration or internal operations)
   *          b1     (not used)
   *             x  : Should be set to 0
   *          b0     Tx state
@@ -138,9 +137,9 @@
   *          RxState value coding follow below described bitmap :
   *          b7-b6  (not used)
   *             xx : Should be set to 00
-  *          b5     IP initialization status
-  *             0  : Reset (IP not initialized)
-  *             1  : Init done (IP initialized)
+  *          b5     CEC peripheral initialization status
+  *             0  : Reset (peripheral not initialized)
+  *             1  : Init done (peripheral initialized)
   *          b4-b2  (not used)
   *            xxx : Should be set to 000
   *          b1     Rx state
@@ -791,4 +790,3 @@
 
 #endif /* STM32F7xxHAL_CEC_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_conf_template.h b/Inc/stm32f7xx_hal_conf_template.h
index b27f66e..075c1ea 100644
--- a/Inc/stm32f7xx_hal_conf_template.h
+++ b/Inc/stm32f7xx_hal_conf_template.h
@@ -8,13 +8,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -492,4 +491,4 @@
 #endif /* __STM32F7xx_HAL_CONF_H */
  
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Inc/stm32f7xx_hal_cortex.h b/Inc/stm32f7xx_hal_cortex.h
index c9162d4..462024b 100644
--- a/Inc/stm32f7xx_hal_cortex.h
+++ b/Inc/stm32f7xx_hal_cortex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -403,4 +402,3 @@
 #endif /* __STM32F7xx_HAL_CORTEX_H */
  
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_crc.h b/Inc/stm32f7xx_hal_crc.h
index 08a5025..171debb 100644
--- a/Inc/stm32f7xx_hal_crc.h
+++ b/Inc/stm32f7xx_hal_crc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -60,19 +59,22 @@
 {
   uint8_t DefaultPolynomialUse;       /*!< This parameter is a value of @ref CRC_Default_Polynomial and indicates if default polynomial is used.
                                             If set to DEFAULT_POLYNOMIAL_ENABLE, resort to default
-                                            X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 +X^8 + X^7 + X^5 + X^4 + X^2+ X +1.
+                                            X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 +X^8 + X^7 + X^5 +
+                                            X^4 + X^2+ X +1.
                                             In that case, there is no need to set GeneratingPolynomial field.
-                                            If otherwise set to DEFAULT_POLYNOMIAL_DISABLE, GeneratingPolynomial and CRCLength fields must be set. */
+                                            If otherwise set to DEFAULT_POLYNOMIAL_DISABLE, GeneratingPolynomial and
+                                            CRCLength fields must be set. */
 
   uint8_t DefaultInitValueUse;        /*!< This parameter is a value of @ref CRC_Default_InitValue_Use and indicates if default init value is used.
                                            If set to DEFAULT_INIT_VALUE_ENABLE, resort to default
-                                           0xFFFFFFFF value. In that case, there is no need to set InitValue field.
-                                           If otherwise set to DEFAULT_INIT_VALUE_DISABLE,  InitValue field must be set. */
+                                           0xFFFFFFFF value. In that case, there is no need to set InitValue field. If
+                                           otherwise set to DEFAULT_INIT_VALUE_DISABLE, InitValue field must be set. */
 
   uint32_t GeneratingPolynomial;      /*!< Set CRC generating polynomial as a 7, 8, 16 or 32-bit long value for a polynomial degree
-                                           respectively equal to 7, 8, 16 or 32. This field is written in normal representation,
-                                           e.g., for a polynomial of degree 7, X^7 + X^6 + X^5 + X^2 + 1 is written 0x65.
-                                           No need to specify it if DefaultPolynomialUse is set to DEFAULT_POLYNOMIAL_ENABLE.   */
+                                           respectively equal to 7, 8, 16 or 32. This field is written in normal,
+                                           representation e.g., for a polynomial of degree 7, X^7 + X^6 + X^5 + X^2 + 1
+                                           is written 0x65. No need to specify it if DefaultPolynomialUse is set to
+                                            DEFAULT_POLYNOMIAL_ENABLE.   */
 
   uint32_t CRCLength;                 /*!< This parameter is a value of @ref CRC_Polynomial_Sizes and indicates CRC length.
                                            Value can be either one of
@@ -87,14 +89,18 @@
   uint32_t InputDataInversionMode;    /*!< This parameter is a value of @ref CRCEx_Input_Data_Inversion and specifies input data inversion mode.
                                            Can be either one of the following values
                                            @arg @ref CRC_INPUTDATA_INVERSION_NONE       no input data inversion
-                                           @arg @ref CRC_INPUTDATA_INVERSION_BYTE       byte-wise inversion, 0x1A2B3C4D becomes 0x58D43CB2
-                                           @arg @ref CRC_INPUTDATA_INVERSION_HALFWORD   halfword-wise inversion, 0x1A2B3C4D becomes 0xD458B23C
-                                           @arg @ref CRC_INPUTDATA_INVERSION_WORD       word-wise inversion, 0x1A2B3C4D becomes 0xB23CD458 */
+                                           @arg @ref CRC_INPUTDATA_INVERSION_BYTE       byte-wise inversion, 0x1A2B3C4D
+                                           becomes 0x58D43CB2
+                                           @arg @ref CRC_INPUTDATA_INVERSION_HALFWORD   halfword-wise inversion,
+                                           0x1A2B3C4D becomes 0xD458B23C
+                                           @arg @ref CRC_INPUTDATA_INVERSION_WORD       word-wise inversion, 0x1A2B3C4D
+                                           becomes 0xB23CD458 */
 
   uint32_t OutputDataInversionMode;   /*!< This parameter is a value of @ref CRCEx_Output_Data_Inversion and specifies output data (i.e. CRC) inversion mode.
                                             Can be either
                                             @arg @ref CRC_OUTPUTDATA_INVERSION_DISABLE   no CRC inversion,
-                                            @arg @ref CRC_OUTPUTDATA_INVERSION_ENABLE    CRC 0x11223344 is converted into 0x22CC4488 */
+                                            @arg @ref CRC_OUTPUTDATA_INVERSION_ENABLE    CRC 0x11223344 is converted
+                                             into 0x22CC4488 */
 } CRC_InitTypeDef;
 
 /**
@@ -112,12 +118,16 @@
 
   uint32_t InputDataFormat;                /*!< This parameter is a value of @ref CRC_Input_Buffer_Format and specifies input data format.
                                             Can be either
-                                            @arg @ref CRC_INPUTDATA_FORMAT_BYTES       input data is a stream of bytes (8-bit data)
-                                            @arg @ref CRC_INPUTDATA_FORMAT_HALFWORDS   input data is a stream of half-words (16-bit data)
-                                            @arg @ref CRC_INPUTDATA_FORMAT_WORDS       input data is a stream of words (32-bit data)
+                                            @arg @ref CRC_INPUTDATA_FORMAT_BYTES       input data is a stream of bytes
+                                            (8-bit data)
+                                            @arg @ref CRC_INPUTDATA_FORMAT_HALFWORDS   input data is a stream of
+                                            half-words (16-bit data)
+                                            @arg @ref CRC_INPUTDATA_FORMAT_WORDS       input data is a stream of words
+                                            (32-bit data)
 
-                                           Note that constant CRC_INPUT_FORMAT_UNDEFINED is defined but an initialization error
-                                           must occur if InputBufferFormat is not one of the three values listed above  */
+                                          Note that constant CRC_INPUT_FORMAT_UNDEFINED is defined but an initialization
+                                          error must occur if InputBufferFormat is not one of the three values listed
+                                          above  */
 } CRC_HandleTypeDef;
 /**
   * @}
@@ -199,15 +209,6 @@
   * @}
   */
 
-/** @defgroup CRC_Aliases CRC API aliases
-  * @{
-  */
-#define HAL_CRC_Input_Data_Reverse   HAL_CRCEx_Input_Data_Reverse    /*!< Aliased to HAL_CRCEx_Input_Data_Reverse for inter STM32 series compatibility  */
-#define HAL_CRC_Output_Data_Reverse  HAL_CRCEx_Output_Data_Reverse   /*!< Aliased to HAL_CRCEx_Output_Data_Reverse for inter STM32 series compatibility */
-/**
-  * @}
-  */
-
 /**
   * @}
   */
@@ -339,5 +340,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_CRC_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_crc_ex.h b/Inc/stm32f7xx_hal_crc_ex.h
index f2ebba1..edf9c82 100644
--- a/Inc/stm32f7xx_hal_crc_ex.h
+++ b/Inc/stm32f7xx_hal_crc_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -149,5 +148,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_CRC_EX_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_cryp.h b/Inc/stm32f7xx_hal_cryp.h
index 83bffaf..ccc123d 100644
--- a/Inc/stm32f7xx_hal_cryp.h
+++ b/Inc/stm32f7xx_hal_cryp.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -670,4 +669,3 @@
 
 #endif /* __STM32F7xx_HAL_CRYP_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_cryp_ex.h b/Inc/stm32f7xx_hal_cryp_ex.h
index d9fa776..347ffe8 100644
--- a/Inc/stm32f7xx_hal_cryp_ex.h
+++ b/Inc/stm32f7xx_hal_cryp_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -141,4 +140,3 @@
 
 #endif /* __STM32F7xx_HAL_CRYP_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_dac.h b/Inc/stm32f7xx_hal_dac.h
index 3e01e29..abc2c01 100644
--- a/Inc/stm32f7xx_hal_dac.h
+++ b/Inc/stm32f7xx_hal_dac.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -79,19 +78,19 @@
   __IO uint32_t               ErrorCode;     /*!< DAC Error code                    */
 
 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
-  void (* ConvCpltCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
-  void (* ConvHalfCpltCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
-  void (* ErrorCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
-  void (* DMAUnderrunCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
+  void (* ConvCpltCallbackCh1)            (struct __DAC_HandleTypeDef *hdac);
+  void (* ConvHalfCpltCallbackCh1)        (struct __DAC_HandleTypeDef *hdac);
+  void (* ErrorCallbackCh1)               (struct __DAC_HandleTypeDef *hdac);
+  void (* DMAUnderrunCallbackCh1)         (struct __DAC_HandleTypeDef *hdac);
 
-  void (* ConvCpltCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
-  void (* ConvHalfCpltCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
-  void (* ErrorCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
-  void (* DMAUnderrunCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
+  void (* ConvCpltCallbackCh2)            (struct __DAC_HandleTypeDef *hdac);
+  void (* ConvHalfCpltCallbackCh2)        (struct __DAC_HandleTypeDef *hdac);
+  void (* ErrorCallbackCh2)               (struct __DAC_HandleTypeDef *hdac);
+  void (* DMAUnderrunCallbackCh2)         (struct __DAC_HandleTypeDef *hdac);
 
 
-  void (* MspInitCallback)(struct __DAC_HandleTypeDef *hdac);
-  void (* MspDeInitCallback)(struct __DAC_HandleTypeDef *hdac);
+  void (* MspInitCallback)                (struct __DAC_HandleTypeDef *hdac);
+  void (* MspDeInitCallback)              (struct __DAC_HandleTypeDef *hdac);
 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
 
 } DAC_HandleTypeDef;
@@ -473,4 +472,3 @@
 
 #endif /* STM32F7xx_HAL_DAC_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_dac_ex.h b/Inc/stm32f7xx_hal_dac_ex.h
index 1646c8e..0294834 100644
--- a/Inc/stm32f7xx_hal_dac_ex.h
+++ b/Inc/stm32f7xx_hal_dac_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -200,4 +199,3 @@
 
 #endif /* STM32F7xx_HAL_DAC_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_dcmi.h b/Inc/stm32f7xx_hal_dcmi.h
index 7882198..e5d07f6 100644
--- a/Inc/stm32f7xx_hal_dcmi.h
+++ b/Inc/stm32f7xx_hal_dcmi.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -655,4 +654,3 @@
 
 #endif /* STM32F7xx_HAL_DCMI_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_dcmi_ex.h b/Inc/stm32f7xx_hal_dcmi_ex.h
index 506ce46..51b396c 100644
--- a/Inc/stm32f7xx_hal_dcmi_ex.h
+++ b/Inc/stm32f7xx_hal_dcmi_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -34,4 +33,3 @@
 
 #endif /* __STM32F7xx_HAL_DCMI_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_def.h b/Inc/stm32f7xx_hal_def.h
index 3d94fb2..7a0223f 100644
--- a/Inc/stm32f7xx_hal_def.h
+++ b/Inc/stm32f7xx_hal_def.h
@@ -3,17 +3,16 @@
   * @file    stm32f7xx_hal_def.h
   * @author  MCD Application Team
   * @brief   This file contains HAL common defines, enumeration, macros and 
-  *          structures definitions. 
+  *          structures definitions.
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -216,4 +215,4 @@
 
 #endif /* ___STM32F7xx_HAL_DEF */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Inc/stm32f7xx_hal_dfsdm.h b/Inc/stm32f7xx_hal_dfsdm.h
index 677dbad..f244a3b 100644
--- a/Inc/stm32f7xx_hal_dfsdm.h
+++ b/Inc/stm32f7xx_hal_dfsdm.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -791,5 +790,3 @@
 #endif
 
 #endif /* __STM32F7xx_HAL_DFSDM_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_dma.h b/Inc/stm32f7xx_hal_dma.h
index 99a36e8..de7c07e 100644
--- a/Inc/stm32f7xx_hal_dma.h
+++ b/Inc/stm32f7xx_hal_dma.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -746,4 +745,3 @@
 
 #endif /* __STM32F7xx_HAL_DMA_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_dma2d.h b/Inc/stm32f7xx_hal_dma2d.h
index 7af0c6c..c60365e 100644
--- a/Inc/stm32f7xx_hal_dma2d.h
+++ b/Inc/stm32f7xx_hal_dma2d.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -315,15 +314,6 @@
   * @}
   */
 
-/** @defgroup DMA2D_Aliases DMA2D API Aliases
-  * @{
-  */
-#define HAL_DMA2D_DisableCLUT       HAL_DMA2D_CLUTLoading_Abort    /*!< Aliased to HAL_DMA2D_CLUTLoading_Abort 
-                                                                        for compatibility with legacy code */
-/**
-  * @}
-  */
-
 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
 /**
   * @brief  HAL DMA2D common Callback ID enumeration definition
@@ -689,6 +679,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_DMA2D_H */
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_dma_ex.h b/Inc/stm32f7xx_hal_dma_ex.h
index d15ea50..5d76e9f 100644
--- a/Inc/stm32f7xx_hal_dma_ex.h
+++ b/Inc/stm32f7xx_hal_dma_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -182,4 +181,3 @@
 
 #endif /* __STM32F7xx_HAL_DMA_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_dsi.h b/Inc/stm32f7xx_hal_dsi.h
index 7091e82..f732628 100644
--- a/Inc/stm32f7xx_hal_dsi.h
+++ b/Inc/stm32f7xx_hal_dsi.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -40,6 +39,9 @@
   */
 
 /* Exported types ------------------------------------------------------------*/
+/** @defgroup DSI_Exported_Types DSI Exported Types
+  * @{
+  */
 /**
   * @brief  DSI Init Structure definition
   */
@@ -61,14 +63,14 @@
   */
 typedef struct
 {
-  uint32_t PLLNDIV;                      /*!< PLL Loop Division Factor
-                                              This parameter must be a value between 10 and 125   */
+  uint32_t PLLNDIV;                 /*!< PLL Loop Division Factor
+                                         This parameter must be a value between 10 and 125                    */
 
-  uint32_t PLLIDF;                       /*!< PLL Input Division Factor
-                                              This parameter can be any value of @ref DSI_PLL_IDF */
+  uint32_t PLLIDF;                  /*!< PLL Input Division Factor
+                                         This parameter can be any value of @ref DSI_PLL_IDF                  */
 
-  uint32_t PLLODF;                       /*!< PLL Output Division Factor
-                                              This parameter can be any value of @ref DSI_PLL_ODF */
+  uint32_t PLLODF;                  /*!< PLL Output Division Factor
+                                         This parameter can be any value of @ref DSI_PLL_ODF                  */
 
 } DSI_PLLInitTypeDef;
 
@@ -346,6 +348,9 @@
 typedef  void (*pDSI_CallbackTypeDef)(DSI_HandleTypeDef *hdsi);  /*!< pointer to an DSI callback function */
 
 #endif /* USE_HAL_DSI_REGISTER_CALLBACKS */
+/**
+  * @}
+  */
 
 /* Exported constants --------------------------------------------------------*/
 /** @defgroup DSI_Exported_Constants DSI Exported Constants
@@ -700,8 +705,8 @@
 #define DSI_FLOW_CONTROL_BTA       DSI_PCR_BTAE
 #define DSI_FLOW_CONTROL_EOTP_RX   DSI_PCR_ETRXE
 #define DSI_FLOW_CONTROL_EOTP_TX   DSI_PCR_ETTXE
-#define DSI_FLOW_CONTROL_ALL       (DSI_FLOW_CONTROL_CRC_RX | DSI_FLOW_CONTROL_ECC_RX | \
-                                    DSI_FLOW_CONTROL_BTA | DSI_FLOW_CONTROL_EOTP_RX | \
+#define DSI_FLOW_CONTROL_ALL       (DSI_FLOW_CONTROL_CRC_RX | DSI_FLOW_CONTROL_ECC_RX  | \
+                                    DSI_FLOW_CONTROL_BTA    | DSI_FLOW_CONTROL_EOTP_RX | \
                                     DSI_FLOW_CONTROL_EOTP_TX)
 /**
   * @}
@@ -841,18 +846,18 @@
   * @{
   */
 #define HAL_DSI_ERROR_NONE              0U
-#define HAL_DSI_ERROR_ACK               0x00000001U /*!< acknowledge errors          */
-#define HAL_DSI_ERROR_PHY               0x00000002U /*!< PHY related errors          */
-#define HAL_DSI_ERROR_TX                0x00000004U /*!< transmission error          */
-#define HAL_DSI_ERROR_RX                0x00000008U /*!< reception error             */
-#define HAL_DSI_ERROR_ECC               0x00000010U /*!< ECC errors                  */
-#define HAL_DSI_ERROR_CRC               0x00000020U /*!< CRC error                   */
-#define HAL_DSI_ERROR_PSE               0x00000040U /*!< Packet Size error           */
-#define HAL_DSI_ERROR_EOT               0x00000080U /*!< End Of Transmission error   */
-#define HAL_DSI_ERROR_OVF               0x00000100U /*!< FIFO overflow error         */
-#define HAL_DSI_ERROR_GEN               0x00000200U /*!< Generic FIFO related errors */
+#define HAL_DSI_ERROR_ACK               0x00000001U /*!< Acknowledge errors             */
+#define HAL_DSI_ERROR_PHY               0x00000002U /*!< PHY related errors             */
+#define HAL_DSI_ERROR_TX                0x00000004U /*!< Transmission error             */
+#define HAL_DSI_ERROR_RX                0x00000008U /*!< Reception error                */
+#define HAL_DSI_ERROR_ECC               0x00000010U /*!< ECC errors                     */
+#define HAL_DSI_ERROR_CRC               0x00000020U /*!< CRC error                      */
+#define HAL_DSI_ERROR_PSE               0x00000040U /*!< Packet Size error              */
+#define HAL_DSI_ERROR_EOT               0x00000080U /*!< End Of Transmission error      */
+#define HAL_DSI_ERROR_OVF               0x00000100U /*!< FIFO overflow error            */
+#define HAL_DSI_ERROR_GEN               0x00000200U /*!< Generic FIFO related errors    */
 #if (USE_HAL_DSI_REGISTER_CALLBACKS == 1)
-#define HAL_DSI_ERROR_INVALID_CALLBACK  0x00000400U /*!< DSI Invalid Callback error  */
+#define HAL_DSI_ERROR_INVALID_CALLBACK  0x00000400U /*!< DSI Invalid Callback error      */
 #endif /* USE_HAL_DSI_REGISTER_CALLBACKS */
 /**
   * @}
@@ -912,6 +917,7 @@
   * @}
   */
 
+
 /**
   * @}
   */
@@ -955,11 +961,11 @@
   * @retval None.
   */
 #define __HAL_DSI_DISABLE(__HANDLE__) do { \
-                                          __IO uint32_t tmpreg = 0x00U; \
-                                          CLEAR_BIT((__HANDLE__)->Instance->CR, DSI_CR_EN);\
-                                          /* Delay after an DSI Host disabling */ \
-                                          tmpreg = READ_BIT((__HANDLE__)->Instance->CR, DSI_CR_EN);\
-                                          UNUSED(tmpreg); \
+                                           __IO uint32_t tmpreg = 0x00U; \
+                                           CLEAR_BIT((__HANDLE__)->Instance->CR, DSI_CR_EN);\
+                                           /* Delay after an DSI Host disabling */ \
+                                           tmpreg = READ_BIT((__HANDLE__)->Instance->CR, DSI_CR_EN);\
+                                           UNUSED(tmpreg); \
                                          } while(0U)
 
 /**
@@ -968,11 +974,11 @@
   * @retval None.
   */
 #define __HAL_DSI_WRAPPER_ENABLE(__HANDLE__) do { \
-                                                 __IO uint32_t tmpreg = 0x00U; \
-                                                 SET_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
-                                                 /* Delay after an DSI warpper enabling */ \
-                                                 tmpreg = READ_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
-                                                 UNUSED(tmpreg); \
+                                                  __IO uint32_t tmpreg = 0x00U; \
+                                                  SET_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
+                                                  /* Delay after an DSI warpper enabling */ \
+                                                  tmpreg = READ_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
+                                                  UNUSED(tmpreg); \
                                                 } while(0U)
 
 /**
@@ -981,11 +987,11 @@
   * @retval None.
   */
 #define __HAL_DSI_WRAPPER_DISABLE(__HANDLE__) do { \
-                                                  __IO uint32_t tmpreg = 0x00U; \
-                                                  CLEAR_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
-                                                  /* Delay after an DSI warpper disabling*/ \
-                                                  tmpreg = READ_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
-                                                  UNUSED(tmpreg); \
+                                                   __IO uint32_t tmpreg = 0x00U; \
+                                                   CLEAR_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
+                                                   /* Delay after an DSI warpper disabling*/ \
+                                                   tmpreg = READ_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
+                                                   UNUSED(tmpreg); \
                                                  } while(0U)
 
 /**
@@ -994,11 +1000,11 @@
   * @retval None.
   */
 #define __HAL_DSI_PLL_ENABLE(__HANDLE__) do { \
-                                             __IO uint32_t tmpreg = 0x00U; \
-                                             SET_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
-                                             /* Delay after an DSI PLL enabling */ \
-                                             tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
-                                             UNUSED(tmpreg); \
+                                              __IO uint32_t tmpreg = 0x00U; \
+                                              SET_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
+                                              /* Delay after an DSI PLL enabling */ \
+                                              tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
+                                              UNUSED(tmpreg); \
                                             } while(0U)
 
 /**
@@ -1007,11 +1013,11 @@
   * @retval None.
   */
 #define __HAL_DSI_PLL_DISABLE(__HANDLE__) do { \
-                                              __IO uint32_t tmpreg = 0x00U; \
-                                              CLEAR_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
-                                              /* Delay after an DSI PLL disabling */ \
-                                              tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
-                                              UNUSED(tmpreg); \
+                                               __IO uint32_t tmpreg = 0x00U; \
+                                               CLEAR_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
+                                               /* Delay after an DSI PLL disabling */ \
+                                               tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_PLLEN);\
+                                               UNUSED(tmpreg); \
                                              } while(0U)
 
 /**
@@ -1033,11 +1039,11 @@
   * @retval None.
   */
 #define __HAL_DSI_REG_DISABLE(__HANDLE__) do { \
-                                              __IO uint32_t tmpreg = 0x00U; \
-                                              CLEAR_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_REGEN);\
-                                              /* Delay after an DSI regulator disabling */ \
-                                              tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_REGEN);\
-                                              UNUSED(tmpreg); \
+                                               __IO uint32_t tmpreg = 0x00U; \
+                                               CLEAR_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_REGEN);\
+                                               /* Delay after an DSI regulator disabling */ \
+                                               tmpreg = READ_BIT((__HANDLE__)->Instance->WRPCR, DSI_WRPCR_REGEN);\
+                                               UNUSED(tmpreg); \
                                              } while(0U)
 
 /**
@@ -1121,23 +1127,41 @@
 /** @defgroup DSI_Exported_Functions DSI Exported Functions
   * @{
   */
+/** @defgroup DSI_Group1 Initialization and Configuration functions
+  *  @brief   Initialization and Configuration functions
+  * @{
+  */
 HAL_StatusTypeDef HAL_DSI_Init(DSI_HandleTypeDef *hdsi, DSI_PLLInitTypeDef *PLLInit);
 HAL_StatusTypeDef HAL_DSI_DeInit(DSI_HandleTypeDef *hdsi);
 void HAL_DSI_MspInit(DSI_HandleTypeDef *hdsi);
 void HAL_DSI_MspDeInit(DSI_HandleTypeDef *hdsi);
-
-void HAL_DSI_IRQHandler(DSI_HandleTypeDef *hdsi);
-void HAL_DSI_TearingEffectCallback(DSI_HandleTypeDef *hdsi);
-void HAL_DSI_EndOfRefreshCallback(DSI_HandleTypeDef *hdsi);
-void HAL_DSI_ErrorCallback(DSI_HandleTypeDef *hdsi);
-
+HAL_StatusTypeDef HAL_DSI_ConfigErrorMonitor(DSI_HandleTypeDef *hdsi, uint32_t ActiveErrors);
 /* Callbacks Register/UnRegister functions  ***********************************/
 #if (USE_HAL_DSI_REGISTER_CALLBACKS == 1)
 HAL_StatusTypeDef HAL_DSI_RegisterCallback(DSI_HandleTypeDef *hdsi, HAL_DSI_CallbackIDTypeDef CallbackID,
                                            pDSI_CallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_DSI_UnRegisterCallback(DSI_HandleTypeDef *hdsi, HAL_DSI_CallbackIDTypeDef CallbackID);
 #endif /* USE_HAL_DSI_REGISTER_CALLBACKS */
+/**
+  * @}
+  */
 
+/** @defgroup DSI_Group2 IO operation functions
+  *  @brief    IO operation functions
+  * @{
+  */
+void HAL_DSI_IRQHandler(DSI_HandleTypeDef *hdsi);
+void HAL_DSI_TearingEffectCallback(DSI_HandleTypeDef *hdsi);
+void HAL_DSI_EndOfRefreshCallback(DSI_HandleTypeDef *hdsi);
+void HAL_DSI_ErrorCallback(DSI_HandleTypeDef *hdsi);
+/**
+  * @}
+  */
+
+/** @defgroup DSI_Group3 Peripheral Control functions
+  *  @brief    Peripheral Control functions
+  * @{
+  */
 HAL_StatusTypeDef HAL_DSI_SetGenericVCID(DSI_HandleTypeDef *hdsi, uint32_t VirtualChannelID);
 HAL_StatusTypeDef HAL_DSI_ConfigVideoMode(DSI_HandleTypeDef *hdsi, DSI_VidCfgTypeDef *VidCfg);
 HAL_StatusTypeDef HAL_DSI_ConfigAdaptedCommandMode(DSI_HandleTypeDef *hdsi, DSI_CmdCfgTypeDef *CmdCfg);
@@ -1190,40 +1214,28 @@
 HAL_StatusTypeDef HAL_DSI_SetPullDown(DSI_HandleTypeDef *hdsi, FunctionalState State);
 HAL_StatusTypeDef HAL_DSI_SetContentionDetectionOff(DSI_HandleTypeDef *hdsi, FunctionalState State);
 
+/**
+  * @}
+  */
+
+/** @defgroup DSI_Group4 Peripheral State and Errors functions
+  *  @brief    Peripheral State and Errors functions
+  * @{
+  */
 uint32_t HAL_DSI_GetError(DSI_HandleTypeDef *hdsi);
-HAL_StatusTypeDef HAL_DSI_ConfigErrorMonitor(DSI_HandleTypeDef *hdsi, uint32_t ActiveErrors);
 HAL_DSI_StateTypeDef HAL_DSI_GetState(DSI_HandleTypeDef *hdsi);
+
+/**
+  * @}
+  */
+
 /**
   * @}
   */
 
 /* Private types -------------------------------------------------------------*/
-/** @defgroup DSI_Private_Types DSI Private Types
-  * @{
-  */
-
-/**
-  * @}
-  */
-
 /* Private defines -----------------------------------------------------------*/
-/** @defgroup DSI_Private_Defines DSI Private Defines
-  * @{
-  */
-
-/**
-  * @}
-  */
-
 /* Private variables ---------------------------------------------------------*/
-/** @defgroup DSI_Private_Variables DSI Private Variables
-  * @{
-  */
-
-/**
-  * @}
-  */
-
 /* Private constants ---------------------------------------------------------*/
 /** @defgroup DSI_Private_Constants DSI Private Constants
   * @{
@@ -1249,45 +1261,73 @@
                                                      ((ODF) == DSI_PLL_OUT_DIV2) || \
                                                      ((ODF) == DSI_PLL_OUT_DIV4) || \
                                                      ((ODF) == DSI_PLL_OUT_DIV8))
-#define IS_DSI_AUTO_CLKLANE_CONTROL(AutoClkLane)    (((AutoClkLane) == DSI_AUTO_CLK_LANE_CTRL_DISABLE) || ((AutoClkLane) == DSI_AUTO_CLK_LANE_CTRL_ENABLE))
-#define IS_DSI_NUMBER_OF_LANES(NumberOfLanes)       (((NumberOfLanes) == DSI_ONE_DATA_LANE) || ((NumberOfLanes) == DSI_TWO_DATA_LANES))
+#define IS_DSI_AUTO_CLKLANE_CONTROL(AutoClkLane)    (((AutoClkLane) == DSI_AUTO_CLK_LANE_CTRL_DISABLE)\
+                                                     || ((AutoClkLane) == DSI_AUTO_CLK_LANE_CTRL_ENABLE))
+#define IS_DSI_NUMBER_OF_LANES(NumberOfLanes)       (((NumberOfLanes) == DSI_ONE_DATA_LANE)\
+                                                     || ((NumberOfLanes) == DSI_TWO_DATA_LANES))
 #define IS_DSI_FLOW_CONTROL(FlowControl)            (((FlowControl) | DSI_FLOW_CONTROL_ALL) == DSI_FLOW_CONTROL_ALL)
 #define IS_DSI_COLOR_CODING(ColorCoding)            ((ColorCoding) <= 5U)
-#define IS_DSI_LOOSELY_PACKED(LooselyPacked)        (((LooselyPacked) == DSI_LOOSELY_PACKED_ENABLE) || ((LooselyPacked) == DSI_LOOSELY_PACKED_DISABLE))
-#define IS_DSI_DE_POLARITY(DataEnable)              (((DataEnable) == DSI_DATA_ENABLE_ACTIVE_HIGH) || ((DataEnable) == DSI_DATA_ENABLE_ACTIVE_LOW))
-#define IS_DSI_VSYNC_POLARITY(VSYNC)                (((VSYNC) == DSI_VSYNC_ACTIVE_HIGH) || ((VSYNC) == DSI_VSYNC_ACTIVE_LOW))
-#define IS_DSI_HSYNC_POLARITY(HSYNC)                (((HSYNC) == DSI_HSYNC_ACTIVE_HIGH) || ((HSYNC) == DSI_HSYNC_ACTIVE_LOW))
+#define IS_DSI_LOOSELY_PACKED(LooselyPacked)        (((LooselyPacked) == DSI_LOOSELY_PACKED_ENABLE)\
+                                                     || ((LooselyPacked) == DSI_LOOSELY_PACKED_DISABLE))
+#define IS_DSI_DE_POLARITY(DataEnable)              (((DataEnable) == DSI_DATA_ENABLE_ACTIVE_HIGH)\
+                                                     || ((DataEnable) == DSI_DATA_ENABLE_ACTIVE_LOW))
+#define IS_DSI_VSYNC_POLARITY(VSYNC)                (((VSYNC) == DSI_VSYNC_ACTIVE_HIGH)\
+                                                     || ((VSYNC) == DSI_VSYNC_ACTIVE_LOW))
+#define IS_DSI_HSYNC_POLARITY(HSYNC)                (((HSYNC) == DSI_HSYNC_ACTIVE_HIGH)\
+                                                     || ((HSYNC) == DSI_HSYNC_ACTIVE_LOW))
 #define IS_DSI_VIDEO_MODE_TYPE(VideoModeType)       (((VideoModeType) == DSI_VID_MODE_NB_PULSES) || \
                                                      ((VideoModeType) == DSI_VID_MODE_NB_EVENTS) || \
                                                      ((VideoModeType) == DSI_VID_MODE_BURST))
-#define IS_DSI_COLOR_MODE(ColorMode)                (((ColorMode) == DSI_COLOR_MODE_FULL) || ((ColorMode) == DSI_COLOR_MODE_EIGHT))
+#define IS_DSI_COLOR_MODE(ColorMode)                (((ColorMode) == DSI_COLOR_MODE_FULL)\
+                                                     || ((ColorMode) == DSI_COLOR_MODE_EIGHT))
 #define IS_DSI_SHUT_DOWN(ShutDown)                  (((ShutDown) == DSI_DISPLAY_ON) || ((ShutDown) == DSI_DISPLAY_OFF))
-#define IS_DSI_LP_COMMAND(LPCommand)                (((LPCommand) == DSI_LP_COMMAND_DISABLE) || ((LPCommand) == DSI_LP_COMMAND_ENABLE))
+#define IS_DSI_LP_COMMAND(LPCommand)                (((LPCommand) == DSI_LP_COMMAND_DISABLE)\
+                                                     || ((LPCommand) == DSI_LP_COMMAND_ENABLE))
 #define IS_DSI_LP_HFP(LPHFP)                        (((LPHFP) == DSI_LP_HFP_DISABLE) || ((LPHFP) == DSI_LP_HFP_ENABLE))
 #define IS_DSI_LP_HBP(LPHBP)                        (((LPHBP) == DSI_LP_HBP_DISABLE) || ((LPHBP) == DSI_LP_HBP_ENABLE))
-#define IS_DSI_LP_VACTIVE(LPVActive)                (((LPVActive) == DSI_LP_VACT_DISABLE) || ((LPVActive) == DSI_LP_VACT_ENABLE))
+#define IS_DSI_LP_VACTIVE(LPVActive)                (((LPVActive) == DSI_LP_VACT_DISABLE)\
+                                                     || ((LPVActive) == DSI_LP_VACT_ENABLE))
 #define IS_DSI_LP_VFP(LPVFP)                        (((LPVFP) == DSI_LP_VFP_DISABLE) || ((LPVFP) == DSI_LP_VFP_ENABLE))
 #define IS_DSI_LP_VBP(LPVBP)                        (((LPVBP) == DSI_LP_VBP_DISABLE) || ((LPVBP) == DSI_LP_VBP_ENABLE))
-#define IS_DSI_LP_VSYNC(LPVSYNC)                    (((LPVSYNC) == DSI_LP_VSYNC_DISABLE) || ((LPVSYNC) == DSI_LP_VSYNC_ENABLE))
-#define IS_DSI_FBTAA(FrameBTAAcknowledge)           (((FrameBTAAcknowledge) == DSI_FBTAA_DISABLE) || ((FrameBTAAcknowledge) == DSI_FBTAA_ENABLE))
+#define IS_DSI_LP_VSYNC(LPVSYNC)                    (((LPVSYNC) == DSI_LP_VSYNC_DISABLE)\
+                                                     || ((LPVSYNC) == DSI_LP_VSYNC_ENABLE))
+#define IS_DSI_FBTAA(FrameBTAAcknowledge)           (((FrameBTAAcknowledge) == DSI_FBTAA_DISABLE)\
+                                                     || ((FrameBTAAcknowledge) == DSI_FBTAA_ENABLE))
 #define IS_DSI_TE_SOURCE(TESource)                  (((TESource) == DSI_TE_DSILINK) || ((TESource) == DSI_TE_EXTERNAL))
-#define IS_DSI_TE_POLARITY(TEPolarity)              (((TEPolarity) == DSI_TE_RISING_EDGE) || ((TEPolarity) == DSI_TE_FALLING_EDGE))
-#define IS_DSI_AUTOMATIC_REFRESH(AutomaticRefresh)  (((AutomaticRefresh) == DSI_AR_DISABLE) || ((AutomaticRefresh) == DSI_AR_ENABLE))
-#define IS_DSI_VS_POLARITY(VSPolarity)              (((VSPolarity) == DSI_VSYNC_FALLING) || ((VSPolarity) == DSI_VSYNC_RISING))
-#define IS_DSI_TE_ACK_REQUEST(TEAcknowledgeRequest) (((TEAcknowledgeRequest) == DSI_TE_ACKNOWLEDGE_DISABLE) || ((TEAcknowledgeRequest) == DSI_TE_ACKNOWLEDGE_ENABLE))
-#define IS_DSI_ACK_REQUEST(AcknowledgeRequest)      (((AcknowledgeRequest) == DSI_ACKNOWLEDGE_DISABLE) || ((AcknowledgeRequest) == DSI_ACKNOWLEDGE_ENABLE))
-#define IS_DSI_LP_GSW0P(LP_GSW0P)                   (((LP_GSW0P) == DSI_LP_GSW0P_DISABLE) || ((LP_GSW0P) == DSI_LP_GSW0P_ENABLE))
-#define IS_DSI_LP_GSW1P(LP_GSW1P)                   (((LP_GSW1P) == DSI_LP_GSW1P_DISABLE) || ((LP_GSW1P) == DSI_LP_GSW1P_ENABLE))
-#define IS_DSI_LP_GSW2P(LP_GSW2P)                   (((LP_GSW2P) == DSI_LP_GSW2P_DISABLE) || ((LP_GSW2P) == DSI_LP_GSW2P_ENABLE))
-#define IS_DSI_LP_GSR0P(LP_GSR0P)                   (((LP_GSR0P) == DSI_LP_GSR0P_DISABLE) || ((LP_GSR0P) == DSI_LP_GSR0P_ENABLE))
-#define IS_DSI_LP_GSR1P(LP_GSR1P)                   (((LP_GSR1P) == DSI_LP_GSR1P_DISABLE) || ((LP_GSR1P) == DSI_LP_GSR1P_ENABLE))
-#define IS_DSI_LP_GSR2P(LP_GSR2P)                   (((LP_GSR2P) == DSI_LP_GSR2P_DISABLE) || ((LP_GSR2P) == DSI_LP_GSR2P_ENABLE))
-#define IS_DSI_LP_GLW(LP_GLW)                       (((LP_GLW) == DSI_LP_GLW_DISABLE) || ((LP_GLW) == DSI_LP_GLW_ENABLE))
-#define IS_DSI_LP_DSW0P(LP_DSW0P)                   (((LP_DSW0P) == DSI_LP_DSW0P_DISABLE) || ((LP_DSW0P) == DSI_LP_DSW0P_ENABLE))
-#define IS_DSI_LP_DSW1P(LP_DSW1P)                   (((LP_DSW1P) == DSI_LP_DSW1P_DISABLE) || ((LP_DSW1P) == DSI_LP_DSW1P_ENABLE))
-#define IS_DSI_LP_DSR0P(LP_DSR0P)                   (((LP_DSR0P) == DSI_LP_DSR0P_DISABLE) || ((LP_DSR0P) == DSI_LP_DSR0P_ENABLE))
-#define IS_DSI_LP_DLW(LP_DLW)                       (((LP_DLW) == DSI_LP_DLW_DISABLE) || ((LP_DLW) == DSI_LP_DLW_ENABLE))
-#define IS_DSI_LP_MRDP(LP_MRDP)                     (((LP_MRDP) == DSI_LP_MRDP_DISABLE) || ((LP_MRDP) == DSI_LP_MRDP_ENABLE))
+#define IS_DSI_TE_POLARITY(TEPolarity)              (((TEPolarity) == DSI_TE_RISING_EDGE)\
+                                                     || ((TEPolarity) == DSI_TE_FALLING_EDGE))
+#define IS_DSI_AUTOMATIC_REFRESH(AutomaticRefresh)  (((AutomaticRefresh) == DSI_AR_DISABLE)\
+                                                     || ((AutomaticRefresh) == DSI_AR_ENABLE))
+#define IS_DSI_VS_POLARITY(VSPolarity)              (((VSPolarity) == DSI_VSYNC_FALLING)\
+                                                     || ((VSPolarity) == DSI_VSYNC_RISING))
+#define IS_DSI_TE_ACK_REQUEST(TEAcknowledgeRequest) (((TEAcknowledgeRequest) == DSI_TE_ACKNOWLEDGE_DISABLE)\
+                                                     || ((TEAcknowledgeRequest) == DSI_TE_ACKNOWLEDGE_ENABLE))
+#define IS_DSI_ACK_REQUEST(AcknowledgeRequest)      (((AcknowledgeRequest) == DSI_ACKNOWLEDGE_DISABLE)\
+                                                     || ((AcknowledgeRequest) == DSI_ACKNOWLEDGE_ENABLE))
+#define IS_DSI_LP_GSW0P(LP_GSW0P)                   (((LP_GSW0P) == DSI_LP_GSW0P_DISABLE)\
+                                                     || ((LP_GSW0P) == DSI_LP_GSW0P_ENABLE))
+#define IS_DSI_LP_GSW1P(LP_GSW1P)                   (((LP_GSW1P) == DSI_LP_GSW1P_DISABLE)\
+                                                     || ((LP_GSW1P) == DSI_LP_GSW1P_ENABLE))
+#define IS_DSI_LP_GSW2P(LP_GSW2P)                   (((LP_GSW2P) == DSI_LP_GSW2P_DISABLE)\
+                                                     || ((LP_GSW2P) == DSI_LP_GSW2P_ENABLE))
+#define IS_DSI_LP_GSR0P(LP_GSR0P)                   (((LP_GSR0P) == DSI_LP_GSR0P_DISABLE)\
+                                                     || ((LP_GSR0P) == DSI_LP_GSR0P_ENABLE))
+#define IS_DSI_LP_GSR1P(LP_GSR1P)                   (((LP_GSR1P) == DSI_LP_GSR1P_DISABLE)\
+                                                     || ((LP_GSR1P) == DSI_LP_GSR1P_ENABLE))
+#define IS_DSI_LP_GSR2P(LP_GSR2P)                   (((LP_GSR2P) == DSI_LP_GSR2P_DISABLE)\
+                                                     || ((LP_GSR2P) == DSI_LP_GSR2P_ENABLE))
+#define IS_DSI_LP_GLW(LP_GLW)                       (((LP_GLW) == DSI_LP_GLW_DISABLE)\
+                                                     || ((LP_GLW) == DSI_LP_GLW_ENABLE))
+#define IS_DSI_LP_DSW0P(LP_DSW0P)                   (((LP_DSW0P) == DSI_LP_DSW0P_DISABLE)\
+                                                     || ((LP_DSW0P) == DSI_LP_DSW0P_ENABLE))
+#define IS_DSI_LP_DSW1P(LP_DSW1P)                   (((LP_DSW1P) == DSI_LP_DSW1P_DISABLE)\
+                                                     || ((LP_DSW1P) == DSI_LP_DSW1P_ENABLE))
+#define IS_DSI_LP_DSR0P(LP_DSR0P)                   (((LP_DSR0P) == DSI_LP_DSR0P_DISABLE)\
+                                                     || ((LP_DSR0P) == DSI_LP_DSR0P_ENABLE))
+#define IS_DSI_LP_DLW(LP_DLW)                       (((LP_DLW) == DSI_LP_DLW_DISABLE)\
+                                                     || ((LP_DLW) == DSI_LP_DLW_ENABLE))
+#define IS_DSI_LP_MRDP(LP_MRDP)                     (((LP_MRDP) == DSI_LP_MRDP_DISABLE)\
+                                                     || ((LP_MRDP) == DSI_LP_MRDP_ENABLE))
 #define IS_DSI_SHORT_WRITE_PACKET_TYPE(MODE)        (((MODE) == DSI_DCS_SHORT_PKT_WRITE_P0) || \
                                                      ((MODE) == DSI_DCS_SHORT_PKT_WRITE_P1) || \
                                                      ((MODE) == DSI_GEN_SHORT_PKT_WRITE_P0) || \
@@ -1299,10 +1339,14 @@
                                                      ((MODE) == DSI_GEN_SHORT_PKT_READ_P0) || \
                                                      ((MODE) == DSI_GEN_SHORT_PKT_READ_P1) || \
                                                      ((MODE) == DSI_GEN_SHORT_PKT_READ_P2))
-#define IS_DSI_COMMUNICATION_DELAY(CommDelay)       (((CommDelay) == DSI_SLEW_RATE_HSTX) || ((CommDelay) == DSI_SLEW_RATE_LPTX) || ((CommDelay) == DSI_HS_DELAY))
+#define IS_DSI_COMMUNICATION_DELAY(CommDelay)       (((CommDelay) == DSI_SLEW_RATE_HSTX) || \
+                                                     ((CommDelay) == DSI_SLEW_RATE_LPTX) || \
+                                                     ((CommDelay) == DSI_HS_DELAY))
 #define IS_DSI_LANE_GROUP(Lane)                     (((Lane) == DSI_CLOCK_LANE) || ((Lane) == DSI_DATA_LANES))
-#define IS_DSI_CUSTOM_LANE(CustomLane)              (((CustomLane) == DSI_SWAP_LANE_PINS) || ((CustomLane) == DSI_INVERT_HS_SIGNAL))
-#define IS_DSI_LANE(Lane)                           (((Lane) == DSI_CLOCK_LANE) || ((Lane) == DSI_DATA_LANE0) || ((Lane) == DSI_DATA_LANE1))
+#define IS_DSI_CUSTOM_LANE(CustomLane)              (((CustomLane) == DSI_SWAP_LANE_PINS)\
+                                                     || ((CustomLane) == DSI_INVERT_HS_SIGNAL))
+#define IS_DSI_LANE(Lane)                           (((Lane) == DSI_CLOCK_LANE) || \
+                                                     ((Lane) == DSI_DATA_LANE0) || ((Lane) == DSI_DATA_LANE1))
 #define IS_DSI_PHY_TIMING(Timing)                   (((Timing) == DSI_TCLK_POST   ) || \
                                                      ((Timing) == DSI_TLPX_CLK    ) || \
                                                      ((Timing) == DSI_THS_EXIT    ) || \
@@ -1317,24 +1361,6 @@
   * @}
   */
 
-/* Private functions prototypes ----------------------------------------------*/
-/** @defgroup DSI_Private_Functions_Prototypes DSI Private Functions Prototypes
-  * @{
-  */
-
-/**
-  * @}
-  */
-
-/* Private functions ---------------------------------------------------------*/
-/** @defgroup DSI_Private_Functions DSI Private Functions
-  * @{
-  */
-
-/**
-  * @}
-  */
-
 /**
   * @}
   */
@@ -1349,5 +1375,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_DSI_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_eth.h b/Inc/stm32f7xx_hal_eth.h
index 3039832..6e19bb4 100644
--- a/Inc/stm32f7xx_hal_eth.h
+++ b/Inc/stm32f7xx_hal_eth.h
@@ -6,16 +6,15 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
 #ifndef __STM32F7xx_HAL_ETH_H
@@ -2214,4 +2213,3 @@
 
 
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_exti.h b/Inc/stm32f7xx_hal_exti.h
index 6411f81..caf3ab3 100644
--- a/Inc/stm32f7xx_hal_exti.h
+++ b/Inc/stm32f7xx_hal_exti.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2018 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -316,4 +315,3 @@
 
 #endif /* STM32F7xx_HAL_EXTI_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_flash.h b/Inc/stm32f7xx_hal_flash.h
index ed073e9..1fad392 100644
--- a/Inc/stm32f7xx_hal_flash.h
+++ b/Inc/stm32f7xx_hal_flash.h
@@ -6,14 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 
@@ -415,4 +413,3 @@
 
 #endif /* __STM32F7xx_HAL_FLASH_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_flash_ex.h b/Inc/stm32f7xx_hal_flash_ex.h
index 8b2cf99..cdada3d 100644
--- a/Inc/stm32f7xx_hal_flash_ex.h
+++ b/Inc/stm32f7xx_hal_flash_ex.h
@@ -6,14 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 
@@ -697,4 +695,3 @@
 
 #endif /* __STM32F7xx_HAL_FLASH_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_gpio.h b/Inc/stm32f7xx_hal_gpio.h
index 46a6498..86a9e0e 100644
--- a/Inc/stm32f7xx_hal_gpio.h
+++ b/Inc/stm32f7xx_hal_gpio.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -108,29 +107,28 @@
 
 /** @defgroup GPIO_mode_define GPIO mode define
   * @brief GPIO Configuration Mode 
-  *        Elements values convention: 0xX0yz00YZ
-  *           - X  : GPIO mode or EXTI Mode
-  *           - y  : External IT or Event trigger detection 
-  *           - z  : IO configuration on External IT or Event
-  *           - Y  : Output type (Push Pull or Open Drain)
-  *           - Z  : IO Direction mode (Input, Output, Alternate or Analog)
+  *        Elements values convention: 0x00WX00YZ
+  *           - W  : EXTI trigger detection on 3 bits
+  *           - X  : EXTI mode (IT or Event) on 2 bits
+  *           - Y  : Output type (Push Pull or Open Drain) on 1 bit
+  *           - Z  : GPIO mode (Input, Output, Alternate or Analog) on 2 bits
   * @{
   */ 
-#define  GPIO_MODE_INPUT                        ((uint32_t)0x00000000U)   /*!< Input Floating Mode                   */
-#define  GPIO_MODE_OUTPUT_PP                    ((uint32_t)0x00000001U)   /*!< Output Push Pull Mode                 */
-#define  GPIO_MODE_OUTPUT_OD                    ((uint32_t)0x00000011U)   /*!< Output Open Drain Mode                */
-#define  GPIO_MODE_AF_PP                        ((uint32_t)0x00000002U)   /*!< Alternate Function Push Pull Mode     */
-#define  GPIO_MODE_AF_OD                        ((uint32_t)0x00000012U)   /*!< Alternate Function Open Drain Mode    */
+#define  GPIO_MODE_INPUT                        MODE_INPUT                                                  /*!< Input Floating Mode                   */
+#define  GPIO_MODE_OUTPUT_PP                    (MODE_OUTPUT | OUTPUT_PP)                                   /*!< Output Push Pull Mode                 */
+#define  GPIO_MODE_OUTPUT_OD                    (MODE_OUTPUT | OUTPUT_OD)                                   /*!< Output Open Drain Mode                */
+#define  GPIO_MODE_AF_PP                        (MODE_AF | OUTPUT_PP)                                       /*!< Alternate Function Push Pull Mode     */
+#define  GPIO_MODE_AF_OD                        (MODE_AF | OUTPUT_OD)                                       /*!< Alternate Function Open Drain Mode    */
 
-#define  GPIO_MODE_ANALOG                       ((uint32_t)0x00000003U)   /*!< Analog Mode  */
+#define  GPIO_MODE_ANALOG                       MODE_ANALOG                                                 /*!< Analog Mode  */
     
-#define  GPIO_MODE_IT_RISING                    ((uint32_t)0x10110000U)   /*!< External Interrupt Mode with Rising edge trigger detection          */
-#define  GPIO_MODE_IT_FALLING                   ((uint32_t)0x10210000U)   /*!< External Interrupt Mode with Falling edge trigger detection         */
-#define  GPIO_MODE_IT_RISING_FALLING            ((uint32_t)0x10310000U)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */
+#define  GPIO_MODE_IT_RISING                    (MODE_INPUT | EXTI_IT | TRIGGER_RISING)                     /*!< External Interrupt Mode with Rising edge trigger detection          */
+#define  GPIO_MODE_IT_FALLING                   (MODE_INPUT | EXTI_IT | TRIGGER_FALLING)                    /*!< External Interrupt Mode with Falling edge trigger detection         */
+#define  GPIO_MODE_IT_RISING_FALLING            (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */
  
-#define  GPIO_MODE_EVT_RISING                   ((uint32_t)0x10120000U)   /*!< External Event Mode with Rising edge trigger detection               */
-#define  GPIO_MODE_EVT_FALLING                  ((uint32_t)0x10220000U)   /*!< External Event Mode with Falling edge trigger detection              */
-#define  GPIO_MODE_EVT_RISING_FALLING           ((uint32_t)0x10320000U)   /*!< External Event Mode with Rising/Falling edge trigger detection       */
+#define  GPIO_MODE_EVT_RISING                   (MODE_INPUT | EXTI_EVT | TRIGGER_RISING)                     /*!< External Event Mode with Rising edge trigger detection             */
+#define  GPIO_MODE_EVT_FALLING                  (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING)                    /*!< External Event Mode with Falling edge trigger detection            */
+#define  GPIO_MODE_EVT_RISING_FALLING           (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING)   /*!< External Event Mode with Rising/Falling edge trigger detection     */
 /**
   * @}
   */
@@ -252,7 +250,24 @@
 /** @defgroup GPIO_Private_Constants GPIO Private Constants
   * @{
   */
-
+#define GPIO_MODE_Pos                           0U
+#define GPIO_MODE                               (0x3UL << GPIO_MODE_Pos)
+#define MODE_INPUT                              (0x0UL << GPIO_MODE_Pos)
+#define MODE_OUTPUT                             (0x1UL << GPIO_MODE_Pos)
+#define MODE_AF                                 (0x2UL << GPIO_MODE_Pos)
+#define MODE_ANALOG                             (0x3UL << GPIO_MODE_Pos)
+#define OUTPUT_TYPE_Pos                         4U
+#define OUTPUT_TYPE                             (0x1UL << OUTPUT_TYPE_Pos)
+#define OUTPUT_PP                               (0x0UL << OUTPUT_TYPE_Pos)
+#define OUTPUT_OD                               (0x1UL << OUTPUT_TYPE_Pos)
+#define EXTI_MODE_Pos                           16U
+#define EXTI_MODE                               (0x3UL << EXTI_MODE_Pos)
+#define EXTI_IT                                 (0x1UL << EXTI_MODE_Pos)
+#define EXTI_EVT                                (0x2UL << EXTI_MODE_Pos)
+#define TRIGGER_MODE_Pos                         20U
+#define TRIGGER_MODE                            (0x7UL << TRIGGER_MODE_Pos)
+#define TRIGGER_RISING                          (0x1UL << TRIGGER_MODE_Pos)
+#define TRIGGER_FALLING                         (0x2UL << TRIGGER_MODE_Pos)
 /**
   * @}
   */
@@ -306,4 +321,3 @@
 
 #endif /* __STM32F7xx_HAL_GPIO_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_gpio_ex.h b/Inc/stm32f7xx_hal_gpio_ex.h
index f93badb..1d5ef43 100644
--- a/Inc/stm32f7xx_hal_gpio_ex.h
+++ b/Inc/stm32f7xx_hal_gpio_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -655,4 +654,3 @@
 
 #endif /* __STM32F7xx_HAL_GPIO_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_hash.h b/Inc/stm32f7xx_hal_hash.h
index a9ccf3f..1cd5448 100644
--- a/Inc/stm32f7xx_hal_hash.h
+++ b/Inc/stm32f7xx_hal_hash.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -247,13 +246,6 @@
 /**
   * @}
   */
-/** @defgroup HASH_alias HASH API alias
-  * @{
-  */
-#define HAL_HASHEx_IRQHandler   HAL_HASH_IRQHandler  /*!< Redirection for compatibility with legacy code */
-/**
-  * @}
-  */
 
 /** @defgroup HASH_Error_Definition   HASH Error Definition
   * @{
@@ -636,4 +628,3 @@
 
 #endif /* STM32F7xx_HAL_HASH_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_hash_ex.h b/Inc/stm32f7xx_hal_hash_ex.h
index 6ac0715..69018bb 100644
--- a/Inc/stm32f7xx_hal_hash_ex.h
+++ b/Inc/stm32f7xx_hal_hash_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -174,4 +173,3 @@
 
 #endif /* STM32F7xx_HAL_HASH_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_hcd.h b/Inc/stm32f7xx_hal_hcd.h
index 68d915a..433a808 100644
--- a/Inc/stm32f7xx_hal_hcd.h
+++ b/Inc/stm32f7xx_hal_hcd.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -111,11 +110,16 @@
 #define HCD_SPEED_HIGH               USBH_HS_SPEED
 #define HCD_SPEED_FULL               USBH_FSLS_SPEED
 #define HCD_SPEED_LOW                USBH_FSLS_SPEED
+/**
+  * @}
+  */
 
+/** @defgroup HCD_Device_Speed HCD Device Speed
+  * @{
+  */
 #define HCD_DEVICE_SPEED_HIGH               0U
 #define HCD_DEVICE_SPEED_FULL               1U
 #define HCD_DEVICE_SPEED_LOW                2U
-
 /**
   * @}
   */
@@ -153,7 +157,8 @@
 #define __HAL_HCD_ENABLE(__HANDLE__)                   (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
 #define __HAL_HCD_DISABLE(__HANDLE__)                  (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
 
-#define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__)      ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
+#define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__)      ((USB_ReadInterrupts((__HANDLE__)->Instance)\
+                                                             & (__INTERRUPT__)) == (__INTERRUPT__))
 #define __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)    (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__))
 #define __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__)         (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U)
 
@@ -296,10 +301,10 @@
   */
 /* Private functions prototypes ----------------------------------------------*/
 
- /**
+/**
   * @}
   */
- /**
+/**
   * @}
   */
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
@@ -309,5 +314,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_HCD_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_i2c.h b/Inc/stm32f7xx_hal_i2c.h
index c2aa9f6..f8e67d6 100644
--- a/Inc/stm32f7xx_hal_i2c.h
+++ b/Inc/stm32f7xx_hal_i2c.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -48,29 +47,30 @@
 typedef struct
 {
   uint32_t Timing;              /*!< Specifies the I2C_TIMINGR_register value.
-                                  This parameter calculated by referring to I2C initialization
-                                         section in Reference manual */
+                                     This parameter calculated by referring to I2C initialization section
+                                     in Reference manual */
 
   uint32_t OwnAddress1;         /*!< Specifies the first device own address.
-                                  This parameter can be a 7-bit or 10-bit address. */
+                                     This parameter can be a 7-bit or 10-bit address. */
 
   uint32_t AddressingMode;      /*!< Specifies if 7-bit or 10-bit addressing mode is selected.
-                                  This parameter can be a value of @ref I2C_ADDRESSING_MODE */
+                                     This parameter can be a value of @ref I2C_ADDRESSING_MODE */
 
   uint32_t DualAddressMode;     /*!< Specifies if dual addressing mode is selected.
-                                  This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */
+                                     This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */
 
   uint32_t OwnAddress2;         /*!< Specifies the second device own address if dual addressing mode is selected
-                                  This parameter can be a 7-bit address. */
+                                     This parameter can be a 7-bit address. */
 
-  uint32_t OwnAddress2Masks;    /*!< Specifies the acknowledge mask address second device own address if dual addressing mode is selected
-                                  This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */
+  uint32_t OwnAddress2Masks;    /*!< Specifies the acknowledge mask address second device own address if dual addressing
+                                     mode is selected.
+                                     This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */
 
   uint32_t GeneralCallMode;     /*!< Specifies if general call mode is selected.
-                                  This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */
+                                     This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */
 
   uint32_t NoStretchMode;       /*!< Specifies if nostretch mode is selected.
-                                  This parameter can be a value of @ref I2C_NOSTRETCH_MODE */
+                                     This parameter can be a value of @ref I2C_NOSTRETCH_MODE */
 
 } I2C_InitTypeDef;
 
@@ -200,7 +200,8 @@
 
   __IO uint32_t              PreviousState;  /*!< I2C communication Previous state          */
 
-  HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);  /*!< I2C transfer IRQ handler function pointer */
+  HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);
+  /*!< I2C transfer IRQ handler function pointer */
 
   DMA_HandleTypeDef          *hdmatx;        /*!< I2C Tx DMA handle parameters              */
 
@@ -217,20 +218,32 @@
   __IO uint32_t              AddrEventCount; /*!< I2C Address Event counter                 */
 
 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
-  void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);           /*!< I2C Master Tx Transfer completed callback */
-  void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);           /*!< I2C Master Rx Transfer completed callback */
-  void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);            /*!< I2C Slave Tx Transfer completed callback  */
-  void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);            /*!< I2C Slave Rx Transfer completed callback  */
-  void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c);             /*!< I2C Listen Complete callback              */
-  void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);              /*!< I2C Memory Tx Transfer completed callback */
-  void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);              /*!< I2C Memory Rx Transfer completed callback */
-  void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c);                  /*!< I2C Error callback                        */
-  void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c);              /*!< I2C Abort callback                        */
+  void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Master Tx Transfer completed callback */
+  void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Master Rx Transfer completed callback */
+  void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Slave Tx Transfer completed callback  */
+  void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Slave Rx Transfer completed callback  */
+  void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Listen Complete callback              */
+  void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Memory Tx Transfer completed callback */
+  void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Memory Rx Transfer completed callback */
+  void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Error callback                        */
+  void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Abort callback                        */
 
-  void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode);  /*!< I2C Slave Address Match callback */
+  void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode);
+  /*!< I2C Slave Address Match callback */
 
-  void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c);                /*!< I2C Msp Init callback                     */
-  void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c);              /*!< I2C Msp DeInit callback                   */
+  void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Msp Init callback                     */
+  void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c);
+  /*!< I2C Msp DeInit callback                   */
 
 #endif  /* USE_HAL_I2C_REGISTER_CALLBACKS */
 } I2C_HandleTypeDef;
@@ -259,8 +272,11 @@
 /**
   * @brief  HAL I2C Callback pointer definition
   */
-typedef  void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c); /*!< pointer to an I2C callback function */
-typedef  void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); /*!< pointer to an I2C Address Match callback function */
+typedef  void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c);
+/*!< pointer to an I2C callback function */
+typedef  void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection,
+                                          uint16_t AddrMatchCode);
+/*!< pointer to an I2C Address Match callback function */
 
 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
 /**
@@ -440,14 +456,14 @@
   * @retval None
   */
 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
-#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                do{                                                   \
-                                                                    (__HANDLE__)->State = HAL_I2C_STATE_RESET;       \
-                                                                    (__HANDLE__)->MspInitCallback = NULL;            \
-                                                                    (__HANDLE__)->MspDeInitCallback = NULL;          \
+#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                do{                                             \
+                                                                    (__HANDLE__)->State = HAL_I2C_STATE_RESET;  \
+                                                                    (__HANDLE__)->MspInitCallback = NULL;       \
+                                                                    (__HANDLE__)->MspDeInitCallback = NULL;     \
                                                                   } while(0)
 #else
 #define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                ((__HANDLE__)->State = HAL_I2C_STATE_RESET)
-#endif
+#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
 
 /** @brief  Enable the specified I2C interrupt.
   * @param  __HANDLE__ specifies the I2C Handle.
@@ -542,26 +558,27 @@
   *
   * @retval None
   */
-#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? ((__HANDLE__)->Instance->ISR |= (__FLAG__)) \
-                                                    : ((__HANDLE__)->Instance->ICR = (__FLAG__)))
+#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? \
+                                                    ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \
+                                                    ((__HANDLE__)->Instance->ICR = (__FLAG__)))
 
 /** @brief  Enable the specified I2C peripheral.
   * @param  __HANDLE__ specifies the I2C Handle.
   * @retval None
   */
-#define __HAL_I2C_ENABLE(__HANDLE__)                            (SET_BIT((__HANDLE__)->Instance->CR1,  I2C_CR1_PE))
+#define __HAL_I2C_ENABLE(__HANDLE__)                         (SET_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))
 
 /** @brief  Disable the specified I2C peripheral.
   * @param  __HANDLE__ specifies the I2C Handle.
   * @retval None
   */
-#define __HAL_I2C_DISABLE(__HANDLE__)                           (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))
+#define __HAL_I2C_DISABLE(__HANDLE__)                        (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))
 
 /** @brief  Generate a Non-Acknowledge I2C peripheral in Slave mode.
   * @param  __HANDLE__ specifies the I2C Handle.
   * @retval None
   */
-#define __HAL_I2C_GENERATE_NACK(__HANDLE__)                     (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK))
+#define __HAL_I2C_GENERATE_NACK(__HANDLE__)                  (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK))
 /**
   * @}
   */
@@ -601,12 +618,14 @@
   */
 /* IO operation functions  ****************************************************/
 /******* Blocking mode: Polling */
-HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size,
-                                          uint32_t Timeout);
-HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size,
+HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
+                                          uint16_t Size, uint32_t Timeout);
+HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
+                                         uint16_t Size, uint32_t Timeout);
+HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
                                          uint32_t Timeout);
-HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);
-HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);
+HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
+                                        uint32_t Timeout);
 HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
                                     uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
 HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
@@ -757,10 +776,14 @@
                                                         ((REQUEST) == I2C_OTHER_AND_LAST_FRAME))
 
 #define I2C_RESET_CR2(__HANDLE__)                 ((__HANDLE__)->Instance->CR2 &= \
-                                                   (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_RD_WRN)))
+                                                   (uint32_t)~((uint32_t)(I2C_CR2_SADD   | I2C_CR2_HEAD10R | \
+                                                                          I2C_CR2_NBYTES | I2C_CR2_RELOAD  | \
+                                                                          I2C_CR2_RD_WRN)))
 
-#define I2C_GET_ADDR_MATCH(__HANDLE__)            ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) >> 16U))
-#define I2C_GET_DIR(__HANDLE__)                   ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) >> 16U))
+#define I2C_GET_ADDR_MATCH(__HANDLE__)            ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) \
+                                                              >> 16U))
+#define I2C_GET_DIR(__HANDLE__)                   ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) \
+                                                             >> 16U))
 #define I2C_GET_STOP_MODE(__HANDLE__)             ((__HANDLE__)->Instance->CR2 & I2C_CR2_AUTOEND)
 #define I2C_GET_OWN_ADDRESS1(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR1 & I2C_OAR1_OA1))
 #define I2C_GET_OWN_ADDRESS2(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR2 & I2C_OAR2_OA2))
@@ -772,10 +795,15 @@
                                                                          (uint16_t)(0xFF00U))) >> 8U)))
 #define I2C_MEM_ADD_LSB(__ADDRESS__)              ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU))))
 
-#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & (~I2C_CR2_RD_WRN)) : \
-                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_ADD10) | (I2C_CR2_START)) & (~I2C_CR2_RD_WRN)))
+#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? \
+                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \
+                                                                 (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & \
+                                                                (~I2C_CR2_RD_WRN)) : \
+                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \
+                                                                 (I2C_CR2_ADD10) | (I2C_CR2_START)) & \
+                                                                (~I2C_CR2_RD_WRN)))
 
-#define I2C_CHECK_FLAG(__ISR__, __FLAG__)         ((((__ISR__) &  ((__FLAG__) & I2C_FLAG_MASK)) == \
+#define I2C_CHECK_FLAG(__ISR__, __FLAG__)         ((((__ISR__) & ((__FLAG__) & I2C_FLAG_MASK)) == \
                                                     ((__FLAG__) & I2C_FLAG_MASK)) ? SET : RESET)
 #define I2C_CHECK_IT_SOURCE(__CR1__, __IT__)      ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET)
 /**
@@ -805,5 +833,3 @@
 
 
 #endif /* STM32F7xx_HAL_I2C_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_i2c_ex.h b/Inc/stm32f7xx_hal_i2c_ex.h
index 580e67f..f0c572f 100644
--- a/Inc/stm32f7xx_hal_i2c_ex.h
+++ b/Inc/stm32f7xx_hal_i2c_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -61,34 +60,34 @@
 #else
 #define I2C_FASTMODEPLUS_PB6            (uint32_t)(0x00000004U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB6 not supported   */
 #define I2C_FASTMODEPLUS_PB7            (uint32_t)(0x00000008U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB7 not supported   */
-#endif
+#endif /* SYSCFG_PMC_I2C_PB6_FMP */
 #if defined(SYSCFG_PMC_I2C_PB8_FMP)
 #define I2C_FASTMODEPLUS_PB8            SYSCFG_PMC_I2C_PB8_FMP                        /*!< Enable Fast Mode Plus on PB8       */
 #define I2C_FASTMODEPLUS_PB9            SYSCFG_PMC_I2C_PB9_FMP                        /*!< Enable Fast Mode Plus on PB9       */
 #else
 #define I2C_FASTMODEPLUS_PB8            (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported   */
 #define I2C_FASTMODEPLUS_PB9            (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported   */
-#endif
+#endif /* SYSCFG_PMC_I2C_PB8_FMP */
 #if defined(SYSCFG_PMC_I2C1_FMP)
 #define I2C_FASTMODEPLUS_I2C1           SYSCFG_PMC_I2C1_FMP                           /*!< Enable Fast Mode Plus on I2C1 pins */
 #else
 #define I2C_FASTMODEPLUS_I2C1           (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported  */
-#endif
+#endif /* SYSCFG_PMC_I2C1_FMP */
 #if defined(SYSCFG_PMC_I2C2_FMP)
 #define I2C_FASTMODEPLUS_I2C2           SYSCFG_PMC_I2C2_FMP                           /*!< Enable Fast Mode Plus on I2C2 pins */
 #else
 #define I2C_FASTMODEPLUS_I2C2           (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported  */
-#endif
+#endif /* SYSCFG_PMC_I2C2_FMP */
 #if defined(SYSCFG_PMC_I2C3_FMP)
 #define I2C_FASTMODEPLUS_I2C3           SYSCFG_PMC_I2C3_FMP                           /*!< Enable Fast Mode Plus on I2C3 pins */
 #else
 #define I2C_FASTMODEPLUS_I2C3           (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported  */
-#endif
+#endif /* SYSCFG_PMC_I2C3_FMP */
 #if defined(SYSCFG_PMC_I2C4_FMP)
 #define I2C_FASTMODEPLUS_I2C4           SYSCFG_PMC_I2C4_FMP                           /*!< Enable Fast Mode Plus on I2C4 pins */
 #else
 #define I2C_FASTMODEPLUS_I2C4           (uint32_t)(0x00000800U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C4 not supported  */
-#endif
+#endif /* SYSCFG_PMC_I2C4_FMP */
 /**
   * @}
   */
@@ -111,7 +110,7 @@
   * @{
   */
 
-/** @addtogroup I2CEx_Exported_Functions_Group1 I2C Extended Filter Mode Functions
+/** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions
   * @{
   */
 /* Peripheral Control functions  ************************************************/
@@ -120,25 +119,17 @@
 /**
   * @}
   */
-
-/** @addtogroup I2CEx_Exported_Functions_Group2 I2C Extended WakeUp Mode Functions
-  * @{
-  */
-/**
-  * @}
-  */
-
-/** @addtogroup I2CEx_Exported_Functions_Group3 I2C Extended FastModePlus Functions
-  * @{
-  */
 #if  (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2C_PB8_FMP) || defined(SYSCFG_PMC_I2C_PB9_FMP)) || (defined(SYSCFG_PMC_I2C1_FMP)) || (defined(SYSCFG_PMC_I2C2_FMP)) || defined(SYSCFG_PMC_I2C3_FMP) || defined(SYSCFG_PMC_I2C4_FMP)
+
+/** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions
+  * @{
+  */
 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus);
 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
-#endif
 /**
   * @}
   */
-
+#endif /* Fast Mode Plus Availability */
 
 /**
   * @}
@@ -162,7 +153,7 @@
 
 #define IS_I2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)
 
-#if (defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP) && defined(SYSCFG_PMC_I2C4_FMP))
+#if defined(SYSCFG_PMC_I2C4_FMP)
 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \
@@ -171,7 +162,7 @@
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4))
-#elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP) && defined(SYSCFG_PMC_I2C3_FMP)
+#elif defined(SYSCFG_PMC_I2C3_FMP)
 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \
@@ -179,7 +170,7 @@
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3))
-#elif defined(SYSCFG_PMC_I2C1_FMP) && defined(SYSCFG_PMC_I2C2_FMP)
+#elif defined(SYSCFG_PMC_I2C2_FMP)
 #define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6)  == I2C_FASTMODEPLUS_PB6)  || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB7)  == I2C_FASTMODEPLUS_PB7)  || \
                                          (((__CONFIG__) & I2C_FASTMODEPLUS_PB8)  == I2C_FASTMODEPLUS_PB8)  || \
@@ -219,5 +210,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_I2C_EX_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_i2s.h b/Inc/stm32f7xx_hal_i2s.h
index 116306d..7bc0427 100644
--- a/Inc/stm32f7xx_hal_i2s.h
+++ b/Inc/stm32f7xx_hal_i2s.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -564,4 +563,3 @@
 
 #endif /* STM32F7xx_HAL_I2S_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_irda.h b/Inc/stm32f7xx_hal_irda.h
index 3712b69..fe7b565 100644
--- a/Inc/stm32f7xx_hal_irda.h
+++ b/Inc/stm32f7xx_hal_irda.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -141,7 +140,7 @@
 
   IRDA_InitTypeDef         Init;             /*!< IRDA communication parameters      */
 
-  uint8_t                  *pTxBuffPtr;      /*!< Pointer to IRDA Tx transfer Buffer */
+  const uint8_t            *pTxBuffPtr;      /*!< Pointer to IRDA Tx transfer Buffer */
 
   uint16_t                 TxXferSize;       /*!< IRDA Tx Transfer size              */
 
@@ -787,11 +786,11 @@
   */
 
 /* IO operation functions *****************************************************/
-HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32_t Timeout);
+HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size, uint32_t Timeout);
 HAL_StatusTypeDef HAL_IRDA_Receive(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32_t Timeout);
-HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size);
+HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_IRDA_Receive_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size);
-HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size);
+HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_IRDA_Receive_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda);
 HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda);
@@ -850,4 +849,3 @@
 
 #endif /* STM32F7xx_HAL_IRDA_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_irda_ex.h b/Inc/stm32f7xx_hal_irda_ex.h
index 7e95fd6..7a16426 100644
--- a/Inc/stm32f7xx_hal_irda_ex.h
+++ b/Inc/stm32f7xx_hal_irda_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -319,4 +318,3 @@
 
 #endif /* STM32F7xx_HAL_IRDA_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_iwdg.h b/Inc/stm32f7xx_hal_iwdg.h
index f460850..f11521a 100644
--- a/Inc/stm32f7xx_hal_iwdg.h
+++ b/Inc/stm32f7xx_hal_iwdg.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -236,5 +235,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_IWDG_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_jpeg.h b/Inc/stm32f7xx_hal_jpeg.h
index 9acbabd..1c551d7 100644
--- a/Inc/stm32f7xx_hal_jpeg.h
+++ b/Inc/stm32f7xx_hal_jpeg.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -652,4 +651,3 @@
 
 #endif /* STM32F7xx_HAL_JPEG_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_lptim.h b/Inc/stm32f7xx_hal_lptim.h
index 2594f1c..8578dc3 100644
--- a/Inc/stm32f7xx_hal_lptim.h
+++ b/Inc/stm32f7xx_hal_lptim.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -97,22 +96,22 @@
   */
 typedef struct
 {
-  LPTIM_ClockConfigTypeDef     Clock;               /*!< Specifies the clock parameters */
+  LPTIM_ClockConfigTypeDef     Clock;             /*!< Specifies the clock parameters */
 
-  LPTIM_ULPClockConfigTypeDef  UltraLowPowerClock;  /*!< Specifies the Ultra Low Power clock parameters */
+  LPTIM_ULPClockConfigTypeDef  UltraLowPowerClock;/*!< Specifies the Ultra Low Power clock parameters */
 
-  LPTIM_TriggerConfigTypeDef   Trigger;             /*!< Specifies the Trigger parameters */
+  LPTIM_TriggerConfigTypeDef   Trigger;           /*!< Specifies the Trigger parameters */
 
-  uint32_t                     OutputPolarity;      /*!< Specifies the Output polarity.
-                                                    This parameter can be a value of @ref LPTIM_Output_Polarity */
+  uint32_t                     OutputPolarity;    /*!< Specifies the Output polarity.
+                                                  This parameter can be a value of @ref LPTIM_Output_Polarity */
 
-  uint32_t                     UpdateMode;          /*!< Specifies whether the update of the autoreload and the compare
-                                                    values is done immediately or after the end of current period.
-                                                    This parameter can be a value of @ref LPTIM_Updating_Mode */
+  uint32_t                     UpdateMode;        /*!< Specifies whether the update of the autoreload and the compare
+                                                  values is done immediately or after the end of current period.
+                                                  This parameter can be a value of @ref LPTIM_Updating_Mode */
 
-  uint32_t                     CounterSource;       /*!< Specifies whether the counter is incremented each internal event
-                                                    or each external event.
-                                                    This parameter can be a value of @ref LPTIM_Counter_Source */
+  uint32_t                     CounterSource;     /*!< Specifies whether the counter is incremented each internal event
+                                                  or each external event.
+                                                  This parameter can be a value of @ref LPTIM_Counter_Source */
 } LPTIM_InitTypeDef;
 
 /**
@@ -829,5 +828,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_LPTIM_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_ltdc.h b/Inc/stm32f7xx_hal_ltdc.h
index 0d68f21..0f03d29 100644
--- a/Inc/stm32f7xx_hal_ltdc.h
+++ b/Inc/stm32f7xx_hal_ltdc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -25,11 +24,10 @@
 extern "C" {
 #endif
 
-#if defined (LTDC)
-
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal_def.h"
 
+#if defined (LTDC)
 
 /** @addtogroup STM32F7xx_HAL_Driver
   * @{
@@ -685,5 +683,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_LTDC_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_ltdc_ex.h b/Inc/stm32f7xx_hal_ltdc_ex.h
index f13712e..582075d 100644
--- a/Inc/stm32f7xx_hal_ltdc_ex.h
+++ b/Inc/stm32f7xx_hal_ltdc_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -25,10 +24,11 @@
 extern "C" {
 #endif
 
-#if defined (LTDC) && defined (DSI)
-
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal_def.h"
+
+#if defined (LTDC) && defined (DSI)
+
 #include "stm32f7xx_hal_dsi.h"
 
 /** @addtogroup STM32F7xx_HAL_Driver
@@ -81,5 +81,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_LTDC_EX_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_mdios.h b/Inc/stm32f7xx_hal_mdios.h
index 5ef776c..2e331e3 100644
--- a/Inc/stm32f7xx_hal_mdios.h
+++ b/Inc/stm32f7xx_hal_mdios.h
@@ -5,14 +5,13 @@
   * @brief   Header file of MDIOS HAL module.
   ******************************************************************************
   * @attention
-   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -566,4 +565,3 @@
 
 #endif /* __STM32F7xx_HAL_MDIOS_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_mmc.h b/Inc/stm32f7xx_hal_mmc.h
index 0635fff..fc60b9e 100644
--- a/Inc/stm32f7xx_hal_mmc.h
+++ b/Inc/stm32f7xx_hal_mmc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                       opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -145,6 +144,8 @@
   
   uint32_t                     CID[4U];          /*!< MMC card identification number table */
   
+  uint32_t                     Ext_CSD[128];
+
 #if defined (USE_HAL_MMC_REGISTER_CALLBACKS) && (USE_HAL_MMC_REGISTER_CALLBACKS == 1U)
   void (* TxCpltCallback)                 (struct __MMC_HandleTypeDef *hmmc);
   void (* RxCpltCallback)                 (struct __MMC_HandleTypeDef *hmmc);
@@ -334,10 +335,12 @@
 /** 
   * @brief 
   */
-#define MMC_HIGH_VOLTAGE_RANGE         0x80FF8000U  /*!< VALUE OF ARGUMENT            */
-#define MMC_DUAL_VOLTAGE_RANGE         0x80FF8080U  /*!< VALUE OF ARGUMENT            */
-#define eMMC_HIGH_VOLTAGE_RANGE        0xC0FF8000U  /*!< for eMMC > 2Gb sector mode   */
-#define eMMC_DUAL_VOLTAGE_RANGE        0xC0FF8080U  /*!< for eMMC > 2Gb sector mode   */
+#define MMC_HIGH_VOLTAGE_RANGE         0x80FF8000U  /*!< High voltage in byte mode    */
+#define MMC_DUAL_VOLTAGE_RANGE         0x80FF8080U  /*!< Dual voltage in byte mode    */
+#define MMC_LOW_VOLTAGE_RANGE          0x80000080U  /*!< Low voltage in byte mode     */
+#define EMMC_HIGH_VOLTAGE_RANGE        0xC0FF8000U  /*!< High voltage in sector mode  */
+#define EMMC_DUAL_VOLTAGE_RANGE        0xC0FF8080U  /*!< Dual voltage in sector mode  */
+#define EMMC_LOW_VOLTAGE_RANGE         0xC0000080U  /*!< Low voltage in sector mode   */
 #define MMC_INVALID_VOLTAGE_RANGE      0x0001FF01U 
 /**
   * @}
@@ -636,6 +639,7 @@
 HAL_StatusTypeDef HAL_MMC_GetCardCID(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID);
 HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD);
 HAL_StatusTypeDef HAL_MMC_GetCardInfo(MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo);
+HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeout);
 /**
   * @}
   */
@@ -649,7 +653,7 @@
   * @}
   */
 
-/** @defgroup MMC_Exported_Functions_Group6 Perioheral Abort management
+/** @defgroup MMC_Exported_Functions_Group6 Peripheral Abort management
   * @{
   */
 HAL_StatusTypeDef HAL_MMC_Abort(MMC_HandleTypeDef *hmmc);
@@ -741,5 +745,3 @@
 #endif /* SDMMC1 */
 
 #endif /* STM32F7xx_HAL_MMC_H */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_nand.h b/Inc/stm32f7xx_hal_nand.h
index 1d225cf..57e358c 100644
--- a/Inc/stm32f7xx_hal_nand.h
+++ b/Inc/stm32f7xx_hal_nand.h
@@ -6,25 +6,25 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F7xx_HAL_NAND_H
-#define __STM32F7xx_HAL_NAND_H
+#ifndef STM32F7xx_HAL_NAND_H
+#define STM32F7xx_HAL_NAND_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
+
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_ll_fmc.h"
 
@@ -34,7 +34,7 @@
 
 /** @addtogroup NAND
   * @{
-  */ 
+  */
 
 /* Exported typedef ----------------------------------------------------------*/
 /* Exported types ------------------------------------------------------------*/
@@ -42,7 +42,7 @@
   * @{
   */
 
-/** 
+/**
   * @brief  HAL NAND State structures definition
   */
 typedef enum
@@ -51,28 +51,28 @@
   HAL_NAND_STATE_READY     = 0x01U,  /*!< NAND initialized and ready for use   */
   HAL_NAND_STATE_BUSY      = 0x02U,  /*!< NAND internal process is ongoing     */
   HAL_NAND_STATE_ERROR     = 0x03U   /*!< NAND error state                     */
-}HAL_NAND_StateTypeDef;
-   
-/** 
+} HAL_NAND_StateTypeDef;
+
+/**
   * @brief  NAND Memory electronic signature Structure definition
   */
 typedef struct
 {
   /*<! NAND memory electronic signature maker and device IDs */
 
-  uint8_t Maker_Id; 
+  uint8_t Maker_Id;
 
   uint8_t Device_Id;
 
   uint8_t Third_Id;
 
   uint8_t Fourth_Id;
-}NAND_IDTypeDef;
+} NAND_IDTypeDef;
 
-/** 
+/**
   * @brief  NAND Memory address Structure definition
   */
-typedef struct 
+typedef struct
 {
   uint16_t Page;   /*!< NAND memory Page address  */
 
@@ -80,36 +80,36 @@
 
   uint16_t Block;  /*!< NAND memory Block address */
 
-}NAND_AddressTypeDef;
+} NAND_AddressTypeDef;
 
-/** 
+/**
   * @brief  NAND Memory info Structure definition
-  */ 
+  */
 typedef struct
 {
-  uint32_t        PageSize;              /*!< NAND memory page (without spare area) size measured in bytes 
-                                              for 8 bits addressing or words for 16 bits addressing            */
+  uint32_t        PageSize;              /*!< NAND memory page (without spare area) size measured in bytes
+                                              for 8 bits addressing or words for 16 bits addressing             */
 
-  uint32_t        SpareAreaSize;         /*!< NAND memory spare area size measured in bytes 
-                                              for 8 bits addressing or words for 16 bits addressing            */
-  
+  uint32_t        SpareAreaSize;         /*!< NAND memory spare area size measured in bytes
+                                              for 8 bits addressing or words for 16 bits addressing             */
+
   uint32_t        BlockSize;             /*!< NAND memory block size measured in number of pages               */
 
   uint32_t        BlockNbr;              /*!< NAND memory number of total blocks                               */
-     
+
   uint32_t        PlaneNbr;              /*!< NAND memory number of planes                                     */
 
   uint32_t        PlaneSize;             /*!< NAND memory zone size measured in number of blocks               */
 
-  FunctionalState ExtraCommandEnable;    /*!< NAND extra command needed for Page reading mode. This 
-                                              parameter is mandatory for some NAND parts after the read 
-                                              command (NAND_CMD_AREA_TRUE1) and before DATA reading sequence. 
+  FunctionalState ExtraCommandEnable;    /*!< NAND extra command needed for Page reading mode. This
+                                              parameter is mandatory for some NAND parts after the read
+                                              command (NAND_CMD_AREA_TRUE1) and before DATA reading sequence.
                                               Example: Toshiba THTH58BYG3S0HBAI6.
                                               This parameter could be ENABLE or DISABLE
                                               Please check the Read Mode sequnece in the NAND device datasheet */
-}NAND_DeviceConfigTypeDef; 
+} NAND_DeviceConfigTypeDef;
 
-/** 
+/**
   * @brief  NAND handle Structure definition
   */
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
@@ -119,7 +119,7 @@
 #endif /* USE_HAL_NAND_REGISTER_CALLBACKS  */
 {
   FMC_NAND_TypeDef               *Instance;  /*!< Register base address                                 */
-  
+
   FMC_NAND_InitTypeDef           Init;       /*!< NAND device control configuration parameters          */
 
   HAL_LockTypeDef                Lock;       /*!< NAND locking object                                   */
@@ -129,10 +129,10 @@
   NAND_DeviceConfigTypeDef       Config;     /*!< NAND phusical characteristic information structure    */
 
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
-  void  (* MspInitCallback)        ( struct __NAND_HandleTypeDef * hnand);    /*!< NAND Msp Init callback              */
-  void  (* MspDeInitCallback)      ( struct __NAND_HandleTypeDef * hnand);    /*!< NAND Msp DeInit callback            */
-  void  (* ItCallback)             ( struct __NAND_HandleTypeDef * hnand);    /*!< NAND IT callback                    */
-#endif
+  void (* MspInitCallback)(struct __NAND_HandleTypeDef *hnand);               /*!< NAND Msp Init callback              */
+  void (* MspDeInitCallback)(struct __NAND_HandleTypeDef *hnand);             /*!< NAND Msp DeInit callback            */
+  void (* ItCallback)(struct __NAND_HandleTypeDef *hnand);                    /*!< NAND IT callback                    */
+#endif /* USE_HAL_NAND_REGISTER_CALLBACKS */
 } NAND_HandleTypeDef;
 
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
@@ -144,13 +144,13 @@
   HAL_NAND_MSP_INIT_CB_ID       = 0x00U,  /*!< NAND MspInit Callback ID          */
   HAL_NAND_MSP_DEINIT_CB_ID     = 0x01U,  /*!< NAND MspDeInit Callback ID        */
   HAL_NAND_IT_CB_ID             = 0x02U   /*!< NAND IT Callback ID               */
-}HAL_NAND_CallbackIDTypeDef;
+} HAL_NAND_CallbackIDTypeDef;
 
 /**
   * @brief  HAL NAND Callback pointer definition
   */
 typedef void (*pNAND_CallbackTypeDef)(NAND_HandleTypeDef *hnand);
-#endif
+#endif /* USE_HAL_NAND_REGISTER_CALLBACKS */
 
 /**
   * @}
@@ -159,8 +159,8 @@
 /* Exported constants --------------------------------------------------------*/
 /* Exported macro ------------------------------------------------------------*/
 /** @defgroup NAND_Exported_Macros NAND Exported Macros
- * @{
- */ 
+  * @{
+  */
 
 /** @brief Reset NAND handle state
   * @param  __HANDLE__ specifies the NAND handle.
@@ -174,7 +174,7 @@
                                                              } while(0)
 #else
 #define __HAL_NAND_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_NAND_STATE_RESET)
-#endif
+#endif /* USE_HAL_NAND_REGISTER_CALLBACKS */
 
 /**
   * @}
@@ -184,13 +184,14 @@
 /** @addtogroup NAND_Exported_Functions NAND Exported Functions
   * @{
   */
-    
-/** @addtogroup NAND_Exported_Functions_Group1 Initialization and de-initialization functions 
+
+/** @addtogroup NAND_Exported_Functions_Group1 Initialization and de-initialization functions
   * @{
   */
 
 /* Initialization/de-initialization functions  ********************************/
-HAL_StatusTypeDef  HAL_NAND_Init(NAND_HandleTypeDef *hnand, FMC_NAND_PCC_TimingTypeDef *ComSpace_Timing, FMC_NAND_PCC_TimingTypeDef *AttSpace_Timing);
+HAL_StatusTypeDef  HAL_NAND_Init(NAND_HandleTypeDef *hnand, FMC_NAND_PCC_TimingTypeDef *ComSpace_Timing,
+                                 FMC_NAND_PCC_TimingTypeDef *AttSpace_Timing);
 HAL_StatusTypeDef  HAL_NAND_DeInit(NAND_HandleTypeDef *hnand);
 
 HAL_StatusTypeDef  HAL_NAND_ConfigDevice(NAND_HandleTypeDef *hnand, NAND_DeviceConfigTypeDef *pDeviceConfig);
@@ -205,24 +206,31 @@
 /**
   * @}
   */
-  
-/** @addtogroup NAND_Exported_Functions_Group2 Input and Output functions 
+
+/** @addtogroup NAND_Exported_Functions_Group2 Input and Output functions
   * @{
   */
 
 /* IO operation functions  ****************************************************/
-
 HAL_StatusTypeDef  HAL_NAND_Reset(NAND_HandleTypeDef *hnand);
 
-HAL_StatusTypeDef  HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToRead);
-HAL_StatusTypeDef  HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToWrite);
-HAL_StatusTypeDef  HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaToRead);
-HAL_StatusTypeDef  HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaTowrite);
+HAL_StatusTypeDef  HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
+                                         uint32_t NumPageToRead);
+HAL_StatusTypeDef  HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
+                                          uint32_t NumPageToWrite);
+HAL_StatusTypeDef  HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+                                              uint8_t *pBuffer, uint32_t NumSpareAreaToRead);
+HAL_StatusTypeDef  HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+                                               uint8_t *pBuffer, uint32_t NumSpareAreaTowrite);
 
-HAL_StatusTypeDef  HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumPageToRead);
-HAL_StatusTypeDef  HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumPageToWrite);
-HAL_StatusTypeDef  HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumSpareAreaToRead);
-HAL_StatusTypeDef  HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumSpareAreaTowrite);
+HAL_StatusTypeDef  HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer,
+                                          uint32_t NumPageToRead);
+HAL_StatusTypeDef  HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer,
+                                           uint32_t NumPageToWrite);
+HAL_StatusTypeDef  HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+                                               uint16_t *pBuffer, uint32_t NumSpareAreaToRead);
+HAL_StatusTypeDef  HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+                                                uint16_t *pBuffer, uint32_t NumSpareAreaTowrite);
 
 HAL_StatusTypeDef  HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress);
 
@@ -230,15 +238,16 @@
 
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
 /* NAND callback registering/unregistering */
-HAL_StatusTypeDef  HAL_NAND_RegisterCallback(NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId, pNAND_CallbackTypeDef pCallback);
+HAL_StatusTypeDef  HAL_NAND_RegisterCallback(NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId,
+                                             pNAND_CallbackTypeDef pCallback);
 HAL_StatusTypeDef  HAL_NAND_UnRegisterCallback(NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId);
-#endif
+#endif /* USE_HAL_NAND_REGISTER_CALLBACKS */
 
 /**
   * @}
   */
 
-/** @addtogroup NAND_Exported_Functions_Group3 Peripheral Control functions 
+/** @addtogroup NAND_Exported_Functions_Group3 Peripheral Control functions
   * @{
   */
 
@@ -250,8 +259,8 @@
 /**
   * @}
   */
-    
-/** @addtogroup NAND_Exported_Functions_Group4 Peripheral State functions 
+
+/** @addtogroup NAND_Exported_Functions_Group4 Peripheral State functions
   * @{
   */
 /* NAND State functions *******************************************************/
@@ -264,39 +273,40 @@
 /**
   * @}
   */
+
 /* Private types -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private constants ---------------------------------------------------------*/
 /** @defgroup NAND_Private_Constants NAND Private Constants
   * @{
   */
-#define NAND_DEVICE                ((uint32_t)0x80000000U) 
-#define NAND_WRITE_TIMEOUT         ((uint32_t)0x01000000U)
+#define NAND_DEVICE                0x80000000UL
+#define NAND_WRITE_TIMEOUT         0x01000000UL
 
-#define CMD_AREA                   ((uint32_t)(1<<16))  /* A16 = CLE high */
-#define ADDR_AREA                  ((uint32_t)(1<<17))  /* A17 = ALE high */
+#define CMD_AREA                   (1UL<<16U)  /* A16 = CLE high */
+#define ADDR_AREA                  (1UL<<17U)  /* A17 = ALE high */
 
-#define NAND_CMD_AREA_A            ((uint8_t)0x00U)
-#define NAND_CMD_AREA_B            ((uint8_t)0x01U)
-#define NAND_CMD_AREA_C            ((uint8_t)0x50U)
-#define NAND_CMD_AREA_TRUE1        ((uint8_t)0x30U)
+#define NAND_CMD_AREA_A            ((uint8_t)0x00)
+#define NAND_CMD_AREA_B            ((uint8_t)0x01)
+#define NAND_CMD_AREA_C            ((uint8_t)0x50)
+#define NAND_CMD_AREA_TRUE1        ((uint8_t)0x30)
 
-#define NAND_CMD_WRITE0            ((uint8_t)0x80U)
-#define NAND_CMD_WRITE_TRUE1       ((uint8_t)0x10U)
-#define NAND_CMD_ERASE0            ((uint8_t)0x60U)
-#define NAND_CMD_ERASE1            ((uint8_t)0xD0U)
-#define NAND_CMD_READID            ((uint8_t)0x90U)
-#define NAND_CMD_STATUS            ((uint8_t)0x70U)
-#define NAND_CMD_LOCK_STATUS       ((uint8_t)0x7AU)
-#define NAND_CMD_RESET             ((uint8_t)0xFFU)
+#define NAND_CMD_WRITE0            ((uint8_t)0x80)
+#define NAND_CMD_WRITE_TRUE1       ((uint8_t)0x10)
+#define NAND_CMD_ERASE0            ((uint8_t)0x60)
+#define NAND_CMD_ERASE1            ((uint8_t)0xD0)
+#define NAND_CMD_READID            ((uint8_t)0x90)
+#define NAND_CMD_STATUS            ((uint8_t)0x70)
+#define NAND_CMD_LOCK_STATUS       ((uint8_t)0x7A)
+#define NAND_CMD_RESET             ((uint8_t)0xFF)
 
 /* NAND memory status */
-#define NAND_VALID_ADDRESS         ((uint32_t)0x00000100U)
-#define NAND_INVALID_ADDRESS       ((uint32_t)0x00000200U)
-#define NAND_TIMEOUT_ERROR         ((uint32_t)0x00000400U)
-#define NAND_BUSY                  ((uint32_t)0x00000000U)
-#define NAND_ERROR                 ((uint32_t)0x00000001U)
-#define NAND_READY                 ((uint32_t)0x00000040U)
+#define NAND_VALID_ADDRESS         0x00000100UL
+#define NAND_INVALID_ADDRESS       0x00000200UL
+#define NAND_TIMEOUT_ERROR         0x00000400UL
+#define NAND_BUSY                  0x00000000UL
+#define NAND_ERROR                 0x00000001UL
+#define NAND_READY                 0x00000040UL
 /**
   * @}
   */
@@ -313,8 +323,16 @@
   * @retval NAND Raw address value
   */
 #define ARRAY_ADDRESS(__ADDRESS__ , __HANDLE__) ((__ADDRESS__)->Page + \
-                         (((__ADDRESS__)->Block + (((__ADDRESS__)->Plane) * ((__HANDLE__)->Config.PlaneSize)))* ((__HANDLE__)->Config.BlockSize)))
+                                                 (((__ADDRESS__)->Block + \
+                                                   (((__ADDRESS__)->Plane) * \
+                                                    ((__HANDLE__)->Config.PlaneSize))) * \
+                                                  ((__HANDLE__)->Config.BlockSize)))
 
+/**
+  * @brief  NAND memory Column address computation.
+  * @param  __HANDLE__ NAND handle.
+  * @retval NAND Raw address value
+  */
 #define COLUMN_ADDRESS( __HANDLE__) ((__HANDLE__)->Config.PageSize)
 
 /**
@@ -332,28 +350,28 @@
   * @param  __ADDRESS__ NAND memory address.
   * @retval NAND Column address cycling value.
   */
-#define COLUMN_1ST_CYCLE(__ADDRESS__)       (uint8_t)(__ADDRESS__)              /* 1st Column addressing cycle */
+#define COLUMN_1ST_CYCLE(__ADDRESS__)       (uint8_t)((__ADDRESS__) & 0xFFU)    /* 1st Column addressing cycle */
 #define COLUMN_2ND_CYCLE(__ADDRESS__)       (uint8_t)((__ADDRESS__) >> 8)       /* 2nd Column addressing cycle */
 
 /**
   * @}
   */
-    
-/**
-  * @}
-  */
-/**
-  * @}
-  */ 
 
 /**
   * @}
-  */ 
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* __STM32F7xx_HAL_NAND_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+#endif /* STM32F7xx_HAL_NAND_H */
diff --git a/Inc/stm32f7xx_hal_nor.h b/Inc/stm32f7xx_hal_nor.h
index bfd0fe9..c445b43 100644
--- a/Inc/stm32f7xx_hal_nor.h
+++ b/Inc/stm32f7xx_hal_nor.h
@@ -6,53 +6,52 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F7xx_HAL_NOR_H
-#define __STM32F7xx_HAL_NOR_H
+#ifndef STM32F7xx_HAL_NOR_H
+#define STM32F7xx_HAL_NOR_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
+
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_ll_fmc.h"
 
-
 /** @addtogroup STM32F7xx_HAL_Driver
   * @{
   */
 
 /** @addtogroup NOR
   * @{
-  */ 
+  */
 
 /* Exported typedef ----------------------------------------------------------*/
 /** @defgroup NOR_Exported_Types NOR Exported Types
   * @{
   */
 
-/** 
-  * @brief  HAL SRAM State structures definition  
-  */ 
+/**
+  * @brief  HAL SRAM State structures definition
+  */
 typedef enum
-{  
+{
   HAL_NOR_STATE_RESET             = 0x00U,  /*!< NOR not yet initialized or disabled  */
   HAL_NOR_STATE_READY             = 0x01U,  /*!< NOR initialized and ready for use    */
   HAL_NOR_STATE_BUSY              = 0x02U,  /*!< NOR internal processing is ongoing   */
   HAL_NOR_STATE_ERROR             = 0x03U,  /*!< NOR error state                      */
   HAL_NOR_STATE_PROTECTED         = 0x04U   /*!< NOR NORSRAM device write protected   */
-}HAL_NOR_StateTypeDef;
+} HAL_NOR_StateTypeDef;
 
 /**
   * @brief  FMC NOR Status typedef
@@ -63,7 +62,7 @@
   HAL_NOR_STATUS_ONGOING,
   HAL_NOR_STATUS_ERROR,
   HAL_NOR_STATUS_TIMEOUT
-}HAL_NOR_StatusTypeDef;
+} HAL_NOR_StatusTypeDef;
 
 /**
   * @brief  FMC NOR ID typedef
@@ -76,11 +75,11 @@
 
   uint16_t Device_Code2;
 
-  uint16_t Device_Code3;       /*!< Defines the device's codes used to identify the memory. 
-                                    These codes can be accessed by performing read operations with specific 
-                                    control signals and addresses set.They can also be accessed by issuing 
+  uint16_t Device_Code3;       /*!< Defines the device's codes used to identify the memory.
+                                    These codes can be accessed by performing read operations with specific
+                                    control signals and addresses set.They can also be accessed by issuing
                                     an Auto Select command                                                   */
-}NOR_IDTypeDef;
+} NOR_IDTypeDef;
 
 /**
   * @brief  FMC NOR CFI typedef
@@ -88,7 +87,7 @@
 typedef struct
 {
   /*!< Defines the information stored in the memory's Common flash interface
-       which contains a description of various electrical and timing parameters, 
+       which contains a description of various electrical and timing parameters,
        density information and functions supported by the memory                   */
 
   uint16_t CFI_1;
@@ -98,9 +97,9 @@
   uint16_t CFI_3;
 
   uint16_t CFI_4;
-}NOR_CFITypeDef;
+} NOR_CFITypeDef;
 
-/** 
+/**
   * @brief  NOR handle Structure definition
   */
 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
@@ -120,10 +119,12 @@
 
   __IO HAL_NOR_StateTypeDef     State;        /*!< NOR device access state                      */
 
+  uint32_t                      CommandSet;   /*!< NOR algorithm command set and control        */
+
 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
-  void  (* MspInitCallback)        ( struct __NOR_HandleTypeDef * hnor);    /*!< NOR Msp Init callback              */
-  void  (* MspDeInitCallback)      ( struct __NOR_HandleTypeDef * hnor);    /*!< NOR Msp DeInit callback            */
-#endif
+  void (* MspInitCallback)(struct __NOR_HandleTypeDef *hnor);               /*!< NOR Msp Init callback              */
+  void (* MspDeInitCallback)(struct __NOR_HandleTypeDef *hnor);             /*!< NOR Msp DeInit callback            */
+#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
 } NOR_HandleTypeDef;
 
 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
@@ -134,17 +135,17 @@
 {
   HAL_NOR_MSP_INIT_CB_ID       = 0x00U,  /*!< NOR MspInit Callback ID          */
   HAL_NOR_MSP_DEINIT_CB_ID     = 0x01U   /*!< NOR MspDeInit Callback ID        */
-}HAL_NOR_CallbackIDTypeDef;
+} HAL_NOR_CallbackIDTypeDef;
 
 /**
   * @brief  HAL NOR Callback pointer definition
   */
 typedef void (*pNOR_CallbackTypeDef)(NOR_HandleTypeDef *hnor);
-#endif
+#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
 /**
   * @}
   */
-  
+
 /* Exported constants --------------------------------------------------------*/
 /* Exported macro ------------------------------------------------------------*/
 /** @defgroup NOR_Exported_Macros NOR Exported Macros
@@ -162,7 +163,7 @@
                                                              } while(0)
 #else
 #define __HAL_NOR_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_NOR_STATE_RESET)
-#endif
+#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
 /**
   * @}
   */
@@ -172,12 +173,13 @@
   * @{
   */
 
-/** @addtogroup NOR_Exported_Functions_Group1 Initialization and de-initialization functions 
+/** @addtogroup NOR_Exported_Functions_Group1 Initialization and de-initialization functions
   * @{
   */
 
 /* Initialization/de-initialization functions  ********************************/
-HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming);
+HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing,
+                               FMC_NORSRAM_TimingTypeDef *ExtTiming);
 HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor);
 void HAL_NOR_MspInit(NOR_HandleTypeDef *hnor);
 void HAL_NOR_MspDeInit(NOR_HandleTypeDef *hnor);
@@ -186,7 +188,7 @@
   * @}
   */
 
-/** @addtogroup NOR_Exported_Functions_Group2 Input and Output functions 
+/** @addtogroup NOR_Exported_Functions_Group2 Input and Output functions
   * @{
   */
 
@@ -196,8 +198,10 @@
 HAL_StatusTypeDef HAL_NOR_Read(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
 HAL_StatusTypeDef HAL_NOR_Program(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData);
 
-HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize);
-HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize);
+HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
+                                     uint32_t uwBufferSize);
+HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
+                                        uint32_t uwBufferSize);
 
 HAL_StatusTypeDef HAL_NOR_Erase_Block(NOR_HandleTypeDef *hnor, uint32_t BlockAddress, uint32_t Address);
 HAL_StatusTypeDef HAL_NOR_Erase_Chip(NOR_HandleTypeDef *hnor, uint32_t Address);
@@ -205,14 +209,15 @@
 
 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
 /* NOR callback registering/unregistering */
-HAL_StatusTypeDef HAL_NOR_RegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId, pNOR_CallbackTypeDef pCallback);
+HAL_StatusTypeDef HAL_NOR_RegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId,
+                                           pNOR_CallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_NOR_UnRegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId);
-#endif
+#endif /* USE_HAL_NOR_REGISTER_CALLBACKS */
 /**
   * @}
   */
-  
-/** @addtogroup NOR_Exported_Functions_Group3 NOR Control functions 
+
+/** @addtogroup NOR_Exported_Functions_Group3 NOR Control functions
   * @{
   */
 
@@ -222,8 +227,8 @@
 /**
   * @}
   */
-  
-/** @addtogroup NOR_Exported_Functions_Group4 NOR State functions 
+
+/** @addtogroup NOR_Exported_Functions_Group4 NOR State functions
   * @{
   */
 
@@ -233,11 +238,11 @@
 /**
   * @}
   */
-    
+
 /**
   * @}
   */
-  
+
 /* Private types -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private constants ---------------------------------------------------------*/
@@ -245,29 +250,29 @@
   * @{
   */
 /* NOR device IDs addresses */
-#define MC_ADDRESS               ((uint16_t)0x0000U)
-#define DEVICE_CODE1_ADDR        ((uint16_t)0x0001U)
-#define DEVICE_CODE2_ADDR        ((uint16_t)0x000EU)
-#define DEVICE_CODE3_ADDR        ((uint16_t)0x000FU)
+#define MC_ADDRESS               ((uint16_t)0x0000)
+#define DEVICE_CODE1_ADDR        ((uint16_t)0x0001)
+#define DEVICE_CODE2_ADDR        ((uint16_t)0x000E)
+#define DEVICE_CODE3_ADDR        ((uint16_t)0x000F)
 
 /* NOR CFI IDs addresses */
-#define CFI1_ADDRESS             ((uint16_t)0x61U)
-#define CFI2_ADDRESS             ((uint16_t)0x62U)
-#define CFI3_ADDRESS             ((uint16_t)0x63U)
-#define CFI4_ADDRESS             ((uint16_t)0x64U)
+#define CFI1_ADDRESS             ((uint16_t)0x0061)
+#define CFI2_ADDRESS             ((uint16_t)0x0062)
+#define CFI3_ADDRESS             ((uint16_t)0x0063)
+#define CFI4_ADDRESS             ((uint16_t)0x0064)
 
 /* NOR operation wait timeout */
-#define NOR_TMEOUT               ((uint16_t)0xFFFFU)
-   
+#define NOR_TMEOUT               ((uint16_t)0xFFFF)
+
 /* NOR memory data width */
-#define NOR_MEMORY_8B            ((uint8_t)0x0U)
-#define NOR_MEMORY_16B           ((uint8_t)0x1U)
+#define NOR_MEMORY_8B            ((uint8_t)0x00)
+#define NOR_MEMORY_16B           ((uint8_t)0x01)
 
 /* NOR memory device read/write start address */
-#define NOR_MEMORY_ADRESS1       ((uint32_t)0x60000000U)
-#define NOR_MEMORY_ADRESS2       ((uint32_t)0x64000000U)
-#define NOR_MEMORY_ADRESS3       ((uint32_t)0x68000000U)
-#define NOR_MEMORY_ADRESS4       ((uint32_t)0x6C000000U)
+#define NOR_MEMORY_ADRESS1       (0x60000000U)
+#define NOR_MEMORY_ADRESS2       (0x64000000U)
+#define NOR_MEMORY_ADRESS3       (0x68000000U)
+#define NOR_MEMORY_ADRESS4       (0x6C000000U)
 /**
   * @}
   */
@@ -278,26 +283,26 @@
   */
 /**
   * @brief  NOR memory address shifting.
-  * @param  __NOR_ADDRESS NOR base address 
+  * @param  __NOR_ADDRESS NOR base address
   * @param  __NOR_MEMORY_WIDTH_ NOR memory width
-  * @param  __ADDRESS__ NOR memory address 
+  * @param  __ADDRESS__ NOR memory address
   * @retval NOR shifted address value
   */
-#define NOR_ADDR_SHIFT(__NOR_ADDRESS, __NOR_MEMORY_WIDTH_, __ADDRESS__)       \
-            ((uint32_t)(((__NOR_MEMORY_WIDTH_) == NOR_MEMORY_16B)?              \
-              ((uint32_t)((__NOR_ADDRESS) + (2 * (__ADDRESS__)))):              \
+#define NOR_ADDR_SHIFT(__NOR_ADDRESS, __NOR_MEMORY_WIDTH_, __ADDRESS__)         \
+  ((uint32_t)(((__NOR_MEMORY_WIDTH_) == NOR_MEMORY_16B)?            \
+              ((uint32_t)((__NOR_ADDRESS) + (2U * (__ADDRESS__)))):              \
               ((uint32_t)((__NOR_ADDRESS) + (__ADDRESS__)))))
- 
+
 /**
   * @brief  NOR memory write data to specified address.
-  * @param  __ADDRESS__ NOR memory address 
+  * @param  __ADDRESS__ NOR memory address
   * @param  __DATA__ Data to write
   * @retval None
   */
 #define NOR_WRITE(__ADDRESS__, __DATA__)   do{                                                             \
-                                                 (*(__IO uint16_t *)((uint32_t)(__ADDRESS__)) = (__DATA__)); \
-                                                 __DSB();                                                    \
-                                               } while(0)
+                                               (*(__IO uint16_t *)((uint32_t)(__ADDRESS__)) = (__DATA__)); \
+                                               __DSB();                                                    \
+                                             } while(0)
 
 /**
   * @}
@@ -305,16 +310,15 @@
 
 /**
   * @}
-  */ 
+  */
 
 /**
   * @}
   */
 
+
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* __STM32F7xx_HAL_NOR_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+#endif /* STM32F7xx_HAL_NOR_H */
diff --git a/Inc/stm32f7xx_hal_pcd.h b/Inc/stm32f7xx_hal_pcd.h
index 87d02fd..9572fe1 100644
--- a/Inc/stm32f7xx_hal_pcd.h
+++ b/Inc/stm32f7xx_hal_pcd.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -190,16 +189,20 @@
 #define __HAL_PCD_ENABLE(__HANDLE__)                       (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
 #define __HAL_PCD_DISABLE(__HANDLE__)                      (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
 
-#define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__)      ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
+#define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) \
+  ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
+
 #define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)    (((__HANDLE__)->Instance->GINTSTS) &=  (__INTERRUPT__))
 #define __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__)         (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U)
 
+#define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__) \
+  *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) &= ~(USB_OTG_PCGCCTL_STOPCLK)
 
-#define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__)       *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) &= ~(USB_OTG_PCGCCTL_STOPCLK)
+#define __HAL_PCD_GATE_PHYCLOCK(__HANDLE__) \
+  *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) |= USB_OTG_PCGCCTL_STOPCLK
 
-#define __HAL_PCD_GATE_PHYCLOCK(__HANDLE__)         *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) |= USB_OTG_PCGCCTL_STOPCLK
-
-#define __HAL_PCD_IS_PHY_SUSPENDED(__HANDLE__)      ((*(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE)) & 0x10U)
+#define __HAL_PCD_IS_PHY_SUSPENDED(__HANDLE__) \
+  ((*(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE)) & 0x10U)
 
 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT()    EXTI->IMR |= (USB_OTG_HS_WAKEUP_EXTI_LINE)
 #define __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT()   EXTI->IMR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE)
@@ -360,12 +363,12 @@
 HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
                                       uint8_t *pBuf, uint32_t len);
 
-
 HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
 HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
 HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
 HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
 HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd);
+HAL_StatusTypeDef HAL_PCD_SetTestMode(PCD_HandleTypeDef *hpcd, uint8_t testmode);
 
 uint32_t          HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
 /**
@@ -408,27 +411,27 @@
 #if defined (USB_OTG_FS) || defined (USB_OTG_HS)
 #ifndef USB_OTG_DOEPINT_OTEPSPR
 #define USB_OTG_DOEPINT_OTEPSPR                (0x1UL << 5)      /*!< Status Phase Received interrupt */
-#endif
+#endif /* defined USB_OTG_DOEPINT_OTEPSPR */
 
 #ifndef USB_OTG_DOEPMSK_OTEPSPRM
 #define USB_OTG_DOEPMSK_OTEPSPRM               (0x1UL << 5)      /*!< Setup Packet Received interrupt mask */
-#endif
+#endif /* defined USB_OTG_DOEPMSK_OTEPSPRM */
 
 #ifndef USB_OTG_DOEPINT_NAK
 #define USB_OTG_DOEPINT_NAK                    (0x1UL << 13)      /*!< NAK interrupt */
-#endif
+#endif /* defined USB_OTG_DOEPINT_NAK */
 
 #ifndef USB_OTG_DOEPMSK_NAKM
 #define USB_OTG_DOEPMSK_NAKM                   (0x1UL << 13)      /*!< OUT Packet NAK interrupt mask */
-#endif
+#endif /* defined USB_OTG_DOEPMSK_NAKM */
 
 #ifndef USB_OTG_DOEPINT_STPKTRX
 #define USB_OTG_DOEPINT_STPKTRX                (0x1UL << 15)      /*!< Setup Packet Received interrupt */
-#endif
+#endif /* defined USB_OTG_DOEPINT_STPKTRX */
 
 #ifndef USB_OTG_DOEPMSK_NYETM
 #define USB_OTG_DOEPMSK_NYETM                  (0x1UL << 14)      /*!< Setup Packet Received interrupt mask */
-#endif
+#endif /* defined USB_OTG_DOEPMSK_NYETM */
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
 /* Private macros ------------------------------------------------------------*/
@@ -454,5 +457,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_PCD_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_pcd_ex.h b/Inc/stm32f7xx_hal_pcd_ex.h
index 8f9da28..24f3d73 100644
--- a/Inc/stm32f7xx_hal_pcd_ex.h
+++ b/Inc/stm32f7xx_hal_pcd_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -23,7 +22,7 @@
 
 #ifdef __cplusplus
 extern "C" {
-#endif
+#endif /* __cplusplus */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal_def.h"
@@ -78,9 +77,7 @@
 
 #ifdef __cplusplus
 }
-#endif
+#endif /* __cplusplus */
 
 
 #endif /* STM32F7xx_HAL_PCD_EX_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_pwr.h b/Inc/stm32f7xx_hal_pwr.h
index 79cb048..7f19810 100644
--- a/Inc/stm32f7xx_hal_pwr.h
+++ b/Inc/stm32f7xx_hal_pwr.h
@@ -6,16 +6,15 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
 #ifndef __STM32F7xx_HAL_PWR_H
@@ -401,4 +400,3 @@
 
 #endif /* __STM32F7xx_HAL_PWR_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_pwr_ex.h b/Inc/stm32f7xx_hal_pwr_ex.h
index 0c33bdf..8178231 100644
--- a/Inc/stm32f7xx_hal_pwr_ex.h
+++ b/Inc/stm32f7xx_hal_pwr_ex.h
@@ -6,16 +6,15 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
 #ifndef __STM32F7xx_HAL_PWR_EX_H
@@ -259,4 +258,3 @@
 
 #endif /* __STM32F7xx_HAL_PWR_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_qspi.h b/Inc/stm32f7xx_hal_qspi.h
index 8d7f520..e0dbf9c 100644
--- a/Inc/stm32f7xx_hal_qspi.h
+++ b/Inc/stm32f7xx_hal_qspi.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                       opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -742,12 +741,10 @@
   * @}
   */
 
-#endif /* defined(QUADSPI) || defined(QUADSPI1) || defined(QUADSPI2) */
+#endif /* defined(QUADSPI) */
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif /* STM32F7xx_HAL_QSPI_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_rcc.h b/Inc/stm32f7xx_hal_rcc.h
index 4db8222..0c39b28 100644
--- a/Inc/stm32f7xx_hal_rcc.h
+++ b/Inc/stm32f7xx_hal_rcc.h
@@ -6,14 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 
@@ -1307,4 +1305,3 @@
 
 #endif /* __STM32F7xx_HAL_RCC_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_rcc_ex.h b/Inc/stm32f7xx_hal_rcc_ex.h
index 0a7580d..6587e99 100644
--- a/Inc/stm32f7xx_hal_rcc_ex.h
+++ b/Inc/stm32f7xx_hal_rcc_ex.h
@@ -6,14 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 
@@ -3521,4 +3519,3 @@
 
 #endif /* __STM32F7xx_HAL_RCC_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_rng.h b/Inc/stm32f7xx_hal_rng.h
index 3245aa7..ec66fa5 100644
--- a/Inc/stm32f7xx_hal_rng.h
+++ b/Inc/stm32f7xx_hal_rng.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -22,7 +21,7 @@
 #define STM32F7xx_HAL_RNG_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
 /* Includes ------------------------------------------------------------------*/
@@ -77,7 +76,7 @@
 typedef struct  __RNG_HandleTypeDef
 #else
 typedef struct
-#endif /* (USE_HAL_RNG_REGISTER_CALLBACKS) */
+#endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
 {
   RNG_TypeDef                 *Instance;    /*!< Register base address   */
 
@@ -85,7 +84,7 @@
 
   __IO HAL_RNG_StateTypeDef   State;        /*!< RNG communication state */
 
-  __IO  uint32_t              ErrorCode;     /*!< RNG Error code               */
+  __IO  uint32_t              ErrorCode;    /*!< RNG Error code          */
 
   uint32_t                    RandomNumber; /*!< Last Generated RNG Data */
 
@@ -156,14 +155,14 @@
 /** @defgroup RNG_Error_Definition   RNG Error Definition
   * @{
   */
-#define  HAL_RNG_ERROR_NONE             0x00000000U    /*!< No error             */
+#define  HAL_RNG_ERROR_NONE             0x00000000U    /*!< No error          */
 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
 #define  HAL_RNG_ERROR_INVALID_CALLBACK 0x00000001U    /*!< Invalid Callback error  */
 #endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
-#define  HAL_RNG_ERROR_TIMEOUT          0x00000002U    /*!< Timeout error        */
+#define  HAL_RNG_ERROR_TIMEOUT          0x00000002U    /*!< Timeout error     */
 #define  HAL_RNG_ERROR_BUSY             0x00000004U    /*!< Busy error        */
 #define  HAL_RNG_ERROR_SEED             0x00000008U    /*!< Seed error        */
-#define  HAL_RNG_ERROR_CLOCK            0x00000010U   /*!< Clock error        */
+#define  HAL_RNG_ERROR_CLOCK            0x00000010U    /*!< Clock error       */
 /**
   * @}
   */
@@ -189,7 +188,7 @@
                                                     } while(0U)
 #else
 #define __HAL_RNG_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RNG_STATE_RESET)
-#endif /*USE_HAL_RNG_REGISTER_CALLBACKS */
+#endif /* USE_HAL_RNG_REGISTER_CALLBACKS */
 
 /**
   * @brief  Enables the RNG peripheral.
@@ -284,7 +283,8 @@
 
 /* Callbacks Register/UnRegister functions  ***********************************/
 #if (USE_HAL_RNG_REGISTER_CALLBACKS == 1)
-HAL_StatusTypeDef HAL_RNG_RegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID, pRNG_CallbackTypeDef pCallback);
+HAL_StatusTypeDef HAL_RNG_RegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID,
+                                           pRNG_CallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_RNG_UnRegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID);
 
 HAL_StatusTypeDef HAL_RNG_RegisterReadyDataCallback(RNG_HandleTypeDef *hrng, pRNG_ReadyDataCallbackTypeDef pCallback);
@@ -298,8 +298,10 @@
 /** @defgroup RNG_Exported_Functions_Group2 Peripheral Control functions
   * @{
   */
-uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef *hrng);    /* Obsolete, use HAL_RNG_GenerateRandomNumber() instead    */
-uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber_IT() instead */
+uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef
+                                 *hrng);    /* Obsolete, use HAL_RNG_GenerateRandomNumber() instead    */
+uint32_t HAL_RNG_GetRandomNumber_IT(RNG_HandleTypeDef
+                                    *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber_IT() instead */
 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit);
 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng);
 uint32_t HAL_RNG_ReadLastRandomNumber(RNG_HandleTypeDef *hrng);
@@ -333,8 +335,8 @@
                        ((IT) == RNG_IT_SEI))
 
 #define IS_RNG_FLAG(FLAG) (((FLAG) == RNG_FLAG_DRDY) || \
-                            ((FLAG) == RNG_FLAG_CECS) || \
-                            ((FLAG) == RNG_FLAG_SECS))
+                           ((FLAG) == RNG_FLAG_CECS) || \
+                           ((FLAG) == RNG_FLAG_SECS))
 
 /**
   * @}
@@ -357,4 +359,3 @@
 
 #endif /* STM32F7xx_HAL_RNG_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_rtc.h b/Inc/stm32f7xx_hal_rtc.h
index 9652bef..5cd3d19 100644
--- a/Inc/stm32f7xx_hal_rtc.h
+++ b/Inc/stm32f7xx_hal_rtc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -858,4 +857,3 @@
 
 #endif /* __STM32F7xx_HAL_RTC_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_rtc_ex.h b/Inc/stm32f7xx_hal_rtc_ex.h
index 073a2f0..7415b95 100644
--- a/Inc/stm32f7xx_hal_rtc_ex.h
+++ b/Inc/stm32f7xx_hal_rtc_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -1014,4 +1013,3 @@
 
 #endif /* __STM32F7xx_HAL_RTC_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_sai.h b/Inc/stm32f7xx_hal_sai.h
index d782269..478138b 100644
--- a/Inc/stm32f7xx_hal_sai.h
+++ b/Inc/stm32f7xx_hal_sai.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -878,4 +877,3 @@
 
 #endif /* __STM32F7xx_HAL_SAI_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_sai_ex.h b/Inc/stm32f7xx_hal_sai_ex.h
index 1a521cb..e0ccec2 100644
--- a/Inc/stm32f7xx_hal_sai_ex.h
+++ b/Inc/stm32f7xx_hal_sai_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -35,4 +34,3 @@
 
 #endif /* __STM32F7xx_HAL_SAI_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_sd.h b/Inc/stm32f7xx_hal_sd.h
index 176dc12..30de848 100644
--- a/Inc/stm32f7xx_hal_sd.h
+++ b/Inc/stm32f7xx_hal_sd.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                       opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -757,5 +756,3 @@
 
 
 #endif /* STM32F7xx_HAL_SD_H */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_sdram.h b/Inc/stm32f7xx_hal_sdram.h
index 334f316..dd5930f 100644
--- a/Inc/stm32f7xx_hal_sdram.h
+++ b/Inc/stm32f7xx_hal_sdram.h
@@ -6,25 +6,25 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F7xx_HAL_SDRAM_H
-#define __STM32F7xx_HAL_SDRAM_H
+#ifndef STM32F7xx_HAL_SDRAM_H
+#define STM32F7xx_HAL_SDRAM_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
+
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_ll_fmc.h"
 
@@ -34,17 +34,17 @@
 
 /** @addtogroup SDRAM
   * @{
-  */ 
+  */
 
-/* Exported typedef ----------------------------------------------------------*/   
+/* Exported typedef ----------------------------------------------------------*/
 
 /** @defgroup SDRAM_Exported_Types SDRAM Exported Types
   * @{
   */
-	 
-/** 
-  * @brief  HAL SDRAM State structure definition  
-  */ 
+
+/**
+  * @brief  HAL SDRAM State structure definition
+  */
 typedef enum
 {
   HAL_SDRAM_STATE_RESET             = 0x00U,  /*!< SDRAM not yet initialized or disabled */
@@ -53,8 +53,8 @@
   HAL_SDRAM_STATE_ERROR             = 0x03U,  /*!< SDRAM error state                     */
   HAL_SDRAM_STATE_WRITE_PROTECTED   = 0x04U,  /*!< SDRAM device write protected          */
   HAL_SDRAM_STATE_PRECHARGED        = 0x05U   /*!< SDRAM device precharged               */
-  
-}HAL_SDRAM_StateTypeDef;
+
+} HAL_SDRAM_StateTypeDef;
 
 /**
   * @brief  SDRAM handle Structure definition
@@ -66,22 +66,22 @@
 #endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS  */
 {
   FMC_SDRAM_TypeDef             *Instance;  /*!< Register base address                 */
-  
+
   FMC_SDRAM_InitTypeDef         Init;       /*!< SDRAM device configuration parameters */
-  
+
   __IO HAL_SDRAM_StateTypeDef   State;      /*!< SDRAM access state                    */
-  
-  HAL_LockTypeDef               Lock;       /*!< SDRAM locking object                  */ 
+
+  HAL_LockTypeDef               Lock;       /*!< SDRAM locking object                  */
 
   DMA_HandleTypeDef             *hdma;      /*!< Pointer DMA handler                   */
 
 #if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
-  void  (* MspInitCallback)        ( struct __SDRAM_HandleTypeDef * hsdram);    /*!< SDRAM Msp Init callback              */
-  void  (* MspDeInitCallback)      ( struct __SDRAM_HandleTypeDef * hsdram);    /*!< SDRAM Msp DeInit callback            */
-  void  (* RefreshErrorCallback)   ( struct __SDRAM_HandleTypeDef * hsdram);    /*!< SDRAM Refresh Error callback         */
-  void  (* DmaXferCpltCallback)    ( DMA_HandleTypeDef * hdma);                 /*!< SDRAM DMA Xfer Complete callback     */
-  void  (* DmaXferErrorCallback)   ( DMA_HandleTypeDef * hdma);                 /*!< SDRAM DMA Xfer Error callback        */
-#endif
+  void (* MspInitCallback)(struct __SDRAM_HandleTypeDef *hsdram);               /*!< SDRAM Msp Init callback              */
+  void (* MspDeInitCallback)(struct __SDRAM_HandleTypeDef *hsdram);             /*!< SDRAM Msp DeInit callback            */
+  void (* RefreshErrorCallback)(struct __SDRAM_HandleTypeDef *hsdram);          /*!< SDRAM Refresh Error callback         */
+  void (* DmaXferCpltCallback)(DMA_HandleTypeDef *hdma);                        /*!< SDRAM DMA Xfer Complete callback     */
+  void (* DmaXferErrorCallback)(DMA_HandleTypeDef *hdma);                       /*!< SDRAM DMA Xfer Error callback        */
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
 } SDRAM_HandleTypeDef;
 
 #if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
@@ -95,14 +95,14 @@
   HAL_SDRAM_REFRESH_ERR_CB_ID    = 0x02U,  /*!< SDRAM Refresh Error Callback ID     */
   HAL_SDRAM_DMA_XFER_CPLT_CB_ID  = 0x03U,  /*!< SDRAM DMA Xfer Complete Callback ID */
   HAL_SDRAM_DMA_XFER_ERR_CB_ID   = 0x04U   /*!< SDRAM DMA Xfer Error Callback ID    */
-}HAL_SDRAM_CallbackIDTypeDef;
+} HAL_SDRAM_CallbackIDTypeDef;
 
 /**
   * @brief  HAL SDRAM Callback pointer definition
   */
 typedef void (*pSDRAM_CallbackTypeDef)(SDRAM_HandleTypeDef *hsdram);
 typedef void (*pSDRAM_DmaCallbackTypeDef)(DMA_HandleTypeDef *hdma);
-#endif
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
 /**
   * @}
   */
@@ -126,7 +126,7 @@
                                                              } while(0)
 #else
 #define __HAL_SDRAM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SDRAM_STATE_RESET)
-#endif
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
 /**
   * @}
   */
@@ -137,7 +137,7 @@
   * @{
   */
 
-/** @addtogroup SDRAM_Exported_Functions_Group1 
+/** @addtogroup SDRAM_Exported_Functions_Group1
   * @{
   */
 
@@ -156,38 +156,49 @@
   * @}
   */
 
-/** @addtogroup SDRAM_Exported_Functions_Group2 
+/** @addtogroup SDRAM_Exported_Functions_Group2
   * @{
   */
 /* I/O operation functions ****************************************************/
-HAL_StatusTypeDef HAL_SDRAM_Read_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pDstBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SDRAM_Write_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pSrcBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SDRAM_Read_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pDstBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SDRAM_Write_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pSrcBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SDRAM_Read_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SDRAM_Write_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SDRAM_Read_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pDstBuffer,
+                                    uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SDRAM_Write_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pSrcBuffer,
+                                     uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SDRAM_Read_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pDstBuffer,
+                                     uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SDRAM_Write_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pSrcBuffer,
+                                      uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SDRAM_Read_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer,
+                                     uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SDRAM_Write_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer,
+                                      uint32_t BufferSize);
 
-HAL_StatusTypeDef HAL_SDRAM_Read_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t * pAddress, uint32_t *pDstBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SDRAM_Write_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SDRAM_Read_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer,
+                                     uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SDRAM_Write_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer,
+                                      uint32_t BufferSize);
 
 #if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
 /* SDRAM callback registering/unregistering */
-HAL_StatusTypeDef HAL_SDRAM_RegisterCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId, pSDRAM_CallbackTypeDef pCallback);
+HAL_StatusTypeDef HAL_SDRAM_RegisterCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId,
+                                             pSDRAM_CallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_SDRAM_UnRegisterCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId);
-HAL_StatusTypeDef HAL_SDRAM_RegisterDmaCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId, pSDRAM_DmaCallbackTypeDef pCallback);
-#endif
+HAL_StatusTypeDef HAL_SDRAM_RegisterDmaCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId,
+                                                pSDRAM_DmaCallbackTypeDef pCallback);
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
 
 /**
   * @}
   */
-  
-/** @addtogroup SDRAM_Exported_Functions_Group3 
+
+/** @addtogroup SDRAM_Exported_Functions_Group3
   * @{
   */
 /* SDRAM Control functions  *****************************************************/
 HAL_StatusTypeDef HAL_SDRAM_WriteProtection_Enable(SDRAM_HandleTypeDef *hsdram);
 HAL_StatusTypeDef HAL_SDRAM_WriteProtection_Disable(SDRAM_HandleTypeDef *hsdram);
-HAL_StatusTypeDef HAL_SDRAM_SendCommand(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout);
+HAL_StatusTypeDef HAL_SDRAM_SendCommand(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_CommandTypeDef *Command,
+                                        uint32_t Timeout);
 HAL_StatusTypeDef HAL_SDRAM_ProgramRefreshRate(SDRAM_HandleTypeDef *hsdram, uint32_t RefreshRate);
 HAL_StatusTypeDef HAL_SDRAM_SetAutoRefreshNumber(SDRAM_HandleTypeDef *hsdram, uint32_t AutoRefreshNumber);
 uint32_t          HAL_SDRAM_GetModeStatus(SDRAM_HandleTypeDef *hsdram);
@@ -196,7 +207,7 @@
   * @}
   */
 
-/** @addtogroup SDRAM_Exported_Functions_Group4 
+/** @addtogroup SDRAM_Exported_Functions_Group4
   * @{
   */
 /* SDRAM State functions ********************************************************/
@@ -211,16 +222,15 @@
 
 /**
   * @}
-  */ 
+  */
 
 /**
   * @}
   */
 
+
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* __STM32F7xx_HAL_SDRAM_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+#endif /* STM32F7xx_HAL_SDRAM_H */
diff --git a/Inc/stm32f7xx_hal_smartcard.h b/Inc/stm32f7xx_hal_smartcard.h
index b5e19b5..4faa812 100644
--- a/Inc/stm32f7xx_hal_smartcard.h
+++ b/Inc/stm32f7xx_hal_smartcard.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -199,7 +198,7 @@
 
   SMARTCARD_AdvFeatureInitTypeDef   AdvancedInit;          /*!< SmartCard advanced features initialization parameters */
 
-  uint8_t                           *pTxBuffPtr;           /*!< Pointer to SmartCard Tx transfer Buffer               */
+  const uint8_t                     *pTxBuffPtr;           /*!< Pointer to SmartCard Tx transfer Buffer               */
 
   uint16_t                          TxXferSize;            /*!< SmartCard Tx Transfer size                            */
 
@@ -1089,13 +1088,13 @@
   * @{
   */
 
-HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size,
+HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size,
                                          uint32_t Timeout);
 HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size,
                                         uint32_t Timeout);
-HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
+HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
-HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
+HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
 /* Transfer Abort functions */
 HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard);
@@ -1147,4 +1146,3 @@
 
 #endif /* STM32F7xx_HAL_SMARTCARD_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_smartcard_ex.h b/Inc/stm32f7xx_hal_smartcard_ex.h
index ddae1b6..eb05b1c 100644
--- a/Inc/stm32f7xx_hal_smartcard_ex.h
+++ b/Inc/stm32f7xx_hal_smartcard_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -264,4 +263,3 @@
 
 #endif /* STM32F7xx_HAL_SMARTCARD_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_smbus.h b/Inc/stm32f7xx_hal_smbus.h
index 704735e..808f27c 100644
--- a/Inc/stm32f7xx_hal_smbus.h
+++ b/Inc/stm32f7xx_hal_smbus.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -48,42 +47,43 @@
 typedef struct
 {
   uint32_t Timing;                 /*!< Specifies the SMBUS_TIMINGR_register value.
-                                     This parameter calculated by referring to SMBUS initialization
-                                            section in Reference manual */
+                                        This parameter calculated by referring to SMBUS initialization section
+                                        in Reference manual */
   uint32_t AnalogFilter;           /*!< Specifies if Analog Filter is enable or not.
-                                     This parameter can be a value of @ref SMBUS_Analog_Filter */
+                                        This parameter can be a value of @ref SMBUS_Analog_Filter */
 
   uint32_t OwnAddress1;            /*!< Specifies the first device own address.
-                                     This parameter can be a 7-bit or 10-bit address. */
+                                        This parameter can be a 7-bit or 10-bit address. */
 
   uint32_t AddressingMode;         /*!< Specifies if 7-bit or 10-bit addressing mode for master is selected.
-                                     This parameter can be a value of @ref SMBUS_addressing_mode */
+                                        This parameter can be a value of @ref SMBUS_addressing_mode */
 
   uint32_t DualAddressMode;        /*!< Specifies if dual addressing mode is selected.
-                                     This parameter can be a value of @ref SMBUS_dual_addressing_mode */
+                                        This parameter can be a value of @ref SMBUS_dual_addressing_mode */
 
   uint32_t OwnAddress2;            /*!< Specifies the second device own address if dual addressing mode is selected
-                                     This parameter can be a 7-bit address. */
+                                        This parameter can be a 7-bit address. */
 
-  uint32_t OwnAddress2Masks;       /*!< Specifies the acknowledge mask address second device own address if dual addressing mode is selected
-                                     This parameter can be a value of @ref SMBUS_own_address2_masks. */
+  uint32_t OwnAddress2Masks;       /*!< Specifies the acknowledge mask address second device own address
+                                        if dual addressing mode is selected
+                                        This parameter can be a value of @ref SMBUS_own_address2_masks. */
 
   uint32_t GeneralCallMode;        /*!< Specifies if general call mode is selected.
-                                     This parameter can be a value of @ref SMBUS_general_call_addressing_mode. */
+                                        This parameter can be a value of @ref SMBUS_general_call_addressing_mode. */
 
   uint32_t NoStretchMode;          /*!< Specifies if nostretch mode is selected.
-                                     This parameter can be a value of @ref SMBUS_nostretch_mode */
+                                        This parameter can be a value of @ref SMBUS_nostretch_mode */
 
   uint32_t PacketErrorCheckMode;   /*!< Specifies if Packet Error Check mode is selected.
-                                     This parameter can be a value of @ref SMBUS_packet_error_check_mode */
+                                        This parameter can be a value of @ref SMBUS_packet_error_check_mode */
 
   uint32_t PeripheralMode;         /*!< Specifies which mode of Periphal is selected.
-                                     This parameter can be a value of @ref SMBUS_peripheral_mode */
+                                        This parameter can be a value of @ref SMBUS_peripheral_mode */
 
   uint32_t SMBusTimeout;           /*!< Specifies the content of the 32 Bits SMBUS_TIMEOUT_register value.
-                                      (Enable bits and different timeout values)
-                                     This parameter calculated by referring to SMBUS initialization
-                                         section in Reference manual */
+                                        (Enable bits and different timeout values)
+                                        This parameter calculated by referring to SMBUS initialization section
+                                        in Reference manual */
 } SMBUS_InitTypeDef;
 /**
   * @}
@@ -102,7 +102,7 @@
 #define HAL_SMBUS_STATE_SLAVE_BUSY_RX   (0x00000042U)  /*!< Slave Data Reception process is ongoing       */
 #define HAL_SMBUS_STATE_TIMEOUT         (0x00000003U)  /*!< Timeout state                                 */
 #define HAL_SMBUS_STATE_ERROR           (0x00000004U)  /*!< Reception process is ongoing                  */
-#define HAL_SMBUS_STATE_LISTEN          (0x00000008U)   /*!< Address Listen Mode is ongoing                */
+#define HAL_SMBUS_STATE_LISTEN          (0x00000008U)  /*!< Address Listen Mode is ongoing                */
 /**
   * @}
   */
@@ -121,7 +121,7 @@
 #define HAL_SMBUS_ERROR_ALERT           (0x00000040U)    /*!< Alert error          */
 #define HAL_SMBUS_ERROR_PECERR          (0x00000080U)    /*!< PEC error            */
 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
-#define HAL_SMBUS_ERROR_INVALID_CALLBACK  (0x00000100U)    /*!< Invalid Callback error */
+#define HAL_SMBUS_ERROR_INVALID_CALLBACK  (0x00000100U)  /*!< Invalid Callback error   */
 #endif /* USE_HAL_SMBUS_REGISTER_CALLBACKS */
 #define HAL_SMBUS_ERROR_INVALID_PARAM    (0x00000200U)   /*!< Invalid Parameters error */
 /**
@@ -159,17 +159,26 @@
   __IO uint32_t                ErrorCode;       /*!< SMBUS Error code                   */
 
 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
-  void (* MasterTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);           /*!< SMBUS Master Tx Transfer completed callback */
-  void (* MasterRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);           /*!< SMBUS Master Rx Transfer completed callback */
-  void (* SlaveTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);            /*!< SMBUS Slave Tx Transfer completed callback  */
-  void (* SlaveRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);            /*!< SMBUS Slave Rx Transfer completed callback  */
-  void (* ListenCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);             /*!< SMBUS Listen Complete callback              */
-  void (* ErrorCallback)(struct __SMBUS_HandleTypeDef *hsmbus);                  /*!< SMBUS Error callback                        */
+  void (* MasterTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);
+  /*!< SMBUS Master Tx Transfer completed callback */
+  void (* MasterRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);
+  /*!< SMBUS Master Rx Transfer completed callback */
+  void (* SlaveTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);
+  /*!< SMBUS Slave Tx Transfer completed callback  */
+  void (* SlaveRxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);
+  /*!< SMBUS Slave Rx Transfer completed callback  */
+  void (* ListenCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);
+  /*!< SMBUS Listen Complete callback              */
+  void (* ErrorCallback)(struct __SMBUS_HandleTypeDef *hsmbus);
+  /*!< SMBUS Error callback                        */
 
-  void (* AddrCallback)(struct __SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode);  /*!< SMBUS Slave Address Match callback */
+  void (* AddrCallback)(struct __SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode);
+  /*!< SMBUS Slave Address Match callback */
 
-  void (* MspInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus);                /*!< SMBUS Msp Init callback                     */
-  void (* MspDeInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus);              /*!< SMBUS Msp DeInit callback                   */
+  void (* MspInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus);
+  /*!< SMBUS Msp Init callback                     */
+  void (* MspDeInitCallback)(struct __SMBUS_HandleTypeDef *hsmbus);
+  /*!< SMBUS Msp DeInit callback                   */
 
 #endif  /* USE_HAL_SMBUS_REGISTER_CALLBACKS */
 } SMBUS_HandleTypeDef;
@@ -195,8 +204,11 @@
 /**
   * @brief  HAL SMBUS Callback pointer definition
   */
-typedef  void (*pSMBUS_CallbackTypeDef)(SMBUS_HandleTypeDef *hsmbus); /*!< pointer to an SMBUS callback function */
-typedef  void (*pSMBUS_AddrCallbackTypeDef)(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode); /*!< pointer to an SMBUS Address Match callback function */
+typedef  void (*pSMBUS_CallbackTypeDef)(SMBUS_HandleTypeDef *hsmbus);
+/*!< pointer to an SMBUS callback function */
+typedef  void (*pSMBUS_AddrCallbackTypeDef)(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection,
+                                            uint16_t AddrMatchCode);
+/*!< pointer to an SMBUS Address Match callback function */
 
 #endif /* USE_HAL_SMBUS_REGISTER_CALLBACKS */
 /**
@@ -358,9 +370,10 @@
 #define SMBUS_IT_ADDRI                          I2C_CR1_ADDRIE
 #define SMBUS_IT_RXI                            I2C_CR1_RXIE
 #define SMBUS_IT_TXI                            I2C_CR1_TXIE
-#define SMBUS_IT_TX                             (SMBUS_IT_ERRI | SMBUS_IT_TCI | SMBUS_IT_STOPI | SMBUS_IT_NACKI | \
-                                                 SMBUS_IT_TXI)
-#define SMBUS_IT_RX                             (SMBUS_IT_ERRI | SMBUS_IT_TCI | SMBUS_IT_NACKI | SMBUS_IT_RXI)
+#define SMBUS_IT_TX                             (SMBUS_IT_ERRI | SMBUS_IT_TCI | SMBUS_IT_STOPI | \
+                                                 SMBUS_IT_NACKI | SMBUS_IT_TXI)
+#define SMBUS_IT_RX                             (SMBUS_IT_ERRI | SMBUS_IT_TCI | SMBUS_IT_NACKI | \
+                                                 SMBUS_IT_RXI)
 #define SMBUS_IT_ALERT                          (SMBUS_IT_ERRI)
 #define SMBUS_IT_ADDR                           (SMBUS_IT_ADDRI | SMBUS_IT_STOPI | SMBUS_IT_NACKI)
 /**
@@ -408,14 +421,14 @@
   * @retval None
   */
 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
-#define __HAL_SMBUS_RESET_HANDLE_STATE(__HANDLE__)           do{                                                   \
-                                                                 (__HANDLE__)->State = HAL_SMBUS_STATE_RESET;       \
+#define __HAL_SMBUS_RESET_HANDLE_STATE(__HANDLE__)           do{                                               \
+                                                                 (__HANDLE__)->State = HAL_SMBUS_STATE_RESET;  \
                                                                  (__HANDLE__)->MspInitCallback = NULL;            \
                                                                  (__HANDLE__)->MspDeInitCallback = NULL;          \
                                                                } while(0)
 #else
 #define __HAL_SMBUS_RESET_HANDLE_STATE(__HANDLE__)         ((__HANDLE__)->State = HAL_SMBUS_STATE_RESET)
-#endif
+#endif /* USE_HAL_SMBUS_REGISTER_CALLBACKS */
 
 /** @brief  Enable the specified SMBUS interrupts.
   * @param  __HANDLE__ specifies the SMBUS Handle.
@@ -491,12 +504,14 @@
   */
 #define SMBUS_FLAG_MASK  (0x0001FFFFU)
 #define __HAL_SMBUS_GET_FLAG(__HANDLE__, __FLAG__) \
-  (((((__HANDLE__)->Instance->ISR) & ((__FLAG__) & SMBUS_FLAG_MASK)) == ((__FLAG__) & SMBUS_FLAG_MASK)) ? SET : RESET)
+  (((((__HANDLE__)->Instance->ISR) & ((__FLAG__) & SMBUS_FLAG_MASK)) == \
+    ((__FLAG__) & SMBUS_FLAG_MASK)) ? SET : RESET)
 
 /** @brief  Clear the SMBUS pending flags which are cleared by writing 1 in a specific bit.
   * @param  __HANDLE__ specifies the SMBUS Handle.
   * @param  __FLAG__ specifies the flag to clear.
   *          This parameter can be any combination of the following values:
+  *            @arg @ref SMBUS_FLAG_TXE     Transmit data register empty
   *            @arg @ref SMBUS_FLAG_ADDR    Address matched (slave mode)
   *            @arg @ref SMBUS_FLAG_AF      NACK received flag
   *            @arg @ref SMBUS_FLAG_STOPF   STOP detection flag
@@ -509,7 +524,9 @@
   *
   * @retval None
   */
-#define __HAL_SMBUS_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
+#define __HAL_SMBUS_CLEAR_FLAG(__HANDLE__, __FLAG__)  (((__FLAG__) == SMBUS_FLAG_TXE) ? \
+                                                       ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \
+                                                       ((__HANDLE__)->Instance->ICR = (__FLAG__)))
 
 /** @brief  Enable the specified SMBUS peripheral.
   * @param  __HANDLE__ specifies the SMBUS Handle.
@@ -574,43 +591,52 @@
                                                          ((MODE) == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE)  || \
                                                          ((MODE) == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP))
 
-#define IS_SMBUS_TRANSFER_MODE(MODE)                    (((MODE) == SMBUS_RELOAD_MODE)                          || \
-                                                         ((MODE) == SMBUS_AUTOEND_MODE)                         || \
-                                                         ((MODE) == SMBUS_SOFTEND_MODE)                         || \
-                                                         ((MODE) == SMBUS_SENDPEC_MODE)                         || \
-                                                         ((MODE) == (SMBUS_RELOAD_MODE | SMBUS_SENDPEC_MODE))   || \
-                                                         ((MODE) == (SMBUS_AUTOEND_MODE | SMBUS_SENDPEC_MODE))  || \
-                                                         ((MODE) == (SMBUS_AUTOEND_MODE | SMBUS_RELOAD_MODE))   || \
-                                                         ((MODE) == (SMBUS_AUTOEND_MODE | SMBUS_SENDPEC_MODE | SMBUS_RELOAD_MODE )))
+#define IS_SMBUS_TRANSFER_MODE(MODE)                 (((MODE) == SMBUS_RELOAD_MODE)                          || \
+                                                      ((MODE) == SMBUS_AUTOEND_MODE)                         || \
+                                                      ((MODE) == SMBUS_SOFTEND_MODE)                         || \
+                                                      ((MODE) == SMBUS_SENDPEC_MODE)                         || \
+                                                      ((MODE) == (SMBUS_RELOAD_MODE | SMBUS_SENDPEC_MODE))   || \
+                                                      ((MODE) == (SMBUS_AUTOEND_MODE | SMBUS_SENDPEC_MODE))  || \
+                                                      ((MODE) == (SMBUS_AUTOEND_MODE | SMBUS_RELOAD_MODE))   || \
+                                                      ((MODE) == (SMBUS_AUTOEND_MODE | SMBUS_SENDPEC_MODE | \
+                                                                  SMBUS_RELOAD_MODE )))
 
 
 #define IS_SMBUS_TRANSFER_REQUEST(REQUEST)              (((REQUEST) == SMBUS_GENERATE_STOP)              || \
-                                                         ((REQUEST) == SMBUS_GENERATE_START_READ)       || \
-                                                         ((REQUEST) == SMBUS_GENERATE_START_WRITE)      || \
+                                                         ((REQUEST) == SMBUS_GENERATE_START_READ)        || \
+                                                         ((REQUEST) == SMBUS_GENERATE_START_WRITE)       || \
                                                          ((REQUEST) == SMBUS_NO_STARTSTOP))
 
 
-#define IS_SMBUS_TRANSFER_OPTIONS_REQUEST(REQUEST)      (IS_SMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST)       || \
-                                                         ((REQUEST) == SMBUS_FIRST_FRAME)                       || \
-                                                         ((REQUEST) == SMBUS_NEXT_FRAME)                        || \
-                                                         ((REQUEST) == SMBUS_FIRST_AND_LAST_FRAME_NO_PEC)       || \
-                                                         ((REQUEST) == SMBUS_LAST_FRAME_NO_PEC)                 || \
-                                                         ((REQUEST) == SMBUS_FIRST_FRAME_WITH_PEC)              || \
-                                                         ((REQUEST) == SMBUS_FIRST_AND_LAST_FRAME_WITH_PEC)     || \
-                                                         ((REQUEST) == SMBUS_LAST_FRAME_WITH_PEC))
+#define IS_SMBUS_TRANSFER_OPTIONS_REQUEST(REQUEST)   (IS_SMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST)       || \
+                                                      ((REQUEST) == SMBUS_FIRST_FRAME)                       || \
+                                                      ((REQUEST) == SMBUS_NEXT_FRAME)                        || \
+                                                      ((REQUEST) == SMBUS_FIRST_AND_LAST_FRAME_NO_PEC)       || \
+                                                      ((REQUEST) == SMBUS_LAST_FRAME_NO_PEC)                 || \
+                                                      ((REQUEST) == SMBUS_FIRST_FRAME_WITH_PEC)              || \
+                                                      ((REQUEST) == SMBUS_FIRST_AND_LAST_FRAME_WITH_PEC)     || \
+                                                      ((REQUEST) == SMBUS_LAST_FRAME_WITH_PEC))
 
-#define IS_SMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == SMBUS_OTHER_FRAME_NO_PEC)                || \
-                                                          ((REQUEST) == SMBUS_OTHER_AND_LAST_FRAME_NO_PEC)       || \
-                                                          ((REQUEST) == SMBUS_OTHER_FRAME_WITH_PEC)              || \
+#define IS_SMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == SMBUS_OTHER_FRAME_NO_PEC)             || \
+                                                          ((REQUEST) == SMBUS_OTHER_AND_LAST_FRAME_NO_PEC)    || \
+                                                          ((REQUEST) == SMBUS_OTHER_FRAME_WITH_PEC)           || \
                                                           ((REQUEST) == SMBUS_OTHER_AND_LAST_FRAME_WITH_PEC))
 
-#define SMBUS_RESET_CR1(__HANDLE__)                       ((__HANDLE__)->Instance->CR1 &= \
-                                                           (uint32_t)~((uint32_t)(I2C_CR1_SMBHEN | I2C_CR1_SMBDEN | I2C_CR1_PECEN)))
-#define SMBUS_RESET_CR2(__HANDLE__)                       ((__HANDLE__)->Instance->CR2 &= \
-                                                           (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_RD_WRN)))
+#define SMBUS_RESET_CR1(__HANDLE__)                    ((__HANDLE__)->Instance->CR1 &= \
+                                                        (uint32_t)~((uint32_t)(I2C_CR1_SMBHEN | I2C_CR1_SMBDEN | \
+                                                                               I2C_CR1_PECEN)))
+#define SMBUS_RESET_CR2(__HANDLE__)                    ((__HANDLE__)->Instance->CR2 &= \
+                                                        (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | \
+                                                                               I2C_CR2_NBYTES | I2C_CR2_RELOAD | \
+                                                                               I2C_CR2_RD_WRN)))
 
-#define SMBUS_GENERATE_START(__ADDMODE__,__ADDRESS__)     (((__ADDMODE__) == SMBUS_ADDRESSINGMODE_7BIT) ? (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & (~I2C_CR2_RD_WRN)) : \
-                                                           (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_ADD10) | (I2C_CR2_START)) & (~I2C_CR2_RD_WRN)))
+#define SMBUS_GENERATE_START(__ADDMODE__,__ADDRESS__)     (((__ADDMODE__) == SMBUS_ADDRESSINGMODE_7BIT) ? \
+                                                           (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \
+                                                                       (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & \
+                                                                      (~I2C_CR2_RD_WRN)) : \
+                                                           (uint32_t)((((uint32_t)(__ADDRESS__) & \
+                                                                        (I2C_CR2_SADD)) | (I2C_CR2_ADD10) | \
+                                                                       (I2C_CR2_START)) & (~I2C_CR2_RD_WRN)))
 
 #define SMBUS_GET_ADDR_MATCH(__HANDLE__)                  (((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) >> 17U)
 #define SMBUS_GET_DIR(__HANDLE__)                         (((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) >> 16U)
@@ -629,6 +655,7 @@
   * @}
   */
 
+
 /* Exported functions --------------------------------------------------------*/
 /** @addtogroup SMBUS_Exported_Functions SMBUS Exported Functions
   * @{
@@ -648,11 +675,14 @@
 
 /* Callbacks Register/UnRegister functions  ***********************************/
 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
-HAL_StatusTypeDef HAL_SMBUS_RegisterCallback(SMBUS_HandleTypeDef *hsmbus, HAL_SMBUS_CallbackIDTypeDef CallbackID,
+HAL_StatusTypeDef HAL_SMBUS_RegisterCallback(SMBUS_HandleTypeDef *hsmbus,
+                                             HAL_SMBUS_CallbackIDTypeDef CallbackID,
                                              pSMBUS_CallbackTypeDef pCallback);
-HAL_StatusTypeDef HAL_SMBUS_UnRegisterCallback(SMBUS_HandleTypeDef *hsmbus, HAL_SMBUS_CallbackIDTypeDef CallbackID);
+HAL_StatusTypeDef HAL_SMBUS_UnRegisterCallback(SMBUS_HandleTypeDef *hsmbus,
+                                               HAL_SMBUS_CallbackIDTypeDef CallbackID);
 
-HAL_StatusTypeDef HAL_SMBUS_RegisterAddrCallback(SMBUS_HandleTypeDef *hsmbus, pSMBUS_AddrCallbackTypeDef pCallback);
+HAL_StatusTypeDef HAL_SMBUS_RegisterAddrCallback(SMBUS_HandleTypeDef *hsmbus,
+                                                 pSMBUS_AddrCallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_SMBUS_UnRegisterAddrCallback(SMBUS_HandleTypeDef *hsmbus);
 #endif /* USE_HAL_SMBUS_REGISTER_CALLBACKS */
 /**
@@ -678,10 +708,10 @@
   * @{
   */
 /******* Non-Blocking mode: Interrupt */
-HAL_StatusTypeDef HAL_SMBUS_Master_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint8_t *pData,
-                                               uint16_t Size, uint32_t XferOptions);
-HAL_StatusTypeDef HAL_SMBUS_Master_Receive_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint8_t *pData,
-                                              uint16_t Size, uint32_t XferOptions);
+HAL_StatusTypeDef HAL_SMBUS_Master_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress,
+                                               uint8_t *pData, uint16_t Size, uint32_t XferOptions);
+HAL_StatusTypeDef HAL_SMBUS_Master_Receive_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress,
+                                              uint8_t *pData, uint16_t Size, uint32_t XferOptions);
 HAL_StatusTypeDef HAL_SMBUS_Master_Abort_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress);
 HAL_StatusTypeDef HAL_SMBUS_Slave_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint8_t *pData, uint16_t Size,
                                               uint32_t XferOptions);
@@ -757,5 +787,3 @@
 
 
 #endif /* STM32F7xx_HAL_SMBUS_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_spdifrx.h b/Inc/stm32f7xx_hal_spdifrx.h
index 99420bf..4d7593d 100644
--- a/Inc/stm32f7xx_hal_spdifrx.h
+++ b/Inc/stm32f7xx_hal_spdifrx.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -596,5 +595,3 @@
 
 
 #endif /* __STM32F7xx_HAL_SPDIFRX_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_spi.h b/Inc/stm32f7xx_hal_spi.h
index 296481a..c97856f 100644
--- a/Inc/stm32f7xx_hal_spi.h
+++ b/Inc/stm32f7xx_hal_spi.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -778,7 +777,8 @@
 
 /* Callbacks Register/UnRegister functions  ***********************************/
 #if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
-HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID, pSPI_CallbackTypeDef pCallback);
+HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID,
+                                           pSPI_CallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID);
 #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
 /**
@@ -849,4 +849,3 @@
 
 #endif /* STM32F7xx_HAL_SPI_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_spi_ex.h b/Inc/stm32f7xx_hal_spi_ex.h
index 63a0153..3f4bf9b 100644
--- a/Inc/stm32f7xx_hal_spi_ex.h
+++ b/Inc/stm32f7xx_hal_spi_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -72,4 +71,3 @@
 
 #endif /* STM32F7xx_HAL_SPI_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_sram.h b/Inc/stm32f7xx_hal_sram.h
index bceff38..92972d8 100644
--- a/Inc/stm32f7xx_hal_sram.h
+++ b/Inc/stm32f7xx_hal_sram.h
@@ -6,25 +6,25 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F7xx_HAL_SRAM_H
-#define __STM32F7xx_HAL_SRAM_H
+#ifndef STM32F7xx_HAL_SRAM_H
+#define STM32F7xx_HAL_SRAM_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
+
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_ll_fmc.h"
 
@@ -33,16 +33,16 @@
   */
 /** @addtogroup SRAM
   * @{
-  */ 
+  */
 
 /* Exported typedef ----------------------------------------------------------*/
 
 /** @defgroup SRAM_Exported_Types SRAM Exported Types
   * @{
   */
-/** 
-  * @brief  HAL SRAM State structures definition  
-  */ 
+/**
+  * @brief  HAL SRAM State structures definition
+  */
 typedef enum
 {
   HAL_SRAM_STATE_RESET     = 0x00U,  /*!< SRAM not yet initialized or disabled           */
@@ -60,26 +60,26 @@
 typedef struct __SRAM_HandleTypeDef
 #else
 typedef struct
-#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */	
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */
 {
-  FMC_NORSRAM_TypeDef           *Instance;  /*!< Register base address                        */ 
-  
+  FMC_NORSRAM_TypeDef           *Instance;  /*!< Register base address                        */
+
   FMC_NORSRAM_EXTENDED_TypeDef  *Extended;  /*!< Extended mode register base address          */
-  
+
   FMC_NORSRAM_InitTypeDef       Init;       /*!< SRAM device control configuration parameters */
 
-  HAL_LockTypeDef               Lock;       /*!< SRAM locking object                          */ 
-  
+  HAL_LockTypeDef               Lock;       /*!< SRAM locking object                          */
+
   __IO HAL_SRAM_StateTypeDef    State;      /*!< SRAM device access state                     */
-  
+
   DMA_HandleTypeDef             *hdma;      /*!< Pointer DMA handler                          */
 
 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
-  void  (* MspInitCallback)        ( struct __SRAM_HandleTypeDef * hsram);    /*!< SRAM Msp Init callback              */
-  void  (* MspDeInitCallback)      ( struct __SRAM_HandleTypeDef * hsram);    /*!< SRAM Msp DeInit callback            */
-  void  (* DmaXferCpltCallback)    ( DMA_HandleTypeDef * hdma);               /*!< SRAM DMA Xfer Complete callback     */
-  void  (* DmaXferErrorCallback)   ( DMA_HandleTypeDef * hdma);               /*!< SRAM DMA Xfer Error callback        */
-#endif
+  void (* MspInitCallback)(struct __SRAM_HandleTypeDef *hsram);               /*!< SRAM Msp Init callback              */
+  void (* MspDeInitCallback)(struct __SRAM_HandleTypeDef *hsram);             /*!< SRAM Msp DeInit callback            */
+  void (* DmaXferCpltCallback)(DMA_HandleTypeDef *hdma);                      /*!< SRAM DMA Xfer Complete callback     */
+  void (* DmaXferErrorCallback)(DMA_HandleTypeDef *hdma);                     /*!< SRAM DMA Xfer Error callback        */
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */
 } SRAM_HandleTypeDef;
 
 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
@@ -92,14 +92,14 @@
   HAL_SRAM_MSP_DEINIT_CB_ID     = 0x01U,  /*!< SRAM MspDeInit Callback ID         */
   HAL_SRAM_DMA_XFER_CPLT_CB_ID  = 0x02U,  /*!< SRAM DMA Xfer Complete Callback ID */
   HAL_SRAM_DMA_XFER_ERR_CB_ID   = 0x03U   /*!< SRAM DMA Xfer Complete Callback ID */
-}HAL_SRAM_CallbackIDTypeDef;
+} HAL_SRAM_CallbackIDTypeDef;
 
 /**
   * @brief  HAL SRAM Callback pointer definition
   */
 typedef void (*pSRAM_CallbackTypeDef)(SRAM_HandleTypeDef *hsram);
 typedef void (*pSRAM_DmaCallbackTypeDef)(DMA_HandleTypeDef *hdma);
-#endif
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */
 /**
   * @}
   */
@@ -108,8 +108,8 @@
 /* Exported macro ------------------------------------------------------------*/
 
 /** @defgroup SRAM_Exported_Macros SRAM Exported Macros
- * @{
- */
+  * @{
+  */
 
 /** @brief Reset SRAM handle state
   * @param  __HANDLE__ SRAM handle
@@ -123,7 +123,7 @@
                                                              } while(0)
 #else
 #define __HAL_SRAM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SRAM_STATE_RESET)
-#endif
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */
 
 /**
   * @}
@@ -135,11 +135,12 @@
   */
 
 /** @addtogroup SRAM_Exported_Functions_Group1 Initialization and de-initialization functions
- * @{
- */
+  * @{
+  */
 
 /* Initialization/de-initialization functions  ********************************/
-HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming);
+HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing,
+                                FMC_NORSRAM_TimingTypeDef *ExtTiming);
 HAL_StatusTypeDef HAL_SRAM_DeInit(SRAM_HandleTypeDef *hsram);
 void HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram);
 void HAL_SRAM_MspDeInit(SRAM_HandleTypeDef *hsram);
@@ -149,36 +150,46 @@
   */
 
 /** @addtogroup SRAM_Exported_Functions_Group2 Input Output and memory control functions
- * @{
- */
+  * @{
+  */
 
 /* I/O operation functions  ***************************************************/
-HAL_StatusTypeDef HAL_SRAM_Read_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pDstBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SRAM_Write_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pSrcBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SRAM_Read_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pDstBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SRAM_Write_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pSrcBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SRAM_Read_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SRAM_Write_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SRAM_Read_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize);
-HAL_StatusTypeDef HAL_SRAM_Write_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SRAM_Read_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pDstBuffer,
+                                   uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SRAM_Write_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pSrcBuffer,
+                                    uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SRAM_Read_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pDstBuffer,
+                                    uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SRAM_Write_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pSrcBuffer,
+                                     uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SRAM_Read_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer,
+                                    uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SRAM_Write_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer,
+                                     uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SRAM_Read_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer,
+                                    uint32_t BufferSize);
+HAL_StatusTypeDef HAL_SRAM_Write_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer,
+                                     uint32_t BufferSize);
 
 void HAL_SRAM_DMA_XferCpltCallback(DMA_HandleTypeDef *hdma);
 void HAL_SRAM_DMA_XferErrorCallback(DMA_HandleTypeDef *hdma);
 
 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
 /* SRAM callback registering/unregistering */
-HAL_StatusTypeDef HAL_SRAM_RegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, pSRAM_CallbackTypeDef pCallback);
+HAL_StatusTypeDef HAL_SRAM_RegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId,
+                                            pSRAM_CallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_SRAM_UnRegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId);
-HAL_StatusTypeDef HAL_SRAM_RegisterDmaCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, pSRAM_DmaCallbackTypeDef pCallback);
-#endif
+HAL_StatusTypeDef HAL_SRAM_RegisterDmaCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId,
+                                               pSRAM_DmaCallbackTypeDef pCallback);
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS  */
 
 /**
   * @}
   */
-  
+
 /** @addtogroup SRAM_Exported_Functions_Group3 Control functions
- * @{
- */
+  * @{
+  */
 
 /* SRAM Control functions  ****************************************************/
 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Enable(SRAM_HandleTypeDef *hsram);
@@ -189,32 +200,31 @@
   */
 
 /** @addtogroup SRAM_Exported_Functions_Group4 Peripheral State functions
- * @{
- */
+  * @{
+  */
 
 /* SRAM  State functions ******************************************************/
 HAL_SRAM_StateTypeDef HAL_SRAM_GetState(SRAM_HandleTypeDef *hsram);
 
 /**
   * @}
-  */ 
+  */
 
 /**
   * @}
   */
-  
-/**
-  * @}
-  */ 
 
 /**
   * @}
   */
-  
+
+/**
+  * @}
+  */
+
+
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* __STM32F7xx_HAL_SRAM_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+#endif /* STM32F7xx_HAL_SRAM_H */
diff --git a/Inc/stm32f7xx_hal_tim.h b/Inc/stm32f7xx_hal_tim.h
index 4934e62..2c7416f 100644
--- a/Inc/stm32f7xx_hal_tim.h
+++ b/Inc/stm32f7xx_hal_tim.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -65,8 +64,10 @@
                                     This means in PWM mode that (N+1) corresponds to:
                                         - the number of PWM periods in edge-aligned mode
                                         - the number of half PWM period in center-aligned mode
-                                     GP timers: this parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
-                                     Advanced timers: this parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
+                                     GP timers: this parameter must be a number between Min_Data = 0x00 and
+                                     Max_Data = 0xFF.
+                                     Advanced timers: this parameter must be a number between Min_Data = 0x0000 and
+                                     Max_Data = 0xFFFF. */
 
   uint32_t AutoReloadPreload;  /*!< Specifies the auto-reload preload.
                                    This parameter can be a value of @ref TIM_AutoReloadPreload */
@@ -218,7 +219,8 @@
   uint32_t ClearInputPolarity;   /*!< TIM Clear Input polarity
                                       This parameter can be a value of @ref TIM_ClearInput_Polarity */
   uint32_t ClearInputPrescaler;  /*!< TIM Clear Input prescaler
-                                      This parameter must be 0: When OCRef clear feature is used with ETR source, ETR prescaler must be off */
+                                      This parameter must be 0: When OCRef clear feature is used with ETR source,
+                                      ETR prescaler must be off */
   uint32_t ClearInputFilter;     /*!< TIM Clear Input filter
                                       This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
 } TIM_ClearInputConfigTypeDef;
@@ -268,28 +270,28 @@
   */
 typedef struct
 {
-  uint32_t OffStateRunMode;      /*!< TIM off state in run mode
-                                      This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */
-  uint32_t OffStateIDLEMode;     /*!< TIM off state in IDLE mode
-                                      This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */
-  uint32_t LockLevel;            /*!< TIM Lock level
-                                      This parameter can be a value of @ref TIM_Lock_level */
-  uint32_t DeadTime;             /*!< TIM dead Time
-                                      This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */
-  uint32_t BreakState;           /*!< TIM Break State
-                                      This parameter can be a value of @ref TIM_Break_Input_enable_disable */
-  uint32_t BreakPolarity;        /*!< TIM Break input polarity
-                                      This parameter can be a value of @ref TIM_Break_Polarity */
-  uint32_t BreakFilter;          /*!< Specifies the break input filter.
-                                      This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
-  uint32_t Break2State;          /*!< TIM Break2 State
-                                      This parameter can be a value of @ref TIM_Break2_Input_enable_disable */
-  uint32_t Break2Polarity;       /*!< TIM Break2 input polarity
-                                      This parameter can be a value of @ref TIM_Break2_Polarity */
-  uint32_t Break2Filter;         /*!< TIM break2 input filter.
-                                      This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
-  uint32_t AutomaticOutput;      /*!< TIM Automatic Output Enable state
-                                      This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */
+  uint32_t OffStateRunMode;      /*!< TIM off state in run mode, This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */
+
+  uint32_t OffStateIDLEMode;     /*!< TIM off state in IDLE mode, This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */
+
+  uint32_t LockLevel;            /*!< TIM Lock level, This parameter can be a value of @ref TIM_Lock_level */
+
+  uint32_t DeadTime;             /*!< TIM dead Time, This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */
+
+  uint32_t BreakState;           /*!< TIM Break State, This parameter can be a value of @ref TIM_Break_Input_enable_disable */
+
+  uint32_t BreakPolarity;        /*!< TIM Break input polarity, This parameter can be a value of @ref TIM_Break_Polarity */
+
+  uint32_t BreakFilter;          /*!< Specifies the break input filter.This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+
+  uint32_t Break2State;          /*!< TIM Break2 State, This parameter can be a value of @ref TIM_Break2_Input_enable_disable */
+
+  uint32_t Break2Polarity;       /*!< TIM Break2 input polarity, This parameter can be a value of @ref TIM_Break2_Polarity */
+
+  uint32_t Break2Filter;         /*!< TIM break2 input filter.This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
+
+  uint32_t AutomaticOutput;      /*!< TIM Automatic Output Enable state, This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */
+
 } TIM_BreakDeadTimeConfigTypeDef;
 
 /**
@@ -660,10 +662,8 @@
 /** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
   * @{
   */
-#define TIM_ICSELECTION_DIRECTTI           TIM_CCMR1_CC1S_0                     /*!< TIM Input 1, 2, 3 or 4 is selected to be
-                                                                                     connected to IC1, IC2, IC3 or IC4, respectively */
-#define TIM_ICSELECTION_INDIRECTTI         TIM_CCMR1_CC1S_1                     /*!< TIM Input 1, 2, 3 or 4 is selected to be
-                                                                                     connected to IC2, IC1, IC4 or IC3, respectively */
+#define TIM_ICSELECTION_DIRECTTI           TIM_CCMR1_CC1S_0                     /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC1, IC2, IC3 or IC4, respectively */
+#define TIM_ICSELECTION_INDIRECTTI         TIM_CCMR1_CC1S_1                     /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC2, IC1, IC4 or IC3, respectively */
 #define TIM_ICSELECTION_TRC                TIM_CCMR1_CC1S                       /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */
 /**
   * @}
@@ -902,19 +902,18 @@
   * @{
   */
 #define TIM_AUTOMATICOUTPUT_DISABLE        0x00000000U                          /*!< MOE can be set only by software */
-#define TIM_AUTOMATICOUTPUT_ENABLE         TIM_BDTR_AOE                         /*!< MOE can be set by software or automatically at the next update event
-                                                                                    (if none of the break inputs BRK and BRK2 is active) */
+#define TIM_AUTOMATICOUTPUT_ENABLE         TIM_BDTR_AOE                         /*!< MOE can be set by software or automatically at the next update event (if none of the break inputs BRK and BRK2 is active) */
 /**
   * @}
   */
 
-/** @defgroup TIM_Group_Channel5 Group Channel 5 and Channel 1, 2 or 3
+/** @defgroup TIM_Group_Channel5 TIM Group Channel 5 and Channel 1, 2 or 3
   * @{
   */
-#define TIM_GROUPCH5_NONE                  0x00000000U                          /* !< No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC */
-#define TIM_GROUPCH5_OC1REFC               TIM_CCR5_GC5C1                       /* !< OC1REFC is the logical AND of OC1REFC and OC5REF    */
-#define TIM_GROUPCH5_OC2REFC               TIM_CCR5_GC5C2                       /* !< OC2REFC is the logical AND of OC2REFC and OC5REF    */
-#define TIM_GROUPCH5_OC3REFC               TIM_CCR5_GC5C3                       /* !< OC3REFC is the logical AND of OC3REFC and OC5REF    */
+#define TIM_GROUPCH5_NONE                  0x00000000U                          /*!< No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC */
+#define TIM_GROUPCH5_OC1REFC               TIM_CCR5_GC5C1                       /*!< OC1REFC is the logical AND of OC1REFC and OC5REF    */
+#define TIM_GROUPCH5_OC2REFC               TIM_CCR5_GC5C2                       /*!< OC2REFC is the logical AND of OC2REFC and OC5REF    */
+#define TIM_GROUPCH5_OC3REFC               TIM_CCR5_GC5C3                       /*!< OC3REFC is the logical AND of OC3REFC and OC5REF    */
 /**
   * @}
   */
@@ -1203,7 +1202,8 @@
   * @brief  Disable the TIM main Output.
   * @param  __HANDLE__ TIM handle
   * @retval None
-  * @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled
+  * @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been
+  *       disabled
   */
 #define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
   do { \
@@ -1370,7 +1370,8 @@
 
 /**
   * @brief  Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31).
-  * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read in an atomic way.
+  * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read
+  *       in an atomic way.
   * @param  __HANDLE__ TIM handle.
   * @retval None
 mode.
@@ -1397,8 +1398,8 @@
   * @brief  Indicates whether or not the TIM Counter is used as downcounter.
   * @param  __HANDLE__ TIM handle.
   * @retval False (Counter used as upcounter) or True (Counter used as downcounter)
-  * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode or Encoder
-mode.
+  * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode
+  *       or Encoder mode.
   */
 #define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__)    (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))
 
@@ -1412,7 +1413,8 @@
 
 /**
   * @brief  Set the TIM Counter Register value on runtime.
-  * Note Please check if the bit 31 of CNT register is used as UIF copy or not, this may affect the counter range in case of 32 bits counter TIM instance.
+  * Note Please check if the bit 31 of CNT register is used as UIF copy or not, this may affect the counter range in
+  *      case of 32 bits counter TIM instance.
   *      Bit 31 of CNT can be enabled/disabled using __HAL_TIM_UIFREMAP_ENABLE()/__HAL_TIM_UIFREMAP_DISABLE() macros.
   * @param  __HANDLE__ TIM handle.
   * @param  __COUNTER__ specifies the Counter register new value.
@@ -1474,7 +1476,8 @@
 #define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__)  ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
 
 /**
-  * @brief  Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.
+  * @brief  Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel()
+  *         function.
   * @param  __HANDLE__ TIM handle.
   * @param  __CHANNEL__ TIM Channels to be configured.
   *          This parameter can be one of the following values:
@@ -2067,13 +2070,19 @@
    ((__HANDLE__)->ChannelState[5] = (__CHANNEL_STATE__)))
 
 #define TIM_CHANNEL_STATE_SET_ALL(__HANDLE__,  __CHANNEL_STATE__) do { \
-  (__HANDLE__)->ChannelState[0]  = (__CHANNEL_STATE__);  \
-  (__HANDLE__)->ChannelState[1]  = (__CHANNEL_STATE__);  \
-  (__HANDLE__)->ChannelState[2]  = (__CHANNEL_STATE__);  \
-  (__HANDLE__)->ChannelState[3]  = (__CHANNEL_STATE__);  \
-  (__HANDLE__)->ChannelState[4]  = (__CHANNEL_STATE__);  \
-  (__HANDLE__)->ChannelState[5]  = (__CHANNEL_STATE__);  \
- } while(0)
+                                                                       (__HANDLE__)->ChannelState[0]  = \
+                                                                       (__CHANNEL_STATE__);  \
+                                                                       (__HANDLE__)->ChannelState[1]  = \
+                                                                       (__CHANNEL_STATE__);  \
+                                                                       (__HANDLE__)->ChannelState[2]  = \
+                                                                       (__CHANNEL_STATE__);  \
+                                                                       (__HANDLE__)->ChannelState[3]  = \
+                                                                       (__CHANNEL_STATE__);  \
+                                                                       (__HANDLE__)->ChannelState[4]  = \
+                                                                       (__CHANNEL_STATE__);  \
+                                                                       (__HANDLE__)->ChannelState[5]  = \
+                                                                       (__CHANNEL_STATE__);  \
+                                                                     } while(0)
 
 #define TIM_CHANNEL_N_STATE_GET(__HANDLE__, __CHANNEL__)\
   (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelNState[0] :\
@@ -2088,11 +2097,15 @@
    ((__HANDLE__)->ChannelNState[3] = (__CHANNEL_STATE__)))
 
 #define TIM_CHANNEL_N_STATE_SET_ALL(__HANDLE__,  __CHANNEL_STATE__) do { \
-  (__HANDLE__)->ChannelNState[0] = (__CHANNEL_STATE__);  \
-  (__HANDLE__)->ChannelNState[1] = (__CHANNEL_STATE__);  \
-  (__HANDLE__)->ChannelNState[2] = (__CHANNEL_STATE__);  \
-  (__HANDLE__)->ChannelNState[3] = (__CHANNEL_STATE__);  \
- } while(0)
+                                                                         (__HANDLE__)->ChannelNState[0] = \
+                                                                         (__CHANNEL_STATE__);  \
+                                                                         (__HANDLE__)->ChannelNState[1] = \
+                                                                         (__CHANNEL_STATE__);  \
+                                                                         (__HANDLE__)->ChannelNState[2] = \
+                                                                         (__CHANNEL_STATE__);  \
+                                                                         (__HANDLE__)->ChannelNState[3] = \
+                                                                         (__CHANNEL_STATE__);  \
+                                                                       } while(0)
 
 /**
   * @}
@@ -2266,14 +2279,14 @@
 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
                                               uint32_t BurstRequestSrc, uint32_t  *BurstBuffer, uint32_t  BurstLength);
 HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
-                                                   uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength,
-                                                   uint32_t DataLength);
+                                                   uint32_t BurstRequestSrc, uint32_t *BurstBuffer,
+                                                   uint32_t BurstLength,  uint32_t DataLength);
 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
 HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
                                              uint32_t BurstRequestSrc, uint32_t  *BurstBuffer, uint32_t  BurstLength);
 HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
-                                                  uint32_t BurstRequestSrc, uint32_t  *BurstBuffer, uint32_t  BurstLength,
-                                                  uint32_t  DataLength);
+                                                  uint32_t BurstRequestSrc, uint32_t  *BurstBuffer,
+                                                  uint32_t  BurstLength, uint32_t  DataLength);
 HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
 HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
 uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
@@ -2371,5 +2384,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_TIM_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_tim_ex.h b/Inc/stm32f7xx_hal_tim_ex.h
index f0944ab..2079921 100644
--- a/Inc/stm32f7xx_hal_tim_ex.h
+++ b/Inc/stm32f7xx_hal_tim_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -73,8 +72,7 @@
   uint32_t Polarity;       /*!< Specifies the break input source polarity.
                                 This parameter can be a value of @ref TIMEx_Break_Input_Source_Polarity
                                 Not relevant when analog watchdog output of the DFSDM1 used as break input source */
-}
-TIMEx_BreakInputConfigTypeDef;
+} TIMEx_BreakInputConfigTypeDef;
 
 #endif /* TIM_BREAK_INPUT_SUPPORT */
 /**
@@ -110,8 +108,8 @@
 /** @defgroup TIMEx_Break_Input TIM Extended Break input
   * @{
   */
-#define TIM_BREAKINPUT_BRK     0x00000001U                                      /* !< Timer break input  */
-#define TIM_BREAKINPUT_BRK2    0x00000002U                                      /* !< Timer break2 input */
+#define TIM_BREAKINPUT_BRK     0x00000001U                                      /*!< Timer break input  */
+#define TIM_BREAKINPUT_BRK2    0x00000002U                                      /*!< Timer break2 input */
 /**
   * @}
   */
@@ -128,8 +126,8 @@
 /** @defgroup TIMEx_Break_Input_Source_Enable TIM Extended Break input source enabling
   * @{
   */
-#define TIM_BREAKINPUTSOURCE_DISABLE     0x00000000U                            /* !< Break input source is disabled */
-#define TIM_BREAKINPUTSOURCE_ENABLE      0x00000001U                            /* !< Break input source is enabled */
+#define TIM_BREAKINPUTSOURCE_DISABLE     0x00000000U                            /*!< Break input source is disabled */
+#define TIM_BREAKINPUTSOURCE_ENABLE      0x00000001U                            /*!< Break input source is enabled */
 /**
   * @}
   */
@@ -137,8 +135,8 @@
 /** @defgroup TIMEx_Break_Input_Source_Polarity TIM Extended Break input polarity
   * @{
   */
-#define TIM_BREAKINPUTSOURCE_POLARITY_LOW     0x00000001U                       /* !< Break input source is active low */
-#define TIM_BREAKINPUTSOURCE_POLARITY_HIGH    0x00000000U                       /* !< Break input source is active_high */
+#define TIM_BREAKINPUTSOURCE_POLARITY_LOW     0x00000001U                       /*!< Break input source is active low */
+#define TIM_BREAKINPUTSOURCE_POLARITY_HIGH    0x00000000U                       /*!< Break input source is active_high */
 /**
   * @}
   */
@@ -334,7 +332,7 @@
 /* End of exported functions -------------------------------------------------*/
 
 /* Private functions----------------------------------------------------------*/
-/** @addtogroup TIMEx_Private_Functions TIMEx Private Functions
+/** @addtogroup TIMEx_Private_Functions TIM Extended Private Functions
   * @{
   */
 void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
@@ -358,5 +356,3 @@
 
 
 #endif /* STM32F7xx_HAL_TIM_EX_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_uart.h b/Inc/stm32f7xx_hal_uart.h
index 6341d32..650edd4 100644
--- a/Inc/stm32f7xx_hal_uart.h
+++ b/Inc/stm32f7xx_hal_uart.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -206,7 +205,7 @@
 
   UART_AdvFeatureInitTypeDef AdvancedInit;           /*!< UART Advanced Features initialization parameters */
 
-  uint8_t                  *pTxBuffPtr;              /*!< Pointer to UART Tx transfer Buffer */
+  const uint8_t            *pTxBuffPtr;              /*!< Pointer to UART Tx transfer Buffer */
 
   uint16_t                 TxXferSize;               /*!< UART Tx Transfer size              */
 
@@ -1108,10 +1107,10 @@
   * @param  __HANDLE__ specifies the UART Handle.
   * @retval None
   */
-#define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__)        \
-  do{                                                      \
-    SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE);  \
-    (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE;        \
+#define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__)               \
+  do{                                                             \
+    ATOMIC_SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE);  \
+    (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE;               \
   } while(0U)
 
 /** @brief  Disable CTS flow control.
@@ -1127,10 +1126,10 @@
   * @param  __HANDLE__ specifies the UART Handle.
   * @retval None
   */
-#define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__)        \
-  do{                                                       \
-    CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \
-    (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE);      \
+#define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__)               \
+  do{                                                              \
+    ATOMIC_CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \
+    (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE);             \
   } while(0U)
 
 /** @brief  Enable RTS flow control.
@@ -1146,10 +1145,10 @@
   * @param  __HANDLE__ specifies the UART Handle.
   * @retval None
   */
-#define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__)       \
-  do{                                                     \
-    SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \
-    (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE;       \
+#define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__)              \
+  do{                                                            \
+    ATOMIC_SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \
+    (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE;              \
   } while(0U)
 
 /** @brief  Disable RTS flow control.
@@ -1165,10 +1164,10 @@
   * @param  __HANDLE__ specifies the UART Handle.
   * @retval None
   */
-#define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__)       \
-  do{                                                      \
-    CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\
-    (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE);     \
+#define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__)              \
+  do{                                                             \
+    ATOMIC_CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\
+    (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE);            \
   } while(0U)
 /**
   * @}
@@ -1528,11 +1527,11 @@
   */
 
 /* IO operation functions *****************************************************/
-HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
+HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);
 HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
-HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
+HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
-HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
+HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);
 HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);
@@ -1616,6 +1615,7 @@
   * @}
   */
 
+/* Private variables -----------------------------------------------------------*/
 /**
   * @}
   */
@@ -1630,4 +1630,3 @@
 
 #endif /* STM32F7xx_HAL_UART_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_uart_ex.h b/Inc/stm32f7xx_hal_uart_ex.h
index 6e6b090..e831e6b 100644
--- a/Inc/stm32f7xx_hal_uart_ex.h
+++ b/Inc/stm32f7xx_hal_uart_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -427,4 +426,3 @@
 
 #endif /* STM32F7xx_HAL_UART_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_usart.h b/Inc/stm32f7xx_hal_usart.h
index 9e90fee..7af5c52 100644
--- a/Inc/stm32f7xx_hal_usart.h
+++ b/Inc/stm32f7xx_hal_usart.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -122,7 +121,7 @@
 
   USART_InitTypeDef             Init;                    /*!< USART communication parameters      */
 
-  uint8_t                       *pTxBuffPtr;             /*!< Pointer to USART Tx transfer Buffer */
+  const uint8_t                 *pTxBuffPtr;             /*!< Pointer to USART Tx transfer Buffer */
 
   uint16_t                      TxXferSize;              /*!< USART Tx Transfer size              */
 
@@ -510,7 +509,7 @@
   */
 #define __HAL_USART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\
                                                          & (0x01U << (((__INTERRUPT__) & USART_ISR_MASK)>>\
-                                                                                USART_ISR_POS))) != 0U) ? SET : RESET)
+                                                                      USART_ISR_POS))) != 0U) ? SET : RESET)
 
 /** @brief  Check whether the specified USART interrupt source is enabled or not.
   * @param  __HANDLE__ specifies the USART Handle.
@@ -807,17 +806,17 @@
   */
 
 /* IO operation functions *****************************************************/
-HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout);
+HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size, uint32_t Timeout);
 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
-HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
+HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData,
                                             uint16_t Size, uint32_t Timeout);
-HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
+HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size);
 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
-HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
+HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData,
                                                uint16_t Size);
-HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
+HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size);
 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
-HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
+HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData,
                                                 uint16_t Size);
 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart);
 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart);
@@ -869,4 +868,3 @@
 
 #endif /* STM32F7xx_HAL_USART_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_usart_ex.h b/Inc/stm32f7xx_hal_usart_ex.h
index d1eeb85..8dfdbee 100644
--- a/Inc/stm32f7xx_hal_usart_ex.h
+++ b/Inc/stm32f7xx_hal_usart_ex.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -169,4 +168,3 @@
 
 #endif /* STM32F7xx_HAL_USART_EX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_hal_wwdg.h b/Inc/stm32f7xx_hal_wwdg.h
index d393ea6..6c5b408 100644
--- a/Inc/stm32f7xx_hal_wwdg.h
+++ b/Inc/stm32f7xx_hal_wwdg.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -184,7 +183,7 @@
 
 /**
   * @brief  Enable the WWDG early wakeup interrupt.
-  * @param  __HANDLE__: WWDG handle
+  * @param  __HANDLE__     WWDG handle
   * @param  __INTERRUPT__  specifies the interrupt to enable.
   *         This parameter can be one of the following values:
   *            @arg WWDG_IT_EWI: Early wakeup interrupt
@@ -297,5 +296,3 @@
 #endif
 
 #endif /* STM32F7xx_HAL_WWDG_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_adc.h b/Inc/stm32f7xx_ll_adc.h
index 2dab9ab..276d128 100644
--- a/Inc/stm32f7xx_ll_adc.h
+++ b/Inc/stm32f7xx_ll_adc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -4729,4 +4728,3 @@
 
 #endif /* __STM32F7xx_LL_ADC_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_bus.h b/Inc/stm32f7xx_ll_bus.h
index c5420fe..73d6404 100644
--- a/Inc/stm32f7xx_ll_bus.h
+++ b/Inc/stm32f7xx_ll_bus.h
@@ -23,14 +23,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 
@@ -1973,4 +1971,3 @@
 
 #endif /* __STM32F7xx_LL_BUS_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_cortex.h b/Inc/stm32f7xx_ll_cortex.h
index 9a8d210..8e2184f 100644
--- a/Inc/stm32f7xx_ll_cortex.h
+++ b/Inc/stm32f7xx_ll_cortex.h
@@ -10,7 +10,7 @@
     [..]
     The LL CORTEX driver contains a set of generic APIs that can be
     used by user:
-      (+) SYSTICK configuration used by @ref LL_mDelay and @ref LL_Init1msTick
+      (+) SYSTICK configuration used by LL_mDelay and LL_Init1msTick
           functions
       (+) Low power mode configuration (SCB register of Cortex-MCU)
       (+) MPU API to configure and enable regions
@@ -21,13 +21,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -636,4 +635,3 @@
 
 #endif /* __STM32F7xx_LL_CORTEX_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_crc.h b/Inc/stm32f7xx_ll_crc.h
index fbb1071..4d3e53d 100644
--- a/Inc/stm32f7xx_ll_crc.h
+++ b/Inc/stm32f7xx_ll_crc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -236,7 +235,7 @@
 }
 
 /**
-  * @brief  Configure the reversal of the bit order of the Output data
+  * @brief  Return type of reversal of the bit order of the Output data
   * @rmtoll CR           REV_OUT       LL_CRC_GetOutputDataReverseMode
   * @param  CRCx CRC Instance
   * @retval Returned value can be one of the following values:
@@ -460,5 +459,3 @@
 #endif
 
 #endif /* STM32F7xx_LL_CRC_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_dac.h b/Inc/stm32f7xx_ll_dac.h
index 9886317..3a0cca2 100644
--- a/Inc/stm32f7xx_ll_dac.h
+++ b/Inc/stm32f7xx_ll_dac.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -1170,7 +1169,6 @@
   * @{
   */
 
-
 /**
   * @brief  Get DAC underrun flag for DAC channel 1
   * @rmtoll SR       DMAUDR1        LL_DAC_IsActiveFlag_DMAUDR1
@@ -1337,4 +1335,3 @@
 
 #endif /* STM32F7xx_LL_DAC_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_dma.h b/Inc/stm32f7xx_ll_dma.h
index 37d48b5..bf98ed8 100644
--- a/Inc/stm32f7xx_ll_dma.h
+++ b/Inc/stm32f7xx_ll_dma.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -2890,4 +2889,3 @@
 
 #endif /* __STM32F7xx_LL_DMA_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_dma2d.h b/Inc/stm32f7xx_ll_dma2d.h
index f9d1d23..aa70980 100644
--- a/Inc/stm32f7xx_ll_dma2d.h
+++ b/Inc/stm32f7xx_ll_dma2d.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -2116,5 +2115,3 @@
 #endif
 
 #endif /* STM32F7xx_LL_DMA2D_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_exti.h b/Inc/stm32f7xx_ll_exti.h
index 23ffcef..8b332e5 100644
--- a/Inc/stm32f7xx_ll_exti.h
+++ b/Inc/stm32f7xx_ll_exti.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -947,4 +946,3 @@
 
 #endif /* __STM32F7xx_LL_EXTI_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_fmc.h b/Inc/stm32f7xx_ll_fmc.h
index 11bf9b1..4f704ab 100644
--- a/Inc/stm32f7xx_ll_fmc.h
+++ b/Inc/stm32f7xx_ll_fmc.h
@@ -6,23 +6,22 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F7xx_LL_FMC_H
-#define __STM32F7xx_LL_FMC_H
+#ifndef STM32F7xx_LL_FMC_H
+#define STM32F7xx_LL_FMC_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
 /* Includes ------------------------------------------------------------------*/
@@ -39,63 +38,95 @@
 /** @addtogroup FMC_LL_Private_Macros
   * @{
   */
-#define IS_FMC_NORSRAM_BANK(BANK) (((BANK) == FMC_NORSRAM_BANK1) || \
-                                   ((BANK) == FMC_NORSRAM_BANK2) || \
-                                   ((BANK) == FMC_NORSRAM_BANK3) || \
-                                   ((BANK) == FMC_NORSRAM_BANK4))
 
+#define IS_FMC_NORSRAM_BANK(__BANK__) (((__BANK__) == FMC_NORSRAM_BANK1) || \
+                                       ((__BANK__) == FMC_NORSRAM_BANK2) || \
+                                       ((__BANK__) == FMC_NORSRAM_BANK3) || \
+                                       ((__BANK__) == FMC_NORSRAM_BANK4))
 #define IS_FMC_MUX(__MUX__) (((__MUX__) == FMC_DATA_ADDRESS_MUX_DISABLE) || \
-                              ((__MUX__) == FMC_DATA_ADDRESS_MUX_ENABLE))
-
+                             ((__MUX__) == FMC_DATA_ADDRESS_MUX_ENABLE))
 #define IS_FMC_MEMORY(__MEMORY__) (((__MEMORY__) == FMC_MEMORY_TYPE_SRAM) || \
-                                    ((__MEMORY__) == FMC_MEMORY_TYPE_PSRAM)|| \
-                                    ((__MEMORY__) == FMC_MEMORY_TYPE_NOR))
-
+                                   ((__MEMORY__) == FMC_MEMORY_TYPE_PSRAM)|| \
+                                   ((__MEMORY__) == FMC_MEMORY_TYPE_NOR))
 #define IS_FMC_NORSRAM_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_8)  || \
-                                                 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_16) || \
-                                                 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_32))
-
+                                                ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_16) || \
+                                                ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_32))
+#define IS_FMC_PAGESIZE(__SIZE__) (((__SIZE__) == FMC_PAGE_SIZE_NONE) || \
+                                   ((__SIZE__) == FMC_PAGE_SIZE_128) || \
+                                   ((__SIZE__) == FMC_PAGE_SIZE_256) || \
+                                   ((__SIZE__) == FMC_PAGE_SIZE_512) || \
+                                   ((__SIZE__) == FMC_PAGE_SIZE_1024))
+#define IS_FMC_WRITE_FIFO(__FIFO__) (((__FIFO__) == FMC_WRITE_FIFO_DISABLE) || \
+                                     ((__FIFO__) == FMC_WRITE_FIFO_ENABLE))
 #define IS_FMC_ACCESS_MODE(__MODE__) (((__MODE__) == FMC_ACCESS_MODE_A) || \
-                                       ((__MODE__) == FMC_ACCESS_MODE_B) || \
-                                       ((__MODE__) == FMC_ACCESS_MODE_C) || \
-                                       ((__MODE__) == FMC_ACCESS_MODE_D))
+                                      ((__MODE__) == FMC_ACCESS_MODE_B) || \
+                                      ((__MODE__) == FMC_ACCESS_MODE_C) || \
+                                      ((__MODE__) == FMC_ACCESS_MODE_D))
+#define IS_FMC_BURSTMODE(__STATE__) (((__STATE__) == FMC_BURST_ACCESS_MODE_DISABLE) || \
+                                     ((__STATE__) == FMC_BURST_ACCESS_MODE_ENABLE))
+#define IS_FMC_WAIT_POLARITY(__POLARITY__) (((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_LOW) || \
+                                            ((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_HIGH))
+#define IS_FMC_WAIT_SIGNAL_ACTIVE(__ACTIVE__) (((__ACTIVE__) == FMC_WAIT_TIMING_BEFORE_WS) || \
+                                               ((__ACTIVE__) == FMC_WAIT_TIMING_DURING_WS))
+#define IS_FMC_WRITE_OPERATION(__OPERATION__) (((__OPERATION__) == FMC_WRITE_OPERATION_DISABLE) || \
+                                               ((__OPERATION__) == FMC_WRITE_OPERATION_ENABLE))
+#define IS_FMC_WAITE_SIGNAL(__SIGNAL__) (((__SIGNAL__) == FMC_WAIT_SIGNAL_DISABLE) || \
+                                         ((__SIGNAL__) == FMC_WAIT_SIGNAL_ENABLE))
+#define IS_FMC_EXTENDED_MODE(__MODE__) (((__MODE__) == FMC_EXTENDED_MODE_DISABLE) || \
+                                        ((__MODE__) == FMC_EXTENDED_MODE_ENABLE))
+#define IS_FMC_ASYNWAIT(__STATE__) (((__STATE__) == FMC_ASYNCHRONOUS_WAIT_DISABLE) || \
+                                    ((__STATE__) == FMC_ASYNCHRONOUS_WAIT_ENABLE))
+#define IS_FMC_DATA_LATENCY(__LATENCY__) (((__LATENCY__) > 1U) && ((__LATENCY__) <= 17U))
+#define IS_FMC_WRITE_BURST(__BURST__) (((__BURST__) == FMC_WRITE_BURST_DISABLE) || \
+                                       ((__BURST__) == FMC_WRITE_BURST_ENABLE))
+#define IS_FMC_CONTINOUS_CLOCK(__CCLOCK__) (((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \
+                                            ((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC))
+#define IS_FMC_ADDRESS_SETUP_TIME(__TIME__) ((__TIME__) <= 15U)
+#define IS_FMC_ADDRESS_HOLD_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 15U))
+#define IS_FMC_DATASETUP_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 255U))
+#define IS_FMC_DATAHOLD_DURATION(__DATAHOLD__) ((__DATAHOLD__) <= 3U)
+#define IS_FMC_TURNAROUND_TIME(__TIME__) ((__TIME__) <= 15U)
+#define IS_FMC_CLK_DIV(__DIV__) (((__DIV__) > 1U) && ((__DIV__) <= 16U))
+#define IS_FMC_NORSRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_DEVICE)
+#define IS_FMC_NORSRAM_EXTENDED_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_EXTENDED_DEVICE)
 
-#define IS_FMC_NAND_BANK(BANK) ((BANK) == FMC_NAND_BANK3)
 
-#define IS_FMC_WAIT_FEATURE(FEATURE) (((FEATURE) == FMC_NAND_WAIT_FEATURE_DISABLE) || \
-                                      ((FEATURE) == FMC_NAND_WAIT_FEATURE_ENABLE))
+#define IS_FMC_NAND_BANK(__BANK__) ((__BANK__) == FMC_NAND_BANK3)
+#define IS_FMC_WAIT_FEATURE(__FEATURE__) (((__FEATURE__) == FMC_NAND_WAIT_FEATURE_DISABLE) || \
+                                          ((__FEATURE__) == FMC_NAND_WAIT_FEATURE_ENABLE))
+#define IS_FMC_NAND_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NAND_MEM_BUS_WIDTH_8) || \
+                                             ((__WIDTH__) == FMC_NAND_MEM_BUS_WIDTH_16))
+#define IS_FMC_ECC_STATE(__STATE__) (((__STATE__) == FMC_NAND_ECC_DISABLE) || \
+                                     ((__STATE__) == FMC_NAND_ECC_ENABLE))
 
-#define IS_FMC_NAND_MEMORY_WIDTH(WIDTH) (((WIDTH) == FMC_NAND_MEM_BUS_WIDTH_8) || \
-                                         ((WIDTH) == FMC_NAND_MEM_BUS_WIDTH_16))
+#define IS_FMC_ECCPAGE_SIZE(__SIZE__) (((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_256BYTE)  || \
+                                       ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_512BYTE)  || \
+                                       ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_1024BYTE) || \
+                                       ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_2048BYTE) || \
+                                       ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_4096BYTE) || \
+                                       ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_8192BYTE))
+#define IS_FMC_TCLR_TIME(__TIME__) ((__TIME__) <= 255U)
+#define IS_FMC_TAR_TIME(__TIME__) ((__TIME__) <= 255U)
+#define IS_FMC_SETUP_TIME(__TIME__) ((__TIME__) <= 254U)
+#define IS_FMC_WAIT_TIME(__TIME__) ((__TIME__) <= 254U)
+#define IS_FMC_HOLD_TIME(__TIME__) ((__TIME__) <= 254U)
+#define IS_FMC_HIZ_TIME(__TIME__) ((__TIME__) <= 254U)
+#define IS_FMC_NAND_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NAND_DEVICE)
 
-#define IS_FMC_ECC_STATE(STATE) (((STATE) == FMC_NAND_ECC_DISABLE) || \
-                                 ((STATE) == FMC_NAND_ECC_ENABLE))
 
-#define IS_FMC_ECCPAGE_SIZE(SIZE) (((SIZE) == FMC_NAND_ECC_PAGE_SIZE_256BYTE)  || \
-                                   ((SIZE) == FMC_NAND_ECC_PAGE_SIZE_512BYTE)  || \
-                                   ((SIZE) == FMC_NAND_ECC_PAGE_SIZE_1024BYTE) || \
-                                   ((SIZE) == FMC_NAND_ECC_PAGE_SIZE_2048BYTE) || \
-                                   ((SIZE) == FMC_NAND_ECC_PAGE_SIZE_4096BYTE) || \
-                                   ((SIZE) == FMC_NAND_ECC_PAGE_SIZE_8192BYTE))
-								   
-#define IS_FMC_SDMEMORY_WIDTH(WIDTH) (((WIDTH) == FMC_SDRAM_MEM_BUS_WIDTH_8)  || \
-                                      ((WIDTH) == FMC_SDRAM_MEM_BUS_WIDTH_16) || \
-                                      ((WIDTH) == FMC_SDRAM_MEM_BUS_WIDTH_32))
-
+#define IS_FMC_SDMEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_8)  || \
+                                          ((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_16) || \
+                                          ((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_32))
 #define IS_FMC_WRITE_PROTECTION(__WRITE__) (((__WRITE__) == FMC_SDRAM_WRITE_PROTECTION_DISABLE) || \
-                                            ((__WRITE__) == FMC_SDRAM_WRITE_PROTECTION_ENABLE))									  
-
+                                            ((__WRITE__) == FMC_SDRAM_WRITE_PROTECTION_ENABLE))
 #define IS_FMC_SDCLOCK_PERIOD(__PERIOD__) (((__PERIOD__) == FMC_SDRAM_CLOCK_DISABLE)  || \
                                            ((__PERIOD__) == FMC_SDRAM_CLOCK_PERIOD_2) || \
                                            ((__PERIOD__) == FMC_SDRAM_CLOCK_PERIOD_3))
-										   
 #define IS_FMC_READ_BURST(__RBURST__) (((__RBURST__) == FMC_SDRAM_RBURST_DISABLE) || \
                                        ((__RBURST__) == FMC_SDRAM_RBURST_ENABLE))
-									   
 #define IS_FMC_READPIPE_DELAY(__DELAY__) (((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_0) || \
                                           ((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_1) || \
                                           ((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_2))
-
 #define IS_FMC_COMMAND_MODE(__COMMAND__) (((__COMMAND__) == FMC_SDRAM_CMD_NORMAL_MODE)      || \
                                           ((__COMMAND__) == FMC_SDRAM_CMD_CLK_ENABLE)       || \
                                           ((__COMMAND__) == FMC_SDRAM_CMD_PALL)             || \
@@ -103,283 +134,46 @@
                                           ((__COMMAND__) == FMC_SDRAM_CMD_LOAD_MODE)        || \
                                           ((__COMMAND__) == FMC_SDRAM_CMD_SELFREFRESH_MODE) || \
                                           ((__COMMAND__) == FMC_SDRAM_CMD_POWERDOWN_MODE))
-
 #define IS_FMC_COMMAND_TARGET(__TARGET__) (((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK1) || \
                                            ((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK2) || \
-                                           ((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK1_2)) 										  
-						   
-/** @defgroup FMC_TCLR_Setup_Time FMC TCLR Setup Time
-  * @{
-  */
-#define IS_FMC_TCLR_TIME(__TIME__) ((__TIME__) <= 255)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_TAR_Setup_Time FMC TAR Setup Time 
-  * @{
-  */
-#define IS_FMC_TAR_TIME(TIME) ((TIME) <= 255)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_Setup_Time FMC Setup Time 
-  * @{
-  */
-#define IS_FMC_SETUP_TIME(TIME) ((TIME) <= 254)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_Wait_Setup_Time FMC Wait Setup Time 
-  * @{
-  */
-#define IS_FMC_WAIT_TIME(TIME) ((TIME) <= 254)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_Hold_Setup_Time FMC Hold Setup Time 
-  * @{
-  */
-#define IS_FMC_HOLD_TIME(TIME) ((TIME) <= 254)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_HiZ_Setup_Time FMC HiZ Setup Time 
-  * @{
-  */
-#define IS_FMC_HIZ_TIME(TIME) ((TIME) <= 254)
-/**
-  * @}
-  */
-
-#define IS_FMC_BURSTMODE(__STATE__) (((__STATE__) == FMC_BURST_ACCESS_MODE_DISABLE) || \
-                                      ((__STATE__) == FMC_BURST_ACCESS_MODE_ENABLE))
-
-#define IS_FMC_WAIT_POLARITY(__POLARITY__) (((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_LOW) || \
-                                             ((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_HIGH))
-
-#define IS_FMC_WAIT_SIGNAL_ACTIVE(__ACTIVE__) (((__ACTIVE__) == FMC_WAIT_TIMING_BEFORE_WS) || \
-                                                ((__ACTIVE__) == FMC_WAIT_TIMING_DURING_WS)) 
-
-#define IS_FMC_WRITE_OPERATION(__OPERATION__) (((__OPERATION__) == FMC_WRITE_OPERATION_DISABLE) || \
-                                                ((__OPERATION__) == FMC_WRITE_OPERATION_ENABLE))
-
-#define IS_FMC_WAITE_SIGNAL(__SIGNAL__) (((__SIGNAL__) == FMC_WAIT_SIGNAL_DISABLE) || \
-                                          ((__SIGNAL__) == FMC_WAIT_SIGNAL_ENABLE))
-
-#define IS_FMC_EXTENDED_MODE(__MODE__) (((__MODE__) == FMC_EXTENDED_MODE_DISABLE) || \
-                                         ((__MODE__) == FMC_EXTENDED_MODE_ENABLE))
-
-#define IS_FMC_ASYNWAIT(__STATE__) (((__STATE__) == FMC_ASYNCHRONOUS_WAIT_DISABLE) || \
-                                     ((__STATE__) == FMC_ASYNCHRONOUS_WAIT_ENABLE))
-
-/** @defgroup FMC_Data_Latency FMC Data Latency 
-  * @{
-  */
-#define IS_FMC_DATA_LATENCY(__LATENCY__) (((__LATENCY__) > 1) && ((__LATENCY__) <= 17))
-/**
-  * @}
-  */
-
-#define IS_FMC_WRITE_BURST(__BURST__) (((__BURST__) == FMC_WRITE_BURST_DISABLE) || \
-                                        ((__BURST__) == FMC_WRITE_BURST_ENABLE))
-
-#define IS_FMC_CONTINOUS_CLOCK(CCLOCK) (((CCLOCK) == FMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \
-                                        ((CCLOCK) == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC))
-
-
-/** @defgroup FMC_Address_Setup_Time FMC Address Setup Time
-  * @{
-  */
-#define IS_FMC_ADDRESS_SETUP_TIME(__TIME__) ((__TIME__) <= 15)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_Address_Hold_Time FMC Address Hold Time
-  * @{
-  */
-#define IS_FMC_ADDRESS_HOLD_TIME(__TIME__) (((__TIME__) > 0) && ((__TIME__) <= 15))
-/**
-  * @}
-  */
-
-/** @defgroup FMC_Data_Setup_Time FMC Data Setup Time
-  * @{
-  */
-#define IS_FMC_DATASETUP_TIME(__TIME__) (((__TIME__) > 0) && ((__TIME__) <= 255))
-/**
-  * @}
-  */
-
-/** @defgroup FMC_Bus_Turn_around_Duration FMC Bus Turn around Duration
-  * @{
-  */
-#define IS_FMC_TURNAROUND_TIME(__TIME__) ((__TIME__) <= 15)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_CLK_Division FMC CLK Division 
-  * @{
-  */
-#define IS_FMC_CLK_DIV(DIV) (((DIV) > 1) && ((DIV) <= 16))
-/**
-  * @}
-  */
-
-/** @defgroup FMC_SDRAM_LoadToActive_Delay FMC SDRAM LoadToActive Delay
-  * @{
-  */
-#define IS_FMC_LOADTOACTIVE_DELAY(__DELAY__) (((__DELAY__) > 0) && ((__DELAY__) <= 16))
-/**
-  * @}
-  */
-  
-/** @defgroup FMC_SDRAM_ExitSelfRefresh_Delay FMC SDRAM ExitSelfRefresh Delay
-  * @{
-  */
-#define IS_FMC_EXITSELFREFRESH_DELAY(__DELAY__) (((__DELAY__) > 0) && ((__DELAY__) <= 16))
-/**
-  * @}
-  */ 
-     
-/** @defgroup FMC_SDRAM_SelfRefresh_Time FMC SDRAM SelfRefresh Time
-  * @{
-  */  
-#define IS_FMC_SELFREFRESH_TIME(__TIME__) (((__TIME__) > 0) && ((__TIME__) <= 16))
-/**
-  * @}
-  */
-  
-/** @defgroup FMC_SDRAM_RowCycle_Delay FMC SDRAM RowCycle Delay
-  * @{
-  */  
-#define IS_FMC_ROWCYCLE_DELAY(__DELAY__) (((__DELAY__) > 0) && ((__DELAY__) <= 16))
-/**
-  * @}
-  */  
-  
-/** @defgroup FMC_SDRAM_Write_Recovery_Time FMC SDRAM Write Recovery Time
-  * @{
-  */  
-#define IS_FMC_WRITE_RECOVERY_TIME(__TIME__) (((__TIME__) > 0) && ((__TIME__) <= 16))
-/**
-  * @}
-  */         
-  
-/** @defgroup FMC_SDRAM_RP_Delay FMC SDRAM RP Delay
-  * @{
-  */  
-#define IS_FMC_RP_DELAY(__DELAY__) (((__DELAY__) > 0) && ((__DELAY__) <= 16))
-/**
-  * @}
-  */ 
-  
-/** @defgroup FMC_SDRAM_RCD_Delay FMC SDRAM RCD Delay
-  * @{
-  */  
-#define IS_FMC_RCD_DELAY(__DELAY__) (((__DELAY__) > 0) && ((__DELAY__) <= 16))
-/**
-  * @}
-  */
-  
-/** @defgroup FMC_SDRAM_AutoRefresh_Number FMC SDRAM AutoRefresh Number
-  * @{
-  */  
-#define IS_FMC_AUTOREFRESH_NUMBER(__NUMBER__) (((__NUMBER__) > 0) && ((__NUMBER__) <= 16))
-/**
-  * @}
-  */
-
-/** @defgroup FMC_SDRAM_ModeRegister_Definition FMC SDRAM ModeRegister Definition
-  * @{
-  */
-#define IS_FMC_MODE_REGISTER(__CONTENT__) ((__CONTENT__) <= 8191)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_SDRAM_Refresh_rate FMC SDRAM Refresh rate
-  * @{
-  */
-#define IS_FMC_REFRESH_RATE(__RATE__) ((__RATE__) <= 8191)
-/**
-  * @}
-  */
-  
-/** @defgroup FMC_NORSRAM_Device_Instance FMC NORSRAM Device Instance
-  * @{
-  */
-#define IS_FMC_NORSRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_DEVICE)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_NORSRAM_EXTENDED_Device_Instance FMC NORSRAM EXTENDED Device Instance
-  * @{
-  */
-#define IS_FMC_NORSRAM_EXTENDED_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_EXTENDED_DEVICE)
-/**
-  * @}
-  */
-  
-/** @defgroup FMC_NAND_Device_Instance FMC NAND Device Instance
-  * @{
-  */
-#define IS_FMC_NAND_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NAND_DEVICE)
-/**
-  * @}
-  */
-
-/** @defgroup FMC_SDRAM_Device_Instance FMC SDRAM Device Instance
-  * @{
-  */
+                                           ((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK1_2))
+#define IS_FMC_LOADTOACTIVE_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
+#define IS_FMC_EXITSELFREFRESH_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
+#define IS_FMC_SELFREFRESH_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 16U))
+#define IS_FMC_ROWCYCLE_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
+#define IS_FMC_WRITE_RECOVERY_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 16U))
+#define IS_FMC_RP_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
+#define IS_FMC_RCD_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
+#define IS_FMC_AUTOREFRESH_NUMBER(__NUMBER__) (((__NUMBER__) > 0U) && ((__NUMBER__) <= 15U))
+#define IS_FMC_MODE_REGISTER(__CONTENT__) ((__CONTENT__) <= 8191U)
+#define IS_FMC_REFRESH_RATE(__RATE__) ((__RATE__) <= 8191U)
 #define IS_FMC_SDRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_SDRAM_DEVICE)
-/**
-  * @}
-  */
-
-#define IS_FMC_SDRAM_BANK(BANK) (((BANK) == FMC_SDRAM_BANK1) || \
-                                 ((BANK) == FMC_SDRAM_BANK2))
-
-#define IS_FMC_COLUMNBITS_NUMBER(COLUMN) (((COLUMN) == FMC_SDRAM_COLUMN_BITS_NUM_8)  || \
-                                          ((COLUMN) == FMC_SDRAM_COLUMN_BITS_NUM_9)  || \
-                                          ((COLUMN) == FMC_SDRAM_COLUMN_BITS_NUM_10) || \
-                                          ((COLUMN) == FMC_SDRAM_COLUMN_BITS_NUM_11))
-
-#define IS_FMC_ROWBITS_NUMBER(ROW) (((ROW) == FMC_SDRAM_ROW_BITS_NUM_11) || \
-                                    ((ROW) == FMC_SDRAM_ROW_BITS_NUM_12) || \
-                                    ((ROW) == FMC_SDRAM_ROW_BITS_NUM_13))
-
-#define IS_FMC_INTERNALBANK_NUMBER(NUMBER) (((NUMBER) == FMC_SDRAM_INTERN_BANKS_NUM_2) || \
-                                            ((NUMBER) == FMC_SDRAM_INTERN_BANKS_NUM_4))
+#define IS_FMC_SDRAM_BANK(__BANK__) (((__BANK__) == FMC_SDRAM_BANK1) || \
+                                     ((__BANK__) == FMC_SDRAM_BANK2))
+#define IS_FMC_COLUMNBITS_NUMBER(__COLUMN__) (((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_8)  || \
+                                              ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_9)  || \
+                                              ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_10) || \
+                                              ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_11))
+#define IS_FMC_ROWBITS_NUMBER(__ROW__) (((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_11) || \
+                                        ((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_12) || \
+                                        ((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_13))
+#define IS_FMC_INTERNALBANK_NUMBER(__NUMBER__) (((__NUMBER__) == FMC_SDRAM_INTERN_BANKS_NUM_2) || \
+                                                ((__NUMBER__) == FMC_SDRAM_INTERN_BANKS_NUM_4))
+#define IS_FMC_CAS_LATENCY(__LATENCY__) (((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_1) || \
+                                         ((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_2) || \
+                                         ((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_3))
 
 
-#define IS_FMC_CAS_LATENCY(LATENCY) (((LATENCY) == FMC_SDRAM_CAS_LATENCY_1) || \
-                                     ((LATENCY) == FMC_SDRAM_CAS_LATENCY_2) || \
-                                     ((LATENCY) == FMC_SDRAM_CAS_LATENCY_3))
-
-#define IS_FMC_PAGESIZE(__SIZE__) (((__SIZE__) == FMC_PAGE_SIZE_NONE) || \
-                                   ((__SIZE__) == FMC_PAGE_SIZE_128) || \
-                                   ((__SIZE__) == FMC_PAGE_SIZE_256) || \
-                                   ((__SIZE__) == FMC_PAGE_SIZE_512) || \
-                                   ((__SIZE__) == FMC_PAGE_SIZE_1024))
-
-#define IS_FMC_WRITE_FIFO(__FIFO__) (((__FIFO__) == FMC_WRITE_FIFO_DISABLE) || \
-                                     ((__FIFO__) == FMC_WRITE_FIFO_ENABLE))
 /**
   * @}
   */
 
 /* Exported typedef ----------------------------------------------------------*/
-/** @defgroup FMC_Exported_typedef FMC Low Layer Exported Types
+
+/** @defgroup FMC_LL_Exported_typedef FMC Low Layer Exported Types
   * @{
   */
+
 #define FMC_NORSRAM_TypeDef            FMC_Bank1_TypeDef
 #define FMC_NORSRAM_EXTENDED_TypeDef   FMC_Bank1E_TypeDef
 #define FMC_NAND_TypeDef               FMC_Bank3_TypeDef
@@ -390,132 +184,132 @@
 #define FMC_NAND_DEVICE                FMC_Bank3
 #define FMC_SDRAM_DEVICE               FMC_Bank5_6
 
-/** 
+/**
   * @brief  FMC NORSRAM Configuration Structure definition
-  */ 
+  */
 typedef struct
 {
   uint32_t NSBank;                       /*!< Specifies the NORSRAM memory device that will be used.
-                                              This parameter can be a value of @ref FMC_NORSRAM_Bank                     */
+                                              This parameter can be a value of @ref FMC_NORSRAM_Bank                  */
 
   uint32_t DataAddressMux;               /*!< Specifies whether the address and data values are
-                                              multiplexed on the data bus or not. 
-                                              This parameter can be a value of @ref FMC_Data_Address_Bus_Multiplexing    */
+                                              multiplexed on the data bus or not.
+                                              This parameter can be a value of @ref FMC_Data_Address_Bus_Multiplexing */
 
   uint32_t MemoryType;                   /*!< Specifies the type of external memory attached to
                                               the corresponding memory device.
-                                              This parameter can be a value of @ref FMC_Memory_Type                      */
+                                              This parameter can be a value of @ref FMC_Memory_Type                   */
 
   uint32_t MemoryDataWidth;              /*!< Specifies the external memory device width.
-                                              This parameter can be a value of @ref FMC_NORSRAM_Data_Width               */
+                                              This parameter can be a value of @ref FMC_NORSRAM_Data_Width            */
 
   uint32_t BurstAccessMode;              /*!< Enables or disables the burst access mode for Flash memory,
                                               valid only with synchronous burst Flash memories.
-                                              This parameter can be a value of @ref FMC_Burst_Access_Mode                */
+                                              This parameter can be a value of @ref FMC_Burst_Access_Mode             */
 
   uint32_t WaitSignalPolarity;           /*!< Specifies the wait signal polarity, valid only when accessing
                                               the Flash memory in burst mode.
-                                              This parameter can be a value of @ref FMC_Wait_Signal_Polarity             */
+                                              This parameter can be a value of @ref FMC_Wait_Signal_Polarity          */
 
   uint32_t WaitSignalActive;             /*!< Specifies if the wait signal is asserted by the memory one
                                               clock cycle before the wait state or during the wait state,
-                                              valid only when accessing memories in burst mode. 
-                                              This parameter can be a value of @ref FMC_Wait_Timing                      */
+                                              valid only when accessing memories in burst mode.
+                                              This parameter can be a value of @ref FMC_Wait_Timing                   */
 
-  uint32_t WriteOperation;               /*!< Enables or disables the write operation in the selected device by the FMC. 
-                                              This parameter can be a value of @ref FMC_Write_Operation                  */
+  uint32_t WriteOperation;               /*!< Enables or disables the write operation in the selected device by the FMC.
+                                              This parameter can be a value of @ref FMC_Write_Operation               */
 
   uint32_t WaitSignal;                   /*!< Enables or disables the wait state insertion via wait
-                                              signal, valid for Flash memory access in burst mode. 
-                                              This parameter can be a value of @ref FMC_Wait_Signal                      */
+                                              signal, valid for Flash memory access in burst mode.
+                                              This parameter can be a value of @ref FMC_Wait_Signal                   */
 
   uint32_t ExtendedMode;                 /*!< Enables or disables the extended mode.
-                                              This parameter can be a value of @ref FMC_Extended_Mode                    */
+                                              This parameter can be a value of @ref FMC_Extended_Mode                 */
 
   uint32_t AsynchronousWait;             /*!< Enables or disables wait signal during asynchronous transfers,
                                               valid only with asynchronous Flash memories.
-                                              This parameter can be a value of @ref FMC_AsynchronousWait                 */
+                                              This parameter can be a value of @ref FMC_AsynchronousWait              */
 
   uint32_t WriteBurst;                   /*!< Enables or disables the write burst operation.
-                                              This parameter can be a value of @ref FMC_Write_Burst                      */
+                                              This parameter can be a value of @ref FMC_Write_Burst                   */
 
   uint32_t ContinuousClock;              /*!< Enables or disables the FMC clock output to external memory devices.
-                                              This parameter is only enabled through the FMC_BCR1 register, and don't care 
-                                              through FMC_BCR2..4 registers.
-                                              This parameter can be a value of @ref FMC_Continous_Clock                  */
+                                              This parameter is only enabled through the FMC_BCR1 register,
+                                              and don't care through FMC_BCR2..4 registers.
+                                              This parameter can be a value of @ref FMC_Continous_Clock               */
 
   uint32_t WriteFifo;                    /*!< Enables or disables the write FIFO used by the FMC controller.
-                                              This parameter is only enabled through the FMC_BCR1 register, and don't care 
-                                              through FMC_BCR2..4 registers.
-                                              This parameter can be a value of @ref FMC_Write_FIFO                      */
+                                              This parameter is only enabled through the FMC_BCR1 register,
+                                              and don't care through FMC_BCR2..4 registers.
+                                              This parameter can be a value of @ref FMC_Write_FIFO                    */
 
   uint32_t PageSize;                     /*!< Specifies the memory page size.
-                                              This parameter can be a value of @ref FMC_Page_Size                        */
+                                              This parameter can be a value of @ref FMC_Page_Size                     */
+} FMC_NORSRAM_InitTypeDef;
 
-}FMC_NORSRAM_InitTypeDef;
-
-/** 
-  * @brief  FMC NORSRAM Timing parameters structure definition  
+/**
+  * @brief  FMC NORSRAM Timing parameters structure definition
   */
 typedef struct
 {
   uint32_t AddressSetupTime;             /*!< Defines the number of HCLK cycles to configure
-                                              the duration of the address setup time. 
+                                              the duration of the address setup time.
                                               This parameter can be a value between Min_Data = 0 and Max_Data = 15.
-                                              @note This parameter is not used with synchronous NOR Flash memories.      */
+                                              @note This parameter is not used with synchronous NOR Flash memories.   */
 
   uint32_t AddressHoldTime;              /*!< Defines the number of HCLK cycles to configure
                                               the duration of the address hold time.
-                                              This parameter can be a value between Min_Data = 1 and Max_Data = 15. 
-                                              @note This parameter is not used with synchronous NOR Flash memories.      */
+                                              This parameter can be a value between Min_Data = 1 and Max_Data = 15.
+                                              @note This parameter is not used with synchronous NOR Flash memories.   */
 
   uint32_t DataSetupTime;                /*!< Defines the number of HCLK cycles to configure
                                               the duration of the data setup time.
                                               This parameter can be a value between Min_Data = 1 and Max_Data = 255.
-                                              @note This parameter is used for SRAMs, ROMs and asynchronous multiplexed 
-                                              NOR Flash memories.                                                        */
+                                              @note This parameter is used for SRAMs, ROMs and asynchronous multiplexed
+                                              NOR Flash memories.                                                     */
 
   uint32_t BusTurnAroundDuration;        /*!< Defines the number of HCLK cycles to configure
                                               the duration of the bus turnaround.
                                               This parameter can be a value between Min_Data = 0 and Max_Data = 15.
-                                              @note This parameter is only used for multiplexed NOR Flash memories.      */
+                                              @note This parameter is only used for multiplexed NOR Flash memories.   */
 
-  uint32_t CLKDivision;                  /*!< Defines the period of CLK clock output signal, expressed in number of 
-                                              HCLK cycles. This parameter can be a value between Min_Data = 2 and Max_Data = 16.
-                                              @note This parameter is not used for asynchronous NOR Flash, SRAM or ROM 
-                                              accesses.                                                                  */
+  uint32_t CLKDivision;                  /*!< Defines the period of CLK clock output signal, expressed in number of
+                                              HCLK cycles. This parameter can be a value between Min_Data = 2 and
+                                              Max_Data = 16.
+                                              @note This parameter is not used for asynchronous NOR Flash, SRAM or ROM
+                                              accesses.                                                               */
 
   uint32_t DataLatency;                  /*!< Defines the number of memory clock cycles to issue
                                               to the memory before getting the first data.
                                               The parameter value depends on the memory type as shown below:
                                               - It must be set to 0 in case of a CRAM
                                               - It is don't care in asynchronous NOR, SRAM or ROM accesses
-                                              - It may assume a value between Min_Data = 2 and Max_Data = 17 in NOR Flash memories
-                                                with synchronous burst mode enable                                       */
+                                              - It may assume a value between Min_Data = 2 and Max_Data = 17
+                                                in NOR Flash memories with synchronous burst mode enable              */
 
-  uint32_t AccessMode;                   /*!< Specifies the asynchronous access mode. 
-                                              This parameter can be a value of @ref FMC_Access_Mode                      */
-}FMC_NORSRAM_TimingTypeDef;
+  uint32_t AccessMode;                   /*!< Specifies the asynchronous access mode.
+                                              This parameter can be a value of @ref FMC_Access_Mode                   */
+} FMC_NORSRAM_TimingTypeDef;
 
-/** 
-  * @brief  FMC NAND Configuration Structure definition  
-  */ 
+/**
+  * @brief  FMC NAND Configuration Structure definition
+  */
 typedef struct
 {
   uint32_t NandBank;               /*!< Specifies the NAND memory device that will be used.
-                                        This parameter can be a value of @ref FMC_NAND_Bank                    */
+                                        This parameter can be a value of @ref FMC_NAND_Bank                  */
 
   uint32_t Waitfeature;            /*!< Enables or disables the Wait feature for the NAND Memory device.
-                                        This parameter can be any value of @ref FMC_Wait_feature               */
+                                        This parameter can be any value of @ref FMC_Wait_feature             */
 
   uint32_t MemoryDataWidth;        /*!< Specifies the external memory device width.
-                                        This parameter can be any value of @ref FMC_NAND_Data_Width            */
+                                        This parameter can be any value of @ref FMC_NAND_Data_Width          */
 
   uint32_t EccComputation;         /*!< Enables or disables the ECC computation.
-                                        This parameter can be any value of @ref FMC_ECC                        */
+                                        This parameter can be any value of @ref FMC_ECC                      */
 
   uint32_t ECCPageSize;            /*!< Defines the page size for the extended ECC.
-                                        This parameter can be any value of @ref FMC_ECC_Page_Size              */
+                                        This parameter can be any value of @ref FMC_ECC_Page_Size            */
 
   uint32_t TCLRSetupTime;          /*!< Defines the number of HCLK cycles to configure the
                                         delay between CLE low and RE low.
@@ -524,9 +318,9 @@
   uint32_t TARSetupTime;           /*!< Defines the number of HCLK cycles to configure the
                                         delay between ALE low and RE low.
                                         This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
-}FMC_NAND_InitTypeDef;
+} FMC_NAND_InitTypeDef;
 
-/** 
+/**
   * @brief  FMC NAND Timing parameters structure definition
   */
 typedef struct
@@ -540,7 +334,7 @@
   uint32_t WaitSetupTime;        /*!< Defines the minimum number of HCLK cycles to assert the
                                       command for NAND-Flash read or write access to
                                       common/Attribute or I/O memory space (depending on the
-                                      memory space timing to be configured). 
+                                      memory space timing to be configured).
                                       This parameter can be a number between Min_Data = 0 and Max_Data = 254   */
 
   uint32_t HoldSetupTime;        /*!< Defines the number of HCLK clock cycles to hold address
@@ -555,11 +349,12 @@
                                       write access to common/Attribute or I/O memory space (depending
                                       on the memory space timing to be configured).
                                       This parameter can be a number between Min_Data = 0 and Max_Data = 254   */
-}FMC_NAND_PCC_TimingTypeDef;
+} FMC_NAND_PCC_TimingTypeDef;
 
-/** 
-  * @brief  FMC SDRAM Configuration Structure definition  
-  */  
+
+/**
+  * @brief  FMC SDRAM Configuration Structure definition
+  */
 typedef struct
 {
   uint32_t SDBank;                      /*!< Specifies the SDRAM memory device that will be used.
@@ -583,53 +378,53 @@
   uint32_t WriteProtection;             /*!< Enables the SDRAM device to be accessed in write mode.
                                              This parameter can be a value of @ref FMC_SDRAM_Write_Protection.   */
 
-  uint32_t SDClockPeriod;               /*!< Define the SDRAM Clock Period for both SDRAM devices and they allow 
+  uint32_t SDClockPeriod;               /*!< Define the SDRAM Clock Period for both SDRAM devices and they allow
                                              to disable the clock before changing frequency.
                                              This parameter can be a value of @ref FMC_SDRAM_Clock_Period.       */
 
-  uint32_t ReadBurst;                   /*!< This bit enable the SDRAM controller to anticipate the next read 
+  uint32_t ReadBurst;                   /*!< This bit enable the SDRAM controller to anticipate the next read
                                              commands during the CAS latency and stores data in the Read FIFO.
                                              This parameter can be a value of @ref FMC_SDRAM_Read_Burst.         */
 
   uint32_t ReadPipeDelay;               /*!< Define the delay in system clock cycles on read data path.
                                              This parameter can be a value of @ref FMC_SDRAM_Read_Pipe_Delay.    */
-}FMC_SDRAM_InitTypeDef;
+} FMC_SDRAM_InitTypeDef;
 
-/** 
+/**
   * @brief FMC SDRAM Timing parameters structure definition
   */
 typedef struct
 {
-  uint32_t LoadToActiveDelay;            /*!< Defines the delay between a Load Mode Register command and 
+  uint32_t LoadToActiveDelay;            /*!< Defines the delay between a Load Mode Register command and
                                               an active or Refresh command in number of memory clock cycles.
                                               This parameter can be a value between Min_Data = 1 and Max_Data = 16  */
 
-  uint32_t ExitSelfRefreshDelay;         /*!< Defines the delay from releasing the self refresh command to 
+  uint32_t ExitSelfRefreshDelay;         /*!< Defines the delay from releasing the self refresh command to
                                               issuing the Activate command in number of memory clock cycles.
                                               This parameter can be a value between Min_Data = 1 and Max_Data = 16  */
 
-  uint32_t SelfRefreshTime;              /*!< Defines the minimum Self Refresh period in number of memory clock 
+  uint32_t SelfRefreshTime;              /*!< Defines the minimum Self Refresh period in number of memory clock
                                               cycles.
                                               This parameter can be a value between Min_Data = 1 and Max_Data = 16  */
 
   uint32_t RowCycleDelay;                /*!< Defines the delay between the Refresh command and the Activate command
-                                              and the delay between two consecutive Refresh commands in number of 
+                                              and the delay between two consecutive Refresh commands in number of
                                               memory clock cycles.
                                               This parameter can be a value between Min_Data = 1 and Max_Data = 16  */
 
   uint32_t WriteRecoveryTime;            /*!< Defines the Write recovery Time in number of memory clock cycles.
                                               This parameter can be a value between Min_Data = 1 and Max_Data = 16  */
 
-  uint32_t RPDelay;                      /*!< Defines the delay between a Precharge Command and an other command 
+  uint32_t RPDelay;                      /*!< Defines the delay between a Precharge Command and an other command
                                               in number of memory clock cycles.
                                               This parameter can be a value between Min_Data = 1 and Max_Data = 16  */
 
-  uint32_t RCDDelay;                     /*!< Defines the delay between the Activate Command and a Read/Write 
+  uint32_t RCDDelay;                     /*!< Defines the delay between the Activate Command and a Read/Write
                                               command in number of memory clock cycles.
-                                              This parameter can be a value between Min_Data = 1 and Max_Data = 16  */ 
-}FMC_SDRAM_TimingTypeDef;
+                                              This parameter can be a value between Min_Data = 1 and Max_Data = 16  */
+} FMC_SDRAM_TimingTypeDef;
 
-/** 
+/**
   * @brief SDRAM command parameters structure definition
   */
 typedef struct
@@ -642,9 +437,10 @@
 
   uint32_t AutoRefreshNumber;            /*!< Defines the number of consecutive auto refresh command issued
                                               in auto refresh mode.
-                                              This parameter can be a value between Min_Data = 1 and Max_Data = 16   */
+                                              This parameter can be a value between Min_Data = 1 and Max_Data = 15   */
+
   uint32_t ModeRegisterDefinition;       /*!< Defines the SDRAM Mode register content                                */
-}FMC_SDRAM_CommandTypeDef;
+} FMC_SDRAM_CommandTypeDef;
 /**
   * @}
   */
@@ -654,17 +450,17 @@
   * @{
   */
 
-/** @defgroup FMC_LL_NOR_SRAM_Controller FMC NOR/SRAM Controller 
+/** @defgroup FMC_LL_NOR_SRAM_Controller FMC NOR/SRAM Controller
   * @{
   */
 
 /** @defgroup FMC_NORSRAM_Bank FMC NOR/SRAM Bank
   * @{
   */
-#define FMC_NORSRAM_BANK1                       ((uint32_t)0x00000000U)
-#define FMC_NORSRAM_BANK2                       ((uint32_t)0x00000002U)
-#define FMC_NORSRAM_BANK3                       ((uint32_t)0x00000004U)
-#define FMC_NORSRAM_BANK4                       ((uint32_t)0x00000006U)
+#define FMC_NORSRAM_BANK1                       (0x00000000U)
+#define FMC_NORSRAM_BANK2                       (0x00000002U)
+#define FMC_NORSRAM_BANK3                       (0x00000004U)
+#define FMC_NORSRAM_BANK4                       (0x00000006U)
 /**
   * @}
   */
@@ -672,8 +468,8 @@
 /** @defgroup FMC_Data_Address_Bus_Multiplexing FMC Data Address Bus Multiplexing
   * @{
   */
-#define FMC_DATA_ADDRESS_MUX_DISABLE            ((uint32_t)0x00000000U)
-#define FMC_DATA_ADDRESS_MUX_ENABLE             ((uint32_t)0x00000002U)
+#define FMC_DATA_ADDRESS_MUX_DISABLE            (0x00000000U)
+#define FMC_DATA_ADDRESS_MUX_ENABLE             (0x00000002U)
 /**
   * @}
   */
@@ -681,9 +477,9 @@
 /** @defgroup FMC_Memory_Type FMC Memory Type
   * @{
   */
-#define FMC_MEMORY_TYPE_SRAM                    ((uint32_t)0x00000000U)
-#define FMC_MEMORY_TYPE_PSRAM                   ((uint32_t)0x00000004U)
-#define FMC_MEMORY_TYPE_NOR                     ((uint32_t)0x00000008U)
+#define FMC_MEMORY_TYPE_SRAM                    (0x00000000U)
+#define FMC_MEMORY_TYPE_PSRAM                   (0x00000004U)
+#define FMC_MEMORY_TYPE_NOR                     (0x00000008U)
 /**
   * @}
   */
@@ -691,9 +487,9 @@
 /** @defgroup FMC_NORSRAM_Data_Width FMC NORSRAM Data Width
   * @{
   */
-#define FMC_NORSRAM_MEM_BUS_WIDTH_8             ((uint32_t)0x00000000U)
-#define FMC_NORSRAM_MEM_BUS_WIDTH_16            ((uint32_t)0x00000010U)
-#define FMC_NORSRAM_MEM_BUS_WIDTH_32            ((uint32_t)0x00000020U)
+#define FMC_NORSRAM_MEM_BUS_WIDTH_8             (0x00000000U)
+#define FMC_NORSRAM_MEM_BUS_WIDTH_16            (0x00000010U)
+#define FMC_NORSRAM_MEM_BUS_WIDTH_32            (0x00000020U)
 /**
   * @}
   */
@@ -701,8 +497,8 @@
 /** @defgroup FMC_NORSRAM_Flash_Access FMC NOR/SRAM Flash Access
   * @{
   */
-#define FMC_NORSRAM_FLASH_ACCESS_ENABLE         ((uint32_t)0x00000040U)
-#define FMC_NORSRAM_FLASH_ACCESS_DISABLE        ((uint32_t)0x00000000U)
+#define FMC_NORSRAM_FLASH_ACCESS_ENABLE         (0x00000040U)
+#define FMC_NORSRAM_FLASH_ACCESS_DISABLE        (0x00000000U)
 /**
   * @}
   */
@@ -710,8 +506,8 @@
 /** @defgroup FMC_Burst_Access_Mode FMC Burst Access Mode
   * @{
   */
-#define FMC_BURST_ACCESS_MODE_DISABLE           ((uint32_t)0x00000000U) 
-#define FMC_BURST_ACCESS_MODE_ENABLE            ((uint32_t)0x00000100U)
+#define FMC_BURST_ACCESS_MODE_DISABLE           (0x00000000U)
+#define FMC_BURST_ACCESS_MODE_ENABLE            (0x00000100U)
 /**
   * @}
   */
@@ -719,8 +515,8 @@
 /** @defgroup FMC_Wait_Signal_Polarity FMC Wait Signal Polarity
   * @{
   */
-#define FMC_WAIT_SIGNAL_POLARITY_LOW            ((uint32_t)0x00000000U)
-#define FMC_WAIT_SIGNAL_POLARITY_HIGH           ((uint32_t)0x00000200U)
+#define FMC_WAIT_SIGNAL_POLARITY_LOW            (0x00000000U)
+#define FMC_WAIT_SIGNAL_POLARITY_HIGH           (0x00000200U)
 /**
   * @}
   */
@@ -728,8 +524,8 @@
 /** @defgroup FMC_Wait_Timing FMC Wait Timing
   * @{
   */
-#define FMC_WAIT_TIMING_BEFORE_WS               ((uint32_t)0x00000000U)
-#define FMC_WAIT_TIMING_DURING_WS               ((uint32_t)0x00000800U) 
+#define FMC_WAIT_TIMING_BEFORE_WS               (0x00000000U)
+#define FMC_WAIT_TIMING_DURING_WS               (0x00000800U)
 /**
   * @}
   */
@@ -737,8 +533,8 @@
 /** @defgroup FMC_Write_Operation FMC Write Operation
   * @{
   */
-#define FMC_WRITE_OPERATION_DISABLE             ((uint32_t)0x00000000U)
-#define FMC_WRITE_OPERATION_ENABLE              ((uint32_t)0x00001000U)
+#define FMC_WRITE_OPERATION_DISABLE             (0x00000000U)
+#define FMC_WRITE_OPERATION_ENABLE              (0x00001000U)
 /**
   * @}
   */
@@ -746,8 +542,8 @@
 /** @defgroup FMC_Wait_Signal FMC Wait Signal
   * @{
   */
-#define FMC_WAIT_SIGNAL_DISABLE                 ((uint32_t)0x00000000U)
-#define FMC_WAIT_SIGNAL_ENABLE                  ((uint32_t)0x00002000U)
+#define FMC_WAIT_SIGNAL_DISABLE                 (0x00000000U)
+#define FMC_WAIT_SIGNAL_ENABLE                  (0x00002000U)
 /**
   * @}
   */
@@ -755,8 +551,8 @@
 /** @defgroup FMC_Extended_Mode FMC Extended Mode
   * @{
   */
-#define FMC_EXTENDED_MODE_DISABLE               ((uint32_t)0x00000000U)
-#define FMC_EXTENDED_MODE_ENABLE                ((uint32_t)0x00004000U)
+#define FMC_EXTENDED_MODE_DISABLE               (0x00000000U)
+#define FMC_EXTENDED_MODE_ENABLE                (0x00004000U)
 /**
   * @}
   */
@@ -764,73 +560,75 @@
 /** @defgroup FMC_AsynchronousWait FMC Asynchronous Wait
   * @{
   */
-#define FMC_ASYNCHRONOUS_WAIT_DISABLE           ((uint32_t)0x00000000U)
-#define FMC_ASYNCHRONOUS_WAIT_ENABLE            ((uint32_t)0x00008000U)
+#define FMC_ASYNCHRONOUS_WAIT_DISABLE           (0x00000000U)
+#define FMC_ASYNCHRONOUS_WAIT_ENABLE            (0x00008000U)
 /**
   * @}
-  */  
+  */
 
 /** @defgroup FMC_Page_Size FMC Page Size
   * @{
   */
-#define FMC_PAGE_SIZE_NONE           ((uint32_t)0x00000000U)
-#define FMC_PAGE_SIZE_128            ((uint32_t)FMC_BCR1_CPSIZE_0)
-#define FMC_PAGE_SIZE_256            ((uint32_t)FMC_BCR1_CPSIZE_1)
-#define FMC_PAGE_SIZE_512            ((uint32_t)(FMC_BCR1_CPSIZE_0 | FMC_BCR1_CPSIZE_1))
-#define FMC_PAGE_SIZE_1024           ((uint32_t)FMC_BCR1_CPSIZE_2)
+#define FMC_PAGE_SIZE_NONE                      (0x00000000U)
+#define FMC_PAGE_SIZE_128                       FMC_BCR1_CPSIZE_0
+#define FMC_PAGE_SIZE_256                       FMC_BCR1_CPSIZE_1
+#define FMC_PAGE_SIZE_512                       (FMC_BCR1_CPSIZE_0\
+                                                 | FMC_BCR1_CPSIZE_1)
+#define FMC_PAGE_SIZE_1024                      FMC_BCR1_CPSIZE_2
 /**
   * @}
-  */  
+  */
 
 /** @defgroup FMC_Write_Burst FMC Write Burst
   * @{
   */
-#define FMC_WRITE_BURST_DISABLE                 ((uint32_t)0x00000000U)
-#define FMC_WRITE_BURST_ENABLE                  ((uint32_t)0x00080000U) 
+#define FMC_WRITE_BURST_DISABLE                 (0x00000000U)
+#define FMC_WRITE_BURST_ENABLE                  (0x00080000U)
 /**
   * @}
   */
-  
+
 /** @defgroup FMC_Continous_Clock FMC Continuous Clock
   * @{
   */
-#define FMC_CONTINUOUS_CLOCK_SYNC_ONLY          ((uint32_t)0x00000000U)
-#define FMC_CONTINUOUS_CLOCK_SYNC_ASYNC         ((uint32_t)0x00100000U)
+#define FMC_CONTINUOUS_CLOCK_SYNC_ONLY          (0x00000000U)
+#define FMC_CONTINUOUS_CLOCK_SYNC_ASYNC         (0x00100000U)
 /**
   * @}
-  */ 
+  */
 
-/** @defgroup FMC_Write_FIFO FMC Write FIFO 
+/** @defgroup FMC_Write_FIFO FMC Write FIFO
   * @{
   */
-#define FMC_WRITE_FIFO_DISABLE           ((uint32_t)FMC_BCR1_WFDIS)
-#define FMC_WRITE_FIFO_ENABLE            ((uint32_t)0x00000000U)
+#define FMC_WRITE_FIFO_DISABLE                  FMC_BCR1_WFDIS
+#define FMC_WRITE_FIFO_ENABLE                   (0x00000000U)
 /**
   * @}
   */
-	
-/** @defgroup FMC_Access_Mode FMC Access Mode 
-  * @{
-  */
-#define FMC_ACCESS_MODE_A                        ((uint32_t)0x00000000U)
-#define FMC_ACCESS_MODE_B                        ((uint32_t)0x10000000U) 
-#define FMC_ACCESS_MODE_C                        ((uint32_t)0x20000000U)
-#define FMC_ACCESS_MODE_D                        ((uint32_t)0x30000000)
-/**
-  * @}
-  */
-    
-/**
-  * @}
-  */ 
 
-/** @defgroup FMC_LL_NAND_Controller FMC NAND Controller 
+/** @defgroup FMC_Access_Mode FMC Access Mode
   * @{
   */
-/** @defgroup FMC_NAND_Bank FMC NAND Bank 
+#define FMC_ACCESS_MODE_A                       (0x00000000U)
+#define FMC_ACCESS_MODE_B                       (0x10000000U)
+#define FMC_ACCESS_MODE_C                       (0x20000000U)
+#define FMC_ACCESS_MODE_D                       (0x30000000U)
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+
+/** @defgroup FMC_LL_NAND_Controller FMC NAND Controller
   * @{
   */
-#define FMC_NAND_BANK3                          ((uint32_t)0x00000100U) 
+/** @defgroup FMC_NAND_Bank FMC NAND Bank
+  * @{
+  */
+#define FMC_NAND_BANK3                          (0x00000100U)
 /**
   * @}
   */
@@ -838,74 +636,74 @@
 /** @defgroup FMC_Wait_feature FMC Wait feature
   * @{
   */
-#define FMC_NAND_WAIT_FEATURE_DISABLE           ((uint32_t)0x00000000U)
-#define FMC_NAND_WAIT_FEATURE_ENABLE            ((uint32_t)0x00000002U)
+#define FMC_NAND_WAIT_FEATURE_DISABLE           (0x00000000U)
+#define FMC_NAND_WAIT_FEATURE_ENABLE            (0x00000002U)
 /**
   * @}
   */
 
-/** @defgroup FMC_PCR_Memory_Type FMC PCR Memory Type 
+/** @defgroup FMC_PCR_Memory_Type FMC PCR Memory Type
   * @{
   */
-#define FMC_PCR_MEMORY_TYPE_NAND          ((uint32_t)0x00000008U)
+#define FMC_PCR_MEMORY_TYPE_NAND                (0x00000008U)
 /**
   * @}
   */
 
-/** @defgroup FMC_NAND_Data_Width FMC NAND Data Width 
+/** @defgroup FMC_NAND_Data_Width FMC NAND Data Width
   * @{
   */
-#define FMC_NAND_MEM_BUS_WIDTH_8                ((uint32_t)0x00000000U)
-#define FMC_NAND_MEM_BUS_WIDTH_16               ((uint32_t)0x00000010U)
+#define FMC_NAND_MEM_BUS_WIDTH_8                (0x00000000U)
+#define FMC_NAND_MEM_BUS_WIDTH_16               (0x00000010U)
 /**
   * @}
   */
 
-/** @defgroup FMC_ECC FMC ECC 
+/** @defgroup FMC_ECC FMC ECC
   * @{
   */
-#define FMC_NAND_ECC_DISABLE                    ((uint32_t)0x00000000U)
-#define FMC_NAND_ECC_ENABLE                     ((uint32_t)0x00000040U)
+#define FMC_NAND_ECC_DISABLE                    (0x00000000U)
+#define FMC_NAND_ECC_ENABLE                     (0x00000040U)
 /**
   * @}
   */
 
-/** @defgroup FMC_ECC_Page_Size FMC ECC Page Size 
+/** @defgroup FMC_ECC_Page_Size FMC ECC Page Size
   * @{
   */
-#define FMC_NAND_ECC_PAGE_SIZE_256BYTE          ((uint32_t)0x00000000U)
-#define FMC_NAND_ECC_PAGE_SIZE_512BYTE          ((uint32_t)0x00020000U)
-#define FMC_NAND_ECC_PAGE_SIZE_1024BYTE         ((uint32_t)0x00040000U)
-#define FMC_NAND_ECC_PAGE_SIZE_2048BYTE         ((uint32_t)0x00060000U)
-#define FMC_NAND_ECC_PAGE_SIZE_4096BYTE         ((uint32_t)0x00080000U)
-#define FMC_NAND_ECC_PAGE_SIZE_8192BYTE         ((uint32_t)0x000A0000U)
+#define FMC_NAND_ECC_PAGE_SIZE_256BYTE          (0x00000000U)
+#define FMC_NAND_ECC_PAGE_SIZE_512BYTE          (0x00020000U)
+#define FMC_NAND_ECC_PAGE_SIZE_1024BYTE         (0x00040000U)
+#define FMC_NAND_ECC_PAGE_SIZE_2048BYTE         (0x00060000U)
+#define FMC_NAND_ECC_PAGE_SIZE_4096BYTE         (0x00080000U)
+#define FMC_NAND_ECC_PAGE_SIZE_8192BYTE         (0x000A0000U)
 /**
   * @}
   */
-  
+
 /**
   * @}
-  */ 
+  */
 
-/** @defgroup FMC_LL_SDRAM_Controller FMC SDRAM Controller 
+/** @defgroup FMC_LL_SDRAM_Controller FMC SDRAM Controller
   * @{
   */
 /** @defgroup FMC_SDRAM_Bank FMC SDRAM Bank
   * @{
   */
-#define FMC_SDRAM_BANK1                       ((uint32_t)0x00000000U)
-#define FMC_SDRAM_BANK2                       ((uint32_t)0x00000001U)
+#define FMC_SDRAM_BANK1                         (0x00000000U)
+#define FMC_SDRAM_BANK2                         (0x00000001U)
 /**
   * @}
   */
 
-/** @defgroup FMC_SDRAM_Column_Bits_number FMC SDRAM Column Bits number 
+/** @defgroup FMC_SDRAM_Column_Bits_number FMC SDRAM Column Bits number
   * @{
   */
-#define FMC_SDRAM_COLUMN_BITS_NUM_8           ((uint32_t)0x00000000U)
-#define FMC_SDRAM_COLUMN_BITS_NUM_9           ((uint32_t)0x00000001U)
-#define FMC_SDRAM_COLUMN_BITS_NUM_10          ((uint32_t)0x00000002U)
-#define FMC_SDRAM_COLUMN_BITS_NUM_11          ((uint32_t)0x00000003U)
+#define FMC_SDRAM_COLUMN_BITS_NUM_8             (0x00000000U)
+#define FMC_SDRAM_COLUMN_BITS_NUM_9             (0x00000001U)
+#define FMC_SDRAM_COLUMN_BITS_NUM_10            (0x00000002U)
+#define FMC_SDRAM_COLUMN_BITS_NUM_11            (0x00000003U)
 /**
   * @}
   */
@@ -913,9 +711,9 @@
 /** @defgroup FMC_SDRAM_Row_Bits_number FMC SDRAM Row Bits number
   * @{
   */
-#define FMC_SDRAM_ROW_BITS_NUM_11             ((uint32_t)0x00000000U)
-#define FMC_SDRAM_ROW_BITS_NUM_12             ((uint32_t)0x00000004U)
-#define FMC_SDRAM_ROW_BITS_NUM_13             ((uint32_t)0x00000008U)
+#define FMC_SDRAM_ROW_BITS_NUM_11               (0x00000000U)
+#define FMC_SDRAM_ROW_BITS_NUM_12               (0x00000004U)
+#define FMC_SDRAM_ROW_BITS_NUM_13               (0x00000008U)
 /**
   * @}
   */
@@ -923,9 +721,9 @@
 /** @defgroup FMC_SDRAM_Memory_Bus_Width FMC SDRAM Memory Bus Width
   * @{
   */
-#define FMC_SDRAM_MEM_BUS_WIDTH_8             ((uint32_t)0x00000000U)
-#define FMC_SDRAM_MEM_BUS_WIDTH_16            ((uint32_t)0x00000010U)
-#define FMC_SDRAM_MEM_BUS_WIDTH_32            ((uint32_t)0x00000020U)
+#define FMC_SDRAM_MEM_BUS_WIDTH_8               (0x00000000U)
+#define FMC_SDRAM_MEM_BUS_WIDTH_16              (0x00000010U)
+#define FMC_SDRAM_MEM_BUS_WIDTH_32              (0x00000020U)
 /**
   * @}
   */
@@ -933,8 +731,8 @@
 /** @defgroup FMC_SDRAM_Internal_Banks_Number FMC SDRAM Internal Banks Number
   * @{
   */
-#define FMC_SDRAM_INTERN_BANKS_NUM_2          ((uint32_t)0x00000000U)
-#define FMC_SDRAM_INTERN_BANKS_NUM_4          ((uint32_t)0x00000040U)
+#define FMC_SDRAM_INTERN_BANKS_NUM_2            (0x00000000U)
+#define FMC_SDRAM_INTERN_BANKS_NUM_4            (0x00000040U)
 /**
   * @}
   */
@@ -942,9 +740,9 @@
 /** @defgroup FMC_SDRAM_CAS_Latency FMC SDRAM CAS Latency
   * @{
   */
-#define FMC_SDRAM_CAS_LATENCY_1               ((uint32_t)0x00000080U)
-#define FMC_SDRAM_CAS_LATENCY_2               ((uint32_t)0x00000100U)
-#define FMC_SDRAM_CAS_LATENCY_3               ((uint32_t)0x00000180)
+#define FMC_SDRAM_CAS_LATENCY_1                 (0x00000080U)
+#define FMC_SDRAM_CAS_LATENCY_2                 (0x00000100U)
+#define FMC_SDRAM_CAS_LATENCY_3                 (0x00000180U)
 /**
   * @}
   */
@@ -952,8 +750,8 @@
 /** @defgroup FMC_SDRAM_Write_Protection FMC SDRAM Write Protection
   * @{
   */
-#define FMC_SDRAM_WRITE_PROTECTION_DISABLE    ((uint32_t)0x00000000U)
-#define FMC_SDRAM_WRITE_PROTECTION_ENABLE     ((uint32_t)0x00000200U)
+#define FMC_SDRAM_WRITE_PROTECTION_DISABLE      (0x00000000U)
+#define FMC_SDRAM_WRITE_PROTECTION_ENABLE       (0x00000200U)
 /**
   * @}
   */
@@ -961,9 +759,9 @@
 /** @defgroup FMC_SDRAM_Clock_Period FMC SDRAM Clock Period
   * @{
   */
-#define FMC_SDRAM_CLOCK_DISABLE               ((uint32_t)0x00000000U)
-#define FMC_SDRAM_CLOCK_PERIOD_2              ((uint32_t)0x00000800U)
-#define FMC_SDRAM_CLOCK_PERIOD_3              ((uint32_t)0x00000C00)
+#define FMC_SDRAM_CLOCK_DISABLE                 (0x00000000U)
+#define FMC_SDRAM_CLOCK_PERIOD_2                (0x00000800U)
+#define FMC_SDRAM_CLOCK_PERIOD_3                (0x00000C00U)
 /**
   * @}
   */
@@ -971,18 +769,18 @@
 /** @defgroup FMC_SDRAM_Read_Burst FMC SDRAM Read Burst
   * @{
   */
-#define FMC_SDRAM_RBURST_DISABLE              ((uint32_t)0x00000000U)
-#define FMC_SDRAM_RBURST_ENABLE               ((uint32_t)0x00001000U)
+#define FMC_SDRAM_RBURST_DISABLE                (0x00000000U)
+#define FMC_SDRAM_RBURST_ENABLE                 (0x00001000U)
 /**
   * @}
   */
-  
+
 /** @defgroup FMC_SDRAM_Read_Pipe_Delay FMC SDRAM Read Pipe Delay
   * @{
   */
-#define FMC_SDRAM_RPIPE_DELAY_0               ((uint32_t)0x00000000U)
-#define FMC_SDRAM_RPIPE_DELAY_1               ((uint32_t)0x00002000U)
-#define FMC_SDRAM_RPIPE_DELAY_2               ((uint32_t)0x00004000U)
+#define FMC_SDRAM_RPIPE_DELAY_0                 (0x00000000U)
+#define FMC_SDRAM_RPIPE_DELAY_1                 (0x00002000U)
+#define FMC_SDRAM_RPIPE_DELAY_2                 (0x00004000U)
 /**
   * @}
   */
@@ -990,13 +788,13 @@
 /** @defgroup FMC_SDRAM_Command_Mode FMC SDRAM Command Mode
   * @{
   */
-#define FMC_SDRAM_CMD_NORMAL_MODE             ((uint32_t)0x00000000U)
-#define FMC_SDRAM_CMD_CLK_ENABLE              ((uint32_t)0x00000001U)
-#define FMC_SDRAM_CMD_PALL                    ((uint32_t)0x00000002U)
-#define FMC_SDRAM_CMD_AUTOREFRESH_MODE        ((uint32_t)0x00000003U)
-#define FMC_SDRAM_CMD_LOAD_MODE               ((uint32_t)0x00000004U)
-#define FMC_SDRAM_CMD_SELFREFRESH_MODE        ((uint32_t)0x00000005U)
-#define FMC_SDRAM_CMD_POWERDOWN_MODE          ((uint32_t)0x00000006U)
+#define FMC_SDRAM_CMD_NORMAL_MODE               (0x00000000U)
+#define FMC_SDRAM_CMD_CLK_ENABLE                (0x00000001U)
+#define FMC_SDRAM_CMD_PALL                      (0x00000002U)
+#define FMC_SDRAM_CMD_AUTOREFRESH_MODE          (0x00000003U)
+#define FMC_SDRAM_CMD_LOAD_MODE                 (0x00000004U)
+#define FMC_SDRAM_CMD_SELFREFRESH_MODE          (0x00000005U)
+#define FMC_SDRAM_CMD_POWERDOWN_MODE            (0x00000006U)
 /**
   * @}
   */
@@ -1004,51 +802,53 @@
 /** @defgroup FMC_SDRAM_Command_Target FMC SDRAM Command Target
   * @{
   */
-#define FMC_SDRAM_CMD_TARGET_BANK2            FMC_SDCMR_CTB2
-#define FMC_SDRAM_CMD_TARGET_BANK1            FMC_SDCMR_CTB1
-#define FMC_SDRAM_CMD_TARGET_BANK1_2          ((uint32_t)0x00000018U)
+#define FMC_SDRAM_CMD_TARGET_BANK2              FMC_SDCMR_CTB2
+#define FMC_SDRAM_CMD_TARGET_BANK1              FMC_SDCMR_CTB1
+#define FMC_SDRAM_CMD_TARGET_BANK1_2            (0x00000018U)
 /**
   * @}
   */
 
-/** @defgroup FMC_SDRAM_Mode_Status FMC SDRAM Mode Status 
+/** @defgroup FMC_SDRAM_Mode_Status FMC SDRAM Mode Status
   * @{
   */
-#define FMC_SDRAM_NORMAL_MODE                     ((uint32_t)0x00000000U)
-#define FMC_SDRAM_SELF_REFRESH_MODE               FMC_SDSR_MODES1_0
-#define FMC_SDRAM_POWER_DOWN_MODE                 FMC_SDSR_MODES1_1
+#define FMC_SDRAM_NORMAL_MODE                   (0x00000000U)
+#define FMC_SDRAM_SELF_REFRESH_MODE             FMC_SDSR_MODES1_0
+#define FMC_SDRAM_POWER_DOWN_MODE               FMC_SDSR_MODES1_1
 /**
   * @}
   */
 
 /**
   * @}
-  */ 
+  */
 
-/** @defgroup FMC_LL_Interrupt_definition FMC Low Layer Interrupt definition  
+
+/** @defgroup FMC_LL_Interrupt_definition FMC Low Layer Interrupt definition
   * @{
-  */  
-#define FMC_IT_RISING_EDGE                ((uint32_t)0x00000008U)
-#define FMC_IT_LEVEL                      ((uint32_t)0x00000010U)
-#define FMC_IT_FALLING_EDGE               ((uint32_t)0x00000020U)
-#define FMC_IT_REFRESH_ERROR              ((uint32_t)0x00004000U)
+  */
+#define FMC_IT_RISING_EDGE                      (0x00000008U)
+#define FMC_IT_LEVEL                            (0x00000010U)
+#define FMC_IT_FALLING_EDGE                     (0x00000020U)
+#define FMC_IT_REFRESH_ERROR                    (0x00004000U)
 /**
   * @}
   */
-    
-/** @defgroup FMC_LL_Flag_definition FMC Low Layer Flag definition 
+
+/** @defgroup FMC_LL_Flag_definition FMC Low Layer Flag definition
   * @{
-  */ 
-#define FMC_FLAG_RISING_EDGE                    ((uint32_t)0x00000001U)
-#define FMC_FLAG_LEVEL                          ((uint32_t)0x00000002U)
-#define FMC_FLAG_FALLING_EDGE                   ((uint32_t)0x00000004U)
-#define FMC_FLAG_FEMPT                          ((uint32_t)0x00000040U)
+  */
+#define FMC_FLAG_RISING_EDGE                    (0x00000001U)
+#define FMC_FLAG_LEVEL                          (0x00000002U)
+#define FMC_FLAG_FALLING_EDGE                   (0x00000004U)
+#define FMC_FLAG_FEMPT                          (0x00000040U)
 #define FMC_SDRAM_FLAG_REFRESH_IT               FMC_SDSR_RE
 #define FMC_SDRAM_FLAG_BUSY                     FMC_SDSR_BUSY
 #define FMC_SDRAM_FLAG_REFRESH_ERROR            FMC_SDRTR_CRE
 /**
   * @}
   */
+
 /**
   * @}
   */
@@ -1061,70 +861,72 @@
 /** @defgroup FMC_LL_Private_Macros FMC_LL  Private Macros
   * @{
   */
-
 /** @defgroup FMC_LL_NOR_Macros FMC NOR/SRAM Macros
- *  @brief macros to handle NOR device enable/disable and read/write operations
- *  @{
- */
- 
+  * @brief macros to handle NOR device enable/disable and read/write operations
+  * @{
+  */
+
 /**
   * @brief  Enable the NORSRAM device access.
   * @param  __INSTANCE__ FMC_NORSRAM Instance
-  * @param  __BANK__ FMC_NORSRAM Bank     
+  * @param  __BANK__ FMC_NORSRAM Bank
   * @retval None
-  */ 
-#define __FMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__)  ((__INSTANCE__)->BTCR[(__BANK__)] |= FMC_BCR1_MBKEN)
+  */
+#define __FMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__)  ((__INSTANCE__)->BTCR[(__BANK__)]\
+                                                       |= FMC_BCR1_MBKEN)
 
 /**
   * @brief  Disable the NORSRAM device access.
   * @param  __INSTANCE__ FMC_NORSRAM Instance
-  * @param  __BANK__ FMC_NORSRAM Bank   
+  * @param  __BANK__ FMC_NORSRAM Bank
   * @retval None
-  */ 
-#define __FMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)] &= ~FMC_BCR1_MBKEN)  
+  */
+#define __FMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)]\
+                                                       &= ~FMC_BCR1_MBKEN)
 
 /**
   * @}
-  */ 
+  */
 
 /** @defgroup FMC_LL_NAND_Macros FMC NAND Macros
- *  @brief macros to handle NAND device enable/disable
- *  @{
- */
- 
+  *  @brief macros to handle NAND device enable/disable
+  *  @{
+  */
+
 /**
   * @brief  Enable the NAND device access.
-  * @param  __INSTANCE__ FMC_NAND Instance    
+  * @param  __INSTANCE__ FMC_NAND Instance
   * @retval None
-  */  
+  */
 #define __FMC_NAND_ENABLE(__INSTANCE__)  ((__INSTANCE__)->PCR |= FMC_PCR_PBKEN)
 
 /**
   * @brief  Disable the NAND device access.
-  * @param  __INSTANCE__ FMC_NAND Instance  
+  * @param  __INSTANCE__ FMC_NAND Instance
+  * @param  __BANK__     FMC_NAND Bank
   * @retval None
   */
-#define __FMC_NAND_DISABLE(__INSTANCE__) ((__INSTANCE__)->PCR &= ~FMC_PCR_PBKEN)
+#define __FMC_NAND_DISABLE(__INSTANCE__, __BANK__) CLEAR_BIT((__INSTANCE__)->PCR, FMC_PCR_PBKEN)
 
 /**
   * @}
-  */ 
-    
-/** @defgroup FMC_Interrupt FMC Interrupt
- *  @brief macros to handle FMC interrupts
- * @{
- */ 
+  */
+
+/** @defgroup FMC_LL_NAND_Interrupt FMC NAND Interrupt
+  * @brief macros to handle NAND interrupts
+  * @{
+  */
 
 /**
   * @brief  Enable the NAND device interrupt.
-  * @param  __INSTANCE__  FMC_NAND instance     
-  * @param  __INTERRUPT__ FMC_NAND interrupt 
+  * @param  __INSTANCE__  FMC_NAND instance
+  * @param  __INTERRUPT__ FMC_NAND interrupt
   *         This parameter can be any combination of the following values:
   *            @arg FMC_IT_RISING_EDGE: Interrupt rising edge.
   *            @arg FMC_IT_LEVEL: Interrupt level.
-  *            @arg FMC_IT_FALLING_EDGE: Interrupt falling edge.       
+  *            @arg FMC_IT_FALLING_EDGE: Interrupt falling edge.
   * @retval None
-  */  
+  */
 #define __FMC_NAND_ENABLE_IT(__INSTANCE__, __INTERRUPT__)  ((__INSTANCE__)->SR |= (__INTERRUPT__))
 
 /**
@@ -1134,62 +936,72 @@
   *         This parameter can be any combination of the following values:
   *            @arg FMC_IT_RISING_EDGE: Interrupt rising edge.
   *            @arg FMC_IT_LEVEL: Interrupt level.
-  *            @arg FMC_IT_FALLING_EDGE: Interrupt falling edge.   
+  *            @arg FMC_IT_FALLING_EDGE: Interrupt falling edge.
   * @retval None
   */
 #define __FMC_NAND_DISABLE_IT(__INSTANCE__, __INTERRUPT__)  ((__INSTANCE__)->SR &= ~(__INTERRUPT__))
-                                                                                                                           
+
 /**
   * @brief  Get flag status of the NAND device.
   * @param  __INSTANCE__ FMC_NAND Instance
-  * @param  __BANK__     FMC_NAND Bank     
-  * @param  __FLAG__ FMC_NAND flag
+  * @param  __BANK__     FMC_NAND Bank
+  * @param  __FLAG__     FMC_NAND flag
   *         This parameter can be any combination of the following values:
   *            @arg FMC_FLAG_RISING_EDGE: Interrupt rising edge flag.
   *            @arg FMC_FLAG_LEVEL: Interrupt level edge flag.
   *            @arg FMC_FLAG_FALLING_EDGE: Interrupt falling edge flag.
-  *            @arg FMC_FLAG_FEMPT: FIFO empty flag.   
+  *            @arg FMC_FLAG_FEMPT: FIFO empty flag.
   * @retval The state of FLAG (SET or RESET).
   */
 #define __FMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__)  (((__INSTANCE__)->SR &(__FLAG__)) == (__FLAG__))
 
 /**
   * @brief  Clear flag status of the NAND device.
-  * @param  __INSTANCE__ FMC_NAND Instance   
-  * @param  __FLAG__ FMC_NAND flag
+  * @param  __INSTANCE__ FMC_NAND Instance
+  * @param  __FLAG__     FMC_NAND flag
   *         This parameter can be any combination of the following values:
   *            @arg FMC_FLAG_RISING_EDGE: Interrupt rising edge flag.
   *            @arg FMC_FLAG_LEVEL: Interrupt level edge flag.
   *            @arg FMC_FLAG_FALLING_EDGE: Interrupt falling edge flag.
-  *            @arg FMC_FLAG_FEMPT: FIFO empty flag.   
+  *            @arg FMC_FLAG_FEMPT: FIFO empty flag.
   * @retval None
   */
-#define __FMC_NAND_CLEAR_FLAG(__INSTANCE__, __FLAG__)  ((__INSTANCE__)->SR &= ~(__FLAG__))  
+#define __FMC_NAND_CLEAR_FLAG(__INSTANCE__, __FLAG__)  ((__INSTANCE__)->SR &= ~(__FLAG__))
+
+/**
+  * @}
+  */
+
+
+/** @defgroup FMC_LL_SDRAM_Interrupt FMC SDRAM Interrupt
+  * @brief macros to handle SDRAM interrupts
+  * @{
+  */
 
 /**
   * @brief  Enable the SDRAM device interrupt.
-  * @param  __INSTANCE__ FMC_SDRAM instance  
-  * @param  __INTERRUPT__ FMC_SDRAM interrupt 
+  * @param  __INSTANCE__  FMC_SDRAM instance
+  * @param  __INTERRUPT__ FMC_SDRAM interrupt
   *         This parameter can be any combination of the following values:
-  *            @arg FMC_IT_REFRESH_ERROR: Interrupt refresh error      
+  *            @arg FMC_IT_REFRESH_ERROR: Interrupt refresh error
   * @retval None
   */
 #define __FMC_SDRAM_ENABLE_IT(__INSTANCE__, __INTERRUPT__)  ((__INSTANCE__)->SDRTR |= (__INTERRUPT__))
 
 /**
   * @brief  Disable the SDRAM device interrupt.
-  * @param  __INSTANCE__ FMC_SDRAM instance  
-  * @param  __INTERRUPT__ FMC_SDRAM interrupt 
+  * @param  __INSTANCE__  FMC_SDRAM instance
+  * @param  __INTERRUPT__ FMC_SDRAM interrupt
   *         This parameter can be any combination of the following values:
-  *            @arg FMC_IT_REFRESH_ERROR: Interrupt refresh error      
+  *            @arg FMC_IT_REFRESH_ERROR: Interrupt refresh error
   * @retval None
   */
 #define __FMC_SDRAM_DISABLE_IT(__INSTANCE__, __INTERRUPT__)  ((__INSTANCE__)->SDRTR &= ~(__INTERRUPT__))
 
 /**
   * @brief  Get flag status of the SDRAM device.
-  * @param  __INSTANCE__ FMC_SDRAM instance  
-  * @param  __FLAG__ FMC_SDRAM flag
+  * @param  __INSTANCE__ FMC_SDRAM instance
+  * @param  __FLAG__     FMC_SDRAM flag
   *         This parameter can be any combination of the following values:
   *            @arg FMC_SDRAM_FLAG_REFRESH_IT: Interrupt refresh error.
   *            @arg FMC_SDRAM_FLAG_BUSY: SDRAM busy flag.
@@ -1200,20 +1012,24 @@
 
 /**
   * @brief  Clear flag status of the SDRAM device.
-  * @param  __INSTANCE__ FMC_SDRAM instance  
-  * @param  __FLAG__ FMC_SDRAM flag
+  * @param  __INSTANCE__ FMC_SDRAM instance
+  * @param  __FLAG__     FMC_SDRAM flag
   *         This parameter can be any combination of the following values:
   *           @arg FMC_SDRAM_FLAG_REFRESH_ERROR
   * @retval None
   */
 #define __FMC_SDRAM_CLEAR_FLAG(__INSTANCE__, __FLAG__)  ((__INSTANCE__)->SDRTR |= (__FLAG__))
+
+/**
+  * @}
+  */
 /**
   * @}
   */
 
 /**
   * @}
-  */ 
+  */
 
 /* Private functions ---------------------------------------------------------*/
 /** @defgroup FMC_LL_Private_Functions FMC LL Private Functions
@@ -1223,18 +1039,23 @@
 /** @defgroup FMC_LL_NORSRAM  NOR SRAM
   *  @{
   */
-/** @defgroup FMC_LL_NORSRAM_Private_Functions_Group1 NOR SRAM Initialization/de-initialization functions 
+/** @defgroup FMC_LL_NORSRAM_Private_Functions_Group1 NOR SRAM Initialization/de-initialization functions
   *  @{
   */
-HAL_StatusTypeDef  FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_InitTypeDef *Init);
-HAL_StatusTypeDef  FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank);
-HAL_StatusTypeDef  FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode);
-HAL_StatusTypeDef  FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank);
+HAL_StatusTypeDef  FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device,
+                                    FMC_NORSRAM_InitTypeDef *Init);
+HAL_StatusTypeDef  FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device,
+                                           FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank);
+HAL_StatusTypeDef  FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device,
+                                                    FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank,
+                                                    uint32_t ExtendedMode);
+HAL_StatusTypeDef  FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device,
+                                      FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank);
 /**
   * @}
-  */ 
+  */
 
-/** @defgroup FMC_LL_NORSRAM_Private_Functions_Group2 NOR SRAM Control functions 
+/** @defgroup FMC_LL_NORSRAM_Private_Functions_Group2 NOR SRAM Control functions
   *  @{
   */
 HAL_StatusTypeDef  FMC_NORSRAM_WriteOperation_Enable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank);
@@ -1249,54 +1070,62 @@
 /** @defgroup FMC_LL_NAND NAND
   *  @{
   */
-/** @defgroup FMC_LL_NAND_Private_Functions_Group1 NAND Initialization/de-initialization functions 
+/** @defgroup FMC_LL_NAND_Private_Functions_Group1 NAND Initialization/de-initialization functions
   *  @{
   */
 HAL_StatusTypeDef  FMC_NAND_Init(FMC_NAND_TypeDef *Device, FMC_NAND_InitTypeDef *Init);
-HAL_StatusTypeDef  FMC_NAND_CommonSpace_Timing_Init(FMC_NAND_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
-HAL_StatusTypeDef  FMC_NAND_AttributeSpace_Timing_Init(FMC_NAND_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
+HAL_StatusTypeDef  FMC_NAND_CommonSpace_Timing_Init(FMC_NAND_TypeDef *Device,
+                                                    FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
+HAL_StatusTypeDef  FMC_NAND_AttributeSpace_Timing_Init(FMC_NAND_TypeDef *Device,
+                                                       FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
 HAL_StatusTypeDef  FMC_NAND_DeInit(FMC_NAND_TypeDef *Device, uint32_t Bank);
 /**
   * @}
   */
 
-/** @defgroup FMC_LL_NAND_Private_Functions_Group2 NAND Control functions 
+/** @defgroup FMC_LL_NAND_Private_Functions_Group2 NAND Control functions
   *  @{
   */
 HAL_StatusTypeDef  FMC_NAND_ECC_Enable(FMC_NAND_TypeDef *Device, uint32_t Bank);
 HAL_StatusTypeDef  FMC_NAND_ECC_Disable(FMC_NAND_TypeDef *Device, uint32_t Bank);
-HAL_StatusTypeDef  FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, uint32_t Timeout);
+HAL_StatusTypeDef  FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank,
+                                   uint32_t Timeout);
 /**
   * @}
   */
+/**
+  * @}
+  */
+
 
 /** @defgroup FMC_LL_SDRAM SDRAM
   *  @{
   */
-/** @defgroup FMC_LL_SDRAM_Private_Functions_Group1 SDRAM Initialization/de-initialization functions 
+/** @defgroup FMC_LL_SDRAM_Private_Functions_Group1 SDRAM Initialization/de-initialization functions
   *  @{
   */
 HAL_StatusTypeDef  FMC_SDRAM_Init(FMC_SDRAM_TypeDef *Device, FMC_SDRAM_InitTypeDef *Init);
-HAL_StatusTypeDef  FMC_SDRAM_Timing_Init(FMC_SDRAM_TypeDef *Device, FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank);
+HAL_StatusTypeDef  FMC_SDRAM_Timing_Init(FMC_SDRAM_TypeDef *Device,
+                                         FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank);
 HAL_StatusTypeDef  FMC_SDRAM_DeInit(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
-
 /**
   * @}
   */
 
-/** @defgroup FMC_LL_SDRAM_Private_Functions_Group2 SDRAM Control functions 
+/** @defgroup FMC_LL_SDRAM_Private_Functions_Group2 SDRAM Control functions
   *  @{
   */
 HAL_StatusTypeDef  FMC_SDRAM_WriteProtection_Enable(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
 HAL_StatusTypeDef  FMC_SDRAM_WriteProtection_Disable(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
-HAL_StatusTypeDef  FMC_SDRAM_SendCommand(FMC_SDRAM_TypeDef *Device, FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout);
+HAL_StatusTypeDef  FMC_SDRAM_SendCommand(FMC_SDRAM_TypeDef *Device,
+                                         FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout);
 HAL_StatusTypeDef  FMC_SDRAM_ProgramRefreshRate(FMC_SDRAM_TypeDef *Device, uint32_t RefreshRate);
-HAL_StatusTypeDef  FMC_SDRAM_SetAutoRefreshNumber(FMC_SDRAM_TypeDef *Device, uint32_t AutoRefreshNumber);
+HAL_StatusTypeDef  FMC_SDRAM_SetAutoRefreshNumber(FMC_SDRAM_TypeDef *Device,
+                                                  uint32_t AutoRefreshNumber);
 uint32_t           FMC_SDRAM_GetModeStatus(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
 /**
   * @}
   */
-
 /**
   * @}
   */
@@ -1312,10 +1141,9 @@
 /**
   * @}
   */
+
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* __STM32F7xx_LL_FMC_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+#endif /* STM32F7xx_LL_FMC_H */
diff --git a/Inc/stm32f7xx_ll_gpio.h b/Inc/stm32f7xx_ll_gpio.h
index eab42b1..46b6e60 100644
--- a/Inc/stm32f7xx_ll_gpio.h
+++ b/Inc/stm32f7xx_ll_gpio.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -980,4 +979,3 @@
 
 #endif /* __STM32F7xx_LL_GPIO_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_i2c.h b/Inc/stm32f7xx_ll_i2c.h
index 76dc4c6..ba53fdc 100644
--- a/Inc/stm32f7xx_ll_i2c.h
+++ b/Inc/stm32f7xx_ll_i2c.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -69,38 +68,46 @@
   uint32_t PeripheralMode;      /*!< Specifies the peripheral mode.
                                      This parameter can be a value of @ref I2C_LL_EC_PERIPHERAL_MODE.
 
-                                     This feature can be modified afterwards using unitary function @ref LL_I2C_SetMode(). */
+                                     This feature can be modified afterwards using unitary function
+                                     @ref LL_I2C_SetMode(). */
 
   uint32_t Timing;              /*!< Specifies the SDA setup, hold time and the SCL high, low period values.
                                      This parameter must be set by referring to the STM32CubeMX Tool and
                                      the helper macro @ref __LL_I2C_CONVERT_TIMINGS().
 
-                                     This feature can be modified afterwards using unitary function @ref LL_I2C_SetTiming(). */
+                                     This feature can be modified afterwards using unitary function
+                                     @ref LL_I2C_SetTiming(). */
 
   uint32_t AnalogFilter;        /*!< Enables or disables analog noise filter.
                                      This parameter can be a value of @ref I2C_LL_EC_ANALOGFILTER_SELECTION.
 
-                                     This feature can be modified afterwards using unitary functions @ref LL_I2C_EnableAnalogFilter() or LL_I2C_DisableAnalogFilter(). */
+                                     This feature can be modified afterwards using unitary functions
+                                     @ref LL_I2C_EnableAnalogFilter() or LL_I2C_DisableAnalogFilter(). */
 
   uint32_t DigitalFilter;       /*!< Configures the digital noise filter.
                                      This parameter can be a number between Min_Data = 0x00 and Max_Data = 0x0F.
 
-                                     This feature can be modified afterwards using unitary function @ref LL_I2C_SetDigitalFilter(). */
+                                     This feature can be modified afterwards using unitary function
+                                     @ref LL_I2C_SetDigitalFilter(). */
 
   uint32_t OwnAddress1;         /*!< Specifies the device own address 1.
                                      This parameter must be a value between Min_Data = 0x00 and Max_Data = 0x3FF.
 
-                                     This feature can be modified afterwards using unitary function @ref LL_I2C_SetOwnAddress1(). */
+                                     This feature can be modified afterwards using unitary function
+                                     @ref LL_I2C_SetOwnAddress1(). */
 
-  uint32_t TypeAcknowledge;     /*!< Specifies the ACKnowledge or Non ACKnowledge condition after the address receive match code or next received byte.
+  uint32_t TypeAcknowledge;     /*!< Specifies the ACKnowledge or Non ACKnowledge condition after the address receive
+                                     match code or next received byte.
                                      This parameter can be a value of @ref I2C_LL_EC_I2C_ACKNOWLEDGE.
 
-                                     This feature can be modified afterwards using unitary function @ref LL_I2C_AcknowledgeNextData(). */
+                                     This feature can be modified afterwards using unitary function
+                                     @ref LL_I2C_AcknowledgeNextData(). */
 
   uint32_t OwnAddrSize;         /*!< Specifies the device own address 1 size (7-bit or 10-bit).
                                      This parameter can be a value of @ref I2C_LL_EC_OWNADDRESS1.
 
-                                     This feature can be modified afterwards using unitary function @ref LL_I2C_SetOwnAddress1(). */
+                                     This feature can be modified afterwards using unitary function
+                                     @ref LL_I2C_SetOwnAddress1(). */
 } LL_I2C_InitTypeDef;
 /**
   * @}
@@ -170,10 +177,11 @@
 /** @defgroup I2C_LL_EC_PERIPHERAL_MODE Peripheral Mode
   * @{
   */
-#define LL_I2C_MODE_I2C                    0x00000000U              /*!< I2C Master or Slave mode                                    */
-#define LL_I2C_MODE_SMBUS_HOST             I2C_CR1_SMBHEN           /*!< SMBus Host address acknowledge                              */
-#define LL_I2C_MODE_SMBUS_DEVICE           0x00000000U              /*!< SMBus Device default mode (Default address not acknowledge) */
-#define LL_I2C_MODE_SMBUS_DEVICE_ARP       I2C_CR1_SMBDEN           /*!< SMBus Device Default address acknowledge                    */
+#define LL_I2C_MODE_I2C                    0x00000000U              /*!< I2C Master or Slave mode                 */
+#define LL_I2C_MODE_SMBUS_HOST             I2C_CR1_SMBHEN           /*!< SMBus Host address acknowledge           */
+#define LL_I2C_MODE_SMBUS_DEVICE           0x00000000U              /*!< SMBus Device default mode
+                                                                         (Default address not acknowledge)        */
+#define LL_I2C_MODE_SMBUS_DEVICE_ARP       I2C_CR1_SMBDEN           /*!< SMBus Device Default address acknowledge */
 /**
   * @}
   */
@@ -208,14 +216,15 @@
 /** @defgroup I2C_LL_EC_OWNADDRESS2 Own Address 2 Masks
   * @{
   */
-#define LL_I2C_OWNADDRESS2_NOMASK           I2C_OAR2_OA2NOMASK      /*!< Own Address2 No mask.                                */
-#define LL_I2C_OWNADDRESS2_MASK01           I2C_OAR2_OA2MASK01      /*!< Only Address2 bits[7:2] are compared.                */
-#define LL_I2C_OWNADDRESS2_MASK02           I2C_OAR2_OA2MASK02      /*!< Only Address2 bits[7:3] are compared.                */
-#define LL_I2C_OWNADDRESS2_MASK03           I2C_OAR2_OA2MASK03      /*!< Only Address2 bits[7:4] are compared.                */
-#define LL_I2C_OWNADDRESS2_MASK04           I2C_OAR2_OA2MASK04      /*!< Only Address2 bits[7:5] are compared.                */
-#define LL_I2C_OWNADDRESS2_MASK05           I2C_OAR2_OA2MASK05      /*!< Only Address2 bits[7:6] are compared.                */
-#define LL_I2C_OWNADDRESS2_MASK06           I2C_OAR2_OA2MASK06      /*!< Only Address2 bits[7] are compared.                  */
-#define LL_I2C_OWNADDRESS2_MASK07           I2C_OAR2_OA2MASK07      /*!< No comparison is done. All Address2 are acknowledged.*/
+#define LL_I2C_OWNADDRESS2_NOMASK           I2C_OAR2_OA2NOMASK      /*!< Own Address2 No mask.                 */
+#define LL_I2C_OWNADDRESS2_MASK01           I2C_OAR2_OA2MASK01      /*!< Only Address2 bits[7:2] are compared. */
+#define LL_I2C_OWNADDRESS2_MASK02           I2C_OAR2_OA2MASK02      /*!< Only Address2 bits[7:3] are compared. */
+#define LL_I2C_OWNADDRESS2_MASK03           I2C_OAR2_OA2MASK03      /*!< Only Address2 bits[7:4] are compared. */
+#define LL_I2C_OWNADDRESS2_MASK04           I2C_OAR2_OA2MASK04      /*!< Only Address2 bits[7:5] are compared. */
+#define LL_I2C_OWNADDRESS2_MASK05           I2C_OAR2_OA2MASK05      /*!< Only Address2 bits[7:6] are compared. */
+#define LL_I2C_OWNADDRESS2_MASK06           I2C_OAR2_OA2MASK06      /*!< Only Address2 bits[7] are compared.   */
+#define LL_I2C_OWNADDRESS2_MASK07           I2C_OAR2_OA2MASK07      /*!< No comparison is done.
+                                                                         All Address2 are acknowledged.        */
 /**
   * @}
   */
@@ -250,14 +259,21 @@
 /** @defgroup I2C_LL_EC_MODE Transfer End Mode
   * @{
   */
-#define LL_I2C_MODE_RELOAD                  I2C_CR2_RELOAD                                      /*!< Enable I2C Reload mode.                                   */
-#define LL_I2C_MODE_AUTOEND                 I2C_CR2_AUTOEND                                     /*!< Enable I2C Automatic end mode with no HW PEC comparison.  */
-#define LL_I2C_MODE_SOFTEND                 0x00000000U                                         /*!< Enable I2C Software end mode with no HW PEC comparison.   */
-#define LL_I2C_MODE_SMBUS_RELOAD            LL_I2C_MODE_RELOAD                                  /*!< Enable SMBUS Automatic end mode with HW PEC comparison.   */
-#define LL_I2C_MODE_SMBUS_AUTOEND_NO_PEC    LL_I2C_MODE_AUTOEND                                 /*!< Enable SMBUS Automatic end mode with HW PEC comparison.   */
-#define LL_I2C_MODE_SMBUS_SOFTEND_NO_PEC    LL_I2C_MODE_SOFTEND                                 /*!< Enable SMBUS Software end mode with HW PEC comparison.    */
-#define LL_I2C_MODE_SMBUS_AUTOEND_WITH_PEC  (uint32_t)(LL_I2C_MODE_AUTOEND | I2C_CR2_PECBYTE)   /*!< Enable SMBUS Automatic end mode with HW PEC comparison.   */
-#define LL_I2C_MODE_SMBUS_SOFTEND_WITH_PEC  (uint32_t)(LL_I2C_MODE_SOFTEND | I2C_CR2_PECBYTE)   /*!< Enable SMBUS Software end mode with HW PEC comparison.    */
+#define LL_I2C_MODE_RELOAD                  I2C_CR2_RELOAD           /*!< Enable I2C Reload mode.     */
+#define LL_I2C_MODE_AUTOEND                 I2C_CR2_AUTOEND          /*!< Enable I2C Automatic end mode
+                                                                          with no HW PEC comparison.  */
+#define LL_I2C_MODE_SOFTEND                 0x00000000U              /*!< Enable I2C Software end mode
+                                                                          with no HW PEC comparison.  */
+#define LL_I2C_MODE_SMBUS_RELOAD            LL_I2C_MODE_RELOAD       /*!< Enable SMBUS Automatic end mode
+                                                                          with HW PEC comparison.     */
+#define LL_I2C_MODE_SMBUS_AUTOEND_NO_PEC    LL_I2C_MODE_AUTOEND      /*!< Enable SMBUS Automatic end mode
+                                                                          with HW PEC comparison.     */
+#define LL_I2C_MODE_SMBUS_SOFTEND_NO_PEC    LL_I2C_MODE_SOFTEND      /*!< Enable SMBUS Software end mode
+                                                                          with HW PEC comparison.     */
+#define LL_I2C_MODE_SMBUS_AUTOEND_WITH_PEC  (uint32_t)(LL_I2C_MODE_AUTOEND | I2C_CR2_PECBYTE)
+/*!< Enable SMBUS Automatic end mode with HW PEC comparison.   */
+#define LL_I2C_MODE_SMBUS_SOFTEND_WITH_PEC  (uint32_t)(LL_I2C_MODE_SOFTEND | I2C_CR2_PECBYTE)
+/*!< Enable SMBUS Software end mode with HW PEC comparison.    */
 /**
   * @}
   */
@@ -265,14 +281,23 @@
 /** @defgroup I2C_LL_EC_GENERATE Start And Stop Generation
   * @{
   */
-#define LL_I2C_GENERATE_NOSTARTSTOP         0x00000000U                                                                /*!< Don't Generate Stop and Start condition.                */
-#define LL_I2C_GENERATE_STOP                (uint32_t)(0x80000000U | I2C_CR2_STOP)                                     /*!< Generate Stop condition (Size should be set to 0).      */
-#define LL_I2C_GENERATE_START_READ          (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN)                   /*!< Generate Start for read request.                        */
-#define LL_I2C_GENERATE_START_WRITE         (uint32_t)(0x80000000U | I2C_CR2_START)                                    /*!< Generate Start for write request.                       */
-#define LL_I2C_GENERATE_RESTART_7BIT_READ   (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN)                   /*!< Generate Restart for read request, slave 7Bit address.  */
-#define LL_I2C_GENERATE_RESTART_7BIT_WRITE  (uint32_t)(0x80000000U | I2C_CR2_START)                                    /*!< Generate Restart for write request, slave 7Bit address. */
-#define LL_I2C_GENERATE_RESTART_10BIT_READ  (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN | I2C_CR2_HEAD10R) /*!< Generate Restart for read request, slave 10Bit address. */
-#define LL_I2C_GENERATE_RESTART_10BIT_WRITE (uint32_t)(0x80000000U | I2C_CR2_START)                                    /*!< Generate Restart for write request, slave 10Bit address.*/
+#define LL_I2C_GENERATE_NOSTARTSTOP         0x00000000U
+/*!< Don't Generate Stop and Start condition. */
+#define LL_I2C_GENERATE_STOP                (uint32_t)(0x80000000U | I2C_CR2_STOP)
+/*!< Generate Stop condition (Size should be set to 0).      */
+#define LL_I2C_GENERATE_START_READ          (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN)
+/*!< Generate Start for read request. */
+#define LL_I2C_GENERATE_START_WRITE         (uint32_t)(0x80000000U | I2C_CR2_START)
+/*!< Generate Start for write request. */
+#define LL_I2C_GENERATE_RESTART_7BIT_READ   (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN)
+/*!< Generate Restart for read request, slave 7Bit address.  */
+#define LL_I2C_GENERATE_RESTART_7BIT_WRITE  (uint32_t)(0x80000000U | I2C_CR2_START)
+/*!< Generate Restart for write request, slave 7Bit address. */
+#define LL_I2C_GENERATE_RESTART_10BIT_READ  (uint32_t)(0x80000000U | I2C_CR2_START | \
+                                                       I2C_CR2_RD_WRN | I2C_CR2_HEAD10R)
+/*!< Generate Restart for read request, slave 10Bit address. */
+#define LL_I2C_GENERATE_RESTART_10BIT_WRITE (uint32_t)(0x80000000U | I2C_CR2_START)
+/*!< Generate Restart for write request, slave 10Bit address.*/
 /**
   * @}
   */
@@ -280,8 +305,10 @@
 /** @defgroup I2C_LL_EC_DIRECTION Read Write Direction
   * @{
   */
-#define LL_I2C_DIRECTION_WRITE              0x00000000U              /*!< Write transfer request by master, slave enters receiver mode.  */
-#define LL_I2C_DIRECTION_READ               I2C_ISR_DIR              /*!< Read transfer request by master, slave enters transmitter mode.*/
+#define LL_I2C_DIRECTION_WRITE              0x00000000U              /*!< Write transfer request by master,
+                                                                          slave enters receiver mode.  */
+#define LL_I2C_DIRECTION_READ               I2C_ISR_DIR              /*!< Read transfer request by master,
+                                                                          slave enters transmitter mode.*/
 /**
   * @}
   */
@@ -289,8 +316,10 @@
 /** @defgroup I2C_LL_EC_DMA_REG_DATA DMA Register Data
   * @{
   */
-#define LL_I2C_DMA_REG_DATA_TRANSMIT        0x00000000U              /*!< Get address of data register used for transmission */
-#define LL_I2C_DMA_REG_DATA_RECEIVE         0x00000001U              /*!< Get address of data register used for reception */
+#define LL_I2C_DMA_REG_DATA_TRANSMIT        0x00000000U              /*!< Get address of data register used for
+                                                                          transmission */
+#define LL_I2C_DMA_REG_DATA_RECEIVE         0x00000001U              /*!< Get address of data register used for
+                                                                          reception */
 /**
   * @}
   */
@@ -298,8 +327,10 @@
 /** @defgroup I2C_LL_EC_SMBUS_TIMEOUTA_MODE SMBus TimeoutA Mode SCL SDA Timeout
   * @{
   */
-#define LL_I2C_SMBUS_TIMEOUTA_MODE_SCL_LOW      0x00000000U          /*!< TimeoutA is used to detect SCL low level timeout.              */
-#define LL_I2C_SMBUS_TIMEOUTA_MODE_SDA_SCL_HIGH I2C_TIMEOUTR_TIDLE   /*!< TimeoutA is used to detect both SCL and SDA high level timeout.*/
+#define LL_I2C_SMBUS_TIMEOUTA_MODE_SCL_LOW      0x00000000U          /*!< TimeoutA is used to detect
+                                                                          SCL low level timeout.              */
+#define LL_I2C_SMBUS_TIMEOUTA_MODE_SDA_SCL_HIGH I2C_TIMEOUTR_TIDLE   /*!< TimeoutA is used to detect
+                                                                          both SCL and SDA high level timeout.*/
 /**
   * @}
   */
@@ -307,9 +338,12 @@
 /** @defgroup I2C_LL_EC_SMBUS_TIMEOUT_SELECTION SMBus Timeout Selection
   * @{
   */
-#define LL_I2C_SMBUS_TIMEOUTA               I2C_TIMEOUTR_TIMOUTEN                                   /*!< TimeoutA enable bit                                */
-#define LL_I2C_SMBUS_TIMEOUTB               I2C_TIMEOUTR_TEXTEN                                     /*!< TimeoutB (extended clock) enable bit               */
-#define LL_I2C_SMBUS_ALL_TIMEOUT            (uint32_t)(I2C_TIMEOUTR_TIMOUTEN | I2C_TIMEOUTR_TEXTEN) /*!< TimeoutA and TimeoutB (extended clock) enable bits */
+#define LL_I2C_SMBUS_TIMEOUTA               I2C_TIMEOUTR_TIMOUTEN                 /*!< TimeoutA enable bit          */
+#define LL_I2C_SMBUS_TIMEOUTB               I2C_TIMEOUTR_TEXTEN                   /*!< TimeoutB (extended clock)
+                                                                                       enable bit                   */
+#define LL_I2C_SMBUS_ALL_TIMEOUT            (uint32_t)(I2C_TIMEOUTR_TIMOUTEN | \
+                                                       I2C_TIMEOUTR_TEXTEN)       /*!< TimeoutA and TimeoutB
+(extended clock) enable bits */
 /**
   * @}
   */
@@ -353,18 +387,22 @@
 /**
   * @brief  Configure the SDA setup, hold time and the SCL high, low period.
   * @param  __PRESCALER__ This parameter must be a value between  Min_Data=0 and Max_Data=0xF.
-  * @param  __DATA_SETUP_TIME__ This parameter must be a value between Min_Data=0 and Max_Data=0xF. (tscldel = (SCLDEL+1)xtpresc)
-  * @param  __DATA_HOLD_TIME__ This parameter must be a value between Min_Data=0 and Max_Data=0xF. (tsdadel = SDADELxtpresc)
-  * @param  __CLOCK_HIGH_PERIOD__ This parameter must be a value between Min_Data=0 and Max_Data=0xFF. (tsclh = (SCLH+1)xtpresc)
-  * @param  __CLOCK_LOW_PERIOD__ This parameter must be a value between  Min_Data=0 and Max_Data=0xFF. (tscll = (SCLL+1)xtpresc)
+  * @param  __SETUP_TIME__ This parameter must be a value between Min_Data=0 and Max_Data=0xF.
+                           (tscldel = (SCLDEL+1)xtpresc)
+  * @param  __HOLD_TIME__  This parameter must be a value between Min_Data=0 and Max_Data=0xF.
+                           (tsdadel = SDADELxtpresc)
+  * @param  __SCLH_PERIOD__ This parameter must be a value between Min_Data=0 and Max_Data=0xFF.
+                            (tsclh = (SCLH+1)xtpresc)
+  * @param  __SCLL_PERIOD__ This parameter must be a value between  Min_Data=0 and Max_Data=0xFF.
+                            (tscll = (SCLL+1)xtpresc)
   * @retval Value between Min_Data=0 and Max_Data=0xFFFFFFFF
   */
-#define __LL_I2C_CONVERT_TIMINGS(__PRESCALER__, __DATA_SETUP_TIME__, __DATA_HOLD_TIME__, __CLOCK_HIGH_PERIOD__, __CLOCK_LOW_PERIOD__)   \
-  ((((uint32_t)(__PRESCALER__)         << I2C_TIMINGR_PRESC_Pos)  & I2C_TIMINGR_PRESC)   | \
-   (((uint32_t)(__DATA_SETUP_TIME__)   << I2C_TIMINGR_SCLDEL_Pos) & I2C_TIMINGR_SCLDEL)  | \
-   (((uint32_t)(__DATA_HOLD_TIME__)    << I2C_TIMINGR_SDADEL_Pos) & I2C_TIMINGR_SDADEL)  | \
-   (((uint32_t)(__CLOCK_HIGH_PERIOD__) << I2C_TIMINGR_SCLH_Pos)   & I2C_TIMINGR_SCLH)    | \
-   (((uint32_t)(__CLOCK_LOW_PERIOD__)  << I2C_TIMINGR_SCLL_Pos)   & I2C_TIMINGR_SCLL))
+#define __LL_I2C_CONVERT_TIMINGS(__PRESCALER__, __SETUP_TIME__, __HOLD_TIME__, __SCLH_PERIOD__, __SCLL_PERIOD__) \
+  ((((uint32_t)(__PRESCALER__)    << I2C_TIMINGR_PRESC_Pos)  & I2C_TIMINGR_PRESC)   | \
+   (((uint32_t)(__SETUP_TIME__)   << I2C_TIMINGR_SCLDEL_Pos) & I2C_TIMINGR_SCLDEL)  | \
+   (((uint32_t)(__HOLD_TIME__)    << I2C_TIMINGR_SDADEL_Pos) & I2C_TIMINGR_SDADEL)  | \
+   (((uint32_t)(__SCLH_PERIOD__)  << I2C_TIMINGR_SCLH_Pos)   & I2C_TIMINGR_SCLH)    | \
+   (((uint32_t)(__SCLL_PERIOD__)  << I2C_TIMINGR_SCLL_Pos)   & I2C_TIMINGR_SCLL))
 /**
   * @}
   */
@@ -428,7 +466,8 @@
   * @param  AnalogFilter This parameter can be one of the following values:
   *         @arg @ref LL_I2C_ANALOGFILTER_ENABLE
   *         @arg @ref LL_I2C_ANALOGFILTER_DISABLE
-  * @param  DigitalFilter This parameter must be a value between Min_Data=0x00 (Digital filter disabled) and Max_Data=0x0F (Digital filter enabled and filtering capability up to 15*ti2cclk).
+  * @param  DigitalFilter This parameter must be a value between Min_Data=0x00 (Digital filter disabled)
+                          and Max_Data=0x0F (Digital filter enabled and filtering capability up to 15*ti2cclk).
   *         This parameter is used to configure the digital noise filter on SDA and SCL input.
   *         The digital filter will filter spikes with a length of up to DNF[3:0]*ti2cclk.
   * @retval None
@@ -444,7 +483,8 @@
   *         This filter can only be programmed when the I2C is disabled (PE = 0).
   * @rmtoll CR1          DNF           LL_I2C_SetDigitalFilter
   * @param  I2Cx I2C Instance.
-  * @param  DigitalFilter This parameter must be a value between Min_Data=0x00 (Digital filter disabled) and Max_Data=0x0F (Digital filter enabled and filtering capability up to 15*ti2cclk).
+  * @param  DigitalFilter This parameter must be a value between Min_Data=0x00 (Digital filter disabled)
+                          and Max_Data=0x0F (Digital filter enabled and filtering capability up to 15*ti2cclk).
   *         This parameter is used to configure the digital noise filter on SDA and SCL input.
   *         The digital filter will filter spikes with a length of up to DNF[3:0]*ti2cclk.
   * @retval None
@@ -662,7 +702,6 @@
   return ((READ_BIT(I2Cx->CR1, I2C_CR1_SBC) == (I2C_CR1_SBC)) ? 1UL : 0UL);
 }
 
-
 /**
   * @brief  Enable General Call.
   * @note   When enabled the Address 0x00 is ACKed.
@@ -902,7 +941,7 @@
 
 /**
   * @brief  Configure peripheral mode.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          SMBHEN        LL_I2C_SetMode\n
   *         CR1          SMBDEN        LL_I2C_SetMode
@@ -921,7 +960,7 @@
 
 /**
   * @brief  Get peripheral mode.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          SMBHEN        LL_I2C_GetMode\n
   *         CR1          SMBDEN        LL_I2C_GetMode
@@ -939,7 +978,7 @@
 
 /**
   * @brief  Enable SMBus alert (Host or Device mode)
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   SMBus Device mode:
   *         - SMBus Alert pin is drived low and
@@ -957,7 +996,7 @@
 
 /**
   * @brief  Disable SMBus alert (Host or Device mode)
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   SMBus Device mode:
   *         - SMBus Alert pin is not drived (can be used as a standard GPIO) and
@@ -975,7 +1014,7 @@
 
 /**
   * @brief  Check if SMBus alert (Host or Device mode) is enabled or disabled.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          ALERTEN       LL_I2C_IsEnabledSMBusAlert
   * @param  I2Cx I2C Instance.
@@ -988,7 +1027,7 @@
 
 /**
   * @brief  Enable SMBus Packet Error Calculation (PEC).
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          PECEN         LL_I2C_EnableSMBusPEC
   * @param  I2Cx I2C Instance.
@@ -1001,7 +1040,7 @@
 
 /**
   * @brief  Disable SMBus Packet Error Calculation (PEC).
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          PECEN         LL_I2C_DisableSMBusPEC
   * @param  I2Cx I2C Instance.
@@ -1014,7 +1053,7 @@
 
 /**
   * @brief  Check if SMBus Packet Error Calculation (PEC) is enabled or disabled.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          PECEN         LL_I2C_IsEnabledSMBusPEC
   * @param  I2Cx I2C Instance.
@@ -1027,7 +1066,7 @@
 
 /**
   * @brief  Configure the SMBus Clock Timeout.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   This configuration can only be programmed when associated Timeout is disabled (TimeoutA and/orTimeoutB).
   * @rmtoll TIMEOUTR     TIMEOUTA      LL_I2C_ConfigSMBusTimeout\n
@@ -1050,7 +1089,7 @@
 
 /**
   * @brief  Configure the SMBus Clock TimeoutA (SCL low timeout or SCL and SDA high timeout depends on TimeoutA mode).
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   These bits can only be programmed when TimeoutA is disabled.
   * @rmtoll TIMEOUTR     TIMEOUTA      LL_I2C_SetSMBusTimeoutA
@@ -1065,7 +1104,7 @@
 
 /**
   * @brief  Get the SMBus Clock TimeoutA setting.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll TIMEOUTR     TIMEOUTA      LL_I2C_GetSMBusTimeoutA
   * @param  I2Cx I2C Instance.
@@ -1078,7 +1117,7 @@
 
 /**
   * @brief  Set the SMBus Clock TimeoutA mode.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   This bit can only be programmed when TimeoutA is disabled.
   * @rmtoll TIMEOUTR     TIDLE         LL_I2C_SetSMBusTimeoutAMode
@@ -1095,7 +1134,7 @@
 
 /**
   * @brief  Get the SMBus Clock TimeoutA mode.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll TIMEOUTR     TIDLE         LL_I2C_GetSMBusTimeoutAMode
   * @param  I2Cx I2C Instance.
@@ -1110,7 +1149,7 @@
 
 /**
   * @brief  Configure the SMBus Extended Cumulative Clock TimeoutB (Master or Slave mode).
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   These bits can only be programmed when TimeoutB is disabled.
   * @rmtoll TIMEOUTR     TIMEOUTB      LL_I2C_SetSMBusTimeoutB
@@ -1125,7 +1164,7 @@
 
 /**
   * @brief  Get the SMBus Extended Cumulative Clock TimeoutB setting.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll TIMEOUTR     TIMEOUTB      LL_I2C_GetSMBusTimeoutB
   * @param  I2Cx I2C Instance.
@@ -1138,7 +1177,7 @@
 
 /**
   * @brief  Enable the SMBus Clock Timeout.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll TIMEOUTR     TIMOUTEN      LL_I2C_EnableSMBusTimeout\n
   *         TIMEOUTR     TEXTEN        LL_I2C_EnableSMBusTimeout
@@ -1156,7 +1195,7 @@
 
 /**
   * @brief  Disable the SMBus Clock Timeout.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll TIMEOUTR     TIMOUTEN      LL_I2C_DisableSMBusTimeout\n
   *         TIMEOUTR     TEXTEN        LL_I2C_DisableSMBusTimeout
@@ -1174,7 +1213,7 @@
 
 /**
   * @brief  Check if the SMBus Clock Timeout is enabled or disabled.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll TIMEOUTR     TIMOUTEN      LL_I2C_IsEnabledSMBusTimeout\n
   *         TIMEOUTR     TEXTEN        LL_I2C_IsEnabledSMBusTimeout
@@ -1187,7 +1226,8 @@
   */
 __STATIC_INLINE uint32_t LL_I2C_IsEnabledSMBusTimeout(I2C_TypeDef *I2Cx, uint32_t ClockTimeout)
 {
-  return ((READ_BIT(I2Cx->TIMEOUTR, (I2C_TIMEOUTR_TIMOUTEN | I2C_TIMEOUTR_TEXTEN)) == (ClockTimeout)) ? 1UL : 0UL);
+  return ((READ_BIT(I2Cx->TIMEOUTR, (I2C_TIMEOUTR_TIMOUTEN | I2C_TIMEOUTR_TEXTEN)) == \
+           (ClockTimeout)) ? 1UL : 0UL);
 }
 
 /**
@@ -1404,7 +1444,7 @@
 
 /**
   * @brief  Enable Error interrupts.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   Any of these errors will generate interrupt :
   *         Arbitration Loss (ARLO)
@@ -1424,7 +1464,7 @@
 
 /**
   * @brief  Disable Error interrupts.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   Any of these errors will generate interrupt :
   *         Arbitration Loss (ARLO)
@@ -1606,7 +1646,7 @@
 
 /**
   * @brief  Indicate the status of SMBus PEC error flag in reception.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   RESET: Clear default value.
   *         SET: When the received PEC does not match with the PEC register content.
@@ -1621,7 +1661,7 @@
 
 /**
   * @brief  Indicate the status of SMBus Timeout detection flag.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   RESET: Clear default value.
   *         SET: When a timeout or extended clock timeout occurs.
@@ -1636,7 +1676,7 @@
 
 /**
   * @brief  Indicate the status of SMBus alert flag.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   RESET: Clear default value.
   *         SET: When SMBus host configuration, SMBus alert enabled and
@@ -1743,7 +1783,7 @@
 
 /**
   * @brief  Clear SMBus PEC error flag.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll ICR          PECCF         LL_I2C_ClearSMBusFlag_PECERR
   * @param  I2Cx I2C Instance.
@@ -1756,7 +1796,7 @@
 
 /**
   * @brief  Clear SMBus Timeout detection flag.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll ICR          TIMOUTCF      LL_I2C_ClearSMBusFlag_TIMEOUT
   * @param  I2Cx I2C Instance.
@@ -1769,7 +1809,7 @@
 
 /**
   * @brief  Clear SMBus Alert flag.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll ICR          ALERTCF       LL_I2C_ClearSMBusFlag_ALERT
   * @param  I2Cx I2C Instance.
@@ -1884,7 +1924,8 @@
 }
 
 /**
-  * @brief  Prepare the generation of a ACKnowledge or Non ACKnowledge condition after the address receive match code or next received byte.
+  * @brief  Prepare the generation of a ACKnowledge or Non ACKnowledge condition after the address receive match code
+            or next received byte.
   * @note   Usage in Slave mode only.
   * @rmtoll CR2          NACK          LL_I2C_AcknowledgeNextData
   * @param  I2Cx I2C Instance.
@@ -1925,7 +1966,8 @@
 /**
   * @brief  Enable automatic RESTART Read request condition for 10bit address header (master mode).
   * @note   The master sends the complete 10bit slave address read sequence :
-  *         Start + 2 bytes 10bit address in Write direction + Restart + first 7 bits of 10bit address in Read direction.
+  *         Start + 2 bytes 10bit address in Write direction + Restart + first 7 bits of 10bit address
+            in Read direction.
   * @rmtoll CR2          HEAD10R       LL_I2C_EnableAuto10BitRead
   * @param  I2Cx I2C Instance.
   * @retval None
@@ -2086,9 +2128,10 @@
 
 /**
   * @brief  Enable internal comparison of the SMBus Packet Error byte (transmission or reception mode).
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
-  * @note   This feature is cleared by hardware when the PEC byte is transferred, or when a STOP condition or an Address Matched is received.
+  * @note   This feature is cleared by hardware when the PEC byte is transferred, or when a STOP condition
+            or an Address Matched is received.
   *         This bit has no effect when RELOAD bit is set.
   *         This bit has no effect in device mode when SBC bit is not set.
   * @rmtoll CR2          PECBYTE       LL_I2C_EnableSMBusPECCompare
@@ -2102,7 +2145,7 @@
 
 /**
   * @brief  Check if the SMBus Packet Error byte internal comparison is requested or not.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR2          PECBYTE       LL_I2C_IsEnabledSMBusPECCompare
   * @param  I2Cx I2C Instance.
@@ -2115,7 +2158,7 @@
 
 /**
   * @brief  Get the SMBus Packet Error byte calculated.
-  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   The macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll PECR         PEC           LL_I2C_GetSMBusPEC
   * @param  I2Cx I2C Instance.
@@ -2187,5 +2230,3 @@
 #endif
 
 #endif /* STM32F7xx_LL_I2C_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_iwdg.h b/Inc/stm32f7xx_ll_iwdg.h
index 686f09e..61b73a4 100644
--- a/Inc/stm32f7xx_ll_iwdg.h
+++ b/Inc/stm32f7xx_ll_iwdg.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -337,5 +336,3 @@
 #endif
 
 #endif /* STM32F7xx_LL_IWDG_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_lptim.h b/Inc/stm32f7xx_ll_lptim.h
index b9a0719..ea078cc 100644
--- a/Inc/stm32f7xx_ll_lptim.h
+++ b/Inc/stm32f7xx_ll_lptim.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -67,22 +66,26 @@
   uint32_t ClockSource;    /*!< Specifies the source of the clock used by the LPTIM instance.
                                 This parameter can be a value of @ref LPTIM_LL_EC_CLK_SOURCE.
 
-                                This feature can be modified afterwards using unitary function @ref LL_LPTIM_SetClockSource().*/
+                                This feature can be modified afterwards using unitary
+                                function @ref LL_LPTIM_SetClockSource().*/
 
   uint32_t Prescaler;      /*!< Specifies the prescaler division ratio.
                                 This parameter can be a value of @ref LPTIM_LL_EC_PRESCALER.
 
-                                This feature can be modified afterwards using using unitary function @ref LL_LPTIM_SetPrescaler().*/
+                                This feature can be modified afterwards using using unitary
+                                function @ref LL_LPTIM_SetPrescaler().*/
 
   uint32_t Waveform;       /*!< Specifies the waveform shape.
                                 This parameter can be a value of @ref LPTIM_LL_EC_OUTPUT_WAVEFORM.
 
-                                This feature can be modified afterwards using unitary function @ref LL_LPTIM_ConfigOutput().*/
+                                This feature can be modified afterwards using unitary
+                                function @ref LL_LPTIM_ConfigOutput().*/
 
   uint32_t Polarity;       /*!< Specifies waveform polarity.
                                 This parameter can be a value of @ref LPTIM_LL_EC_OUTPUT_POLARITY.
 
-                                This feature can be modified afterwards using unitary function @ref LL_LPTIM_ConfigOutput().*/
+                                This feature can be modified afterwards using unitary
+                                function @ref LL_LPTIM_ConfigOutput().*/
 } LL_LPTIM_InitTypeDef;
 
 /**
@@ -791,7 +794,8 @@
 }
 
 /**
-  * @brief  Configure the active edge or edges used by the counter when the LPTIM is clocked by an external clock source.
+  * @brief  Configure the active edge or edges used by the counter when
+            the LPTIM is clocked by an external clock source.
   * @note This function must be called when the LPTIM instance is disabled.
   * @note When both external clock signal edges are considered active ones,
   *       the LPTIM must also be clocked by an internal clock source with a
@@ -1009,7 +1013,8 @@
 }
 
 /**
-  * @brief  Informs application whether the APB bus write operation to the LPTIMx_CMP register has been successfully completed. If so, a new one can be initiated.
+  * @brief  Informs application whether the APB bus write operation to the LPTIMx_CMP register has been successfully
+            completed. If so, a new one can be initiated.
   * @rmtoll ISR          CMPOK         LL_LPTIM_IsActiveFlag_CMPOK
   * @param  LPTIMx Low-Power Timer instance
   * @retval State of bit (1 or 0).
@@ -1031,7 +1036,8 @@
 }
 
 /**
-  * @brief  Informs application whether the APB bus write operation to the LPTIMx_ARR register has been successfully completed. If so, a new one can be initiated.
+  * @brief  Informs application whether the APB bus write operation to the LPTIMx_ARR register has been successfully
+            completed. If so, a new one can be initiated.
   * @rmtoll ISR          ARROK         LL_LPTIM_IsActiveFlag_ARROK
   * @param  LPTIMx Low-Power Timer instance
   * @retval State of bit (1 or 0).
@@ -1053,7 +1059,8 @@
 }
 
 /**
-  * @brief  Informs the application whether the counter direction has changed from down to up (when the LPTIM instance operates in encoder mode).
+  * @brief  Informs the application whether the counter direction has changed from down to up (when the LPTIM instance
+            operates in encoder mode).
   * @rmtoll ISR          UP            LL_LPTIM_IsActiveFlag_UP
   * @param  LPTIMx Low-Power Timer instance
   * @retval State of bit (1 or 0).
@@ -1075,7 +1082,8 @@
 }
 
 /**
-  * @brief  Informs the application whether the counter direction has changed from up to down (when the LPTIM instance operates in encoder mode).
+  * @brief  Informs the application whether the counter direction has changed from up to down (when the LPTIM instance
+            operates in encoder mode).
   * @rmtoll ISR          DOWN          LL_LPTIM_IsActiveFlag_DOWN
   * @param  LPTIMx Low-Power Timer instance
   * @retval State of bit (1 or 0).
@@ -1347,5 +1355,3 @@
 #endif
 
 #endif /* STM32F7xx_LL_LPTIM_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_pwr.h b/Inc/stm32f7xx_ll_pwr.h
index 399bcf1..4c76a57 100644
--- a/Inc/stm32f7xx_ll_pwr.h
+++ b/Inc/stm32f7xx_ll_pwr.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -1015,4 +1014,3 @@
 
 #endif /* __STM32F7xx_LL_PWR_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_rcc.h b/Inc/stm32f7xx_ll_rcc.h
index 9083fc7..65bb9c6 100644
--- a/Inc/stm32f7xx_ll_rcc.h
+++ b/Inc/stm32f7xx_ll_rcc.h
@@ -6,14 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 
@@ -5170,4 +5168,3 @@
 
 #endif /* __STM32F7xx_LL_RCC_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_rng.h b/Inc/stm32f7xx_ll_rng.h
index 21406a5..fa2f386 100644
--- a/Inc/stm32f7xx_ll_rng.h
+++ b/Inc/stm32f7xx_ll_rng.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -334,4 +333,3 @@
 
 #endif /* __STM32F7xx_LL_RNG_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_rtc.h b/Inc/stm32f7xx_ll_rtc.h
index ceb398b..f040517 100644
--- a/Inc/stm32f7xx_ll_rtc.h
+++ b/Inc/stm32f7xx_ll_rtc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -3815,4 +3814,3 @@
 
 #endif /* __STM32F7xx_LL_RTC_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_sdmmc.h b/Inc/stm32f7xx_ll_sdmmc.h
index b978188..a3b9576 100644
--- a/Inc/stm32f7xx_ll_sdmmc.h
+++ b/Inc/stm32f7xx_ll_sdmmc.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                       opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -964,8 +963,14 @@
 
 /* SDMMC Cards mode management functions */
 HAL_StatusTypeDef SDMMC_SetSDMMCReadWaitMode(SDMMC_TypeDef *SDMMCx, uint32_t SDMMC_ReadWaitMode);
+/**
+  * @}
+  */
 
 /* SDMMC Commands management functions */
+/** @addtogroup HAL_SDMMC_LL_Group4
+  * @{
+  */
 uint32_t SDMMC_CmdBlockLength(SDMMC_TypeDef *SDMMCx, uint32_t BlockSize);
 uint32_t SDMMC_CmdReadSingleBlock(SDMMC_TypeDef *SDMMCx, uint32_t ReadAdd);
 uint32_t SDMMC_CmdReadMultiBlock(SDMMC_TypeDef *SDMMCx, uint32_t ReadAdd);
@@ -986,13 +991,26 @@
 uint32_t SDMMC_CmdSendSCR(SDMMC_TypeDef *SDMMCx);
 uint32_t SDMMC_CmdSendCID(SDMMC_TypeDef *SDMMCx);
 uint32_t SDMMC_CmdSendCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument);
-uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument);
 uint32_t SDMMC_CmdSetRelAdd(SDMMC_TypeDef *SDMMCx, uint16_t *pRCA);
+uint32_t SDMMC_CmdSetRelAddMmc(SDMMC_TypeDef *SDMMCx, uint16_t RCA);
 uint32_t SDMMC_CmdSendStatus(SDMMC_TypeDef *SDMMCx, uint32_t Argument);
 uint32_t SDMMC_CmdStatusRegister(SDMMC_TypeDef *SDMMCx);
 uint32_t SDMMC_CmdOpCondition(SDMMC_TypeDef *SDMMCx, uint32_t Argument);
 uint32_t SDMMC_CmdSwitch(SDMMC_TypeDef *SDMMCx, uint32_t Argument);
+uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument);
+/**
+  * @}
+  */
 
+/* SDMMC Responses management functions *****************************************/
+/** @addtogroup HAL_SDMMC_LL_Group5
+  * @{
+  */
+uint32_t SDMMC_GetCmdResp1(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint32_t Timeout);
+uint32_t SDMMC_GetCmdResp2(SDMMC_TypeDef *SDMMCx);
+uint32_t SDMMC_GetCmdResp3(SDMMC_TypeDef *SDMMCx);
+uint32_t SDMMC_GetCmdResp6(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint16_t *pRCA);
+uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx);
 /**
   * @}
   */
@@ -1016,5 +1034,3 @@
 #endif
 
 #endif /* STM32F7xx_LL_SDMMC_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_spi.h b/Inc/stm32f7xx_ll_spi.h
index a9beeeb..09cc3e5 100644
--- a/Inc/stm32f7xx_ll_spi.h
+++ b/Inc/stm32f7xx_ll_spi.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -1333,7 +1332,7 @@
   */
 __STATIC_INLINE uint8_t LL_SPI_ReceiveData8(SPI_TypeDef *SPIx)
 {
-  return (uint8_t)(READ_REG(SPIx->DR));
+  return (*((__IO uint8_t *)&SPIx->DR));
 }
 
 /**
@@ -2281,4 +2280,3 @@
 
 #endif /* STM32F7xx_LL_SPI_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_system.h b/Inc/stm32f7xx_ll_system.h
index ad900ba..0cb02b0 100644
--- a/Inc/stm32f7xx_ll_system.h
+++ b/Inc/stm32f7xx_ll_system.h
@@ -3,6 +3,17 @@
   * @file    stm32f7xx_ll_system.h
   * @author  MCD Application Team
   * @brief   Header file of SYSTEM LL module.
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
@@ -16,17 +27,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
@@ -1015,4 +1015,4 @@
 
 #endif /* __STM32F7xx_LL_SYSTEM_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Inc/stm32f7xx_ll_tim.h b/Inc/stm32f7xx_ll_tim.h
index 470970f..9c4bc4b 100644
--- a/Inc/stm32f7xx_ll_tim.h
+++ b/Inc/stm32f7xx_ll_tim.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -206,24 +205,29 @@
   uint16_t Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
                                    This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
 
-                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetPrescaler().*/
+                                   This feature can be modified afterwards using unitary function
+                                   @ref LL_TIM_SetPrescaler().*/
 
   uint32_t CounterMode;       /*!< Specifies the counter mode.
                                    This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE.
 
-                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetCounterMode().*/
+                                   This feature can be modified afterwards using unitary function
+                                   @ref LL_TIM_SetCounterMode().*/
 
   uint32_t Autoreload;        /*!< Specifies the auto reload value to be loaded into the active
                                    Auto-Reload Register at the next update event.
                                    This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
-                                   Some timer instances may support 32 bits counters. In that case this parameter must be a number between 0x0000 and 0xFFFFFFFF.
+                                   Some timer instances may support 32 bits counters. In that case this parameter must
+                                   be a number between 0x0000 and 0xFFFFFFFF.
 
-                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetAutoReload().*/
+                                   This feature can be modified afterwards using unitary function
+                                   @ref LL_TIM_SetAutoReload().*/
 
   uint32_t ClockDivision;     /*!< Specifies the clock division.
                                    This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION.
 
-                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetClockDivision().*/
+                                   This feature can be modified afterwards using unitary function
+                                   @ref LL_TIM_SetClockDivision().*/
 
   uint32_t RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
                                    reaches zero, an update event is generated and counting restarts
@@ -231,10 +235,13 @@
                                    This means in PWM mode that (N+1) corresponds to:
                                       - the number of PWM periods in edge-aligned mode
                                       - the number of half PWM period in center-aligned mode
-                                   GP timers: this parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
-                                   Advanced timers: this parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.
+                                   GP timers: this parameter must be a number between Min_Data = 0x00 and
+                                   Max_Data = 0xFF.
+                                   Advanced timers: this parameter must be a number between Min_Data = 0x0000 and
+                                   Max_Data = 0xFFFF.
 
-                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetRepetitionCounter().*/
+                                   This feature can be modified afterwards using unitary function
+                                   @ref LL_TIM_SetRepetitionCounter().*/
 } LL_TIM_InitTypeDef;
 
 /**
@@ -245,43 +252,51 @@
   uint32_t OCMode;        /*!< Specifies the output mode.
                                This parameter can be a value of @ref TIM_LL_EC_OCMODE.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetMode().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_OC_SetMode().*/
 
   uint32_t OCState;       /*!< Specifies the TIM Output Compare state.
                                This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
 
-                               This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
+                               This feature can be modified afterwards using unitary functions
+                               @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
 
   uint32_t OCNState;      /*!< Specifies the TIM complementary Output Compare state.
                                This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
 
-                               This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
+                               This feature can be modified afterwards using unitary functions
+                               @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
 
   uint32_t CompareValue;  /*!< Specifies the Compare value to be loaded into the Capture Compare Register.
                                This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
 
-                               This feature can be modified afterwards using unitary function LL_TIM_OC_SetCompareCHx (x=1..6).*/
+                               This feature can be modified afterwards using unitary function
+                               LL_TIM_OC_SetCompareCHx (x=1..6).*/
 
   uint32_t OCPolarity;    /*!< Specifies the output polarity.
                                This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_OC_SetPolarity().*/
 
   uint32_t OCNPolarity;   /*!< Specifies the complementary output polarity.
                                This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_OC_SetPolarity().*/
 
 
   uint32_t OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
                                This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetIdleState().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_OC_SetIdleState().*/
 
   uint32_t OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
                                This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetIdleState().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_OC_SetIdleState().*/
 } LL_TIM_OC_InitTypeDef;
 
 /**
@@ -294,22 +309,26 @@
   uint32_t ICPolarity;    /*!< Specifies the active edge of the input signal.
                                This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_IC_SetPolarity().*/
 
   uint32_t ICActiveInput; /*!< Specifies the input.
                                This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_IC_SetActiveInput().*/
 
   uint32_t ICPrescaler;   /*!< Specifies the Input Capture Prescaler.
                                This parameter can be a value of @ref TIM_LL_EC_ICPSC.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_IC_SetPrescaler().*/
 
   uint32_t ICFilter;      /*!< Specifies the input capture filter.
                                This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
 
-                               This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
+                               This feature can be modified afterwards using unitary function
+                               @ref LL_TIM_IC_SetFilter().*/
 } LL_TIM_IC_InitTypeDef;
 
 
@@ -321,47 +340,56 @@
   uint32_t EncoderMode;     /*!< Specifies the encoder resolution (x2 or x4).
                                  This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_SetEncoderMode().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_SetEncoderMode().*/
 
   uint32_t IC1Polarity;     /*!< Specifies the active edge of TI1 input.
                                  This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_IC_SetPolarity().*/
 
   uint32_t IC1ActiveInput;  /*!< Specifies the TI1 input source
                                  This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_IC_SetActiveInput().*/
 
   uint32_t IC1Prescaler;    /*!< Specifies the TI1 input prescaler value.
                                  This parameter can be a value of @ref TIM_LL_EC_ICPSC.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_IC_SetPrescaler().*/
 
   uint32_t IC1Filter;       /*!< Specifies the TI1 input filter.
                                  This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_IC_SetFilter().*/
 
   uint32_t IC2Polarity;      /*!< Specifies the active edge of TI2 input.
                                  This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_IC_SetPolarity().*/
 
   uint32_t IC2ActiveInput;  /*!< Specifies the TI2 input source
                                  This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_IC_SetActiveInput().*/
 
   uint32_t IC2Prescaler;    /*!< Specifies the TI2 input prescaler value.
                                  This parameter can be a value of @ref TIM_LL_EC_ICPSC.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_IC_SetPrescaler().*/
 
   uint32_t IC2Filter;       /*!< Specifies the TI2 input filter.
                                  This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
 
-                                 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
+                                 This feature can be modified afterwards using unitary function
+                                 @ref LL_TIM_IC_SetFilter().*/
 
 } LL_TIM_ENCODER_InitTypeDef;
 
@@ -374,26 +402,31 @@
   uint32_t IC1Polarity;        /*!< Specifies the active edge of TI1 input.
                                     This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
 
-                                    This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
+                                    This feature can be modified afterwards using unitary function
+                                    @ref LL_TIM_IC_SetPolarity().*/
 
   uint32_t IC1Prescaler;       /*!< Specifies the TI1 input prescaler value.
                                     Prescaler must be set to get a maximum counter period longer than the
                                     time interval between 2 consecutive changes on the Hall inputs.
                                     This parameter can be a value of @ref TIM_LL_EC_ICPSC.
 
-                                    This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
+                                    This feature can be modified afterwards using unitary function
+                                    @ref LL_TIM_IC_SetPrescaler().*/
 
   uint32_t IC1Filter;          /*!< Specifies the TI1 input filter.
-                                    This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
+                                    This parameter can be a value of
+                                    @ref TIM_LL_EC_IC_FILTER.
 
-                                    This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
+                                    This feature can be modified afterwards using unitary function
+                                    @ref LL_TIM_IC_SetFilter().*/
 
   uint32_t CommutationDelay;   /*!< Specifies the compare value to be loaded into the Capture Compare Register.
                                     A positive pulse (TRGO event) is generated with a programmable delay every time
                                     a change occurs on the Hall inputs.
                                     This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.
 
-                                    This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetCompareCH2().*/
+                                    This feature can be modified afterwards using unitary function
+                                    @ref LL_TIM_OC_SetCompareCH2().*/
 } LL_TIM_HALLSENSOR_InitTypeDef;
 
 /**
@@ -404,79 +437,99 @@
   uint32_t OSSRState;            /*!< Specifies the Off-State selection used in Run mode.
                                       This parameter can be a value of @ref TIM_LL_EC_OSSR
 
-                                      This feature can be modified afterwards using unitary function @ref LL_TIM_SetOffStates()
+                                      This feature can be modified afterwards using unitary function
+                                      @ref LL_TIM_SetOffStates()
 
-                                      @note This bit-field cannot be modified as long as LOCK level 2 has been programmed. */
+                                      @note This bit-field cannot be modified as long as LOCK level 2 has been
+                                       programmed. */
 
   uint32_t OSSIState;            /*!< Specifies the Off-State used in Idle state.
                                       This parameter can be a value of @ref TIM_LL_EC_OSSI
 
-                                      This feature can be modified afterwards using unitary function @ref LL_TIM_SetOffStates()
+                                      This feature can be modified afterwards using unitary function
+                                      @ref LL_TIM_SetOffStates()
 
-                                      @note This bit-field cannot be modified as long as LOCK level 2 has been programmed. */
+                                      @note This bit-field cannot be modified as long as LOCK level 2 has been
+                                      programmed. */
 
   uint32_t LockLevel;            /*!< Specifies the LOCK level parameters.
                                       This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL
 
-                                      @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR register
-                                            has been written, their content is frozen until the next reset.*/
+                                      @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR
+                                      register has been written, their content is frozen until the next reset.*/
 
   uint8_t DeadTime;              /*!< Specifies the delay time between the switching-off and the
                                       switching-on of the outputs.
                                       This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF.
 
-                                      This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetDeadTime()
+                                      This feature can be modified afterwards using unitary function
+                                      @ref LL_TIM_OC_SetDeadTime()
 
-                                      @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been programmed. */
+                                      @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been
+                                       programmed. */
 
   uint16_t BreakState;           /*!< Specifies whether the TIM Break input is enabled or not.
                                       This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE
 
-                                      This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK()
+                                      This feature can be modified afterwards using unitary functions
+                                      @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK()
 
-                                      @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
+                                      @note This bit-field can not be modified as long as LOCK level 1 has been
+                                      programmed. */
 
   uint32_t BreakPolarity;        /*!< Specifies the TIM Break Input pin polarity.
                                       This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARITY
 
-                                      This feature can be modified afterwards using unitary function @ref LL_TIM_ConfigBRK()
+                                      This feature can be modified afterwards using unitary function
+                                      @ref LL_TIM_ConfigBRK()
 
-                                      @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
+                                      @note This bit-field can not be modified as long as LOCK level 1 has been
+                                      programmed. */
 
   uint32_t BreakFilter;          /*!< Specifies the TIM Break Filter.
                                       This parameter can be a value of @ref TIM_LL_EC_BREAK_FILTER
 
-                                      This feature can be modified afterwards using unitary function @ref LL_TIM_ConfigBRK()
+                                      This feature can be modified afterwards using unitary function
+                                      @ref LL_TIM_ConfigBRK()
 
-                                      @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
+                                      @note This bit-field can not be modified as long as LOCK level 1 has been
+                                      programmed. */
 
   uint32_t Break2State;          /*!< Specifies whether the TIM Break2 input is enabled or not.
                                       This parameter can be a value of @ref TIM_LL_EC_BREAK2_ENABLE
 
-                                      This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableBRK2() or @ref LL_TIM_DisableBRK2()
+                                      This feature can be modified afterwards using unitary functions
+                                      @ref LL_TIM_EnableBRK2() or @ref LL_TIM_DisableBRK2()
 
-                                      @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
+                                      @note This bit-field can not be modified as long as LOCK level 1 has been
+                                      programmed. */
 
   uint32_t Break2Polarity;        /*!< Specifies the TIM Break2 Input pin polarity.
                                       This parameter can be a value of @ref TIM_LL_EC_BREAK2_POLARITY
 
-                                      This feature can be modified afterwards using unitary function @ref LL_TIM_ConfigBRK2()
+                                      This feature can be modified afterwards using unitary function
+                                      @ref LL_TIM_ConfigBRK2()
 
-                                      @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
+                                      @note This bit-field can not be modified as long as LOCK level 1 has been
+                                      programmed. */
 
   uint32_t Break2Filter;          /*!< Specifies the TIM Break2 Filter.
                                       This parameter can be a value of @ref TIM_LL_EC_BREAK2_FILTER
 
-                                      This feature can be modified afterwards using unitary function @ref LL_TIM_ConfigBRK2()
+                                      This feature can be modified afterwards using unitary function
+                                      @ref LL_TIM_ConfigBRK2()
 
-                                      @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
+                                      @note This bit-field can not be modified as long as LOCK level 1 has been
+                                      programmed. */
 
   uint32_t AutomaticOutput;      /*!< Specifies whether the TIM Automatic Output feature is enabled or not.
                                       This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTPUT_ENABLE
 
-                                      This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput()
+                                      This feature can be modified afterwards using unitary functions
+                                      @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput()
 
-                                      @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
+                                      @note This bit-field can not be modified as long as LOCK level 1 has been
+                                      programmed. */
 } LL_TIM_BDTR_InitTypeDef;
 
 /**
@@ -1032,10 +1085,10 @@
 #define LL_TIM_DMABURST_BASEADDR_CCMR3         (TIM_DCR_DBA_4 | TIM_DCR_DBA_2 | TIM_DCR_DBA_0)                  /*!< TIMx_CCMR3 register is the DMA base address for DMA burst */
 #define LL_TIM_DMABURST_BASEADDR_CCR5          (TIM_DCR_DBA_4 | TIM_DCR_DBA_2 | TIM_DCR_DBA_1)                  /*!< TIMx_CCR5 register is the DMA base address for DMA burst */
 #define LL_TIM_DMABURST_BASEADDR_CCR6          (TIM_DCR_DBA_4 | TIM_DCR_DBA_2 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0)  /*!< TIMx_CCR6 register is the DMA base address for DMA burst */
-#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE)
+#if defined(TIM1_AF1_BKINE)&&defined(TIM1_AF2_BKINE)
 #define LL_TIM_DMABURST_BASEADDR_AF1           (TIM_DCR_DBA_4 | TIM_DCR_DBA_3)                                  /*!< TIMx_AF1 register is the DMA base address for DMA burst */
 #define LL_TIM_DMABURST_BASEADDR_AF2           (TIM_DCR_DBA_4 | TIM_DCR_DBA_3 | TIM_DCR_DBA_0)                  /*!< TIMx_AF2 register is the DMA base address for DMA burst */
-#endif /* TIM_AF1_BKINE && TIM_AF2_BKINE */
+#endif /* TIM1_AF1_BKINE && TIM1_AF2_BKINE */
 /**
   * @}
   */
@@ -1162,10 +1215,17 @@
   * @retval DTG[0:7]
   */
 #define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__)  \
-  ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))    ? (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__)))  & DT_DELAY_1) :                                               \
-    (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))  ? (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\
-    (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))  ? (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\
-    (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\
+  ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))    ?  \
+    (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__)))  & DT_DELAY_1) :      \
+    (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))  ?  \
+    (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__),   \
+                                                 (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\
+    (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))  ?  \
+    (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__),  \
+                                                 (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\
+    (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ?  \
+    (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__),  \
+                                                 (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\
     0U)
 
 /**
@@ -1190,7 +1250,8 @@
   ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U)
 
 /**
-  * @brief  HELPER macro calculating the compare value required to achieve the required timer output compare active/inactive delay.
+  * @brief  HELPER macro calculating the compare value required to achieve the required timer output compare
+  *         active/inactive delay.
   * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10);
   * @param  __TIMCLK__ timer input clock frequency (in Hz)
   * @param  __PSC__ prescaler
@@ -1202,7 +1263,8 @@
               / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
 
 /**
-  * @brief  HELPER macro calculating the auto-reload value to achieve the required pulse duration (when the timer operates in one pulse mode).
+  * @brief  HELPER macro calculating the auto-reload value to achieve the required pulse duration
+  *         (when the timer operates in one pulse mode).
   * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20);
   * @param  __TIMCLK__ timer input clock frequency (in Hz)
   * @param  __PSC__ prescaler
@@ -1459,7 +1521,8 @@
 }
 
 /**
-  * @brief  Set the division ratio between the timer clock  and the sampling clock used by the dead-time generators (when supported) and the digital filters.
+  * @brief  Set the division ratio between the timer clock  and the sampling clock used by the dead-time generators
+  *         (when supported) and the digital filters.
   * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
   *       whether or not the clock division feature is supported by the timer
   *       instance.
@@ -1477,7 +1540,8 @@
 }
 
 /**
-  * @brief  Get the actual division ratio between the timer clock  and the sampling clock used by the dead-time generators (when supported) and the digital filters.
+  * @brief  Get the actual division ratio between the timer clock  and the sampling clock used by the dead-time
+  *         generators (when supported) and the digital filters.
   * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
   *       whether or not the clock division feature is supported by the timer
   *       instance.
@@ -1619,7 +1683,8 @@
 
 /**
   * @brief  Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31).
-  * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read in an atomic way.
+  * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read
+  *       in an atomic way.
   * @rmtoll CR1          UIFREMAP      LL_TIM_EnableUIFRemap
   * @param  TIMx Timer instance
   * @retval None
@@ -1924,7 +1989,7 @@
 {
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
-  MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]),  Mode << SHIFT_TAB_OCxx[iChannel]);
+  MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]);
 }
 
 /**
@@ -1963,7 +2028,7 @@
 {
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
-  return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
+  return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
 }
 
 /**
@@ -2341,7 +2406,8 @@
 }
 
 /**
-  * @brief  Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of the Ocx and OCxN signals).
+  * @brief  Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of
+  *         the Ocx and OCxN signals).
   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
   *       dead-time insertion feature is supported by a timer instance.
   * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter
@@ -2608,7 +2674,8 @@
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
   MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
-             ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S))  << SHIFT_TAB_ICxx[iChannel]);
+             ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S))                \
+             << SHIFT_TAB_ICxx[iChannel]);
   MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
              (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
 }
@@ -3554,9 +3621,9 @@
   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4
   *         @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR
   *         @arg @ref LL_TIM_DMABURST_BASEADDR_OR
-  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR3 
-  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR5  
-  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR6  
+  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR3
+  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR5
+  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR6
   *         @arg @ref LL_TIM_DMABURST_BASEADDR_AF1  (*)
   *         @arg @ref LL_TIM_DMABURST_BASEADDR_AF2  (*)
   *         (*) value not defined in all devices
@@ -3897,7 +3964,8 @@
 }
 
 /**
-  * @brief  Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set (Capture/Compare 1 interrupt is pending).
+  * @brief  Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set
+  *         (Capture/Compare 1 interrupt is pending).
   * @rmtoll SR           CC1OF         LL_TIM_IsActiveFlag_CC1OVR
   * @param  TIMx Timer instance
   * @retval State of bit (1 or 0).
@@ -3919,7 +3987,8 @@
 }
 
 /**
-  * @brief  Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set (Capture/Compare 2 over-capture interrupt is pending).
+  * @brief  Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set
+  *         (Capture/Compare 2 over-capture interrupt is pending).
   * @rmtoll SR           CC2OF         LL_TIM_IsActiveFlag_CC2OVR
   * @param  TIMx Timer instance
   * @retval State of bit (1 or 0).
@@ -3941,7 +4010,8 @@
 }
 
 /**
-  * @brief  Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set (Capture/Compare 3 over-capture interrupt is pending).
+  * @brief  Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set
+  *         (Capture/Compare 3 over-capture interrupt is pending).
   * @rmtoll SR           CC3OF         LL_TIM_IsActiveFlag_CC3OVR
   * @param  TIMx Timer instance
   * @retval State of bit (1 or 0).
@@ -3963,7 +4033,8 @@
 }
 
 /**
-  * @brief  Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set (Capture/Compare 4 over-capture interrupt is pending).
+  * @brief  Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set
+  *         (Capture/Compare 4 over-capture interrupt is pending).
   * @rmtoll SR           CC4OF         LL_TIM_IsActiveFlag_CC4OVR
   * @param  TIMx Timer instance
   * @retval State of bit (1 or 0).
@@ -4270,7 +4341,7 @@
   * @}
   */
 
-/** @defgroup TIM_LL_EF_DMA_Management DMA-Management
+/** @defgroup TIM_LL_EF_DMA_Management DMA Management
   * @{
   */
 /**
@@ -4656,4 +4727,3 @@
 #endif
 
 #endif /* __STM32F7xx_LL_TIM_H */
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_usart.h b/Inc/stm32f7xx_ll_usart.h
index 7a3cdaf..ec70a5d 100644
--- a/Inc/stm32f7xx_ll_usart.h
+++ b/Inc/stm32f7xx_ll_usart.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -594,7 +593,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableInStopMode(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_UESM);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_UESM);
 }
 
 /**
@@ -608,7 +607,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableInStopMode(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_UESM);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_UESM);
 }
 
 /**
@@ -634,7 +633,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableClockInStopMode(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR3, USART_CR3_UCESM);
+  ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_UCESM);
 }
 
 /**
@@ -646,7 +645,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableClockInStopMode(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR3, USART_CR3_UCESM);
+  ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_UCESM);
 }
 
 /**
@@ -670,7 +669,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableDirectionRx(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_RE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RE);
 }
 
 /**
@@ -681,7 +680,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableDirectionRx(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_RE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RE);
 }
 
 /**
@@ -692,7 +691,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableDirectionTx(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_TE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TE);
 }
 
 /**
@@ -703,7 +702,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableDirectionTx(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_TE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TE);
 }
 
 /**
@@ -721,7 +720,7 @@
   */
 __STATIC_INLINE void LL_USART_SetTransferDirection(USART_TypeDef *USARTx, uint32_t TransferDirection)
 {
-  MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection);
+  ATOMIC_MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection);
 }
 
 /**
@@ -840,7 +839,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableMuteMode(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_MME);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_MME);
 }
 
 /**
@@ -851,7 +850,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableMuteMode(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_MME);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_MME);
 }
 
 /**
@@ -1828,7 +1827,7 @@
   */
 __STATIC_INLINE void LL_USART_SetIrdaPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue)
 {
-  MODIFY_REG(USARTx->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)PrescalerValue);
+  MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, (uint16_t)PrescalerValue);
 }
 
 /**
@@ -1975,7 +1974,7 @@
   */
 __STATIC_INLINE void LL_USART_SetSmartcardPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue)
 {
-  MODIFY_REG(USARTx->GTPR, (uint16_t)USART_GTPR_PSC, (uint16_t)PrescalerValue);
+  MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, (uint16_t)PrescalerValue);
 }
 
 /**
@@ -2004,7 +2003,7 @@
   */
 __STATIC_INLINE void LL_USART_SetSmartcardGuardTime(USART_TypeDef *USARTx, uint32_t GuardTime)
 {
-  MODIFY_REG(USARTx->GTPR, (uint16_t)USART_GTPR_GT, (uint16_t)(GuardTime << USART_GTPR_GT_Pos));
+  MODIFY_REG(USARTx->GTPR, USART_GTPR_GT, (uint16_t)(GuardTime << USART_GTPR_GT_Pos));
 }
 
 /**
@@ -3020,7 +3019,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_IDLE(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_IDLEIE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_IDLEIE);
 }
 
 /**
@@ -3031,7 +3030,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_RXNE(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_RXNEIE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RXNEIE);
 }
 
 /**
@@ -3042,7 +3041,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_TC(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_TCIE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TCIE);
 }
 
 /**
@@ -3053,7 +3052,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_TXE(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_TXEIE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TXEIE);
 }
 
 /**
@@ -3064,7 +3063,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_PE(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_PEIE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_PEIE);
 }
 
 /**
@@ -3075,7 +3074,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_CM(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_CMIE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_CMIE);
 }
 
 /**
@@ -3086,7 +3085,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_RTO(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_RTOIE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RTOIE);
 }
 
 /**
@@ -3099,7 +3098,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_EOB(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR1, USART_CR1_EOBIE);
+  ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_EOBIE);
 }
 
 /**
@@ -3127,7 +3126,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_ERROR(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR3, USART_CR3_EIE);
+  ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_EIE);
 }
 
 /**
@@ -3140,7 +3139,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR3, USART_CR3_CTSIE);
+  ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_CTSIE);
 }
 
 #if defined(USART_CR1_UESM)
@@ -3155,7 +3154,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_WKUP(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR3, USART_CR3_WUFIE);
+  ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_WUFIE);
 }
 
 #endif /* USART_CR3_WUFIE */
@@ -3172,7 +3171,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableIT_TCBGT(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
+  ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
 }
 #endif /* USART_TCBGT_SUPPORT */
 
@@ -3184,7 +3183,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_IDLE(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_IDLEIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_IDLEIE);
 }
 
 /**
@@ -3195,7 +3194,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_RXNE(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_RXNEIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RXNEIE);
 }
 
 /**
@@ -3206,7 +3205,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_TC(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_TCIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TCIE);
 }
 
 /**
@@ -3217,7 +3216,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_TXE(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_TXEIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TXEIE);
 }
 
 /**
@@ -3228,7 +3227,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_PE(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_PEIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_PEIE);
 }
 
 /**
@@ -3239,7 +3238,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_CM(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_CMIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_CMIE);
 }
 
 /**
@@ -3250,7 +3249,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_RTO(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_RTOIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RTOIE);
 }
 
 /**
@@ -3263,7 +3262,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_EOB(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR1, USART_CR1_EOBIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_EOBIE);
 }
 
 /**
@@ -3291,7 +3290,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_ERROR(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR3, USART_CR3_EIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_EIE);
 }
 
 /**
@@ -3304,7 +3303,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE);
 }
 
 #if defined(USART_CR1_UESM)
@@ -3319,7 +3318,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_WKUP(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR3, USART_CR3_WUFIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_WUFIE);
 }
 
 #endif /* USART_CR3_WUFIE */
@@ -3336,7 +3335,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableIT_TCBGT(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
+  ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
 }
 #endif /* USART_TCBGT_SUPPORT */
 
@@ -3516,7 +3515,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableDMAReq_RX(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR3, USART_CR3_DMAR);
+  ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAR);
 }
 
 /**
@@ -3527,7 +3526,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableDMAReq_RX(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR3, USART_CR3_DMAR);
+  ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAR);
 }
 
 /**
@@ -3549,7 +3548,7 @@
   */
 __STATIC_INLINE void LL_USART_EnableDMAReq_TX(USART_TypeDef *USARTx)
 {
-  SET_BIT(USARTx->CR3, USART_CR3_DMAT);
+  ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAT);
 }
 
 /**
@@ -3560,7 +3559,7 @@
   */
 __STATIC_INLINE void LL_USART_DisableDMAReq_TX(USART_TypeDef *USARTx)
 {
-  CLEAR_BIT(USARTx->CR3, USART_CR3_DMAT);
+  ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAT);
 }
 
 /**
@@ -3796,4 +3795,3 @@
 
 #endif /* STM32F7xx_LL_USART_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_usb.h b/Inc/stm32f7xx_ll_usb.h
index 95042b2..ba38549 100644
--- a/Inc/stm32f7xx_ll_usb.h
+++ b/Inc/stm32f7xx_ll_usb.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -23,7 +22,7 @@
 
 #ifdef __cplusplus
 extern "C" {
-#endif
+#endif /* __cplusplus */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal_def.h"
@@ -80,6 +79,7 @@
   HC_DATATGLERR
 } USB_OTG_HCStateTypeDef;
 
+
 /**
   * @brief  USB Instance Initialization Structure definition
   */
@@ -94,14 +94,15 @@
                                          This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
 
   uint32_t speed;                   /*!< USB Core speed.
-                                         This parameter can be any value of @ref USB_Core_Speed                 */
+                                         This parameter can be any value of @ref PCD_Speed/HCD_Speed
+                                                                                 (HCD_SPEED_xxx, HCD_SPEED_xxx) */
 
   uint32_t dma_enable;              /*!< Enable or disable of the USB embedded DMA used only for OTG HS.        */
 
   uint32_t ep0_mps;                 /*!< Set the Endpoint 0 Max Packet size.                                    */
 
   uint32_t phy_itface;              /*!< Select the used PHY interface.
-                                         This parameter can be any value of @ref USB_Core_PHY                   */
+                                         This parameter can be any value of @ref PCD_PHY_Module/HCD_PHY_Module  */
 
   uint32_t Sof_enable;              /*!< Enable or disable the output of the SOF signal.                        */
 
@@ -131,7 +132,7 @@
                                        This parameter must be a number between Min_Data = 0 and Max_Data = 1    */
 
   uint8_t   type;                 /*!< Endpoint type
-                                       This parameter can be any value of @ref USB_EP_Type_                     */
+                                       This parameter can be any value of @ref USB_LL_EP_Type                   */
 
   uint8_t   data_pid_start;       /*!< Initial data PID
                                        This parameter must be a number between Min_Data = 0 and Max_Data = 1    */
@@ -168,15 +169,16 @@
   uint8_t   ep_is_in;           /*!< Endpoint direction
                                      This parameter must be a number between Min_Data = 0 and Max_Data = 1      */
 
-  uint8_t   speed;              /*!< USB Host speed.
-                                     This parameter can be any value of @ref USB_Core_Speed_                    */
+  uint8_t   speed;              /*!< USB Host Channel speed.
+                                     This parameter can be any value of @ref HCD_Device_Speed:
+                                                                             (HCD_DEVICE_SPEED_xxx)             */
 
   uint8_t   do_ping;            /*!< Enable or disable the use of the PING protocol for HS mode.                */
 
   uint8_t   process_ping;       /*!< Execute the PING protocol for HS mode.                                     */
 
   uint8_t   ep_type;            /*!< Endpoint Type.
-                                     This parameter can be any value of @ref USB_EP_Type_                       */
+                                     This parameter can be any value of @ref USB_LL_EP_Type                     */
 
   uint16_t  max_packet;         /*!< Endpoint Max packet size.
                                      This parameter must be a number between Min_Data = 0 and Max_Data = 64KB   */
@@ -265,7 +267,6 @@
 #define USB_OTG_ULPI_PHY                       1U
 #define USB_OTG_EMBEDDED_PHY                   2U
 #define USB_OTG_HS_EMBEDDED_PHY                3U
-
 #if !defined  (USB_HS_PHYC_TUNE_VALUE)
 #define USB_HS_PHYC_TUNE_VALUE        0x00000F13U /*!< Value of USB HS PHY Tune */
 #endif /* USB_HS_PHYC_TUNE_VALUE */
@@ -321,10 +322,10 @@
 /** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS
   * @{
   */
-#define EP_MPS_64                        0U
-#define EP_MPS_32                        1U
-#define EP_MPS_16                        2U
-#define EP_MPS_8                         3U
+#define EP_MPS_64                              0U
+#define EP_MPS_32                              1U
+#define EP_MPS_16                              2U
+#define EP_MPS_8                               3U
 /**
   * @}
   */
@@ -398,20 +399,39 @@
 #define GRXSTS_PKTSTS_DATA_TOGGLE_ERR          5U
 #define GRXSTS_PKTSTS_CH_HALTED                7U
 
+#define TEST_J                                 1U
+#define TEST_K                                 2U
+#define TEST_SE0_NAK                           3U
+#define TEST_PACKET                            4U
+#define TEST_FORCE_EN                          5U
+
 #define USBx_PCGCCTL    *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE)
 #define USBx_HPRT0      *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_HOST_PORT_BASE)
 
 #define USBx_DEVICE     ((USB_OTG_DeviceTypeDef *)(USBx_BASE + USB_OTG_DEVICE_BASE))
-#define USBx_INEP(i)    ((USB_OTG_INEndpointTypeDef *)(USBx_BASE + USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE)))
-#define USBx_OUTEP(i)   ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE + USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE)))
+#define USBx_INEP(i)    ((USB_OTG_INEndpointTypeDef *)(USBx_BASE\
+                                                       + USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE)))
+
+#define USBx_OUTEP(i)   ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE\
+                                                        + USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE)))
+
 #define USBx_DFIFO(i)   *(__IO uint32_t *)(USBx_BASE + USB_OTG_FIFO_BASE + ((i) * USB_OTG_FIFO_SIZE))
 
 #define USBx_HOST       ((USB_OTG_HostTypeDef *)(USBx_BASE + USB_OTG_HOST_BASE))
-#define USBx_HC(i)      ((USB_OTG_HostChannelTypeDef *)(USBx_BASE + USB_OTG_HOST_CHANNEL_BASE + ((i) * USB_OTG_HOST_CHANNEL_SIZE)))
-#define USBPHYC         ((USBPHYC_GlobalTypeDef *)((uint32_t )USB_PHY_HS_CONTROLLER_BASE))
+#define USBx_HC(i)      ((USB_OTG_HostChannelTypeDef *)(USBx_BASE\
+                                                        + USB_OTG_HOST_CHANNEL_BASE\
+                                                        + ((i) * USB_OTG_HOST_CHANNEL_SIZE)))
+
+#ifdef USB_HS_PHYC /* Legacy name for USBPHYC defined in CMSIS device but USBCPHYC used in USB driver to determine if peripheral is present or not */
+#define USBPHYC   USB_HS_PHYC
+#endif
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
 #define EP_ADDR_MSK                            0xFU
+
+#ifndef USE_USB_DOUBLE_BUFFER
+#define USE_USB_DOUBLE_BUFFER                  1U
+#endif /* USE_USB_DOUBLE_BUFFER */
 /**
   * @}
   */
@@ -511,9 +531,7 @@
 
 #ifdef __cplusplus
 }
-#endif
+#endif /* __cplusplus */
 
 
 #endif /* STM32F7xx_LL_USB_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_utils.h b/Inc/stm32f7xx_ll_utils.h
index fdf925c..4f1fb99 100644
--- a/Inc/stm32f7xx_ll_utils.h
+++ b/Inc/stm32f7xx_ll_utils.h
@@ -18,13 +18,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -303,4 +302,3 @@
 
 #endif /* __STM32F7xx_LL_UTILS_H */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Inc/stm32f7xx_ll_wwdg.h b/Inc/stm32f7xx_ll_wwdg.h
index 1661630..8d9096f 100644
--- a/Inc/stm32f7xx_ll_wwdg.h
+++ b/Inc/stm32f7xx_ll_wwdg.h
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -315,5 +314,3 @@
 #endif
 
 #endif /* STM32F7xx_LL_WWDG_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/License.md b/License.md
index 33f2eff..54d7529 100644
--- a/License.md
+++ b/License.md
@@ -1,3 +1,11 @@
-# Copyright (c) 2017 STMicroelectronics
+Copyright 2017 STMicroelectronics. All rights reserved.
 
-This software component is licensed by STMicroelectronics under the **BSD-3-Clause** license. You may not use this file except in compliance with this license. You may obtain a copy of the license [here](https://opensource.org/licenses/BSD-3-Clause).
\ No newline at end of file
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
index c8a2012..6b41c3f 100644
--- a/README.md
+++ b/README.md
@@ -1,31 +1,26 @@
 # STM32CubeF7 HAL Driver MCU Component
 
+![latest tag](https://img.shields.io/github/v/tag/STMicroelectronics/stm32f7xx_hal_driver.svg?color=brightgreen)
+
 ## Overview
 
-**STM32Cube** is an STMicroelectronics original initiative to ease the developers life by reducing efforts, time and cost.
+**STM32Cube** is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost.
 
-**STM32Cube** covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform, delivered for each STM32 series.
+**STM32Cube** covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform delivered for each STM32 series.
    * The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product.
-   * The STM32 HAL-LL drivers : an abstraction drivers layer, the API ensuring maximized portability across the STM32 portfolio.
-   * The BSP Drivers of each evaluation or demonstration board provided by this STM32 series.
-   * A consistent set of middlewares components such as RTOS, USB, FatFS, Graphics, STM32_TouchSensing_Library...
-   * A full set of software projects (basic examples, applications or demonstrations) for each board provided by this STM32 series.
+   * The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio.
+   * The BSP drivers of each evaluation, demonstration or nucleo board provided for this STM32 series.
+   * A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library...
+   * A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series.
 
 Two models of publication are proposed for the STM32Cube embedded software:
-   * The monolithic **MCU Package** : all STM32Cube software modules of one STM32 series are present (Drivers, Middlewares, Projects, Utilities) in the repo (usual name **STM32Cubexx**, xx corresponding to the STM32 series).
-   * The **MCU component** : progressively from November 2019, each STM32Cube software module being part of the STM32Cube MCU Package, will be delivered as an individual repo, allowing the user to select and get only the required software functions.
+   * The monolithic **MCU Package**: all STM32Cube software modules of one STM32 series are present (Drivers, Middleware, Projects, Utilities) in the repository (usual name **STM32Cubexx**, xx corresponding to the STM32 series).
+   * The **MCU components**: each STM32Cube software module being part of the STM32Cube MCU Package, is delivered as an individual repository, allowing the user to select and get only the required software functions.
 
 ## Description
 
 This **stm32f7xx_hal_driver** MCU component repo is one element of the STM32CubeF7 MCU embedded software package, providing the **HAL-LL Drivers** part.
 
-## License
-
-Copyright (c) 2017 STMicroelectronics.
-
-This software component is licensed by STMicroelectronics under BSD-3-Clause license. You may not use this file except in compliance with the License. 
-You may obtain a copy of the License [here](https://opensource.org/licenses/BSD-3-Clause).
-
 ## Release note
 
 Details about the content of this release are available in the release note [here](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/stm32f7xx_hal_driver/blob/master/Release_Notes.html).
@@ -41,11 +36,10 @@
 Tag v1.2.7     | Tag v1.2.4      | Tag v5.4.0_cm7 | Tag v1.15.0 (and following, if any, till next tag)
 Tag v1.2.8     | Tag v1.2.5      | Tag v5.4.0_cm7 | Tag v1.16.0 (and following, if any, till next tag)
 Tag v1.2.9     | Tag v1.2.6      | Tag v5.4.0_cm7 | Tag v1.16.1 (and following, if any, till next tag)
+Tag v1.2.10    | Tag v1.2.7      | Tag v5.4.0_cm7 | Tag v1.16.2 (and following, if any, till next tag)
 
 The full **STM32CubeF7** MCU package is available [here](https://github.com/STMicroelectronics/STM32CubeF7).
 
 ## Troubleshooting
 
-If you have any issue with the **Software content** of this repository, you can file an issue into the firmware repository [STM32CubeF7](https://github.com/STMicroelectronics/STM32CubeF7/issues/new/choose).
-
-For any other question related to the product, the tools, the environment, you can submit a topic on the [ST Community/STM32 MCUs forum](https://community.st.com/s/group/0F90X000000AXsASAW/stm32-mcus).
+Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) guide.
diff --git a/Release_Notes.html b/Release_Notes.html
index 8124a83..ba654a5 100644
--- a/Release_Notes.html
+++ b/Release_Notes.html
@@ -1,46 +1,30 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head>
-
-
-
-
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<meta name="ProgId" content="Word.Document">
-<meta name="Generator" content="Microsoft Word 15">
-<meta name="Originator" content="Microsoft Word 15">
-<link rel="File-List" href="Release_Notes_files/filelist.xml">
-<link rel="Edit-Time-Data" href="Release_Notes_files/editdata.mso"><!--[if !mso]>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+  xmlns:o="urn:schemas-microsoft-com:office:office"
+  xmlns:w="urn:schemas-microsoft-com:office:word"
+  xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+  xmlns="http://www.w3.org/TR/REC-html40">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;
+      charset=windows-1252">
+    <meta name="ProgId" content="Word.Document">
+    <meta name="Generator" content="Microsoft Word 15">
+    <meta name="Originator" content="Microsoft Word 15">
+    <link rel="File-List" href="Release_Notes_files/filelist.xml">
+    <link rel="Edit-Time-Data" href="Release_Notes_files/editdata.mso">
+    <!--[if !mso]>
 <style>
 v\:* {behavior:url(#default#VML);}
 o\:* {behavior:url(#default#VML);}
 w\:* {behavior:url(#default#VML);}
 .shape {behavior:url(#default#VML);}
 </style>
-<![endif]--><title>Release Notes for STM32F7xx HAL Drivers</title><!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Author>Samir BEN ABID</o:Author>
-  <o:LastAuthor>Samir BEN ABID</o:LastAuthor>
-  <o:Revision>3</o:Revision>
-  <o:TotalTime>2</o:TotalTime>
-  <o:Created>2021-02-12T13:29:00Z</o:Created>
-  <o:LastSaved>2021-02-12T13:31:00Z</o:LastSaved>
-  <o:Pages>29</o:Pages>
-  <o:Words>9758</o:Words>
-  <o:Characters>55625</o:Characters>
-  <o:Lines>463</o:Lines>
-  <o:Paragraphs>130</o:Paragraphs>
-  <o:CharactersWithSpaces>65253</o:CharactersWithSpaces>
-  <o:Version>16.00</o:Version>
- </o:DocumentProperties>
- <o:OfficeDocumentSettings>
-  <o:AllowPNG/>
- </o:OfficeDocumentSettings>
-</xml><![endif]-->
-
-
-
-<link rel="themeData" href="Release_Notes_files/themedata.thmx">
-<link rel="colorSchemeMapping" href="Release_Notes_files/colorschememapping.xml"><!--[if gte mso 9]><xml>
+<![endif]-->
+    <title>Release Notes for STM32F7xx HAL Drivers</title>
+    <link rel="themeData" href="Release_Notes_files/themedata.thmx">
+    <link rel="colorSchemeMapping"
+      href="Release_Notes_files/colorschememapping.xml">
+    <!--[if gte mso 9]><xml>
  <w:WordDocument>
   <w:View>Print</w:View>
   <w:TrackMoves>false</w:TrackMoves>
@@ -649,8 +633,7 @@
    Name="Smart Link"/>
  </w:LatentStyles>
 </xml><![endif]-->
-
-<style>
+    <style>
 <!--
  /* Font Definitions */
  @font-face
@@ -2465,2707 +2448,15252 @@
 	font-family:"Times New Roman",serif;}
 </style>
 <![endif]-->
-
-<meta content="MCD Application Team" name="author"><!--[if gte mso 9]><xml>
+    <meta content="MCD Application Team" name="author">
+    <!--[if gte mso 9]><xml>
  <o:shapedefaults v:ext="edit" spidmax="1026"/>
 </xml><![endif]--><!--[if gte mso 9]><xml>
  <o:shapelayout v:ext="edit">
   <o:idmap v:ext="edit" data="1"/>
- </o:shapelayout></xml><![endif]--></head><body lang="EN-US" link="blue" vlink="blue">
+ </o:shapelayout></xml><![endif]-->
+  </head>
+  <body link="blue" lang="EN-US" vlink="blue">
+    <div class="WordSection1">
+      <div>
+        <div>
+          <p class="MsoNormal" style=""><span style="font-family:
+              &quot;Arial&quot;,sans-serif;" lang="FR"><o:p>&nbsp;</o:p></span></p>
+          <div align="center">
+            <table class="MsoNormalTable" style="width: 675pt;"
+              cellspacing="0" cellpadding="0" border="0" width="900">
+              <tbody>
+                <tr style="">
+                  <td style="padding: 0in;" valign="top">
+                    <table class="MsoNormalTable" style="width: 675pt;"
+                      cellspacing="0" cellpadding="0" border="0"
+                      width="900">
+                      <tbody>
+                        <tr style="">
+                          <td style="padding: 0in 5.4pt;" valign="top">
+                            <p class="MsoNormal" style=""><span
+                                style="font-size: 8pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                blue;"><a
+                                  href="../../Release_Notes.html">Back
+                                  to Release page</a></span><span
+                                style="font-size: 10pt;"><o:p></o:p></span></p>
+                          </td>
+                        </tr>
+                        <tr style="">
+                          <td style="padding: 1.5pt;">
+                            <h1 style="margin-bottom: 0.25in;
+                              text-align: center;" align="center"><span
+                                style="font-size: 20pt; font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                rgb(51, 102, 255);">Release Notes for
+                                STM32F7xx HAL Drivers</span><span
+                                style="font-size: 20pt; font-family:
+                                &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></h1>
+                            <p class="MsoNormal" style="text-align:
+                              center;" align="center"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                black;">Copyright 2017
+                                STMicroelectronics</span><span
+                                style="color: black;"><u1:p></u1:p><o:p></o:p></span></p>
+                            <p class="MsoNormal" style="text-align:
+                              center;" align="center"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                black;"><img id="_x0000_i1040"
+                                  src="_htmresc/st_logo.png" border="0"
+                                  height="81" width="109"></span><span
+                                style="font-size: 10pt;"><o:p></o:p></span></p>
+                          </td>
+                        </tr>
+                      </tbody>
+                    </table>
+                    <p class="MsoNormal" style=""><span
+                        style="font-family:
+                        &quot;Arial&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                        The&nbsp;hardware abstraction layer (HAL)
+                        provides low level drivers and the hardware
+                        interfacing methods to interact with upper
+                        layer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                        <br>
+                      </span></p>
+                    <p class="MsoNormal" style="margin-left: 0px; width:
+                      1571px;"><span style="font-family:
+                        &quot;Arial&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                        (application, libraries and stacks). &nbsp;It
+                        includes a complete set of ready-to-use APIs,
+                        that are feature-oriented instead of IP-Oriented
+                        to</span></p>
+                    <p class="MsoNormal" style="margin-left: 0px; width:
+                      1571px;"><span style="font-family:
+                        &quot;Arial&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                      </span><span style="font-family:
+                        &quot;Arial&quot;,sans-serif;">simplify user
+                        application development.</span></p>
+                    <p class="MsoNormal" style="margin-left: 0px; width:
+                      1571px;"><span style="font-family:
+                        &quot;Arial&quot;,sans-serif;"><br>
+                      </span> <span style="font-family:
+                        &quot;Arial&quot;,sans-serif; display: none;"><o:p></o:p></span></p>
+                    <table class="MsoNormalTable" style="width: 1551px;
+                      margin-left: 31.5pt; height: 44887px;"
+                      cellpadding="0" border="0">
+                      <tbody>
+                        <tr>
+                          <td style="padding: 0in;" valign="top">
+                            <h2 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-left: 0px; width:
+                              1277px;"><span style="font-size: 12pt;
+                                color: white;">Update History</span><span
+                                style="color: black;"> </span><span
+                                style=""><o:p></o:p></span></h2>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt; width:
+                              272px;"><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.10/ 22-November-2021</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; width: 1416px;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes<br>
+                                  </span></u></b>
+                              <meta http-equiv="Content-Type"
+                                content="text/html;
+                                charset=windows-1252">
+                            </p>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; width: 1416px;">
+                              <meta name="ProgId"
+                                content="Word.Document">
+                              <meta name="Generator" content="Microsoft
+                                Word 15">
+                              <meta name="Originator" content="Microsoft
+                                Word 15">
+                              <!--[if gte mso 9]><xml>
+ <o:OfficeDocumentSettings>
+  <o:AllowPNG/>
+ </o:OfficeDocumentSettings>
+</xml><![endif]-->
+                              <!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:View>Normal</w:View>
+  <w:Zoom>0</w:Zoom>
+  <w:TrackMoves/>
+  <w:TrackFormatting/>
+  <w:HyphenationZone>21</w:HyphenationZone>
+  <w:PunctuationKerning/>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:DoNotPromoteQF/>
+  <w:LidThemeOther>EN-US</w:LidThemeOther>
+  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+  <w:Compatibility>
+   <w:BreakWrappedTables/>
+   <w:SnapToGridInCell/>
+   <w:WrapTextWithPunct/>
+   <w:UseAsianBreakRules/>
+   <w:DontGrowAutofit/>
+   <w:SplitPgBreakAndParaMark/>
+   <w:EnableOpenTypeKerning/>
+   <w:DontFlipMirrorIndents/>
+   <w:OverrideTableStyleHps/>
+  </w:Compatibility>
+  <m:mathPr>
+   <m:mathFont m:val="Cambria Math"/>
+   <m:brkBin m:val="before"/>
+   <m:brkBinSub m:val="&#45;-"/>
+   <m:smallFrac m:val="off"/>
+   <m:dispDef/>
+   <m:lMargin m:val="0"/>
+   <m:rMargin m:val="0"/>
+   <m:defJc m:val="centerGroup"/>
+   <m:wrapIndent m:val="1440"/>
+   <m:intLim m:val="subSup"/>
+   <m:naryLim m:val="undOvr"/>
+  </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
+  DefSemiHidden="false" DefQFormat="false" DefPriority="99"
+  LatentStyleCount="376">
+  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
+  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 9"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 1"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 2"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 3"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 4"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 5"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 6"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 7"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 8"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="header"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footer"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index heading"/>
+  <w:LsdException Locked="false" Priority="35" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="caption"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of figures"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope return"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="line number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="page number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of authorities"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="macro"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="toa heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 5"/>
+  <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Closing"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Signature"/>
+  <w:LsdException Locked="false" Priority="1" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Default Paragraph Font"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Message Header"/>
+  <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Salutation"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Date"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Note Heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Block Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="FollowedHyperlink"/>
+  <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
+  <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Document Map"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Plain Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="E-mail Signature"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Top of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Bottom of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal (Web)"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Acronym"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Cite"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Code"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Definition"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Keyboard"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Preformatted"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Sample"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Typewriter"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Variable"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Table"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation subject"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="No List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Contemporary"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Elegant"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Professional"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Balloon Text"/>
+  <w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Theme"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
+  <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
+  <w:LsdException Locked="false" Priority="34" QFormat="true"
+   Name="List Paragraph"/>
+  <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
+  <w:LsdException Locked="false" Priority="30" QFormat="true"
+   Name="Intense Quote"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="19" QFormat="true"
+   Name="Subtle Emphasis"/>
+  <w:LsdException Locked="false" Priority="21" QFormat="true"
+   Name="Intense Emphasis"/>
+  <w:LsdException Locked="false" Priority="31" QFormat="true"
+   Name="Subtle Reference"/>
+  <w:LsdException Locked="false" Priority="32" QFormat="true"
+   Name="Intense Reference"/>
+  <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
+  <w:LsdException Locked="false" Priority="37" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Bibliography"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
+  <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
+  <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
+  <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
+  <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
+  <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
+  <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
+  <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hashtag"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Unresolved Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Link"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+                              <style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Wingdings;
+	panose-1:5 0 0 0 0 0 0 0 0 0;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 268435456 0 0 -2147483648 0;}
+@font-face
+	{font-family:"Cambria Math";
+	panose-1:2 4 5 3 5 4 6 3 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:roman;
+	mso-font-pitch:variable;
+	mso-font-signature:-536869121 1107305727 33554432 0 415 0;}
+@font-face
+	{font-family:Verdana;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-1610610945 1073750107 16 0 415 0;}
+@font-face
+	{font-family:"Segoe UI";
+	panose-1:2 11 5 2 4 2 4 2 2 3;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-469750017 -1073683329 9 0 511 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-unhide:no;
+	mso-style-parent:"";
+	margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoChpDefault
+	{mso-style-type:export-only;
+	mso-default-props:yes;
+	font-family:"Arial",sans-serif;
+	mso-ascii-font-family:Arial;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-hansi-font-family:Arial;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoPapDefault
+	{mso-style-type:export-only;
+	line-height:115%;}
+@page WordSection1
+	{size:595.3pt 841.9pt;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.WordSection1
+	{page:WordSection1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:1255550910;
+	mso-list-template-ids:-1915214204;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61623;;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l0:level2
+	{mso-level-number-format:bullet;
+	mso-level-text:o;
+	mso-level-tab-stop:1.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:"Courier New";
+	mso-bidi-font-family:"Times New Roman";}
+@list l0:level3
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:1.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level4
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level5
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level6
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level7
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level8
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level9
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style><!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-priority:99;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+</style>
+<![endif]-->
+                              <meta http-equiv="Content-Type"
+                                content="text/html;
+                                charset=windows-1252">
+                            </p>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; width: 1416px;">
+                              <meta name="ProgId"
+                                content="Word.Document">
+                              <meta name="Generator" content="Microsoft
+                                Word 15">
+                              <meta name="Originator" content="Microsoft
+                                Word 15">
+                              <!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:View>Normal</w:View>
+  <w:Zoom>0</w:Zoom>
+  <w:TrackMoves/>
+  <w:TrackFormatting/>
+  <w:HyphenationZone>21</w:HyphenationZone>
+  <w:PunctuationKerning/>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:DoNotPromoteQF/>
+  <w:LidThemeOther>EN-US</w:LidThemeOther>
+  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+  <w:Compatibility>
+   <w:BreakWrappedTables/>
+   <w:SnapToGridInCell/>
+   <w:WrapTextWithPunct/>
+   <w:UseAsianBreakRules/>
+   <w:DontGrowAutofit/>
+   <w:SplitPgBreakAndParaMark/>
+   <w:EnableOpenTypeKerning/>
+   <w:DontFlipMirrorIndents/>
+   <w:OverrideTableStyleHps/>
+  </w:Compatibility>
+  <m:mathPr>
+   <m:mathFont m:val="Cambria Math"/>
+   <m:brkBin m:val="before"/>
+   <m:brkBinSub m:val="&#45;-"/>
+   <m:smallFrac m:val="off"/>
+   <m:dispDef/>
+   <m:lMargin m:val="0"/>
+   <m:rMargin m:val="0"/>
+   <m:defJc m:val="centerGroup"/>
+   <m:wrapIndent m:val="1440"/>
+   <m:intLim m:val="subSup"/>
+   <m:naryLim m:val="undOvr"/>
+  </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
+  DefSemiHidden="false" DefQFormat="false" DefPriority="99"
+  LatentStyleCount="376">
+  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
+  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 9"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 1"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 2"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 3"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 4"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 5"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 6"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 7"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 8"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="header"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footer"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index heading"/>
+  <w:LsdException Locked="false" Priority="35" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="caption"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of figures"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope return"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="line number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="page number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of authorities"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="macro"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="toa heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 5"/>
+  <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Closing"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Signature"/>
+  <w:LsdException Locked="false" Priority="1" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Default Paragraph Font"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Message Header"/>
+  <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Salutation"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Date"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Note Heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Block Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="FollowedHyperlink"/>
+  <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
+  <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Document Map"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Plain Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="E-mail Signature"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Top of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Bottom of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal (Web)"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Acronym"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Cite"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Code"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Definition"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Keyboard"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Preformatted"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Sample"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Typewriter"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Variable"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Table"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation subject"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="No List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Contemporary"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Elegant"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Professional"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Balloon Text"/>
+  <w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Theme"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
+  <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
+  <w:LsdException Locked="false" Priority="34" QFormat="true"
+   Name="List Paragraph"/>
+  <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
+  <w:LsdException Locked="false" Priority="30" QFormat="true"
+   Name="Intense Quote"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="19" QFormat="true"
+   Name="Subtle Emphasis"/>
+  <w:LsdException Locked="false" Priority="21" QFormat="true"
+   Name="Intense Emphasis"/>
+  <w:LsdException Locked="false" Priority="31" QFormat="true"
+   Name="Subtle Reference"/>
+  <w:LsdException Locked="false" Priority="32" QFormat="true"
+   Name="Intense Reference"/>
+  <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
+  <w:LsdException Locked="false" Priority="37" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Bibliography"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
+  <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
+  <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
+  <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
+  <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
+  <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
+  <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
+  <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hashtag"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Unresolved Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Link"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+                              <style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Wingdings;
+	panose-1:5 0 0 0 0 0 0 0 0 0;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 268435456 0 0 -2147483648 0;}
+@font-face
+	{font-family:"Cambria Math";
+	panose-1:2 4 5 3 5 4 6 3 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:roman;
+	mso-font-pitch:variable;
+	mso-font-signature:-536869121 1107305727 33554432 0 415 0;}
+@font-face
+	{font-family:Verdana;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-1610610945 1073750107 16 0 415 0;}
+@font-face
+	{font-family:"Segoe UI";
+	panose-1:2 11 5 2 4 2 4 2 2 3;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-469750017 -1073683329 9 0 511 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-unhide:no;
+	mso-style-parent:"";
+	margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoChpDefault
+	{mso-style-type:export-only;
+	mso-default-props:yes;
+	font-family:"Arial",sans-serif;
+	mso-ascii-font-family:Arial;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-hansi-font-family:Arial;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoPapDefault
+	{mso-style-type:export-only;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:70.85pt 70.85pt 70.85pt 70.85pt;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.WordSection1
+	{page:WordSection1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:1255550910;
+	mso-list-template-ids:-1915214204;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61623;;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l0:level2
+	{mso-level-number-format:bullet;
+	mso-level-text:o;
+	mso-level-tab-stop:1.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:"Courier New";
+	mso-bidi-font-family:"Times New Roman";}
+@list l0:level3
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:1.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level4
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level5
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level6
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level7
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level8
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level9
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style><!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-priority:99;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+</style>
+<![endif]-->
+                              <ul type="disc">
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><span
+                                    style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-<div class="WordSection1">
+                                    mso-fareast-font-family:&quot;Times
+                                    New
+                                    Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;; mso-fareast-language:FR"
+                                    lang="EN-US">General updates to fix
+                                    known defects and enhancements
+                                    implementation.<o:p></o:p></span></li>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-<div>
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">HAL GPIO</span></b><span
+                                    style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
 
-<div>
+                                    &quot;Times New
+                                    Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-fareast-language: FR"
+                                    lang="EN-US"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-<p class="MsoNormal" style=""><span style="font-family: &quot;Arial&quot;,sans-serif;" lang="FR"><o:p>&nbsp;</o:p></span></p>
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      HAL_GPIO_Init() API to avoid the
+                                      configuration of PUPDR register
+                                      when Analog mode is selected.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-<div align="center">
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Optimize assertion
+                                      control for GPIO Pull mode in
+                                      HAL_GPIO_Init<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-<table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" cellspacing="0" width="900">
- <tbody><tr>
-  <td style="padding: 0in;" valign="top">
-  <table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" cellspacing="0" width="900">
-   <tbody><tr style="">
-    <td style="padding: 0in 5.4pt;" valign="top">
-    <p class="MsoNormal" style=""><span style="font-size: 8pt; font-family: &quot;Arial&quot;,sans-serif; color: blue;"><a href="../../Release_Notes.html">Back to Release page</a></span><span style="font-size: 10pt;"><o:p></o:p></span></p>
-    </td>
-   </tr>
-   <tr style="">
-    <td style="padding: 1.5pt;">
-    <h1 style="margin-bottom: 0.25in; text-align: center;" align="center"><span style="font-size: 20pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(51, 102, 255);">Release Notes for STM32F7xx HAL Drivers</span><span style="font-size: 20pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></h1>
-    <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: black;">Copyright 2017 STMicroelectronics</span><span style="color: black;"><u1:p></u1:p><o:p></o:p></span></p>
-    <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: black;"><img id="_x0000_i1040" src="_htmresc/st_logo.png" border="0" height="81" width="109"></span><span style="font-size: 10pt;"><o:p></o:p></span></p>
-    </td>
-   </tr>
-  </tbody></table>
-  <p class="MsoNormal" style=""><span style="font-family: &quot;Arial&quot;,sans-serif;">The&nbsp;hardware abstraction layer
-  (HAL) provides low level drivers and the hardware interfacing methods to
-  interact with upper layer (application, libraries and stacks). &nbsp;It
-  includes a complete set of ready-to-use APIs, that are feature-oriented
-  instead of IP-Oriented to simplify user application development.</span> <span style="font-family: &quot;Arial&quot;,sans-serif; display: none;"><o:p></o:p></span></p>
-  <table class="MsoNormalTable" style="width: 675pt; margin-left: 31.5pt;" border="0" cellpadding="0" width="900">
-   <tbody><tr style="">
-    <td style="padding: 0in;" valign="top">
-    <h2 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><a name="History"></a><span style="font-size: 12pt; color: white;">Update
-    History</span><span style="color: black;"> </span><span style=""><o:p></o:p></span></h2>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">v1.2.9/
-    12-February-2021</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes<o:p></o:p></span></u></b></p>
-    <p style="margin-left: 0.5in; text-indent: -0.25in;"><!--[if !supportLists]--><span style="font-size: 10pt; font-family: Symbol; color: rgb(17, 17, 17);"><span style="">·<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-    </span></span></span><!--[endif]--><span dir="ltr"></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);">General updates to fix known defects and enhancements
-    implementation.<o:p></o:p></span></p>
-    <ul type="disc">
-     <ul type="circle">
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update hal_def.h
-          to support new ARM compiler Keil V6.<o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new defines
-          for ARM compiler V6:<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__weak<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__packed<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__NOINLINE<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL
-          TimeBase TIM, RTC alarm and RTC WakeUp templates for more robustness.<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated Hal_Init_<span class="grame">Tick(</span>) API to properly store the priority when
-           using the non-default time base.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">‘register’ keyword
-          retired to be compliant with C++17 (already deprecated in C++11).<o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add License.md
-          and Readme.md files required for GitHub publication.<o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL
-          TIM</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Support multiple
-           simultaneous DMA requests with different channels:<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Implement DMA burst state management mechanism.<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Implement TIM channel state management mechanism.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_TIM_IC_Stop_DMA implementation to disable the TIM channel before
-           disabling DMA transfer.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_TIM_xxx_Start- functions to systematically access to the
-           TIMx_SMCR register even if the TIMx instance cannot be used as slave
-           timer.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Make
-           TIM_DMADelayPulseCplt callback as a private function.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-           HAL_TIMEx_OnePulseN_Start and HAL_TIMEx_OnePulseN_Stop (pooling and
-           IT mode) to take into consideration all OutputChannel parameters.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Correcte
-           reversed description of TIM_LL_EC_ONEPULSEMODE One Pulse Mode.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update LL_TIM_<span class="grame">GetCounterMode(</span>) API to return the correct
-           counter mode.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          LPTIM</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_LPTIM_Init implementation to configure digital filter for
-           external clock when LPTIM is clocked by an internal clock source.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          UART</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rework BRR
-           register calculation algorithm in UART_<span class="grame">SetConfig(</span>)
-           to optimize ROM size.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_UART_<span class="grame">IRQHandler(</span>) to handle receiver timeout
-           interruption.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Enhance reception
-           for idle services (ReceptionToIdle):<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add a new field (HAL_UART_RxTypeTypeDef) to the
-            UART_HandleTypeDef structure to identify the type of ongoing
-            reception.<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add UART Reception Event Callback registration.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add reception
-           specific APIs specific to reception for Idle transfer in different
-           modes:<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_UARTEx_<span class="grame">ReceiveToIdle(</span>):
-            Receive an amount of data in blocking mode until either the
-            expected number of data is received or an IDLE event occurs.<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_UARTEx_ReceiveToIdle_<span class="grame">IT(</span>):
-            Receive an amount of data in interrupt mode until either the
-            expected number of data is received or an IDLE event occurs.<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_UARTEx_ReceiveToIdle_<span class="grame">DMA(</span>):
-            Receive an amount of data in DMA mode until either the expected
-            number of data is received or an IDLE event occurs.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_UART_<span class="grame">Receive(</span>), HAL_UART_Receive_IT() and
-           HAL_UART_Receive_DMA() APIs to support the new enhancement of
-           ReceptionToIdle.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_UART_<span class="grame">IRQHandler(</span>) to handle receiver timeout
-           interrupt.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update UART
-           receive processes (IT and DMA) to handle the UART receive’s timeout
-           interrupt.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          SMARTCARD</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support for
-           data re-transmission when a NACK is received in SmartCard T=0.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix typos in
-           the SMARTCARD State definition description.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          PWR</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update __HAL_PWR_CLEAR_ODRUDR_<span class="grame">FLAG(</span>) macro in
-           order to be able to set the Enable Internal Wakeup (EIWUP) bit.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          SPI</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update SPI_<span class="grame">DMAReceiveCplt(</span>) API to handle efficiently the
-           repeated transfers.<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Disable TX DMA request only in bidirectional receive
-            mode.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SPI_<span class="grame">Init(</span>) API:<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Avoid setting the BaudRatePrescaler in case of Slave
-            Motorola Mode.<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Use the <span class="grame">bit-mask</span> for SPI
-            configuration.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update Transmit/Receive processes in half-duplex mode.<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Disable the SPI instance before setting BDIOE bit.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix wrong
-           timeout management.<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Calculate the timeout based on a software loop in order
-            to avoid a blocking issue if systick is disabled.<o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          RCC</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCCEx_<span class="grame">PeriphCLKConfig(</span>) to allow PLLI2S
-           configuration independently from peripherals.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          IRDA</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix typos in
-           the IRDA State definition description.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          RTC_BKP</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">New APIs to
-           subtract or add one hour to the calendar in one single operation
-           without going through the initialization procedure (Daylight
-           Saving):<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add HAL_RTC_DST_Add1<span class="grame">Hour(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_DST_Sub1<span class="grame">Hour(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_DST_<span class="grame">SetStoreOperation(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_DST_<span class="grame">ClearStoreOperation(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_DST_<span class="grame">ReadStoreOperation(</span>)<o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          CRYP</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_CRYP_<span class="grame">SetConfig(</span>) and HAL_CRYP_GetConfig() APIs to set/get
-           the continent of KeyIVConfigSkip correctly.</span></li>
-                  <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Support of message head no multiple of word for GCM and CCM algorithms.<br>
-</span></li>
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix unexpected
+                                      detection by reordering EXTI
+                                      config.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
 
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          SAI</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SAI_<span class="grame">Init(</span>) API to correct the formula in case of
-           SPDIF is wrong.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SAI_<span class="grame">IRQHandler(</span>) API:<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Clear interrupt flags: AFSDET, LFSDET and WCKCFG.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-           HAL_SAI_Receive_<span class="grame">DMA(</span>) API to follow the
-           sequence described in the reference manual.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to avoid
-           the incorrect left/right synchronization.<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SAI_Transmit_<span class="grame">DMA(</span>)
-            API to follow the sequence described in the reference manual for
-            slave transmitter mode.<o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          GPIO</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update LL/HAL
-           GPIO_<span class="grame">TogglePin(</span>) APIs to allow multi Pin’s
-           toggling.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          I2C</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update STM32F745xx, STM32F746xx, STM32F750xx, STM32F756xx headers files to
-           support I2C Fast mode plus.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          DAC</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_DACEx_<span class="grame">DualStart(</span>) API when checking the
-           software trigger with the right values:<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DAC_TRIGGER_SOFTWARE instead of DAC_CR_TEN1.<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">(DAC_TRIGGER_SOFTWARE &lt;&lt; (DAC_CHANNEL_2 &amp;
-            0x10UL)) instead of DAC_CR_TEN2.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update driver to
-           support dual mode. Two new APIs added:<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DACEx_<span class="grame">DualStart(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DACEx_<span class="grame">DualStop(</span>)<o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL
-          ADC</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the
-           following APIs to set status HAL_ADC_STATE_ERROR_INTERNAL and error
-           code HAL_ADC_ERROR_INTERNAL when error occurs:<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_<span class="grame">Start(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_Start_<span class="grame">IT(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_Start_<span class="grame">DMA(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADCEx_<span class="grame">InjectedStart(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADCEx_InjectedStart_<span class="grame">IT(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADCEx_MultiModeStart_<span class="grame">DMA(</span>)<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-           HAL_ADC_Stop_<span class="grame">DMA(</span>) API to check if DMA
-           state is Busy before calling HAL_DMA_Abort() API to avoid DMA
-           internal error.<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update LL_ADC_REG_<span class="grame">Init(</span>) API to avoid enabling continuous mode and
-           discontinuous mode simultaneously.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          I2S</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_I2S_<span class="grame">DMAStop(</span>) API to be more safe.<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add a check on BSY, TXE and RXNE flags before disabling
-            the I2S.<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_I2S_<span class="grame">DMAStop(</span>) API to fix multi-call transfer issue(to
-           avoid re-initializing the I2S for the next transfer).<o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add __HAL_I2SEXT_FLUSH_RX_<span class="grame">DR(</span>)
-            and __HAL_I2S_FLUSH_RX_DR() macros to flush the remaining data
-            inside DR registers.<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new ErrorCode define: HAL_I2S_ERROR_BUSY_LINE_RX.<o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          UTILS</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">UTILS_<span class="grame">SetFlashLatency(</span>) API renamed to
-           LL_SetFlashLatency() and made public.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          WWDG</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL
-           driver description.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-          IWDG</span></strong><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_DEFAULT_TIMEOUT
-           has become configurable via LSI_VALUE (defined in
-           stm32f7xx_hal_conf.h).<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL EXTI</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update macros
-           using __LINE__ as a macro parameter in order to use EXTI_LINE
-           instead to resolve parameter conflicts with standard C usage.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL USB</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> update<o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Enhance HAL HCD
-           driver when USB DMA is enabled:<o:p></o:p></span></li>
-       
-                  <ul>
-                    <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix ping and
-           data toggle issue.<o:p></o:p></span></li>
-                  </ul>
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL EXTI</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-       
-                  <ul>
-                    <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rework Channel
-           error report management.<o:p></o:p></span></li>
-                  </ul>
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      HAL_EXTI_GetConfigLine() API to
+                                      set default configuration value of
+                                      Trigger and GPIOSel before
+                                      checking each corresponding
+                                      registers.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
 
-      </ul>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.8/ 13-February-2020</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL GPIO&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update&nbsp;GPIO initialization sequence<b>&nbsp;</b>to
-          avoid unwanted pulse on GPIO <span class="grame">Pin's</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2C&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul type="circle">
-      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_I2C_EV_<span class="grame">IRQHandler(</span>)
-          API to fix I2C send break issue&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add additional check on hi2c-&gt;hdmatx,
-           hdmatx-&gt;XferCpltCallback,&nbsp;hi2c-&gt;hdmarx, hdmarx-&gt;XferCpltCallback
-           in I2C_Master_<span class="grame">SB(</span>) API to
-           avoid&nbsp;enabling DMA request&nbsp;when IT mode is used.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_I2C_ER_<span class="grame">IRQHandler(</span>)
-          API to fix acknowledge failure issue with I2C&nbsp;memory IT
-          processes</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Add&nbsp;stop condition
-           generation&nbsp;when&nbsp;NACK occurs.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update&nbsp;HAL_I2C_<span class="grame">Init(</span>)
-          API to force software reset before setting new I2C configuration</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL I2C processes to report
-          ErrorCode&nbsp;when wrong I2C start condition <span class="grame">occurs</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Add new&nbsp;ErrorCode define:
-           HAL_I2C_WRONG_START</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Set&nbsp;ErrorCode parameter in&nbsp;I2C
-           handle to&nbsp;HAL_I2C_WRONG_START</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update&nbsp;I2C_<span class="grame">DMAXferCplt(</span>),
-          I2C_DMAError() and I2C_DMAAbort() APIs to fix hardfault issue when
-          hdmatx and hdmarx&nbsp;parameters in i2c handle aren't initialized
-          (NULL pointer).</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add additional check on hi2c-&gt;hdmtx and
-           hi2c-&gt;hdmarx before resetting&nbsp;DMA Tx/Rx complete <span class="grame">callback</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL ADC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add "ADC_INTERNAL_NONE" channel to
-          disable the VBAT &amp; TSVREFE channel.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DCMI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add DCMI_SyncUnmaskTypeDef structure and HAL_DCMI_<span class="grame">ConfigSyncUnmask(</span>) API to manage embedded
-          synchronization delimiters unmasks</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL EXTI</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General update to enhance HAL EXTI driver <span class="grame">robustness</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add additional assert check on EXTI config <span class="grame">lines</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to compute EXTI line mask before
-           read/write access to EXTI <span class="grame">registers</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update EXTI callbacks management to be compliant
-          with reference manual: only one PR register for rising and falling
-          interrupts.</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update parameters in EXTI_HandleTypeDef
-           structure: merge HAL EXTI RisingCallback and FallingCallback in only
-           one PendingCallback.</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove HAL_EXTI_RISING_CB_ID and HAL_EXTI_FALLING_CB_ID
-           values from EXTI_CallbackIDTypeDef enumeration.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_EXTI_<span class="grame">IRQHandler(</span>)
-          API to serve interrupts correctly.</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to compute EXTI line mask before handle
-           EXTI interrupt.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to support GPIO port interrupts:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new "GPIOSel" parameter in
-           EXTI_ConfigTypeDef structure</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL HASH&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Null pointer on handler "hhash" is now
-          checked before accessing structure member
-          "hhash-&gt;Init.DataType" in the following API:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_<span class="grame">Init(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Following <b>interrupt-based</b> APIs have been
-          added. Interrupt mode could allow the MCU to enter "Sleep"
-          mode while a data block is being processed. Please refer to the
-          "##### How to use this driver #####" section for details
-          about their use.</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_Accmlt_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_Accmlt_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA224_Accmlt_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA256_Accmlt_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Following <b>aliases</b> have been added (just <b>for
-          clarity sake</b>) as they shall be used at the <b>end</b> of the
-          computation of a multi-buffers message and not at the start:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_Accmlt_<span class="grame">End(</span>)
-           to be used instead of HAL_HASH_SHA1_Start()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_Accmlt_<span class="grame">End(</span>)
-           to be used instead of HAL_HASH_MD5_Start()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_Accmlt_End_<span class="grame">IT(</span>)
-           to be used instead of HAL_HASH_SHA1_Start_IT()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_Accmlt_End_<span class="grame">IT(</span>)
-           to be used instead of HAL_HASH_MD5_Start_IT()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA224_Accmlt_<span class="grame">End(</span>)
-           to be used instead of HAL_HASHEx_SHA224_Start()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA256_Accmlt_<span class="grame">End(</span>)
-           to be used instead of HAL_HASHEx_SHA256_Start()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA224_Accmlt_End_<span class="grame">IT(</span>)
-           to be used instead of HAL_HASHEx_SHA224_Start_IT()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA256_Accmlt_End_<span class="grame">IT(</span>)
-           to be used instead of HAL_HASHEx_SHA256_Start_IT()</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">MISRAC-2012 rule R.5.1 (identifiers shall be
-          distinct in the first 31 characters) constrained the naming of the
-          above listed aliases (e.g. HAL_HASHEx_SHA256_<b>Accmlt</b>_<span class="grame">End(</span>) could not be named HAL_HASHEx_SHA256_<b>Accumulate</b>_End().
-          Otherwise the name would have conflicted with HAL_HASHEx_SHA256_<b>Accumulate</b>_End_<span class="grame">IT(</span>)). In order to have aligned names following
-          APIs have been renamed:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_<span class="grame">Accumulate(</span>)
-           renamed HAL_HASH_MD5_Accmlt()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_<span class="grame">Accumulate(</span>)
-           renamed HAL_HASH_SHA1_Accmlt()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA224_<span class="grame">Accumulate(</span>)
-           renamed HAL_HASHEx_SHA224_Accmlt()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA256_<span class="grame">Accumulate(</span>)
-           renamed HAL_HASHEx_SHA256_Accmlt()</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HASH <b>handler</b> state is <b>no <span class="grame">more</span></b> reset to HAL_HASH_STATE_READY <b>once DMA
-          has been started</b> in the following APIs:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_Start_<span class="grame">DMA(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HMAC_MD5_Start_<span class="grame">DMA(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_Start_<span class="grame">DMA(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HMAC_SHA1_Start_<span class="grame">DMA(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HASH <b>phase</b> state is now set to
-          HAL_HASH_PHASE_READY<b> once the digest has been read</b> in the
-          following APIs:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HASH_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HMAC_<span class="grame">Processing(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HASH_<span class="grame">Start(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HASH_<span class="grame">Finish(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Case of a large buffer scattered around in memory
-          each piece of which is <b>not</b> necessarily a <b>multiple of 4</b>
-          bytes in length.</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In section "##### How to use this driver
-           #####", sub-section "*** Remarks on message length
-           ***" added to provide recommendations to follow in such case.</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">No modification of the driver as the root-cause
-           is at design-level.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SDMMC&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix&nbsp;typo in "FileFormatGroup"
-          parameter in the HAL_MMC_CardCSDTypeDef and HAL_SD_CardCSDTypeDef
-          structures.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix an improve handle state and error <span class="grame">management</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename the defined MMC card capacity type to be
-          more meaningful:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <b>MMC_HIGH_VOLTAGE_CARD</b> to <b>MMC LOW_CAPACITY_CARD</b></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <b>MMC_DUAL_VOLTAGE_CRAD</b> to <b>MMC_HIGH_CAPACITY_CARD</b></span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL QSPI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove Lock mechanism from HAL_QSPI_<span class="grame">Init(</span>) and HAL_QSPI_DeInit() APIs</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b style="orphans: 2; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-         LPTIM&nbsp;</span></b><span style="orphans: 2; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span></span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add a polling mechanism to check
-          on&nbsp;LPTIM_FLAG_XXOK&nbsp;flags in different <span class="grame">API</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add&nbsp;LPTIM_<span class="grame">WaitForFlag(</span>)&nbsp;API&nbsp;to
-           wait for flag set.</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Perform new checks on HAL_LPTIM_STATE_TIMEOUT.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Workaround to fix MCU slack in sleep <span class="grame">mode</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update __HAL_LPTIM_DISABLE () macro used to
-           disable LPTIM HW instance</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove the
-            LPTIM_CR_ENABLE bit clear.</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add a new <span class="grame">API&nbsp; LPTIM</span>_Disable() defined in&nbsp;
-            hal_lptim.c</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update __HAL_LPTIM_RESET_HANDLE_STATE(__HANDLE__)
-          macro by adding a specific .... when using callback register</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_LPTIM_ENABLE</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove usseless check on LPTIM2 in the LL driver
-          since F7 support only one instance of LPTIM.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <span class="grame">the&nbsp; LL</span>_LPTIM_DISABLE()
-          API used to disable LPTIM HW instance</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move API definition to ll_lptim.c</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b style="orphans: 2; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL&nbsp;TIM&nbsp;</span></b><span style="orphans: 2; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span></span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new macros to enable and disable the fast mode
-          when using the one pulse mode to output a waveform with a minimum <span class="grame">delay</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">_<span style="orphans: 2; widows: 2; float: none; word-spacing: 0px;">_HAL_TIM_ENABLE_<span class="grame">OCxFAST(</span>)
-           and __HAL_TIM_DISABLE_OCxFAST().</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="orphans: 2; widows: 2; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update Encoder interface mode to keep&nbsp;<span style="orphans: 2; widows: 2; word-spacing: 0px;">TIM_CCER_CCxNP bits <span class="grame">low</span></span><o:p></o:p></span></span></li>
-      
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add&nbsp;TIM_ENCODERINPUTPOLARITY_RISING and
-           TIM_ENCODERINPUTPOLARITY_FALLING&nbsp;definitions to determine
-           encoder input polarity.</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add&nbsp;IS_TIM_ENCODERINPUT_<span class="grame">POLARITY(</span>)&nbsp;macro
-           to check&nbsp;the encoder input polarity.</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_TIM_Encoder_<span class="grame">Init(</span>)
-           API&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Replace IS_TIM_IC_<span class="grame">POLARITY(</span>) macro by
-            IS_TIM_ENCODERINPUT_POLARITY() macro.</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Correct wrong instance parameter check in encoder <span class="grame">mode</span><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Replace IS_TIM_CC2_INSTANCE by
-           IS_TIM_ENCODER_INTERFACE_INSTANCE in encoder <span class="grame">interface
-           :</span>&nbsp;<o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_<span class="grame">Start(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_<span class="grame">Stop(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Start_<span class="grame">IT(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Stop_<span class="grame">IT(</span>)<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Replace IS_TIM_DMA_CC_INSTANCE by
-           IS_TIM_ENCODER_INTERFACE_INSTANCE in encoder interface in DMA <span class="grame">mode :</span>&nbsp;<o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Start_<span class="grame">DMA(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Stop_<span class="grame">DMA(</span>)<o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_TIMEx_<span class="grame">MasterConfigSynchronization(</span>)
-          API to avoid functional errors and&nbsp;assert fails when using some
-          TIM instances as input trigger.<o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Replace&nbsp;IS_TIM_SYNCHRO_<span class="grame">INSTANCE(</span>)
-           macro by IS_TIM_MASTER_INSTANCE() macro.&nbsp;<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add&nbsp;IS_TIM_SLAVE_<span class="grame">INSTANCE(</span>)
-           macro to&nbsp;check on TIM_SMCR_MSM bit.<o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Provide new API&nbsp;to set and clear <span class="grame">UIFREMAP</span><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new definition for TIM Update Interrupt Flag
-           Remap<o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_UIFREMAP_DISABLE<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_UIFREMAP_ENABLE<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new macro in HAL driver to enable and desable
-           <span class="grame">the&nbsp; Update</span> Interrupt Flag Remap<o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;__HAL_TIM_UIFREMAP_<span class="grame">ENABLE(</span>)<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_TIM_UIFREMAP_<span class="grame">DISABLE(</span>)/__HAL_TIM_GET_UIFCPY macro<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new mecanism to check whether the&nbsp;update
-           interrupt flag (UIF) copy is set or <span class="grame">not</span>&nbsp;<o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the __HAL_TIM_GET_<span class="grame">UIFCPY(</span>) macro in the HAL driver<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add LL_TIM_<span class="grame">IsActiveUIFCPY(</span>) API in the LL driver<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new macro to check on the&nbsp;Update
-           Interrupt Flag Remap mode<o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IS_TIM_UIFREMAP_<span class="grame">MODE(</span>)<o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove usseless define in the LL <span class="grame">driver</span>&nbsp;<o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIMx_AF1_BKINE / TIMx_AF1_BKDFBKE <span class="grame">/ &nbsp;TIMx</span>_AF2_BK2INE / &nbsp;TIMx_AF2_BK2DFBKE
-           / &nbsp;TIMx_AF2_BK2INP</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b style="orphans: 2; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL&nbsp;SMARTCARD</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update SMARTCARD_<span class="grame">SetConfig(</span>)
-          API.</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Split HAL_RCC_GetPCLK1<span class="grame">Freq(</span>)
-           and HAL_RCC_GetPCLK2Freq() macros from the BRR calculation.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL&nbsp;IRDA&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><b><span style=""><o:p></o:p></span></b></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update IRDA_<span class="grame">SetConfig(</span>)
-          API&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Split HAL_RCC_GetPCLK1<span class="grame">Freq(</span>)
-           and HAL_RCC_GetPCLK2Freq() macros from the IRDA_DIV_SAMPLING16()
-           macro.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update some API <span class="grame">desciption</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_<span class="grame">Transmit(</span>)
-           /&nbsp;HAL_IRDA_Transmit_IT()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_<span class="grame">Receive(</span>)
-           /&nbsp;HAL_IRDA_Receive_IT()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_Transmit_<span class="grame">DMA(</span>)
-           / HAL_IRDA_Receive_DMA()</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the HAL_RCC_<span class="grame">ClockConfig(</span>)
-          and HAL_RCC_DeInit() API to don't overwrite the custom tick priority</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCC_<span class="grame">OscConfig(</span>)
-          API to don't return HAL_ERROR if request repeats the current PLL
-          configuration</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL USART</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support to the Receiver Timeout Interrupt in
-          the HAL_USART_IRQHandler</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update some API <span class="grame">desciption</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_<span class="grame">Transmit(</span>)
-           /&nbsp;HAL_USART_Transmit_IT()&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_<span class="grame">Receive(</span>)
-           /&nbsp;HAL_USART_Receive_IT()&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_<span class="grame">TransmitReceive(</span>)
-           /&nbsp;HAL_USART_TransmitReceive_IT()&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_Transmit_<span class="grame">DMA(</span>)
-           / HAL_USART_Receive_DMA() / HAL_USART_TransmitReceive_DMA()</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update USART_<span class="grame">SetConfig(</span>)
-          API&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Split HAL_RCC_GetPCLK1<span class="grame">Freq(</span>)
-          and HAL_RCC_GetPCLK2Freq() macros from the USART_DIV_SAMPLING8()
-          macro</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Support Stop Mode functionalities in the USART <span class="grame">driver</span>&nbsp;&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add &nbsp;definition</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> of USART_ISR_REACK USART,&nbsp; receive enable
-          acknowledge flag in the HAL driver</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new flag definition in the LL <span class="grame">driver</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_ICR_<span class="grame">WUCF&nbsp; Wakeup</span>
-           from Stop mode flag&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_ISR_WUF Wakeup from Stop mode <span class="grame">flag</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_ISR_REACK Receive enable acknowledge <span class="grame">flag</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_CR3_WUFIE Wakeup from Stop mode
-           interrupt <span class="grame">enable</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new definition of the different event which
-          activates the&nbsp;wakeup from Stop mode <span class="grame">flag</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_ USART_WAKEUP_ON_ADDRESS</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_WAKEUP_ON_STARTBIT</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_WAKEUP_ON_RXNE</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new API in LL driver to support stop <span class="grame">mode</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_<span class="grame">EnableInStopMode(</span>)
-           to enable the USART in stop mode</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_<span class="grame">DisableInStopMode(</span>)
-           to disable the USART in stop mode</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_<span class="grame">IsEnabledInStopMode(</span>)
-           to check if the USART is enabled or not in the stop mode</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_<span class="grame">EnableClockInStopMode(</span>)
-           to enable the USART clock in the stop mode</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_<span class="grame">DisableClockInStopMode(</span>)
-           to disable the USART clock in the stop mode</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_<span class="grame">IsClockEnabledInStopMode(</span>)
-           to check whether USART clock are enabled or not in the stop mode</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new API in LL driver to manage event relisted
-          to Wake UP Interrupt Flag</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_<span class="grame">SetWKUPType(</span>)
-           to select the event type for Wake UP Interrupt Flag</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_<span class="grame">GetWKUPType(</span>)
-           to get&nbsp; the event type for Wake UP Interrupt Flag</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_IsActiveFlag_<span class="grame">WKUP(</span>)
-           to Check if the USART Wake Up from stop mode Flag is set or not</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_IsActiveFlag_<span class="grame">REACK(</span>)
-           to Check if the USART Receive Enable Acknowledge Flag is set or not</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_ClearFlag_<span class="grame">WKUP(</span>)
-           Clear Wake Up from stop mode Flag</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new API in LL driver to manage wake up from
-          stop <span class="grame">interruption</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_EnableIT_<span class="grame">WKUP(</span>)
-           to Enable Wake Up from Stop Mode Interrupt</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_DisableIT_<span class="grame">WKUP(</span>)
-           to Disable Wake Up from Stop Mode Interrupt</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 2pt; margin-bottom: 2pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_USART_IsEnabledIT_<span class="grame">WKUP(</span>)
-           to Check if the USART Wake Up from Stop Mode Interrupt is enabled or
-           not</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL USB </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Add handling USB host babble error <span class="grame">interrupt</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Fix Enabling ULPI interface for platforms
-          that integrates USB HS PHY</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Fix Host data toggling for IN Iso transfers</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Ensure to disable USB EP during endpoint <span class="grame">deactivation</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.7/
-    08-February-2019</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix CodeSonar compilation <span class="grame">warnings</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix SW4STM32 compilation errors
-         under <span class="grame">Linux</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix the user manual .chm <span class="grame">files</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of HAL callback registration <span class="grame">feature</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new<span class="apple-converted-space"> </span><b>HAL
-         EXTI</b><span class="apple-converted-space"> </span>driver</span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The following changes done on the HAL drivers
-         require an update on the application code based on older HAL <span class="grame">versions</span></span></b><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rework of HAL CRYP driver<b> (compatibility break)
-          </b></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CRYP driver has been redesigned with new
-           API's, to bypass limitations on data Encryption/Decryption management
-           present with previous HAL CRYP driver version.</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The new HAL CRYP driver is the recommended
-           version. It is located as usual in Drivers/STM32F7xx_HAL_Driver/Src
-           and Drivers/STM32f7xx_HAL_Driver/Inc folders. It can be enabled
-           through switch HAL_CRYP_MODULE_ENABLED in stm32f7xx_hal_conf.h</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The legacy HAL CRYP driver is no longer
-           supported.</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL Generic </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of <b>HAL callback registration</b> <span class="grame">feature</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The feature disabled by default is available for the
-           following HAL drivers:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ADC, CAN, CEC, CRYP,
-            DAC, DCMI, DFSDM, DMA2D, DSI, ETH, HASH, HCD, I2C, SMBUS, UART,
-            USART, IRDA, JPEG, SMARTCARD, LPTIM, LTDC, MDIOS, MMC, NAND, <span class="grame">NOR,</span> PCD, QSPI, RNG, RTC, SAI, SD, SDRAM, SRAM,
-            SPDIFRX, SPI, I2S, TIM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">and<b>
-            WWDG</b></span><span style=""><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The feature may be enabled individually per HAL <i>PPP</i>
-           driver by setting the corresponding definition USE_HAL_<i>PPP</i>_REGISTER_CALLBACKS
-           to&nbsp;1U in stm32f7xx_hal_conf.h project configuration file
-           (template file stm32f7xx_hal_conf_template.h available <span class="grame">from&nbsp; Drivers</span>/STM32F7xx_HAL_Driver/Inc)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Once <span class="grame">enabled ,</span> the user
-           application may resort to HAL_PPP_RegisterCallback() to register
-           specific callback function(s) and unregister it(them) with HAL_<i>PPP</i>_UnRegisterCallback().</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix MISRA 2012 compilation <span class="grame">errors</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IS_BIT_SET()/HAL_IS_BIT_<span class="grame">CLR(</span>)
-           macros implementation update</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">"stdio.h" include updated with
-           "stddef.<span class="grame">h</span>"</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL GPIO</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         Update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_<span class="grame">TogglePin(</span>) API
-          implementation update: to improve robustness</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_<span class="grame">DeInit(</span>) API
-          update to ensure clear all GPIO EXTI pending interrupts.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CRYP</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The CRYP_InitTypeDef </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">is no more supported, changed by <b>CRYP_ConfigTypedef</b>
-          to allow changing parameters <br>
-          using HAL_CRYP_<span class="grame">setConfig(</span>) API without reinitialize
-          the CRYP IP using the HAL_CRYP_Init() API</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">New parameters added in the <b>CRYP_ConfigTypeDef</b>
-          structure: <b>B0</b> and <span class="grame"><b>DataWidthUnit</b></span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Input data size parameter is added in the <b>CRYP_HandleTypeDef</b>
-          structure</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new APIs to manage the CRYP configuration:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;HAL_CRYP_<span class="grame">SetConfig(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_<span class="grame">GetConfig(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new APIs to manage the Key derivation:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_<span class="grame">EnableAutoKeyDerivation(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_<span class="grame">DisableAutoKeyDerivation(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new APIs to encrypt and decrypt data:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_<span class="grame">Encypt(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_<span class="grame">Decypt(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Encypt_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Decypt_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Encypt_<span class="grame">DMA(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Decypt_<span class="grame">DMA(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new APIs to generate TAG:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_AES<b>GCM</b>_<span class="grame">GenerateAuthTAG(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_AES<b>CCM</b>_<span class="grame">GenerateAuthTAG(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2C</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">I2C API changes for MISRA-C 2012 compliancy:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_I2C_Master_Sequential_Transmit_<span class="grame">IT(</span>) to HAL_I2C_Master_Seq_Transmit_IT()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_I2C_Master_Sequentiel_Receive_<span class="grame">IT(</span>) to HAL_I2C_Master_Seq_Receive_IT()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_I2C_Slave_Sequentiel_Transmit_<span class="grame">IT(</span>) to HAL_I2C_Slave_Seq_Transmit_IT() </span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_I2C_Slave_Sequentiel_Receive_<span class="grame">DMA(</span>) to HAL_I2C_Slave_Seq_Receive_DMA()</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of I2C repeated start feature in DMA
-          Mode:</span><span style="font-size: 13.5pt;"><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <p class="MsoNormal" style="margin-left: 1.5in; text-indent: -0.25in;"><span style="font-size: 13.5pt; color: black;">1.</span><span style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">With the following new API's</span><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <p class="MsoNormal" style="margin-left: 2in; text-indent: -0.25in;"><span style="font-size: 13.5pt; color: black;">1.</span><span style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL_I2C_Master_Seq_Transmit_<span class="grame">DMA(</span>)</span><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <p class="MsoNormal" style="margin-left: 2in; text-indent: -0.25in;"><span style="font-size: 13.5pt; color: black;">2.</span><span style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL_I2C_Master_Seq_Receive_<span class="grame">DMA(</span>)</span><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <p class="MsoNormal" style="margin-left: 2in; text-indent: -0.25in;"><span style="font-size: 13.5pt; color: black;">3.</span><span style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL_I2C_Slave_Seq_Transmit_<span class="grame">DMA(</span>)</span><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <p class="MsoNormal" style="margin-left: 2in; text-indent: -0.25in;"><span style="font-size: 13.5pt; color: black;">4.</span><span style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL_I2C_Slave_Seq_Receive_<span class="grame">DMA(</span>)</span><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <p class="MsoNormal" style="margin-left: 1in; text-indent: -0.25in;"><span style="font-size: 13.5pt; color: black;">3.</span><span style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Add new I2C transfer options to easy manage
-    the sequential <span class="grame">transfers</span></span><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <p class="MsoNormal" style="margin-left: 1.5in; text-indent: -0.25in;"><span style="font-size: 13.5pt; color: black;">1.</span><span style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">I2C_OTHER_FRAME</span><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <p class="MsoNormal" style="margin-left: 1.5in; text-indent: -0.25in;"><span style="font-size: 13.5pt; color: black;">2.</span><span style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">I2C_OTHER_AND_LAST_FRAME</span><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="grame"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL&nbsp; RCC</span></b></span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update LL_RCC_<span class="grame">GetSAIClockFreq(</span>)
-          API to return the right frequency according to the SAI clock source</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RNG </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to manage RNG error code: </span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add ErrorCode parameter in HAL RNG Handler
-           structure</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add HAL_RNG_<span class="grame">GetError(</span>)
-           API</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL Lock/Unlock mecanism <span class="grame">update</span>
-          </span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL ADC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix VREFINT/TEMPSENSOR calibration address
-          registers for STM32F74x/75x/F76/F77 devices</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Note</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">:
-           For STM32F72/F73 the issue will be fixed in next release</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_<span class="grame">Start(</span>),
-          HAL_ADC_Start_IT() and HAL_ADC_Start_DMA() update to prevention from
-          starting ADC2 or ADC3 once multimode is enabled</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL <span class="grame">DFSDM&nbsp; </span></span></b><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span></span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to be compliant with DFSDM bits
-          naming used in CMSIS files.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL <span class="grame">CAN&nbsp; </span></span></b><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span></span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update possible values list for FilterActivation
-          parameter in CAN_FilterTypeDef structure</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CAN_FILTER_ENABLE instead of <span class="grame">ENABLE</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CAN_FILTER_DISABLE instead of <span class="grame">DISABLE</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL <span class="grame">CEC&nbsp; </span></span></b><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span></span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL CEC State management method:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove HAL_CEC_StateTypeDef structure <span class="grame">parameters</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new defines for CEC <span class="grame">states</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA2<span class="grame">D&nbsp; </span></span></b><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span></span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove unused DMA2D_ColorTypeDef structure to be
-          compliant with MISRAC 2012 Rule 2.3</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General update to use dedicated defines for
-          DMA2D_BACKGROUND_LAYER and DMA2D_FOREGROUND_LAYER instead of
-          numerical values: 0/1.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL RTC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/ LL <span class="grame">drivers</span>
-          optimization</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL driver: remove unused <span class="grame">variables</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL driver: getter APIs optimization</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL JPEG </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update parameters type in JPEG_ConfTypeDef
-          structure to be aligned with 32-<span class="grame">bits</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SPI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall rework of the driver for a more
-          efficient&nbsp;implementation</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the following new macros:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SPI_CHECK_<span class="grame">FLAG(</span>) </span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SPI_CHECK_IT_<span class="grame">SOURCE(</span>) </span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add HAL_SPIEx_<span class="grame">FlushRxFifo(</span>)
-          API to flush the SPI FIFO RX.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SPI_<span class="grame">Abort(</span>) to
-          fix abort issue in SPI TX or Rx mode only </span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SPI_Transmit()/HAL_SPI_<span class="grame">Receive(</span>) API's to fix memory overflow issue.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2S </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall rework of the driver for a more
-          efficient&nbsp;implementation</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the following new macros:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">I2S_CHECK_<span class="grame">FLAG(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">I2S_CHECK_IT_<span class="grame">SOURCE(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_I2S_Transmit()/HAL_I2S_<span class="grame">Receive(</span>) API's to fix memory overflow issue.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL TIM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move the following TIM structures from
-          stm32f4xx_hal_tim_ex.h into stm32f4xx_hal_tim.h</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_MasterConfigTypeDef</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_BreakDeadTimeConfigTypeDef</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new TIM Callbacks API's:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_<span class="grame">PeriodElapsedHalfCpltCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_IC_<span class="grame">CaptureHalfCpltCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_PWM_<span class="grame">PulseFinishedHalfCpltCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_<span class="grame">TriggerHalfCpltCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM API changes for MISRA-C 2012 compliancy:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_TIM_SlaveConfigSynchronization to
-           HAL_TIM_SlaveConfigSynchro</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_TIM_SlaveConfigSynchronization_IT to
-           HAL_TIM_SlaveConfigSynchro_IT</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_TIMEx_ConfigCommutationEvent to
-           HAL_TIMEx_ConfigCommutEvent</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_TIMEx_ConfigCommutationEvent_IT to
-           HAL_TIMEx_ConfigCommutEvent_IT</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_TIMEx_ConfigCommutationEvent_DMA to
-           HAL_TIMEx_ConfigCommutEvent_DMA</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_TIMEx_CommutationCallback to
-           HAL_TIMEx_CommutCallback</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_TIMEx_DMACommutationCplt to
-           TIMEx_DMACommutationCplt</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL UART </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall rework of the driver for a more
-          efficient&nbsp;implementation</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the following UART API's in stm32f7xx_hal_uart_ex.c:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;HAL_RS485Ex_<span class="grame">Init(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MultiProcessorEx_AddressLength_<span class="grame">Set(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL USB</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rework USB interrupt handler and improve HS DMA
-          support in Device <span class="grame">mode</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix BCD handling for OTG instance in device <span class="grame">mode</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">cleanup reference to low speed in device mode</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">allow writing TX FIFO in case of transfer length
-          is equal to available space in the TX <span class="grame">FIFO</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix Toggle OUT interrupt channel in host <span class="grame">mode</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL IWDG </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update LL inline macros to use IWDGx parameter
-          instead of IWDG instance defined in CMSIS <span class="grame">device</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.6 /
-    29-June-2018</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in; orphans: 2; text-align: start; widows: 2; word-spacing: 0px;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b><span style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to support STM32F730xx and STM32F750xx value
-         <span class="grame">lines</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA_CHANNEL_8 to DMA_CHANNEL_15 <span class="grame">are</span>
-          also defined in case of&nbsp;STM32F730xx (same&nbsp;features as
-          STM32F733xx line)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL FLASH&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of&nbsp;STM32F730xx with 4 FLash
-          sectors of 16KB each.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of&nbsp;STM32F750xx with 2 FLash
-          sectors of 32KB each.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL GPIO&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of&nbsp;STM32F730xx value <span class="grame">line :</span> same&nbsp;features as STM32F733xx line</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of&nbsp;STM32F750xx value <span class="grame">line :</span> same&nbsp;features as STM32F756xx&nbsp;line</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of&nbsp;STM32F730xx value <span class="grame">line :</span> same&nbsp;features as STM32F733xx&nbsp;line</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of&nbsp;STM32F750xx value <span class="grame">line :</span> same&nbsp;features as STM32F756xx&nbsp;line</span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.5 /
-    02-February-2018</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new macro to get variable aligned on 32-bytes,
-          required for cache maintenance <span class="grame">purpose</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <span class="grame">UNUSED(</span>) macro
-          implementation to avoid GCC warning</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The warning is detected when the <span class="grame">UNUSED(</span>) macro is called from C++ file</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SAI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SAI_<span class="grame">DMAStop(</span>)
-          and HAL_SAI_Abort() process to fix the lock/unlock audio issue </span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL PWR </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_PWR_<span class="grame">EnterSLEEPMode(</span>)
-          and HAL_PWR_EnterSTOPMode() APIs to ensure that all instructions
-          finished before entering STOP mode. </span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL HCD </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new callback to be used to handle usb device
-          connection/<span class="grame">disconnection</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HCD_PortEnabled_<span class="grame">Callback(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HCD_PortDisabled_<span class="grame">Callback(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to prevent reactivate host interrrupt <span class="grame">channel</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.4 /
-    22-December-2017</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The following changes done on the HAL drivers
-         require an update on the application code based on older HAL <span class="grame">versions</span></span></b><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rework of HAL CAN driver (compatibility
-          break)&nbsp;</span></b><b><span style=""><o:p></o:p></span></b></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">A new HAL CAN driver has been redesigned with new
-           APIs, to bypass limitations on CAN Tx/Rx FIFO management present
-           with previous HAL CAN driver version.</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The new HAL CAN driver is the recommended
-           version. It is located as usual in Drivers/STM32F7xx_HAL_Driver/Src
-           and Drivers/STM32f7xx_HAL_Driver/Inc folders. It can be enabled
-           through switch HAL_CAN_MODULE_ENABLED in stm32f7xx_hal_conf.h</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The legacy HAL CAN driver is also present in the
-           release in Drivers/STM32F7xx_HAL_Driver/Src/Legacy and
-           Drivers/STM32F7xx_HAL_Driver/Inc/Legacy folders for software
-           compatibility reasons. Its usage is not recommended as
-           deprecated.&nbsp;It can however be enabled through switch
-           HAL_CAN_LEGACY_MODULE_ENABLED in stm32f7xx_hal_conf.h</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL driver to allow user to change systick
-          period to 1<span class="grame">ms ,</span> 10 ms or 100 ms :</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the following <span class="grame">API's :</span>&nbsp;&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_<span class="grame">GetTickPrio(</span>)
-            : Returns a tick priority.</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_<span class="grame">SetTickFreq(</span>)
-            : Sets new tick&nbsp;frequency.</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_<span class="grame">GetTickFreq(</span>)
-            : Returns tick frequency.</span><span style=""><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add HAL_TickFreqTypeDef enumeration for the
-           different Tick <span class="grame">Frequencies :</span> 10 Hz , 100 Hz
-           and 1KHz (default).</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CAN </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fields of CAN_InitTypeDef structure are reworked:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SJW to SyncJumpWidth, BS1 to TimeSeg1, BS2 to
-           TimeSeg2, TTCM to TimeTriggeredMode, ABOM to AutoBusOff, AWUM to
-           AutoWakeUp, NART to AutoRetransmission (inversed), RFLM to
-           ReceiveFifoLocked and TXFP to TransmitFifoPriority</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span class="grame">Init(</span>) is split
-          into both HAL_CAN_Init() and HAL_CAN_Start() API's</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span class="grame">Transmit(</span>) is
-          replaced by HAL_CAN_AddTxMessage() to place Tx Request, then
-          HAL_CAN_GetTxMailboxesFreeLevel() for polling until completion.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Transmit_<span class="grame">IT(</span>) is
-          replaced by HAL_CAN_ActivateNotification() to enable transmit IT,
-          then HAL_CAN_AddTxMessage() for place Tx request.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span class="grame">Receive(</span>) is
-          replaced by HAL_CAN_GetRxFifoFillLevel() for polling until reception,
-          then HAL_CAN_GetRxMessage() <br>
-          to get Rx message.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Receive_<span class="grame">IT(</span>) is
-          replaced by HAL_CAN_ActivateNotification()&nbsp;to enable receive IT,
-          then HAL_CAN_GetRxMessage()<br>
-          in the receivecallback to get Rx message</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span class="grame">Slepp(</span>) is
-          renamed as HAL_CAN_RequestSleep()</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span class="grame">TxCpltCallback(</span>)
-          is split into HAL_CAN_TxMailbox0CompleteCallback(),
-          HAL_CAN_TxMailbox1CompleteCallback() and&nbsp;HAL_CAN_TxMailbox2CompleteCallback().</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_RxCpltCallback is split into
-          HAL_CAN_RxFifo0<span class="grame">MsgPendingCallback(</span>) and
-          HAL_CAN_RxFifo1MsgPendingCallback().</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">More complete "How to use the new
-          driver" is detailed in the driver header section itself.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new LL <span class="grame">macro</span> </span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_RCC_PLL_<span class="grame">SetMainSource(</span>) allowing to configure PLL clock
-            source</span><span style=""><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new HAL <span class="grame">macros</span></span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RCC_GET_RTC_<span class="grame">SOURCE(</span>) allowing to get the RTC clock source<o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RCC_GET_RTC_HSE_<span class="grame">PRESCALER(</span>) allowing to get the HSE clock divider
-            for RTC peripheral<o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Ensure reset of CIR and CSR registers when
-           issuing HAL_RCC_<span class="grame">DeInit(</span>)/LL_RCC_DeInit
-           functions<o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCC_<span class="grame">GetSysClockFreq(</span>)
-           to avoid risk of rounding error which may leads to a wrong returned
-           value.</span><span style="font-size: 7pt;">&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCC_<span class="grame">DeInit(</span>)
-           &nbsp;and LL_RCC_DeInit() APIs to</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Be able to return HAL/LL
-            status</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add checks for HSI, PLL
-            and PLLI2<span class="grame">S &nbsp;ready</span> before modifying
-            RCC CFGR registers</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Clear all interrupt <span class="grame">flags</span></span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Initialize systick
-            interrupt <span class="grame">period</span></span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add clean of callbacks in HAL_DMA_<span class="grame">DeInit(</span>)&nbsp;API</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix wrong DMA_FLAG_FEIFO_4 and DMA_FLAGDMAEIFO_4
-          defines <span class="grame">values</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2C </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update Interface APIs headers to remove confusing
-          message about device <span class="grame">address</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update I2C_<span class="grame">WaitOnRXNEFlagUntilTimeout(</span>)
-          to resolve a race condition between STOPF and RXNE Flags</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update&nbsp;I2C_<span class="grame">TransferConfig(</span>)
-          to fix wrong bit management</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL USART&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add assert macros to check USART BaudRate register</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL ETH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Do{..} <span class="grame">While(</span>0)&nbsp;insured
-          in&nbsp;multi statement macros :</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_<span class="grame">TRIGGER(</span>)&nbsp;</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_ETH_WAKEUP_EXTI_DISABLE_FALLINGRISING_<span class="grame">TRIGGER(</span>) </span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL FLASH&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FLASH_<span class="grame">Unlock(</span>) update
-          to return state error when the FLASH is already unlocked</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL GPIO </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add missing define of GPIO_PIN_2 in
-          GPIOK_PIN_AVAILABLE list</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL PCD </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Do{..} <span class="grame">While(</span>0)
-          &nbsp;insured in multi statement macros</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL UTILS </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f7xx_ll_utils.<span class="grame">h :</span>
-          Update LL_GetPackageType command to return uint32_t instead of
-          uint16_t</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL TIM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f7xx_hal_tim_ex.<span class="grame">c :</span>
-          Update HAL_TIMEx_ConfigBreakDeadTime API to avoid to block timer
-          behavior when <br>
-          remains in the state HAL_TIM_STATE_BUSY.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;stm32f7xx_hal_tim.<span class="grame">h :</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix __HAL_TIM_SET_<span class="grame">PRESCALER(</span>)
-           macro</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix typos in some exported macros <span class="grame">description</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL FMC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SDRAM_<span class="grame">SendCommand(</span>)
-          API: Remove the&nbsp;timeout check</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL NAND </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix wrong check for NAND <span class="grame">status</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.3 /
-    25-August-2017</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove Date and Version from header <span class="grame">files</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL drivers to refer to the new&nbsp;CMSIS
-         bit position defines instead of usage the POSITION_<span class="grame">VAL(</span>)
-         macro</span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CAN </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add missing unlock in HAL_CAN_Receive_<span class="grame">IT(</span>) process</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DCMI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DCMI driver clean-up: remove non referenced
-          callback APIs: HAL_DCMI_<span class="grame">VsyncCallback(</span>) and
-          HAL_DCMI_HsyncCallback()</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL&nbsp;DFSDM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix cast issue on APIs that return signed integer
-          value (uint32_t)&nbsp;</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA driver clean-up: remove non referenced
-          callback APIs: HAL_DMA_<span class="grame">CleanCallbacks(</span>)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL FLASH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FLASH_Program_<span class="grame">DoubleWord(</span>)
-          API: Replace 64-bit accesses with 2 double words operations</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL Generic </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update assert_<span class="grame">param(</span>)
-          macro definition to be in line with stm32_ll_utils.c driver</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL GPIO </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GPIOK_PIN_<span class="grame">AVAILABLE(</span>)
-          assert macro update to allow possibility to configure GPIO_PIN_2</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL LTDC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_LTDC_<span class="grame">LineEvenCallback(</span>)
-          API to&nbsp;HAL_LTDC_LineEven<b>t</b>Callback()</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL PCD </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_PCD_<span class="grame">IRQHandler(</span>)
-          API to fix&nbsp;transfer issues when USB HS is used with
-          DMA&nbsp;enabled</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCC_<span class="grame">GetOscConfig(</span>)
-          API to:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">set PLLR in the RCC_OscInitStruct</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">check on null <span class="grame">pointer</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCC_<span class="grame">ClockConfig(</span>)
-          API to:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">check on null <span class="grame">pointer</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">optimize&nbsp;code size by updating the handling
-           method of the SWS <span class="grame">bits</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update to <span class="grame">use&nbsp; _</span>_HAL_FLASH_GET_LATENCY()
-           flash macro instead of using direct register access to&nbsp;LATENCY
-           bits in FLASH ACR register</span><span style="">. <o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SAI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SAI_<span class="grame">DMAStop(</span>)
-          API to flush fifo after disabling&nbsp;SAI</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL TIM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_TIMEx_<span class="grame">ConfigBreakInput(</span>)
-          API to&nbsp;support BKINP/BKIN2P polarity bits.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL DMA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update SET_<span class="grame">BIT(</span>) access
-          to LIFCR and HIFCR registers by WRITE_REG() to avoid read access that
-          is not allowed when clearing DMA flags</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL I2C </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update LL_I2C_<span class="grame">Init(</span>) API
-          to avoid enabling own address1 when OwnAddress1 parameter value in
-          the I2C_InitStruct is equal to 0.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL TIM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update LL_TIM_<span class="grame">EnableUpdateEvent(</span>)
-          API to clear UDIS bit in CR1 register instead of setting it.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update LL_TIM_<span class="grame">DisableUpdateEvent(</span>)
-          API to set UDIS bit in CR1 register instead of clearing it.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL USB </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update USB_EP0<span class="grame">StartXfer(</span>)
-          API to fix&nbsp;transfer issues when USB HS is used with
-          DMA&nbsp;enabled</span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.2 /
-    14-April-2017</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CAN </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add management of&nbsp;overrun error.&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Allow possibility to receive messages from the 2
-          RX FIFOs in parallel via interrupt.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix&nbsp;message lost issue with specific sequence
-          of transmit requests.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Handle transmission failure with error callback,
-          when NART is enabled.</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add __HAL_CAN_CANCEL_<span class="grame">TRANSMIT(</span>)
-          call to abort transmission when timeout is reached</span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.1 /
-    24-March-2017</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b><o:p></o:p></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-         CHM UserManuals to support LL <span class="grame">drivers</span></span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_DMA_<span class="grame">Init(</span>)
-          function to adjust the compatibility check between FIFO threshold and
-          burst configuration</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL MMC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_MMC_<span class="grame">InitCard(</span>)
-          function with proper initialization sequence adding a delay after MMC
-          clock enable</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update MMC_<span class="grame">DMAError(</span>)
-          function ignore DMA FIFO error as not impacting the data transfer</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SD </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SD_<span class="grame">InitCard(</span>)
-          function with proper initialization sequence adding a delay after SD
-          clock enable</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update SD_<span class="grame">DMAError(</span>)
-          function ignore DMA FIFO error as not impacting the data transfer</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL NAND </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_NAND_Address_<span class="grame">Inc(</span>)
-          function implementation for proper plane number check</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL SDMMC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update SDMMC_DATATIMEOUT value with appropriate
-          value needed by reading and writing operations of SD and MMC cards</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL RTC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_RTC_TIME_<span class="grame">Get(</span>) and
-          LL_RTC_DATE_Get() inline macros optimization</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL ADC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix wrong ADC group injected sequence <span class="grame">configuration</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_ADC_INJ_<span class="grame">SetSequencerRanks(</span>)
-           and LL_ADC_INJ_GetSequencerRanks() API's update to take in
-           consideration the ADC number of conversions</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the&nbsp;defined values for ADC group
-           injected seqencer <span class="grame">ranks</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.2.0 /
-    30-December-2016</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Official release to add the support of <b>STM32F722xx,
-         STM32F723xx, STM32F732xx</b> <b>and STM32F733xx</b> devices</span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add Low Layer drivers allowing performance and
-         footprint <span class="grame">optimization</span></span></b></span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Low Layer <span class="grame">drivers</span> APIs
-          provide register level programming: require deep knowledge of
-          peripherals described in STM32F7xx Reference Manuals</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Low
-          Layer drivers are available for: ADC,&nbsp;Cortex, CRC, DAC, DMA,
-          DMA2D, EXTI, GPIO, I2C, IWDG, LPTIM, PWR, RCC, RNG, RTC, SPI, TIM,
-          USART, WWDG peripherals and additionnal Low Level Bus, System and
-          Utilities APIs.</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Low Layer <span class="grame">drivers</span> APIs
-          are implemented as static inline function in new<span class="apple-converted-space">&nbsp;</span><i>Inc/stm32f7xx_ll_ppp.h</i><span class="apple-converted-space">&nbsp;</span>files for PPP peripherals,
-          there is no configuration file and each<span class="apple-converted-space">&nbsp;</span><i>stm32f7xx_ll_ppp.h</i><span class="apple-converted-space">&nbsp;</span>file must be included in
-          user code.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new HAL <b>MMC</b> and <b>SMBUS</b> drivers</span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL Cortex</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move HAL_MPU_<span class="grame">Disable(</span>)
-          and HAL_MPU_Enable() from stm32f7xx_hal_cortex.h to
-          stm32f7xx_hal_cortex.c</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Clear the whole MPU control register in&nbsp;HAL_MPU_<span class="grame">Disable(</span>) API</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CRYP</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of <span class="grame">AES</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add a check on DMA stream instance in HAL_DMA_<span class="grame">DeInit(</span>) API</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL ETH</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix wrong definitions in driver header file
-          stm32f7_hal_eth.h</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL FLASH</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Support OTP program operation</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the support of PCROP <span class="grame">feature</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the clearing of error <span class="grame">flags</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2C</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Align driver source code with other STM32 <span class="grame">families</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL JPEG</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the output data management
-          when&nbsp;HAL_JPEG_<span class="grame">Pause(</span>) is performed
-          during the last data sending</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Enable PWR only if necessary for LSE configuration
-          in HAL_RCC_<span class="grame">OscConfig(</span>) API</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename RCC_LPTIM1CLKSOURCE_PCLK define to
-          RCC_LPTIM1CLKSOURCE_PCLK1</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename RCC_DFSDM1CLKSOURCE_PCLK define to
-          RCC_DFSDM1CLKSOURCE_PCLK2</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SPI</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Clear RX FIFO at the end of each transaction</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL UART</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove USART_CR2_LINEN bit clearing&nbsp;when
-          initializing in synchronous <span class="grame">mode</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL USB</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of embedded USB PHY Controller</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add support of Battery Charging Detector (BCD)
-          feature</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL SDMMC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new SDMMC_CmdSDEraseStartAdd,
-          SDMMC_CmdSDEraseEndAdd, SDMMC_CmdOpCondition and SDMMC_CmdSwitch
-          functions</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL USB</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update PENA bit clearing in OTG_HPRT0 register</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The following changes done on the HAL drivers
-         require an update on the application code based on older HAL <span class="grame">versions</span></span></b><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SD</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-          update</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall rework of the driver for a more
-           efficient&nbsp;implementation</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Modify initialization
-            API and <span class="grame">structures</span></span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Modify Read / Write sequences:
-            separate transfer process and SD Cards state <span class="grame">management</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Adding interrupt mode
-            for Read / Write operations</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the
-            HAL_SD_IRQHandler function by optimizing the management of
-            interrupt <span class="grame">errors</span></span><span style=""><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to the following example to identify the
-           changes: BSP example and USB_Device/MSC_Standalone application</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL TIM</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-          update</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new AutoReloadPreload field in
-           TIM_Base_InitTypeDef structure</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to the TIM examples to identify the <span class="grame">changes</span><b>&nbsp;</b></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL NAND</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-          update</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Modify NAND_AddressTypeDef,
-           NAND_DeviceConfigTypeDef and NAND_HandleTypeDef structures <span class="grame">fields</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new HAL_NAND_ConfigDevice API</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.1.1 /
-    01-July-2016</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_DMA_<span class="grame">PollForTransfer(</span>)
-          function implementation to&nbsp;avoid early TIMEOUT error.</span><span style=""> <o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL JPEG</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_JPEG_<span class="grame">ConfigEncoding(</span>)
-          function to properly set the ImageHeight and ImageWidth</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SPI</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update SPI_<span class="grame">DMATransmitReceiveCplt(</span>)
-          function to properly handle the CRC and avoid conditional statement
-          duplication</span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.1.0 /
-    22-April-2016</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Official release to add the support of <b>STM32F765xx,
-         STM32F767xx, STM32F768xx, STM32F769xx, STM32F777xx, STM32F778xx</b> <b>and
-         STM32F779xx</b> devices</span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new HAL drivers for<span class="apple-converted-space"> </span><b>DFSDM, DSI<span class="apple-converted-space">, JPEG </span></b>and<span class="apple-converted-space"> </span><b>MDIOS<span class="apple-converted-space"> </span></b>peripherals</span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Enhance HAL delay and timebase <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new drivers stm32f7xx_hal_timebase_tim_template.c,
-          stm32f7xx_hal_timebase_rtc_alarm_template.c and
-          stm32f7xx_hal_timebase_rtc_wakeup_template.c which override the
-          native HAL time base functions (defined as weak) to either use the
-          TIM or the RTC as time base tick source. For more details about the
-          usage of these drivers, please refer to HAL\HAL_TimeBase examples&nbsp;<span style="widows: 1; float: none; word-spacing: 0px;">and FreeRTOS-based <span class="grame">applications</span></span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The following changes done on the HAL drivers
-         require an update on the application code based on HAL V1.0.4</span></b><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL UART, USART, IRDA, SMARTCARD, SPI,
-          I2C,&nbsp;QSPI </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">(referenced
-          as <i>PPP</i> here below)<i> </i><span class="grame">drivers</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add PPP error management during DMA process. This
-           requires the following updates on&nbsp;user application:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Configure and enable the
-            PPP IRQ in HAL_PPP_<span class="grame">MspInit(</span>) function</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In stm32f7xx_it.c file,
-            PPP_<span class="grame">IRQHandler(</span>) function: add a call to
-            HAL_PPP_IRQHandler() function</span><span style=""> <o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add and customize the
-            Error Callback API: HAL_PPP_<span class="grame">ErrorCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2C</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-          (referenced as <i>PPP</i> here below)<i> </i>drivers:</span><span style=""> <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to avoid waiting on STOPF/BTF/AF flag
-           under DMA ISR by using the PPP end of transfer interrupt in the DMA
-           transfer process. This requires the following updates on&nbsp;user
-           application:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Configure and enable the
-            PPP IRQ in HAL_PPP_<span class="grame">MspInit(</span>) function</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In stm32f7xx_it.c file,
-            PPP_<span class="grame">IRQHandler(</span>) function: add a call to
-            HAL_PPP_IRQHandler() function</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL IWDG </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">driver:
-          rework overall driver for better implementation</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove&nbsp;HAL_IWDG_<span class="grame">Start(</span>),
-           HAL_IWDG_MspInit() and HAL_IWDG_GetState()&nbsp;APIs</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL WWDG </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">driver:
-          rework overall driver for better implementation</span><span style=""> <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove HAL_WWDG_<span class="grame">Start(</span>),
-           HAL_WWDG_Start_IT(), HAL_WWDG_MspDeInit() and HAL_WWDG_GetState()
-           APIs&nbsp;</span><span style="">
-           <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the&nbsp;</span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">HAL_WWDG_<span class="grame">Refresh(</span>WWDG_HandleTypeDef
-           *hwwdg, uint32_t counter) &nbsp;function and API &nbsp;by removing
-           the &nbsp;"counter" parameter</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL QSPI driver: </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Enhance the DMA transmit process
-          by&nbsp;using&nbsp;PPP TC interrupt instead of waiting on TC flag
-          under DMA ISR.&nbsp;This requires the following updates on&nbsp;user
-          application:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Configure and enable the QSPI&nbsp;IRQ in
-           HAL_QSPI_<span class="grame">MspInit(</span>) function</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In stm32f7xx_it.c file, QSPI_<span class="grame">IRQHandler(</span>)
-           function: add a call to HAL_QSPI_IRQHandler() function</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CEC driver: </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Overall
-          driver rework with compatibility break versus previous HAL version</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove HAL CEC polling Process functions:
-           HAL_CEC_<span class="grame">Transmit(</span>) and HAL_CEC_Receive()</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove HAL CEC receive interrupt process
-           function&nbsp;HAL_CEC_Receive_<span class="grame">IT(</span>) and
-           enable the "receive" &nbsp;mode during the Init phase</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename&nbsp;HAL_CEC_<span class="grame">GetReceivedFrameSize(</span>)
-           funtion to&nbsp;HAL_CEC_GetLastReceivedFrameSize()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new HAL APIs: HAL_CEC_<span class="grame">SetDeviceAddress(</span>)
-           and HAL_CEC_ChangeRxBuffer()</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove the&nbsp;'InitiatorAddress' field from
-           the&nbsp;CEC_InitTypeDef structure&nbsp;and manage it&nbsp;as a
-           parameter in the HAL_CEC_Transmit_<span class="grame">IT(</span>)
-           function</span><span style="">
-           <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new parameter 'RxFrameSize' in HAL_CEC_<span class="grame">RxCpltCallback(</span>) function</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move CEC Rx buffer pointer&nbsp;from
-           CEC_HandleTypeDef structure to CEC_InitTypeDef structure</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CAN</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the support of <span class="grame">CAN3</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CEC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall driver rework with&nbsp;break of
-          compatibility with HAL V1.0.4</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove the HAL CEC polling Process: HAL_CEC_<span class="grame">Transmit(</span>) and HAL_CEC_Receive()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove the HAL CEC receive interrupt process
-           (HAL_CEC_Receive_<span class="grame">IT(</span>)) and manage the
-           "Receive" mode enable within the Init phase</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_CEC_<span class="grame">GetReceivedFrameSize(</span>)
-           function to&nbsp;HAL_CEC_GetLastReceivedFrameSize() function</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new HAL APIs: HAL_CEC_<span class="grame">SetDeviceAddress(</span>)
-           and HAL_CEC_ChangeRxBuffer()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove the&nbsp;'InitiatorAddress' field from
-           the&nbsp;CEC_InitTypeDef structure&nbsp;and manage it&nbsp;as a
-           parameter in the HAL_CEC_Transmit_<span class="grame">IT(</span>)
-           function</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new parameter 'RxFrameSize' in HAL_CEC_<span class="grame">RxCpltCallback(</span>) function</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move CEC Rx buffer pointer&nbsp;from
-           CEC_HandleTypeDef structure to CEC_InitTypeDef structure <o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update driver to implement the new CEC state
-          machine: </span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new&nbsp;"rxState" field in CEC_HandleTypeDef
-           structure to provide the CEC state information related to Rx <span class="grame">Operations</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename "state" field in
-           CEC_HandleTypeDef structure to "gstate": CEC state
-           information related to global Handle management and Tx <span class="grame">Operations</span></span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update CEC process to manage the new CEC states.</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update __HAL_CEC_RESET_HANDLE_<span class="grame">STATE(</span>)
-           macro to handle the new CEC state parameters (gState, rxState)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new APIs HAL_DMA_<span class="grame">RegisterCallback(</span>)
-          and HAL_DMA_UnRegisterCallback to register/unregister the different
-          callbacks identified by the enum typedef HAL_DMA_CallbackIDTypeDef</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new API HAL_DMA_Abort_<span class="grame">IT(</span>)
-          to abort DMA transfer under interrupt context</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The new registered Abort callback is called when
-           DMA transfer abortion is <span class="grame">completed</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the check of compatibility between FIFO
-          threshold level and size of the memory burst in the HAL_DMA_<span class="grame">Init(</span>) API</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new Error Codes: HAL_DMA_ERROR_PARAM,
-          HAL_DMA_ERROR_NO_XFER and HAL_DMA_ERROR_NOT_SUPPORTED</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: rgb(98, 98, 98); margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Remove all DMA states related to
-          MEM0/MEM1 in HAL_DMA_StateTypeDef</span><span style="font-size: 9.5pt; font-family: &quot;Helvetica&quot;,sans-serif;"><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA2D</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the HAL_DMA2D_<span class="grame">DeInit(</span>)
-          function to:</span><span style="">
-          <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Abort transfer in case of ongoing DMA2D transfer</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Reset DMA2D control <span class="grame">registers</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_DMA2D_<span class="grame">Abort(</span>)
-          to disable DMA2D interrupts after stopping transfer</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Optimize HAL_DMA2D_<span class="grame">IRQHandler(</span>)
-          by reading status registers only once</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_DMA2D_<span class="grame">ProgramLineEvent(</span>)
-          function to:</span><span style="">
-          <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Return HAL error state in case of wrong line <span class="grame">value</span></span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Enable line interrupt after setting the line
-           watermark <span class="grame">configuration</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new HAL_DMA2D_<span class="grame">CLUTLoad(</span>)
-          and HAL_DMA2D_CLUTLoad_IT() functions to start DMA2D CLUT loading</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_CLUTLoading_<span class="grame">Abort(</span>)
-           function to abort the DMA2D CLUT loading</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_CLUTLoading_<span class="grame">Suspend(</span>)
-           function to suspend the DMA2D CLUT loading</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_CLUTLoading_<span class="grame">Resume(</span>)
-           function to resume the DMA2D CLUT loading</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new DMA2D dead time management:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_<span class="grame">EnableDeadTime(</span>)
-           function to enable DMA2D dead time feature</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_<span class="grame">DisableDeadTime(</span>)
-           function to disable DMA2D dead time feature</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_<span class="grame">ConfigDeadTime(</span>)
-           function to configure dead time</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the name of DMA2D Input/Output color mode
-          defines to be <span class="grame">more clear</span> for user
-          (DMA2D_INPUT_XXX for input layers Colors, DMA2D_OUTPUT_XXX for output
-          framebuffer Colors)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DCMI</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename DCMI_DMAConvCplt to DCMI_DMAXferCplt</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_DCMI_Start_<span class="grame">DMA(</span>)
-          function to&nbsp;Enable the DCMI peripheral</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new timeout implementation based on cpu cycles
-          for DCMI <span class="grame">stop</span></span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add HAL_DCMI_<span class="grame">Suspend(</span>)
-          function to suspend DCMI capture</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add HAL_DCMI_<span class="grame">Resume(</span>)
-          function to resume capture after DCMI suspend</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update lock mechanism for DCMI process</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_DCMI_<span class="grame">IRQHandler(</span>)
-          function to:</span><span style="">
-          <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add error management in case DMA errors through <span class="grame">XferAbortCallback(</span>) and HAL_DMA_Abort_IT()</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Optimize code by using direct register <span class="grame">read</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move the content of the stm32f7xx_hal_dcmi_ex.c/.h
-          files to common driver files (the extension files are kept empty for
-          projects compatibility reason)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL FLASH</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the support of Dual BANK feature</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add __HAL_FLASH_CALC_BOOT_BASE_<span class="grame">ADR(</span>)
-          macro to calculate the FLASH Boot Base Adress</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move Flash total sector define to CMSIS header <span class="grame">files</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL FMC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update FMC_NORSRAM_<span class="grame">Init(</span>)
-          to remove the Burst access mode configuration</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update FMC_SDRAM_Timing_<span class="grame">Init(</span>)
-          to fix initialization issue when configuring 2 SDRAM banks</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL HCD</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HCD_Port_<span class="grame">IRQHandler(</span>)
-          to be compliant with new Time base implementation</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2C</span></b><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""> <o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the support of I2C fast mode plus (FM+)</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update Polling management:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The Timeout value must be estimated for the
-           overall process duration: <span class="grame">the</span> Timeout
-           measurement is cumulative</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the management of Abort service:&nbsp;Abort
-          DMA transfer through <span class="grame">interrupt</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In the case of Master Abort IT transfer usage:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add&nbsp;new user
-            HAL_I2C_<span class="grame">AbortCpltCallback(</span>) to inform user
-            of the end of abort process</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">A new abort state is
-            defined in the HAL_I2C_StateTypeDef structure</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the management of I2C peripheral errors, ACK
-          failure and STOP condition detection during DMA process. This
-          requires the following updates on user application:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Configure and enable the I2C IRQ in HAL_I2C_<span class="grame">MspInit(</span>) function</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In stm32f7xx_it.c file, I2C_<span class="grame">IRQHandler(</span>)
-           function: add a call to HAL_I2C_IRQHandler() function</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add and customize the Error Callback API:
-           HAL_I2C_<span class="grame">ErrorCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to the I2C_EEPROM or I2C_TwoBoards_ComDMA
-           project examples usage of the <span class="grame">API</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the support of&nbsp;I2C repeated start
-          feature:</span><span style="">
-          <o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">With the following new APIs</span><span style=""><o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Sequential_Transmit_<span class="grame">IT(</span>)</span><span style=""> <o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Sequential_Receive_<span class="grame">IT(</span>)</span><span style=""> <o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Abort_<span class="grame">IT(</span>)</span><span style=""> <o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Slave_Sequential_Transmit_<span class="grame">IT(</span>)</span><span style=""> <o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Slave_Sequential_Receive_<span class="grame">IT(</span>)</span><span style=""> <o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_EnableListen_<span class="grame">IT(</span>)</span><span style=""> <o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_DisableListen_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new user callbacks:</span><span style=""><o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_<span class="grame">ListenCpltCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_<span class="grame">AddrCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Several updates on HAL I2C driver to implement the
-          new I2C state machine: </span><span style=""><o:p></o:p></span></li>
-      <ul type="square">
-       <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new API to get the&nbsp;I2C mode: HAL_I2C_<span class="grame">GetMode(</span>)</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update&nbsp;I2C process to manage the
-           new&nbsp;I2C <span class="grame">states</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL IWDG</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall rework of the driver for a more
-          efficient&nbsp;implementation</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove the following APIs:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span class="grame">Start(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span class="grame">MspInit(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span class="grame">GetState(</span>)</span><span style=""><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update implementation:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span class="grame">Init(</span>) : this function insures the configuration
-            and the start of the IWDG counter</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span class="grame">Refresh(</span>) : this function insures the reload of
-            the IWDG counter</span><span style=""><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to the following example to identify the
-           changes: IWDG_<span class="grame">Example</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL LPTIM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_LPTIM_TimeOut_Start_<span class="grame">IT(</span>)
-          and HAL_LPTIM_Counter_Start_IT( ) APIs to configure WakeUp Timer EXTI
-          interrupt to be able to wakeup MCU from low power mode by pressing
-          the EXTI line </span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_LPTIM_TimeOut_Stop_<span class="grame">IT(</span>)
-          and HAL_LPTIM_Counter_Stop_IT( ) APIs to disable WakeUp Timer EXTI
-          interrupt </span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL LTDC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_LTDC_<span class="grame">IRQHandler(</span>)
-          to manage the case of reload interrupt</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add LTDC extension driver needed with <span class="grame">DSI</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add HAL_LTDC_<span class="grame">SetPitch(</span>)
-          function for pitch reconfiguration</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new callback API HAL_LTDC_<span class="grame">ReloadEventCallback(</span>)</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add HAL_LTDC_<span class="grame">Reload(</span>) to
-          configure LTDC reload feature</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new No Reload LTDC variant <span class="grame">APIs</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_ConfigLayer_<span class="grame">NoReload(</span>)
-           to configure the LTDC Layer according to the specified without
-           reloading</span><span style="">
-           <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetWindowSize_<span class="grame">NoReload(</span>)
-           to set the LTDC window size without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetWindowPosition_<span class="grame">NoReload(</span>)
-           to set the LTDC window position without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetPixelFormat_<span class="grame">NoReload(</span>)
-           to reconfigure the pixel format without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetAlpha_<span class="grame">NoReload(</span>)
-           to reconfigure the layer alpha value without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetAddress_<span class="grame">NoReload(</span>)
-           to reconfigure the frame buffer Address without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetPitch_<span class="grame">NoReload(</span>)
-           to reconfigure the pitch for specific cases</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_ConfigColorKeying_<span class="grame">NoReload(</span>)
-           to configure the color keying without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_EnableColorKeying_<span class="grame">NoReload(</span>)
-           to enable the color keying without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_DisableColorKeying_<span class="grame">NoReload(</span>)
-           to disable the color keying without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_EnableCLUT_<span class="grame">NoReload(</span>)
-           to enable the color lookup table without reloading</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_DisableCLUT_<span class="grame">NoReload(</span>)
-           to disable the color lookup table without reloading</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><i><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Note:</span></u></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-           Variant functions with “_NoReload” post fix allows to set the LTDC
-           configuration/settings without immediate reload. This is useful in
-           case when the program requires to modify several LTDC settings (on
-           one or both layers) then applying (reload) these settings in one
-           shot by calling the function “HAL_LTDC_<span class="grame">Reload</span>”</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL NOR</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update NOR_ADDR_SHIFT macro <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL PCD</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_PCD_<span class="grame">IRQHandler(</span>)
-          to get HCLK frequency before setting TRDT value</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL QSPI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to manage QSPI error management during DMA <span class="grame">process</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Improve the DMA transmit process by using QSPI TC
-          interrupt instead of waiting loop on TC flag under DMA ISR</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">These two improvements require the following
-          updates on user application:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Configure and enable the QSPI IRQ in HAL_QSPI_<span class="grame">MspInit(</span>) function</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In stm32f7xx_it.c file, QSPI_<span class="grame">IRQHandler(</span>)
-           function: add a call to HAL_QSPI_IRQHandler() function</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add and customize the Error Callback API:
-           HAL_QSPI_<span class="grame">ErrorCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the management of non-blocking transfer abort
-          service:&nbsp;HAL_QSPI_Abort_<span class="grame">IT(</span>). In this
-          case the user must:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new callback HAL_QSPI_<span class="grame">AbortCpltCallback(</span>)
-           to inform user at the end of abort process</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">A new value of State in the HAL_QSPI_StateTypeDef
-           provides the current state during the abort <span class="grame">phase</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Polling management update:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The Timeout value user must be estimated for the
-           overall process duration: <span class="grame">the</span> Timeout
-           measurement is cumulative.&nbsp;</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to the following examples, which describe
-          the changes:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">QSPI_ReadWrite_DMA</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">QSPI_MemoryMapped</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">QSPI_ExecuteInPlace</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add two new APIs for the QSPI fifo threshold:</span><span style=""> <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_<span class="grame">SetFifoThreshold(</span>):
-           configure the FIFO threshold of the QSPI</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_<span class="grame">GetFifoThreshold(</span>):
-           give the current FIFO threshold</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix wrong data size management in
-          HAL_QSPI_Receive_<span class="grame">DMA(</span>)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCC_<span class="grame">PeriphCLKConfig(</span>)
-          function to adjust the SystemCoreClock</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Optimize HAL_RCC_<span class="grame">ClockConfig(</span>)
-          function code</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Optimize internal oscillators and PLL startup <span class="grame">times</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RTC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RTC_<span class="grame">GetTime(</span>) with
-          proper 'SubSeconds' and 'SecondFraction' management</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SAI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update SAI state in case of TIMEOUT error within
-          the HAL_SAI_<span class="grame">Transmit(</span>) / HAL_SAI_Receive()</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_SAI_IRQHandler:</span><span style=""> <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add error management in case DMA errors through <span class="grame">XferAbortCallback(</span>) and HAL_DMA_Abort_IT()</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add error management in case of <span class="grame">IT</span></span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move SAI_<span class="grame">BlockSynchroConfig(</span>)
-          and SAI_GetInputClock() functions to stm32f7xx_hal_sai.c/.h files (extension
-          files are kept empty for projects compatibility reason)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SPDIFRX </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall <span class="grame">driver</span> update for
-          wait on flag management optimization </span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SPI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall driver optimization to improve performance
-          in polling/interrupt mode to reach maximum peripheral <span class="grame">frequency</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Polling mode:</span><span style=""> <o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Replace the use of SPI_<span class="grame">WaitOnFlagUnitTimeout(</span>) function by
-            "if" statement to check on RXNE/TXE flage while
-            transferring data</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;Interrupt mode:</span><span style=""><o:p></o:p></span></li>
-       <ul type="square">
-        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Minimize access on SPI <span class="grame">registers</span></span><span style="font-size: 10pt;"> <o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">All modes:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the USE_SPI_CRC
-            switch to minimize the number of statements when CRC calculation is
-            <span class="grame">disabled</span></span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update&nbsp;timeout
-            management to check on global <span class="grame">processes</span></span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update error code
-            management in all processes</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update DMA process:</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the management of SPI peripheral errors
-           during DMA process. This requires the following updates in the user
-           application:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Configure and enable the
-            SPI IRQ in HAL_SPI_<span class="grame">MspInit(</span>) function</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In stm32f7xx_it.c file,
-            SPI_<span class="grame">IRQHandler(</span>) function: add a call to
-            HAL_SPI_IRQHandler() function</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add and customize the
-            Error Callback API: HAL_SPI_<span class="grame">ErrorCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to the following
-            example which describe the changes: SPI_FullDuplex_ComDMA</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL TIM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_TIM_<span class="grame">ConfigOCrefClear(</span>)
-          function for proper configuration of the SMCR register</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new function HAL_TIMEx_<span class="grame">ConfigBreakInput(</span>)
-          to configure the break input source</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL UART, USART, SMARTCARD and IRDA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">(referenced as <i>PPP</i> here below)<i> </i><span class="grame">update</span></span><span style=""> </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></b></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update Polling management:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The user Timeout value&nbsp;must be estimated for
-           the overall process duration: <span class="grame">the</span> Timeout
-           measurement is cumulative</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update DMA process:</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the management of PPP peripheral errors
-           during DMA process. This requires the following updates in user
-           application:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Configure and enable the
-            PPP IRQ in HAL_PPP_<span class="grame">MspInit(</span>) function</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">In stm32f7xx_it.c file,
-            PPP_<span class="grame">IRQHandler(</span>) function: add a call to
-            HAL_PPP_IRQHandler() function</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add and customize the
-            Error Callback API: HAL_PPP_<span class="grame">ErrorCallback(</span>)</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL WWDG </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall rework of the driver for more efficient
-          implementation</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove the following APIs:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span class="grame">Start(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_Start_<span class="grame">IT(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span class="grame">MspDeInit(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span class="grame">GetState(</span>)</span><span style=""><o:p></o:p></span></li>
-       </ul>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update implementation:</span><span style=""><o:p></o:p></span></li>
-       <ul style="margin-top: 0in;" type="square">
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span class="grame">Init(</span>)</span><span style=""><o:p></o:p></span></li>
-        <ul style="margin-top: 0in;" type="square">
-         <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">A&nbsp;new parameter in
-             the Init Structure:&nbsp;EWIMode</span><span style=""><o:p></o:p></span></li>
-        </ul>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span class="grame">MspInit(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span class="grame">Refresh(</span>)&nbsp;</span><span style=""><o:p></o:p></span></li>
-        <ul style="margin-top: 0in;" type="square">
-         <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">This function insures
-             the reload of the <span class="grame">counter</span></span><span style=""><o:p></o:p></span></li>
-         <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The "counter"
-             parameter has been <span class="grame">removed</span></span><span style=""><o:p></o:p></span></li>
-        </ul>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span class="grame">IRQHandler(</span>)</span><span style=""><o:p></o:p></span></li>
-        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span class="grame">EarlyWakeupCallback(</span>) is the new prototype of
-            HAL_WWDG_WakeupCallback()</span><span style=""><o:p></o:p></span></li>
-       </ul>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to the following example to identify the
-          changes: WWDG_<span class="grame">Example</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.0.4 /
-    09-December-2015</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL Generic </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL weak empty callbacks to prevent unused
-          argument compilation warnings with some compilers by calling the
-          following line:</span><span style="">
-          <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">UNUSED(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">hppp);</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL ETH</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update&nbsp;</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_ETH_<span class="grame">Init(</span>)
-          function to add timeout on the Software reset management</span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.0.3 /
-    13-November-2015</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">One change done on the HAL CRYP requires an update
-         on the application code based on HAL V1.0.2</span></b><span style=""> <o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_CRYP_DESECB_<span class="grame">Decrypt(</span>)
-          API to invert pPlainData and pCypherData parameters</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL Generic </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL weak empty callbacks to prevent unused
-          argument compilation warnings with some compilers by calling the
-          following line:</span><span style="">
-          <o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">UNUSED(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">hppp);</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove references to STM32CubeMX and MicroXplorer
-          from stm32f7xx_hal_msp_template.c <span class="grame">file</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL ADC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Replace ADC_CHANNEL_TEMPSENSOR definition from
-          ADC_CHANNEL_16 to ADC_CHANNEL_18 &nbsp;</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL ADC driver state machine for code
-          efficiency</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new literal: ADC_INJECTED_SOFTWARE_START to be
-          used as possible value for the ExternalTrigInjecConvEdge parameter in
-          the ADC_InitTypeDef structure to select the ADC software trigger
-          mode.</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CORTEX </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""> <o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove duplication for __HAL_CORTEX_SYSTICKCLK_<span class="grame">CONFIG(</span>) macro</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CRYP </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_CRYP_DESECB_<span class="grame">Decrypt(</span>)
-          API to fix the inverted pPlainData and pCypherData parameters issue </span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL FLASH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update OB_IWDG_STOP_ACTIVE definition</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update OB_RDP_LEVEL_x definition by proper values</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update FLASH_<span class="grame">MassErase(</span>)
-          function to consider the voltage range parameter in the mass erase
-          configuration </span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update values for LSE Drive capability <span class="grame">defines</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update PLLN min value 50 instead of <span class="grame">100</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add RCC_PLLI2SP_DIVx defines for PLLI2SP clock <span class="grame">divider</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update __HAL_RCC_USB_OTG_FS_CLK_<span class="grame">DISABLE(</span>)
-          macro to remove the disable of the SYSCFG&nbsp;</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCCEx_<span class="grame">GetPeriphCLKFreq(</span>)
-          function for proper SAI clock configuration</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SAI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update for proper management of the external
-          synchronization input <span class="grame">selection</span></span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update of&nbsp;HAL_SAI_Init () funciton</span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update definition of SAI_Block_SyncExt and
-           SAI_Block_Synchronization groups</span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update SAI_SLOTACTIVE_<span class="grame">X
-          &nbsp;defines</span> values</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update&nbsp;HAL_SAI_<span class="grame">Init(</span>)
-          function for proper companding mode management</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update SAI_Transmit_<span class="grame">ITxxBit(</span>)
-          functions to add the check on transfer counter before writing new
-          data to SAIx_DR registers</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update SAI_<span class="grame">FillFifo(</span>) function
-          to avoid issue when the number of data to transmit is smaller than
-          the FIFO size</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_SAI_<span class="grame">EnableRxMuteMode(</span>)
-          function for proper mute management</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update SAI_<span class="grame">InitPCM(</span>)
-          function to support 24bits configuration</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SD </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_SD_Get_<span class="grame">CardInfo(</span>)
-          to properly support high capacity cards</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SPDIFRX </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update SPDIFRX_<span class="grame">DMARxCplt(</span>)
-          function implementation to&nbsp;check on circular mode before
-          disabling the DMA</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL TIM </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_TIM_<span class="grame">ConfigClockSource(</span>)
-          function implementation for proper parameters check</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL UART</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update __HAL_UART_CLEAR_IT macro for proper
-          functionning&nbsp;</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ll FMC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add FMC_PAGE_SIZE_512 define</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ll SDMMC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update SDMMC_<span class="grame">SetSDMMCReadWaitMode(</span>)
-          function for proper functionning</span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.0.2 /
-    21-September-2015</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL Generic </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f7xx_hal.conf_template.h:
-          update&nbsp;HSE_STARTUP_TIMEOUT</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f7xx_hal_def.h: update the quotation marks
-          used in #error"USE_RTOS should be 0 in the current HAL <span class="grame">release</span>"</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DMA</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Overall <span class="grame">driver</span> update for
-          code optimization</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add StreamBaseAddress and StreamIndex new fields
-           in the DMA_HandleTypeDef structure</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add DMA_Base_Registers private <span class="grame">structure</span></span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add static function DMA_<span class="grame">CalcBaseAndBitshift(</span>)</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_DMA_<span class="grame">Init(</span>)
-           function to use the new added static function</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_DMA_<span class="grame">DeInit(</span>)
-           function to optimize clear flag operations</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_DMA_Start_<span class="grame">IT(</span>)
-           function to optimize interrupts enable</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_DMA_<span class="grame">PollForTransfer(</span>)
-           function to optimize check on flags</span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_DMA_<span class="grame">IRQHandler(</span>)
-           function to optimize interrupt flag management</span><span style=""><o:p></o:p></span></li>
-      </ul>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL ETH&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">remove duplicated macro IS_ETH_RX_<span class="grame">MODE(</span>)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL GPIO </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename GPIO_SPEED_LOW define to
-          GPIO_SPEED_FREQ_LOW</span><span style="">
-          <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename GPIO_SPEED_MEDIUM define to
-          GPIO_SPEED_FREQ_MEDIUM</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename GPIO_SPEED_FAST define to GPIO_SPEED_FREQ_HIGH</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename GPIO_SPEED_HIGH define to
-          GPIO_SPEED_FREQ_VERY_HIGH</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL HASH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_HASH_STATETypeDef to
-          HAL_HASH_StateTypeDef</span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename HAL_HASH_PhaseTypeDef to
-          HAL_HASHPhaseTypeDef</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update values for LSE Drive capability <span class="grame">defines</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update PLLN/PLLI2SN/PLLSAI VCO min value 100MHz
-          instead of <span class="grame">192MHz</span></span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add __HAL_RCC_MCO1_<span class="grame">CONFIG(</span>)
-          and __HAL_RCC_MCO2_CONFIG() macros</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_RCCEx_<span class="grame">PeriphCLKConfig(</span>)
-          function to reset the Backup domain only if the RTC Clock source
-          selection is modified&nbsp;</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL TIM</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update the implementation of __HAL_TIM_SET_<span class="grame">COMPARE(</span>) macro</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">remove useless <span class="grame">assert(</span>)
-          in&nbsp;HAL_TIM_PWM_ConfigChannel(), TIM_OC2_SetConfig() and
-          HAL_TIM_PWM_ConfigChannel() functions</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CAN</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add the clear flag ERRI bit in HAL_CAN_<span class="grame">IRQHandler(</span>)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2S</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update I2S HAL_I2S_<span class="grame">Transmit(</span>)
-          API&nbsp;to keep the check on busy flag only for the slave</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL QSPI</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add __HAL_QSPI_CLEAR_<span class="grame">FLAG(</span>)
-          before QSPI_Config()</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL UART</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove enabling of ERR IT source and PE source
-          from HAL_UART_Transmit_<span class="grame">IT(</span>) and remove the
-          corresponding disabling ERR/PE IT from UART_EndTransmit_IT()</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL PCD</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><b><span style="">&nbsp;</span></b><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Clean status phase received interrupt when DMA
-          mode <span class="grame">enabled</span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL HCD </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to use local variable in USB Host channel
-          re-<span class="grame">activation</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ll FMC</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-         update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update the define FMC Write FIFO Disable/Enable:
-          FMC_WRITE_FIFO_DISABLE and FMC_WRITE_FIFO_ENABLE</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">remove return HAL_ERROR from FMC_SDRAM_<span class="grame">SendCommand(</span>) function</span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.0.1 /
-    25-June-2015</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General updates to fix known defects and
-         enhancements <span class="grame">implementation</span></span><span style=""><o:p></o:p></span></li>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CRC&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update __HAL_CRC_SET_<span class="grame">IDR(</span>)
-          macro implementation to use WRITE_REG() instead of MODIFY_REG()</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CEC&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update timeout management in HAL_CEC_<span class="grame">Transmit(</span>) and HAL_CEC_Receive() functions</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL Cortex </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_MPU_<span class="grame">ConfigRegion(</span>)
-          function to be misra compliant</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL ETH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove duplicated IS_ETH_DUPLEX_<span class="grame">MODE(</span>)
-          and IS_ETH_RX_MODE() macros</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove illegal space
-          ETH_MAC_READCONTROLLER_FLUSHING macro</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update ETH_MAC_READCONTROLLER_XXX defined values
-          (XXX can be IDLE, READING_DATA and READING_STATUS)</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL FLASH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update FLASH_OB_<span class="grame">GetRDP(</span>)
-          function to return uint8_t &nbsp;instead of FlagStatus</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update OB_RDP_LEVELx definition</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add __HAL_FLASH_GET_<span class="grame">LATENCY(</span>)
-          macro</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL HASH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HASH_<span class="grame">DMAXferCplt(</span>)
-          and HASHEx_DMAXferCplt() functions to properly configure the number
-          of valid bits in last word of the message</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_HASH_SHA1_<span class="grame">Accumulate(</span>)
-          function to check on the length of the input buffer</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_HASH_<b><i>MODE</i></b>_Start_<span class="grame">IT(</span>) functions (<b><i>Mode </i></b>stands for MD5,
-          SHA1, SHA224 and SHA256<b><i> </i></b>) to :</span><span style=""><o:p></o:p></span></li>
-      <ul style="margin-top: 0in;" type="square">
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix processing fail for small input <span class="grame">buffers</span></span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">to unlock the process and call return HAL_OK at
-           the end of HASH processing to avoid incorrect repeating <span class="grame">software</span></span><span style=""> <o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">properly to manage the HashITCounter efficiency </span><span style=""><o:p></o:p></span></li>
-       <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to call the HAL_HASH_<span class="grame">InCpltCallback(</span>)
-           at the end of the complete buffer instead of every each 512 bits </span><span style=""><o:p></o:p></span></li>
-      </ul>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HASH_IT_DINI and HASH_IT_DCI definition</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update __HAL_HASH_GET_<span class="grame">FLAG(</span>)
-          macro definition</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2S </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_I2S_<span class="grame">Transmit(</span>)
-          function to ensure the waiting on Busy flag in case of slave mode
-          selection</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL RTC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_RTCEx_<span class="grame">SetWakeUpTimer(</span>)
-          and HAL_RTCEx_SetWakeUpTimer_IT() functions to properly check on
-          WUTWF flag</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">rename RTC_TIMESTAMPPIN_PI8 define to
-          RTC_TIMESTAMPPIN_POS1</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">rename RTC_TIMESTAMPPIN_PC1 define to
-          RTC_TIMESTAMPPIN_POS2</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update __HAL_RTC_WAKEUPTIMER_CLEAR_<span class="grame">FLAG(</span>) macro definition</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update __HAL_RTC_TAMPER_GET_<span class="grame">IT(</span>)
-          macro definition</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update __HAL_RTC_TAMPER_CLEAR_<span class="grame">FLAG(</span>)
-          macro definition</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update __HAL_RTC_TIMESTAMP_CLEAR_<span class="grame">FLAG(</span>) macro definition</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_<span class="grame">FLAG(</span>) macro definition</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add RTC_TAMPCR_TAMPXE and RTC_TAMPCR_TAMPXIE
-          defines</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SMARTCARD </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add SMARTCARD_FLAG_IDLE, SMARTCARD_IT_IDLE <span class="grame">and&nbsp; SMARTCARD</span>_CLEAR_IDLEF defines</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL UART </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_UART_<span class="grame">DMAResume(</span>)
-          function to clear overrun flag before resuming the Rx transfer</span><span style=""><o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update UART_FLAG_SBKF definition</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL USART </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update HAL_USART_<span class="grame">DMAResume(</span>)
-          function to clear overrun flag before resuming the Rx transfer</span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL FMC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update NAND timing maximum <span class="grame">values</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL USB </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""> <o:p></o:p></span></li>
-     <ul style="margin-top: 0in;" type="circle">
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">USB_FlushTxFifo API: update to flush all Tx <span class="grame">FIFO</span></span><span style=""> <o:p></o:p></span></li>
-      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to use local variable in USB Host channel
-          re-<span class="grame">activation</span></span><span style=""><o:p></o:p></span></li>
-     </ul>
-    </ul>
-    <h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; margin-right: 500pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif; color: white;">V1.0.0 / 12-May-2015</span><span style=""><o:p></o:p></span></h3>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in;"><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main Changes</span></u></b></p>
-    <ul style="margin-top: 0in;" type="disc">
-     <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">First official release for<b><i>
-         STM32F756xx/746xx/745xx</i></b> devices</span><span style=""><o:p></o:p></span></li>
-    </ul>
-    <h2 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><a name="License"></a><span style="font-size: 12pt; color: white;">License<o:p></o:p></span></h2>
-    <p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Redistribution
-    and use in source and binary forms, with or without modification, are
-    permitted provided that the following conditions are met:</span><span style="font-size: 10pt;"><o:p></o:p></span></p>
-    <ul type="disc">
-     <li class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Redistributions of source code must retain the above
-         copyright notice, this list of conditions and the following
-         disclaimer.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-     <li class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Redistributions in binary form must reproduce the
-         above copyright notice, this list of conditions and the following
-         disclaimer in the documentation and/or other materials provided with
-         the distribution.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-     <li class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Neither the name of STMicroelectronics nor the
-         names of its contributors may be used to endorse or promote products
-         derived </span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-    </ul>
-    <p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-    from this software without specific prior written permission.</span><span style="font-size: 10pt;"><br>
-    <br>
-    </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">THIS
-    SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-    TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-    PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
-    BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.</span><span style="font-size: 10pt;"> <o:p></o:p></span></p>
-    <div class="MsoNormal" style="text-align: center;" align="center"><span style="color: black;">
-    <hr align="center" size="1" width="100%">
-    </span></div>
-    <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in; text-align: center;" align="center"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">For
-    complete documentation on </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">STM32<span style="color: black;"> Microcontrollers
-    visit </span><u><span style="color: blue;"><a href="http://www.st.com/internet/mcu/family/141.jsp" target="_blank">www.st.com/STM32</a></span></u></span><span style="color: black;"><o:p></o:p></span></p>
-    </td>
-   </tr>
-   <tr style="">
-    <td style="padding: 0in;" valign="top"><br>
-</td>
-   </tr>
-  </tbody></table>
-  </td>
- </tr>
-</tbody></table>
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL DMA</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-</div>
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      HAL_DMA_IRQHandler() API to set
+                                      the DMA state before unlocking
+                                      access to the DMA handle.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-<p class="MsoNormal" style=""><span style="" lang="FR"><o:p>&nbsp;</o:p></span></p>
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Manage the case of an
+                                      invalid value of CallbackID passed
+                                      to the HAL_DMA_RegisterCallback()
+                                      API.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
 
-</div>
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL ADC</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-</div>
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      HAL_ADC_ConfigChannel() API to
+                                      allow the possibility to switch
+                                      between VBAT and TEMPERATURE
+                                      channels configurations.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
 
-</div>
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Better performance by
+                                      removing multiple volatile reads
+                                      or writes in interrupt handler.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
 
-</body></html>
\ No newline at end of file
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL/LL
+                                      RNG</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      LL_RNG_DeInit() API to avoid
+                                      “unused variable” warnings.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">Update
+                                      HAL_RNG_GenerateRandomNumber() API<o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                        mso-fareast-font-family:&quot;Times
+                                        New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;
+                                        mso-fareast-language:FR"
+                                        lang="EN-US">Update timeout
+                                        mechanism to avoid false timeout
+                                        detection in case of preemption.<o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL/LL
+                                      RTC</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update __HAL_RTC_…(<b>HANDLE</b>,
+                                      …) macros to access registers
+                                      through (<b>HANDLE</b>)-&gt;Instance
+                                      pointer and avoid "unused
+                                      variable" warnings.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Correct month
+                                      management in IS_LL_RTC_MONTH()
+                                      macro.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix wrong reference
+                                      to RTCx.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL LPTIM</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add check on PRIMASK
+                                      register to prevent from enabling
+                                      unwanted global interrupts within
+                                      LPTIM_Disable() and
+                                      LL_LPTIM_Disable()<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL/LL
+                                      TIM</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      HAL_TIMEx_ConfigBreakInput to use
+                                      CMSIS TIM1_OR2_BKDF1BK0E_Pos
+                                      definition instead of its hard
+                                      coded value.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix wrong compile
+                                      switch used in
+                                      TIM_LL_EC_DMABURST_BASEADDR
+                                      constant definitions.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL UART</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix erroneous UART’s
+                                      handle state in case of error
+                                      returned after DMA reception start
+                                      within UART_Start_Receive_DMA().<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Correction on UART
+                                      ReceptionType management in case
+                                      of ReceptionToIdle API are called
+                                      from RxEvent callback.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Handling of UART
+                                      concurrent register access in case
+                                      of race condition between Tx and
+                                      Rx transfers (HAL UART and LL
+                                      LPUART)<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Improve header
+                                      description of
+                                      UART_WaitOnFlagUntilTimeout()
+                                      function<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add a check on the
+                                      UART parity before enabling the
+                                      parity error interruption.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add const qualifier
+                                      for read only pointers.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix wrong cast when
+                                      computing the USARTDIV value in
+                                      UART_SetConfig().<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL/LL
+                                      USART</span></b><span
+                                    style="font-size:
+                                    10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Improve header
+                                      description of
+                                      USART_WaitOnFlagUntilTimeout()
+                                      function.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add a check on the
+                                      USART parity before enabling the
+                                      parity error interrupt.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add const qualifier
+                                      for read only pointers.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Handling of UART
+                                      concurrent register access in case
+                                      of race condition between Tx and
+                                      Rx transfers (HAL UART and LL
+                                      LPUART)<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix compilation
+                                      warnings generated with ARMV6
+                                      compiler.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL IRDA</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Improve header
+                                      description of
+                                      IRDA_WaitOnFlagUntilTimeout()
+                                      function<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add a check on the
+                                      IRDA parity before enabling the
+                                      parity error interrupt.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add const qualifier
+                                      for read only pointers.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix wrong cast when
+                                      computing the USARTDIV value in
+                                      IRDA_SetConfig().<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL
+                                      SMARTCARD</span></b><span
+                                    style="font-size:
+                                    10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Improve header
+                                      description of
+                                      SMARTCARD_WaitOnFlagUntilTimeout()
+                                      function<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add const qualifier
+                                      for read only pointers.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix wrong cast when
+                                      computing the USARTDIV value in
+                                      SMARTCARD_SetConfig().<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL/LL
+                                      SPI</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Updated to implement
+                                      Erratasheet: BSY bit may stay high
+                                      at the end of a data transfer in
+                                      Slave mode.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Updated to fix
+                                      MISRA-C 2012 Rule-13.2.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      LL_SPI_TransmitData8() API to
+                                      avoid casting the result to 8
+                                      bits.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL SMBUS</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update to fix issue
+                                      of mismatched data received by
+                                      master in case of data size to be
+                                      transmitted by the slave is
+                                      greater than the data size to be
+                                      received by the master.<o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                        mso-fareast-font-family:&quot;Times
+                                        New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;
+                                        mso-fareast-language:FR"
+                                        lang="EN-US">Add flush on TX
+                                        register.<o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL I2C</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      I2C_IsAcknowledgeFailed() API to
+                                      avoid I2C in busy state if NACK
+                                      received after transmitting
+                                      register address.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update to handle
+                                      errors in polling mode.<o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                        mso-fareast-font-family:&quot;Times
+                                        New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;
+                                        mso-fareast-language:FR"
+                                        lang="EN-US">Rename
+                                        I2C_IsAcknowledgeFailed() to
+                                        I2C_IsErrorOccurred() and
+                                        correctly manage when error
+                                        occurs.<o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Declare an internal
+                                      macro link to DMA macro to check
+                                      remaining data:
+                                      I2C_GET_DMA_REMAIN_DATA<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix written reserved
+                                      bit 28 in I2C_CR2 register.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update to fix issue
+                                      detected due to low system
+                                      frequency execution (HSI).<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL CAN</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update HAL_CAN_Init()
+                                      API to be aligned with reference
+                                      manual and to avoid timeout error:<o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                        mso-fareast-font-family:&quot;Times
+                                        New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;
+                                        mso-fareast-language:FR"
+                                        lang="EN-US">Update CAN
+                                        Initialization sequence to set
+                                        "request initialization" bit
+                                        before exit from sleep mode.<o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL DSI</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update HAL_DSI_Read()
+                                      to avoid HAL_TIMEOUT when a DSI
+                                      read command is issued to the
+                                      panel and the read data is not
+                                      captured by the DSI Host which
+                                      returns Packet Size Error.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL QSPI</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Fix compilation
+                                      warning with GCC V9.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      QSPI_WaitFlagStateUntilTimeout_CPUCycle()
+                                      to manage timeout using CPU cycles
+                                      method.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">LL FMC</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">General refactoring
+                                      and clean-up.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update to avoid
+                                      “unused variable” warnings.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL SRAM</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">General refactoring
+                                      and clean-up.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">HAL_SRAM_Process:
+                                      Update to check on the SRAM state
+                                      before performing operation.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL NAND</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">General refactoring
+                                      and clean-up.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL NOR</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">General refactoring
+                                      and clean-up.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update address
+                                      calculation in
+                                      HAL_NOR_ProgramBuffer() API<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Apply adequate
+                                      commands according to the command
+                                      set field value<o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                        mso-fareast-font-family:&quot;Times
+                                        New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;
+                                        mso-fareast-language:FR"
+                                        lang="EN-US">command set 1 for
+                                        Micron JS28F512P33.<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                        mso-fareast-font-family:&quot;Times
+                                        New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;
+                                        mso-fareast-language:FR"
+                                        lang="EN-US">command set 2 for
+                                        Micron M29W128G and Cypress
+                                        S29GL128P.<o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update some APIs in
+                                      order to be compliant for memories
+                                      with different command set, the
+                                      updated APIs are:<o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_Init()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_Read_ID()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_ReturnToReadMode()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_Read()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_Program()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_ReadBuffer()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_ProgramBuffer()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_Erase_Block()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_Erase_Chip()<o:p></o:p></span></li>
+                                    <li class="MsoNormal"
+                                      style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                      auto;line-height:normal;mso-list:l0
+                                      level3 lfo1;tab-stops:list 1.5in"><span
+                                        style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                        &quot;Times New
+                                        Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                        UI&quot;;mso-ansi-language:
+                                        FR;mso-fareast-language:FR">HAL_NOR_GetStatus()<o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Align HAL_NOR_Init()
+                                      API with core of the function when
+                                      write operation is disabled to
+                                      avoid HardFault.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL/LL
+                                      SDMMC</span></b><span
+                                    style="font-size:
+                                    10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Take in account the
+                                      voltage range in the CMD1 command.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add new LL function
+                                      to have correct response for MMC
+                                      driver.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update the driver to
+                                      have all fields correctly
+                                      initialized.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add a internal to
+                                      manage the power class and call it
+                                      before to update speed of bus
+                                      width.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add new API
+                                      HAL_MMC_GetCardExtCSDto get the
+                                      value of the Extended CSD register
+                                      and populate the ExtCSD field of
+                                      the MMC handle.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL SD</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      HAL_SD_InitCard() API to add power
+                                      up waiting time (2ms) before
+                                      starting the SD initialization
+                                      sequence.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL/LL
+                                      USB</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR">&nbsp;update<o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update in
+                                      USB_SetCurrentMode() API to
+                                      improve required wait timing to
+                                      change core mode.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Remove non required
+                                      200ms delay during host
+                                      initialization.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update
+                                      USB_FlushRxFifo() and
+                                      USB_FlushTxFifo() APIs by adding
+                                      check on AHB master IDLE state
+                                      before flushing the USB FIFO.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update to avoid
+                                      resetting host channel direction
+                                      during channel halt.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update to avoid
+                                      compiler optmization on count
+                                      variable used for USB HAL timeout
+                                      loop check.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add missing registers
+                                      callbacks check for
+                                      HAL_HCD_HC_NotifyURBChange_Callback()
+                                      API.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add new
+                                      HAL_PCD_SetTestMode() API to
+                                      handle USB device high speed Test
+                                      modes.<o:p></o:p></span></li>
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Update to set SNAK
+                                      for EPs not required during device
+                                      reset.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal"
+                                  style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                  auto;line-height:normal;mso-list:l0
+                                  level1 lfo1;tab-stops:list .5in"><b><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:
+
+                                      &quot;Times New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;;mso-ansi-language:FR;
+                                      mso-fareast-language:FR">HAL IWDG</span></b><span
+                                    style="font-size:10.0pt;
+                                    font-family:&quot;Verdana&quot;,sans-serif;mso-fareast-font-family:&quot;Times
+                                    New Roman&quot;;
+                                    mso-bidi-font-family:&quot;Segoe
+                                    UI&quot;;mso-ansi-language:FR;mso-fareast-language:
+                                    FR"><o:p></o:p></span></li>
+                                <ul type="circle">
+                                  <li class="MsoNormal"
+                                    style="color:#111111;mso-margin-top-alt:auto;mso-margin-bottom-alt:
+                                    auto;line-height:normal;mso-list:l0
+                                    level2 lfo1;tab-stops:list 1.0in"><span
+                                      style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;
+
+                                      mso-fareast-font-family:&quot;Times
+                                      New
+                                      Roman&quot;;mso-bidi-font-family:&quot;Segoe
+                                      UI&quot;; mso-fareast-language:FR"
+                                      lang="EN-US">Add LSI startup time
+                                      in default IWDG timeout
+                                      calculation
+                                      (HAL_IWDG_DEFAULT_TIMEOUT).<o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <b><u><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;"></span></u></b></p>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; width: 1416px;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;"></span></u></b>
+                              <meta http-equiv="Content-Type"
+                                content="text/html;
+                                charset=windows-1252">
+                            </p>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; width: 1416px;">
+                              <meta http-equiv="Content-Type"
+                                content="text/html;
+                                charset=windows-1252">
+                            </p>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; width: 1416px;">
+                              <meta name="ProgId"
+                                content="Word.Document">
+                              <meta name="Generator" content="Microsoft
+                                Word 15">
+                              <meta name="Originator" content="Microsoft
+                                Word 15">
+                              <!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:View>Normal</w:View>
+  <w:Zoom>0</w:Zoom>
+  <w:TrackMoves/>
+  <w:TrackFormatting/>
+  <w:HyphenationZone>21</w:HyphenationZone>
+  <w:PunctuationKerning/>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:DoNotPromoteQF/>
+  <w:LidThemeOther>EN-US</w:LidThemeOther>
+  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+  <w:Compatibility>
+   <w:BreakWrappedTables/>
+   <w:SnapToGridInCell/>
+   <w:WrapTextWithPunct/>
+   <w:UseAsianBreakRules/>
+   <w:DontGrowAutofit/>
+   <w:SplitPgBreakAndParaMark/>
+   <w:EnableOpenTypeKerning/>
+   <w:DontFlipMirrorIndents/>
+   <w:OverrideTableStyleHps/>
+  </w:Compatibility>
+  <m:mathPr>
+   <m:mathFont m:val="Cambria Math"/>
+   <m:brkBin m:val="before"/>
+   <m:brkBinSub m:val="&#45;-"/>
+   <m:smallFrac m:val="off"/>
+   <m:dispDef/>
+   <m:lMargin m:val="0"/>
+   <m:rMargin m:val="0"/>
+   <m:defJc m:val="centerGroup"/>
+   <m:wrapIndent m:val="1440"/>
+   <m:intLim m:val="subSup"/>
+   <m:naryLim m:val="undOvr"/>
+  </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
+  DefSemiHidden="false" DefQFormat="false" DefPriority="99"
+  LatentStyleCount="376">
+  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
+  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 9"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 1"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 2"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 3"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 4"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 5"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 6"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 7"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 8"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="header"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footer"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index heading"/>
+  <w:LsdException Locked="false" Priority="35" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="caption"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of figures"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope return"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="line number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="page number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of authorities"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="macro"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="toa heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 5"/>
+  <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Closing"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Signature"/>
+  <w:LsdException Locked="false" Priority="1" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Default Paragraph Font"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Message Header"/>
+  <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Salutation"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Date"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Note Heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Block Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="FollowedHyperlink"/>
+  <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
+  <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Document Map"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Plain Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="E-mail Signature"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Top of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Bottom of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal (Web)"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Acronym"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Cite"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Code"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Definition"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Keyboard"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Preformatted"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Sample"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Typewriter"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Variable"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Table"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation subject"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="No List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Contemporary"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Elegant"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Professional"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Balloon Text"/>
+  <w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Theme"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
+  <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
+  <w:LsdException Locked="false" Priority="34" QFormat="true"
+   Name="List Paragraph"/>
+  <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
+  <w:LsdException Locked="false" Priority="30" QFormat="true"
+   Name="Intense Quote"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="19" QFormat="true"
+   Name="Subtle Emphasis"/>
+  <w:LsdException Locked="false" Priority="21" QFormat="true"
+   Name="Intense Emphasis"/>
+  <w:LsdException Locked="false" Priority="31" QFormat="true"
+   Name="Subtle Reference"/>
+  <w:LsdException Locked="false" Priority="32" QFormat="true"
+   Name="Intense Reference"/>
+  <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
+  <w:LsdException Locked="false" Priority="37" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Bibliography"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
+  <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
+  <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
+  <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
+  <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
+  <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
+  <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
+  <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hashtag"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Unresolved Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Link"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+                              <style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Wingdings;
+	panose-1:5 0 0 0 0 0 0 0 0 0;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 268435456 0 0 -2147483648 0;}
+@font-face
+	{font-family:"Cambria Math";
+	panose-1:2 4 5 3 5 4 6 3 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:roman;
+	mso-font-pitch:variable;
+	mso-font-signature:-536869121 1107305727 33554432 0 415 0;}
+@font-face
+	{font-family:Verdana;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-1610610945 1073750107 16 0 415 0;}
+@font-face
+	{font-family:"Segoe UI";
+	panose-1:2 11 5 2 4 2 4 2 2 3;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-469750017 -1073683329 9 0 511 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-unhide:no;
+	mso-style-parent:"";
+	margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoChpDefault
+	{mso-style-type:export-only;
+	mso-default-props:yes;
+	font-family:"Arial",sans-serif;
+	mso-ascii-font-family:Arial;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-hansi-font-family:Arial;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoPapDefault
+	{mso-style-type:export-only;
+	line-height:115%;}
+@page WordSection1
+	{size:595.3pt 841.9pt;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.WordSection1
+	{page:WordSection1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:1340737786;
+	mso-list-template-ids:859236900;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61623;;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l0:level2
+	{mso-level-number-format:bullet;
+	mso-level-text:o;
+	mso-level-tab-stop:1.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:"Courier New";
+	mso-bidi-font-family:"Times New Roman";}
+@list l0:level3
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:1.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level4
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level5
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level6
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level7
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level8
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level9
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style><!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-priority:99;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+</style>
+<![endif]-->
+                              <meta http-equiv="Content-Type"
+                                content="text/html;
+                                charset=windows-1252">
+                            </p>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; width: 1416px;">
+                            </p>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; width: 1416px;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;"></span></u></b></p>
+                            <meta http-equiv="Content-Type"
+                              content="text/html; charset=windows-1252">
+                            <meta http-equiv="Content-Type"
+                              content="text/html; charset=windows-1252">
+                            <meta name="ProgId" content="Word.Document">
+                            <meta name="Generator" content="Microsoft
+                              Word 15">
+                            <meta name="Originator" content="Microsoft
+                              Word 15">
+                            <!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:View>Normal</w:View>
+  <w:Zoom>0</w:Zoom>
+  <w:TrackMoves/>
+  <w:TrackFormatting/>
+  <w:HyphenationZone>21</w:HyphenationZone>
+  <w:PunctuationKerning/>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:DoNotPromoteQF/>
+  <w:LidThemeOther>EN-US</w:LidThemeOther>
+  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+  <w:Compatibility>
+   <w:BreakWrappedTables/>
+   <w:SnapToGridInCell/>
+   <w:WrapTextWithPunct/>
+   <w:UseAsianBreakRules/>
+   <w:DontGrowAutofit/>
+   <w:SplitPgBreakAndParaMark/>
+   <w:EnableOpenTypeKerning/>
+   <w:DontFlipMirrorIndents/>
+   <w:OverrideTableStyleHps/>
+  </w:Compatibility>
+  <m:mathPr>
+   <m:mathFont m:val="Cambria Math"/>
+   <m:brkBin m:val="before"/>
+   <m:brkBinSub m:val="&#45;-"/>
+   <m:smallFrac m:val="off"/>
+   <m:dispDef/>
+   <m:lMargin m:val="0"/>
+   <m:rMargin m:val="0"/>
+   <m:defJc m:val="centerGroup"/>
+   <m:wrapIndent m:val="1440"/>
+   <m:intLim m:val="subSup"/>
+   <m:naryLim m:val="undOvr"/>
+  </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
+  DefSemiHidden="false" DefQFormat="false" DefPriority="99"
+  LatentStyleCount="376">
+  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
+  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 9"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 1"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 2"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 3"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 4"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 5"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 6"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 7"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 8"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="header"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footer"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index heading"/>
+  <w:LsdException Locked="false" Priority="35" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="caption"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of figures"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope return"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="line number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="page number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of authorities"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="macro"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="toa heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 5"/>
+  <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Closing"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Signature"/>
+  <w:LsdException Locked="false" Priority="1" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Default Paragraph Font"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Message Header"/>
+  <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Salutation"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Date"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Note Heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Block Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="FollowedHyperlink"/>
+  <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
+  <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Document Map"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Plain Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="E-mail Signature"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Top of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Bottom of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal (Web)"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Acronym"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Cite"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Code"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Definition"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Keyboard"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Preformatted"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Sample"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Typewriter"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Variable"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Table"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation subject"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="No List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Contemporary"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Elegant"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Professional"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Balloon Text"/>
+  <w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Theme"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
+  <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
+  <w:LsdException Locked="false" Priority="34" QFormat="true"
+   Name="List Paragraph"/>
+  <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
+  <w:LsdException Locked="false" Priority="30" QFormat="true"
+   Name="Intense Quote"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="19" QFormat="true"
+   Name="Subtle Emphasis"/>
+  <w:LsdException Locked="false" Priority="21" QFormat="true"
+   Name="Intense Emphasis"/>
+  <w:LsdException Locked="false" Priority="31" QFormat="true"
+   Name="Subtle Reference"/>
+  <w:LsdException Locked="false" Priority="32" QFormat="true"
+   Name="Intense Reference"/>
+  <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
+  <w:LsdException Locked="false" Priority="37" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Bibliography"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
+  <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
+  <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
+  <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
+  <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
+  <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
+  <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
+  <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hashtag"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Unresolved Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Link"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+                            <style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Wingdings;
+	panose-1:5 0 0 0 0 0 0 0 0 0;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 268435456 0 0 -2147483648 0;}
+@font-face
+	{font-family:"Cambria Math";
+	panose-1:2 4 5 3 5 4 6 3 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:roman;
+	mso-font-pitch:variable;
+	mso-font-signature:-536869121 1107305727 33554432 0 415 0;}
+@font-face
+	{font-family:Verdana;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-1610610945 1073750107 16 0 415 0;}
+@font-face
+	{font-family:"Segoe UI";
+	panose-1:2 11 5 2 4 2 4 2 2 3;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-469750017 -1073683329 9 0 511 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-unhide:no;
+	mso-style-parent:"";
+	margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoChpDefault
+	{mso-style-type:export-only;
+	mso-default-props:yes;
+	font-family:"Arial",sans-serif;
+	mso-ascii-font-family:Arial;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-hansi-font-family:Arial;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoPapDefault
+	{mso-style-type:export-only;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:70.85pt 70.85pt 70.85pt 70.85pt;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.WordSection1
+	{page:WordSection1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:1340737786;
+	mso-list-template-ids:859236900;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61623;;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l0:level2
+	{mso-level-number-format:bullet;
+	mso-level-text:o;
+	mso-level-tab-stop:1.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:"Courier New";
+	mso-bidi-font-family:"Times New Roman";}
+@list l0:level3
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:1.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level4
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level5
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level6
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level7
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level8
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level9
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style><!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-priority:99;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+</style>
+<![endif]-->
+                            <meta name="ProgId" content="Word.Document">
+                            <meta name="Generator" content="Microsoft
+                              Word 15">
+                            <meta name="Originator" content="Microsoft
+                              Word 15">
+                            <!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:View>Normal</w:View>
+  <w:Zoom>0</w:Zoom>
+  <w:TrackMoves/>
+  <w:TrackFormatting/>
+  <w:HyphenationZone>21</w:HyphenationZone>
+  <w:PunctuationKerning/>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:DoNotPromoteQF/>
+  <w:LidThemeOther>EN-US</w:LidThemeOther>
+  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
+  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
+  <w:Compatibility>
+   <w:BreakWrappedTables/>
+   <w:SnapToGridInCell/>
+   <w:WrapTextWithPunct/>
+   <w:UseAsianBreakRules/>
+   <w:DontGrowAutofit/>
+   <w:SplitPgBreakAndParaMark/>
+   <w:EnableOpenTypeKerning/>
+   <w:DontFlipMirrorIndents/>
+   <w:OverrideTableStyleHps/>
+  </w:Compatibility>
+  <m:mathPr>
+   <m:mathFont m:val="Cambria Math"/>
+   <m:brkBin m:val="before"/>
+   <m:brkBinSub m:val="&#45;-"/>
+   <m:smallFrac m:val="off"/>
+   <m:dispDef/>
+   <m:lMargin m:val="0"/>
+   <m:rMargin m:val="0"/>
+   <m:defJc m:val="centerGroup"/>
+   <m:wrapIndent m:val="1440"/>
+   <m:intLim m:val="subSup"/>
+   <m:naryLim m:val="undOvr"/>
+  </m:mathPr></w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
+  DefSemiHidden="false" DefQFormat="false" DefPriority="99"
+  LatentStyleCount="376">
+  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
+  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
+  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index 9"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 1"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 2"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 3"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 4"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 5"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 6"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 7"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 8"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" Name="toc 9"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="header"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footer"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="index heading"/>
+  <w:LsdException Locked="false" Priority="35" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="caption"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of figures"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="envelope return"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="footnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="line number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="page number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote reference"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="endnote text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="table of authorities"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="macro"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="toa heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Bullet 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Number 5"/>
+  <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Closing"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Signature"/>
+  <w:LsdException Locked="false" Priority="1" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Default Paragraph Font"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="List Continue 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Message Header"/>
+  <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Salutation"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Date"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text First Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Note Heading"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Body Text Indent 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Block Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="FollowedHyperlink"/>
+  <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
+  <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Document Map"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Plain Text"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="E-mail Signature"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Top of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Bottom of Form"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal (Web)"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Acronym"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Address"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Cite"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Code"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Definition"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Keyboard"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Preformatted"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Sample"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Typewriter"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="HTML Variable"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Normal Table"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="annotation subject"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="No List"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Outline List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Simple 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Classic 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Colorful 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Columns 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Grid 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 4"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 5"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 7"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table List 8"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table 3D effects 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Contemporary"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Elegant"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Professional"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Subtle 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 2"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Web 3"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Balloon Text"/>
+  <w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Table Theme"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
+  <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
+  <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
+  <w:LsdException Locked="false" Priority="34" QFormat="true"
+   Name="List Paragraph"/>
+  <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
+  <w:LsdException Locked="false" Priority="30" QFormat="true"
+   Name="Intense Quote"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
+  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
+  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
+  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
+  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
+  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
+  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
+  <w:LsdException Locked="false" Priority="19" QFormat="true"
+   Name="Subtle Emphasis"/>
+  <w:LsdException Locked="false" Priority="21" QFormat="true"
+   Name="Intense Emphasis"/>
+  <w:LsdException Locked="false" Priority="31" QFormat="true"
+   Name="Subtle Reference"/>
+  <w:LsdException Locked="false" Priority="32" QFormat="true"
+   Name="Intense Reference"/>
+  <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
+  <w:LsdException Locked="false" Priority="37" SemiHidden="true"
+   UnhideWhenUsed="true" Name="Bibliography"/>
+  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
+   UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
+  <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
+  <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
+  <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
+  <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
+  <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
+  <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
+  <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="Grid Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="Grid Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="Grid Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
+  <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
+  <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 1"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 1"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 2"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 2"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 3"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 3"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 4"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 4"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 5"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 5"/>
+  <w:LsdException Locked="false" Priority="46"
+   Name="List Table 1 Light Accent 6"/>
+  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
+  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
+  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
+  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
+  <w:LsdException Locked="false" Priority="51"
+   Name="List Table 6 Colorful Accent 6"/>
+  <w:LsdException Locked="false" Priority="52"
+   Name="List Table 7 Colorful Accent 6"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Hyperlink"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Hashtag"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Unresolved Mention"/>
+  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
+   Name="Smart Link"/>
+ </w:LatentStyles>
+</xml><![endif]-->
+                            <style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Wingdings;
+	panose-1:5 0 0 0 0 0 0 0 0 0;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 268435456 0 0 -2147483648 0;}
+@font-face
+	{font-family:"Cambria Math";
+	panose-1:2 4 5 3 5 4 6 3 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:roman;
+	mso-font-pitch:variable;
+	mso-font-signature:-536869121 1107305727 33554432 0 415 0;}
+@font-face
+	{font-family:Verdana;
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-1610610945 1073750107 16 0 415 0;}
+@font-face
+	{font-family:"Segoe UI";
+	panose-1:2 11 5 2 4 2 4 2 2 3;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-469750017 -1073683329 9 0 511 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-unhide:no;
+	mso-style-parent:"";
+	margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoChpDefault
+	{mso-style-type:export-only;
+	mso-default-props:yes;
+	font-family:"Arial",sans-serif;
+	mso-ascii-font-family:Arial;
+	mso-fareast-font-family:Arial;
+	mso-fareast-theme-font:minor-latin;
+	mso-hansi-font-family:Arial;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+.MsoPapDefault
+	{mso-style-type:export-only;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:70.85pt 70.85pt 70.85pt 70.85pt;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.WordSection1
+	{page:WordSection1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:1340737786;
+	mso-list-template-ids:859236900;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61623;;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l0:level2
+	{mso-level-number-format:bullet;
+	mso-level-text:o;
+	mso-level-tab-stop:1.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:"Courier New";
+	mso-bidi-font-family:"Times New Roman";}
+@list l0:level3
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:1.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level4
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level5
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:2.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level6
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level7
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:3.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level8
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+@list l0:level9
+	{mso-level-number-format:bullet;
+	mso-level-text:&#61607;;
+	mso-level-tab-stop:4.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Wingdings;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style><!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-priority:99;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Arial",sans-serif;
+	mso-bidi-font-family:"Times New Roman";
+	mso-bidi-theme-font:minor-bidi;
+	color:#002052;
+	mso-ansi-language:EN-US;
+	mso-fareast-language:EN-US;}
+</style>
+<![endif]-->
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">v1.2.9/ 12-February-2021</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Verdana&quot;,sans-serif;"><br>
+                              </span></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span><br>
+                                <b><u><span style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;
+                                      color: black;"><o:p></o:p></span></u></b></li>
+                            </ul>
+                            <ul type="disc">
+                              <ul type="circle">
+                                <o:p></o:p>
+                                <ul type="square">
+                                  <ul>
+                                  </ul>
+                                </ul>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.8/ 13-February-2020</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL/LL
+                                    GPIO&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update&nbsp;GPIO
+                                    initialization sequence<b>&nbsp;</b>to
+
+                                    avoid unwanted pulse on GPIO <span
+                                      class="grame">Pin's</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    I2C&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black;"><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_I2C_EV_<span class="grame">IRQHandler(</span>)
+                                    API to fix I2C send break
+                                    issue&nbsp;</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      additional check on
+                                      hi2c-&gt;hdmatx,
+                                      hdmatx-&gt;XferCpltCallback,&nbsp;hi2c-&gt;hdmarx,
+                                      hdmarx-&gt;XferCpltCallback in
+                                      I2C_Master_<span class="grame">SB(</span>)
+                                      API to avoid&nbsp;enabling DMA
+                                      request&nbsp;when IT mode is used.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_I2C_ER_<span class="grame">IRQHandler(</span>)
+                                    API to fix acknowledge failure issue
+                                    with I2C&nbsp;memory IT processes</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">&nbsp;Add&nbsp;stop
+                                      condition
+                                      generation&nbsp;when&nbsp;NACK
+                                      occurs.</span><span style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update&nbsp;HAL_I2C_<span
+                                      class="grame">Init(</span>) API to
+                                    force software reset before setting
+                                    new I2C configuration</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL I2C processes to report
+                                    ErrorCode&nbsp;when wrong I2C start
+                                    condition <span class="grame">occurs</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">&nbsp;Add
+                                      new&nbsp;ErrorCode define:
+                                      HAL_I2C_WRONG_START</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">&nbsp;Set&nbsp;ErrorCode
+                                      parameter in&nbsp;I2C handle
+                                      to&nbsp;HAL_I2C_WRONG_START</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update&nbsp;I2C_<span
+                                      class="grame">DMAXferCplt(</span>),
+
+                                    I2C_DMAError() and I2C_DMAAbort()
+                                    APIs to fix hardfault issue when
+                                    hdmatx and hdmarx&nbsp;parameters in
+                                    i2c handle aren't initialized (NULL
+                                    pointer).</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      additional check on hi2c-&gt;hdmtx
+                                      and hi2c-&gt;hdmarx before
+                                      resetting&nbsp;DMA Tx/Rx complete
+                                      <span class="grame">callback</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    ADC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    "ADC_INTERNAL_NONE" channel to
+                                    disable the VBAT &amp; TSVREFE
+                                    channel.</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DCMI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    DCMI_SyncUnmaskTypeDef structure and
+                                    HAL_DCMI_<span class="grame">ConfigSyncUnmask(</span>)
+                                    API to manage embedded
+                                    synchronization delimiters unmasks</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    EXTI</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">General
+                                    update to enhance HAL EXTI driver <span
+                                      class="grame">robustness</span>&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      additional assert check on EXTI
+                                      config <span class="grame">lines</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      to compute EXTI line mask before
+                                      read/write access to EXTI <span
+                                        class="grame">registers</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    EXTI callbacks management to be
+                                    compliant with reference manual:
+                                    only one PR register for rising and
+                                    falling interrupts.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      parameters in EXTI_HandleTypeDef
+                                      structure: merge HAL EXTI
+                                      RisingCallback and FallingCallback
+                                      in only one PendingCallback.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      HAL_EXTI_RISING_CB_ID and
+                                      HAL_EXTI_FALLING_CB_ID values from
+                                      EXTI_CallbackIDTypeDef
+                                      enumeration.</span><span style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_EXTI_<span class="grame">IRQHandler(</span>)
+                                    API to serve interrupts correctly.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      to compute EXTI line mask before
+                                      handle EXTI interrupt.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    to support GPIO port interrupts:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new "GPIOSel" parameter in
+                                      EXTI_ConfigTypeDef structure</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    HASH&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Null
+                                    pointer on handler "hhash" is now
+                                    checked before accessing structure
+                                    member "hhash-&gt;Init.DataType" in
+                                    the following API:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_<span
+                                        class="grame">Init(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Following
+                                    <b>interrupt-based</b> APIs have
+                                    been added. Interrupt mode could
+                                    allow the MCU to enter "Sleep" mode
+                                    while a data block is being
+                                    processed. Please refer to the
+                                    "##### How to use this driver #####"
+                                    section for details about their use.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_Accmlt_<span
+                                        class="grame">IT(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_Accmlt_<span
+                                        class="grame">IT(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA224_Accmlt_<span
+                                        class="grame">IT(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA256_Accmlt_<span
+                                        class="grame">IT(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Following
+                                    <b>aliases</b> have been added (just
+                                    <b>for clarity sake</b>) as they
+                                    shall be used at the <b>end</b> of
+                                    the computation of a multi-buffers
+                                    message and not at the start:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_Accmlt_<span
+                                        class="grame">End(</span>) to be
+                                      used instead of
+                                      HAL_HASH_SHA1_Start()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_Accmlt_<span
+                                        class="grame">End(</span>) to be
+                                      used instead of
+                                      HAL_HASH_MD5_Start()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_Accmlt_End_<span
+                                        class="grame">IT(</span>) to be
+                                      used instead of
+                                      HAL_HASH_SHA1_Start_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_Accmlt_End_<span
+                                        class="grame">IT(</span>) to be
+                                      used instead of
+                                      HAL_HASH_MD5_Start_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA224_Accmlt_<span
+                                        class="grame">End(</span>) to be
+                                      used instead of
+                                      HAL_HASHEx_SHA224_Start()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA256_Accmlt_<span
+                                        class="grame">End(</span>) to be
+                                      used instead of
+                                      HAL_HASHEx_SHA256_Start()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA224_Accmlt_End_<span
+                                        class="grame">IT(</span>) to be
+                                      used instead of
+                                      HAL_HASHEx_SHA224_Start_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA256_Accmlt_End_<span
+                                        class="grame">IT(</span>) to be
+                                      used instead of
+                                      HAL_HASHEx_SHA256_Start_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">MISRAC-2012
+                                    rule R.5.1 (identifiers shall be
+                                    distinct in the first 31 characters)
+                                    constrained the naming of the above
+                                    listed aliases (e.g.
+                                    HAL_HASHEx_SHA256_<b>Accmlt</b>_<span
+                                      class="grame">End(</span>) could
+                                    not be named HAL_HASHEx_SHA256_<b>Accumulate</b>_End().
+
+                                    Otherwise the name would have
+                                    conflicted with HAL_HASHEx_SHA256_<b>Accumulate</b>_End_<span
+                                      class="grame">IT(</span>)). In
+                                    order to have aligned names
+                                    following APIs have been renamed:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_<span
+                                        class="grame">Accumulate(</span>)
+                                      renamed HAL_HASH_MD5_Accmlt()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_<span
+                                        class="grame">Accumulate(</span>)
+                                      renamed HAL_HASH_SHA1_Accmlt()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA224_<span
+                                        class="grame">Accumulate(</span>)
+                                      renamed HAL_HASHEx_SHA224_Accmlt()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASHEx_SHA256_<span
+                                        class="grame">Accumulate(</span>)
+                                      renamed HAL_HASHEx_SHA256_Accmlt()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HASH
+                                    <b>handler</b> state is <b>no <span
+                                        class="grame">more</span></b>
+                                    reset to HAL_HASH_STATE_READY <b>once
+                                      DMA has been started</b> in the
+                                    following APIs:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_MD5_Start_<span
+                                        class="grame">DMA(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HMAC_MD5_Start_<span
+                                        class="grame">DMA(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HASH_SHA1_Start_<span
+                                        class="grame">DMA(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HMAC_SHA1_Start_<span
+                                        class="grame">DMA(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HASH
+                                    <b>phase</b> state is now set to
+                                    HAL_HASH_PHASE_READY<b> once the
+                                      digest has been read</b> in the
+                                    following APIs:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HASH_<span
+                                        class="grame">IT(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HMAC_<span
+                                        class="grame">Processing(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HASH_<span
+                                        class="grame">Start(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HASH_<span
+                                        class="grame">Finish(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Case
+                                    of a large buffer scattered around
+                                    in memory each piece of which is <b>not</b>
+                                    necessarily a <b>multiple of 4</b>
+                                    bytes in length.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">In
+                                      section "##### How to use this
+                                      driver #####", sub-section "***
+                                      Remarks on message length ***"
+                                      added to provide recommendations
+                                      to follow in such case.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">No
+                                      modification of the driver as the
+                                      root-cause is at design-level.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SDMMC&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix&nbsp;typo
+                                    in "FileFormatGroup" parameter in
+                                    the HAL_MMC_CardCSDTypeDef and
+                                    HAL_SD_CardCSDTypeDef structures.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    an improve handle state and error <span
+                                      class="grame">management</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    the defined MMC card capacity type
+                                    to be more meaningful:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      <b>MMC_HIGH_VOLTAGE_CARD</b> to <b>MMC
+                                        LOW_CAPACITY_CARD</b></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      <b>MMC_DUAL_VOLTAGE_CRAD</b> to <b>MMC_HIGH_CAPACITY_CARD</b></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    QSPI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    Lock mechanism from HAL_QSPI_<span
+                                      class="grame">Init(</span>) and
+                                    HAL_QSPI_DeInit() APIs</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b style="orphans: 2; widows: 2;
+                                  word-spacing: 0px;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    LPTIM&nbsp;</span></b><span
+                                  style="orphans: 2; widows: 2;
+                                  word-spacing: 0px;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    a polling mechanism to check
+                                    on&nbsp;LPTIM_FLAG_XXOK&nbsp;flags
+                                    in different <span class="grame">API</span>&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add&nbsp;LPTIM_<span
+                                        class="grame">WaitForFlag(</span>)&nbsp;API&nbsp;to
+
+                                      wait for flag set.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Perform
+                                      new checks on
+                                      HAL_LPTIM_STATE_TIMEOUT.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Workaround
+                                    to fix MCU slack in sleep <span
+                                      class="grame">mode</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      __HAL_LPTIM_DISABLE () macro used
+                                      to disable LPTIM HW instance</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Remove
+                                        the LPTIM_CR_ENABLE bit clear.</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add
+                                        a new <span class="grame">API&nbsp;
+                                          LPTIM</span>_Disable() defined
+                                        in&nbsp; hal_lptim.c</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    __HAL_LPTIM_RESET_HANDLE_STATE(__HANDLE__)
+
+                                    macro by adding a specific .... when
+                                    using callback register</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">__HAL_LPTIM_ENABLE</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    usseless check on LPTIM2 in the LL
+                                    driver since F7 support only one
+                                    instance of LPTIM.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    <span class="grame">the&nbsp; LL</span>_LPTIM_DISABLE()
+
+                                    API used to disable LPTIM HW
+                                    instance</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Move
+                                      API definition to ll_lptim.c</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b style="orphans: 2; widows: 2;
+                                  word-spacing: 0px;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL&nbsp;TIM&nbsp;</span></b><span
+                                  style="orphans: 2; widows: 2;
+                                  word-spacing: 0px;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new macros to enable and disable the
+                                    fast mode when using the one pulse
+                                    mode to output a waveform with a
+                                    minimum <span class="grame">delay</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">_<span
+                                        style="orphans: 2; widows: 2;
+                                        float: none; word-spacing: 0px;">_HAL_TIM_ENABLE_<span
+                                          class="grame">OCxFAST(</span>)
+                                        and __HAL_TIM_DISABLE_OCxFAST().</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="orphans: 2; widows: 2; float:
+                                    none; word-spacing: 0px;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      Encoder interface mode to
+                                      keep&nbsp;<span style="orphans: 2;
+                                        widows: 2; word-spacing: 0px;">TIM_CCER_CCxNP
+                                        bits <span class="grame">low</span></span><o:p></o:p></span></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add&nbsp;TIM_ENCODERINPUTPOLARITY_RISING
+                                      and
+                                      TIM_ENCODERINPUTPOLARITY_FALLING&nbsp;definitions
+                                      to determine encoder input
+                                      polarity.</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add&nbsp;IS_TIM_ENCODERINPUT_<span
+                                        class="grame">POLARITY(</span>)&nbsp;macro
+
+                                      to check&nbsp;the encoder input
+                                      polarity.</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      HAL_TIM_Encoder_<span
+                                        class="grame">Init(</span>)
+                                      API&nbsp;</span><span style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Replace
+                                        IS_TIM_IC_<span class="grame">POLARITY(</span>)
+                                        macro by
+                                        IS_TIM_ENCODERINPUT_POLARITY()
+                                        macro.</span><span style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Correct
+                                    wrong instance parameter check in
+                                    encoder <span class="grame">mode</span><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Replace
+                                      IS_TIM_CC2_INSTANCE by
+                                      IS_TIM_ENCODER_INTERFACE_INSTANCE
+                                      in encoder <span class="grame">interface
+
+                                        :</span>&nbsp;<o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_<span
+                                          class="grame">Start(</span>)<o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_<span
+                                          class="grame">Stop(</span>)<o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Start_<span
+                                          class="grame">IT(</span>)<o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Stop_<span
+                                          class="grame">IT(</span>)<o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Replace
+                                      IS_TIM_DMA_CC_INSTANCE by
+                                      IS_TIM_ENCODER_INTERFACE_INSTANCE
+                                      in encoder interface in DMA <span
+                                        class="grame">mode :</span>&nbsp;<o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Start_<span
+                                          class="grame">DMA(</span>)<o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Stop_<span
+                                          class="grame">DMA(</span>)<o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style=""><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_TIMEx_<span class="grame">MasterConfigSynchronization(</span>)
+                                    API to avoid functional errors
+                                    and&nbsp;assert fails when using
+                                    some TIM instances as input trigger.<o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Replace&nbsp;IS_TIM_SYNCHRO_<span
+                                        class="grame">INSTANCE(</span>)
+                                      macro by IS_TIM_MASTER_INSTANCE()
+                                      macro.&nbsp;<o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add&nbsp;IS_TIM_SLAVE_<span
+                                        class="grame">INSTANCE(</span>)
+                                      macro to&nbsp;check on
+                                      TIM_SMCR_MSM bit.<o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Provide
+                                    new API&nbsp;to set and clear <span
+                                      class="grame">UIFREMAP</span><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new definition for TIM Update
+                                      Interrupt Flag Remap<o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">TIM_UIFREMAP_DISABLE<o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">TIM_UIFREMAP_ENABLE<o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new macro in HAL driver to enable
+                                      and desable <span class="grame">the&nbsp;
+                                        Update</span> Interrupt Flag
+                                      Remap<o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">&nbsp;__HAL_TIM_UIFREMAP_<span
+                                          class="grame">ENABLE(</span>)<o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">__HAL_TIM_UIFREMAP_<span
+                                          class="grame">DISABLE(</span>)/__HAL_TIM_GET_UIFCPY
+                                        macro<o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new mecanism to check whether
+                                      the&nbsp;update interrupt flag
+                                      (UIF) copy is set or <span
+                                        class="grame">not</span>&nbsp;<o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add
+                                        the __HAL_TIM_GET_<span
+                                          class="grame">UIFCPY(</span>)
+                                        macro in the HAL driver<o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add
+                                        LL_TIM_<span class="grame">IsActiveUIFCPY(</span>)
+                                        API in the LL driver<o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new macro to check on
+                                      the&nbsp;Update Interrupt Flag
+                                      Remap mode<o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">IS_TIM_UIFREMAP_<span
+                                          class="grame">MODE(</span>)<o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    usseless define in the LL <span
+                                      class="grame">driver</span>&nbsp;<o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">TIMx_AF1_BKINE
+                                      / TIMx_AF1_BKDFBKE <span
+                                        class="grame">/ &nbsp;TIMx</span>_AF2_BK2INE
+                                      / &nbsp;TIMx_AF2_BK2DFBKE /
+                                      &nbsp;TIMx_AF2_BK2INP</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b style="orphans: 2; widows: 2;
+                                  word-spacing: 0px;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL&nbsp;SMARTCARD</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    SMARTCARD_<span class="grame">SetConfig(</span>)
+                                    API.</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Split
+                                      HAL_RCC_GetPCLK1<span
+                                        class="grame">Freq(</span>) and
+                                      HAL_RCC_GetPCLK2Freq() macros from
+                                      the BRR calculation.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL&nbsp;IRDA&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><b><span
+                                    style=""><o:p></o:p></span></b></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    IRDA_<span class="grame">SetConfig(</span>)
+                                    API&nbsp;</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Split
+                                      HAL_RCC_GetPCLK1<span
+                                        class="grame">Freq(</span>) and
+                                      HAL_RCC_GetPCLK2Freq() macros from
+                                      the IRDA_DIV_SAMPLING16() macro.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    some API <span class="grame">desciption</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_IRDA_<span
+                                        class="grame">Transmit(</span>)
+                                      /&nbsp;HAL_IRDA_Transmit_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_IRDA_<span
+                                        class="grame">Receive(</span>)
+                                      /&nbsp;HAL_IRDA_Receive_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_IRDA_Transmit_<span
+                                        class="grame">DMA(</span>) /
+                                      HAL_IRDA_Receive_DMA()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RCC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    the HAL_RCC_<span class="grame">ClockConfig(</span>)
+                                    and HAL_RCC_DeInit() API to don't
+                                    overwrite the custom tick priority</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_RCC_<span class="grame">OscConfig(</span>)
+                                    API to don't return HAL_ERROR if
+                                    request repeats the current PLL
+                                    configuration</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL/LL
+                                    USART</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">&nbsp;update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support to the Receiver Timeout
+                                    Interrupt in the
+                                    HAL_USART_IRQHandler</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    some API <span class="grame">desciption</span>&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_USART_<span
+                                        class="grame">Transmit(</span>)
+/&nbsp;HAL_USART_Transmit_IT()&nbsp;</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_USART_<span
+                                        class="grame">Receive(</span>)
+                                      /&nbsp;HAL_USART_Receive_IT()&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_USART_<span
+                                        class="grame">TransmitReceive(</span>)
+/&nbsp;HAL_USART_TransmitReceive_IT()&nbsp;</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_USART_Transmit_<span
+                                        class="grame">DMA(</span>) /
+                                      HAL_USART_Receive_DMA() /
+                                      HAL_USART_TransmitReceive_DMA()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    USART_<span class="grame">SetConfig(</span>)
+                                    API&nbsp;</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Split
+                                    HAL_RCC_GetPCLK1<span class="grame">Freq(</span>)
+                                    and HAL_RCC_GetPCLK2Freq() macros
+                                    from the USART_DIV_SAMPLING8() macro</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Support
+                                    Stop Mode functionalities in the
+                                    USART <span class="grame">driver</span>&nbsp;&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    class="grame"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      &nbsp;definition</span></span><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;"> of
+                                    USART_ISR_REACK USART,&nbsp; receive
+                                    enable acknowledge flag in the HAL
+                                    driver</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new flag definition in the LL <span
+                                      class="grame">driver</span>&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_ICR_<span
+                                        class="grame">WUCF&nbsp; Wakeup</span>
+                                      from Stop mode flag&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_ISR_WUF
+                                      Wakeup from Stop mode <span
+                                        class="grame">flag</span>&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_ISR_REACK
+                                      Receive enable acknowledge <span
+                                        class="grame">flag</span>&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_CR3_WUFIE
+                                      Wakeup from Stop mode interrupt <span
+                                        class="grame">enable</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new definition of the different
+                                    event which activates
+                                    the&nbsp;wakeup from Stop mode <span
+                                      class="grame">flag</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_
+                                      USART_WAKEUP_ON_ADDRESS</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_WAKEUP_ON_STARTBIT</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_WAKEUP_ON_RXNE</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 2pt; margin-bottom:
+                                  2pt;"><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new API in LL driver to support stop
+                                    <span class="grame">mode</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_<span
+                                        class="grame">EnableInStopMode(</span>)
+                                      to enable the USART in stop mode</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_<span
+                                        class="grame">DisableInStopMode(</span>)
+                                      to disable the USART in stop mode</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_<span
+                                        class="grame">IsEnabledInStopMode(</span>)
+                                      to check if the USART is enabled
+                                      or not in the stop mode</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_<span
+                                        class="grame">EnableClockInStopMode(</span>)
+                                      to enable the USART clock in the
+                                      stop mode</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_<span
+                                        class="grame">DisableClockInStopMode(</span>)
+                                      to disable the USART clock in the
+                                      stop mode</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_<span
+                                        class="grame">IsClockEnabledInStopMode(</span>)
+                                      to check whether USART clock are
+                                      enabled or not in the stop mode</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 2pt; margin-bottom:
+                                  2pt;"><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new API in LL driver to manage event
+                                    relisted to Wake UP Interrupt Flag</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_<span
+                                        class="grame">SetWKUPType(</span>)
+                                      to select the event type for Wake
+                                      UP Interrupt Flag</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_<span
+                                        class="grame">GetWKUPType(</span>)
+                                      to get&nbsp; the event type for
+                                      Wake UP Interrupt Flag</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_IsActiveFlag_<span
+                                        class="grame">WKUP(</span>) to
+                                      Check if the USART Wake Up from
+                                      stop mode Flag is set or not</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_IsActiveFlag_<span
+                                        class="grame">REACK(</span>) to
+                                      Check if the USART Receive Enable
+                                      Acknowledge Flag is set or not</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_ClearFlag_<span
+                                        class="grame">WKUP(</span>)
+                                      Clear Wake Up from stop mode Flag</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 2pt; margin-bottom:
+                                  2pt;"><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new API in LL driver to manage wake
+                                    up from stop <span class="grame">interruption</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_EnableIT_<span
+                                        class="grame">WKUP(</span>) to
+                                      Enable Wake Up from Stop Mode
+                                      Interrupt</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_DisableIT_<span
+                                        class="grame">WKUP(</span>) to
+                                      Disable Wake Up from Stop Mode
+                                      Interrupt</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 2pt;
+                                    margin-bottom: 2pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_USART_IsEnabledIT_<span
+                                        class="grame">WKUP(</span>) to
+                                      Check if the USART Wake Up from
+                                      Stop Mode Interrupt is enabled or
+                                      not</span><span style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL/LL
+                                    USB </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">&nbsp;Add
+                                    handling USB host babble error <span
+                                      class="grame">interrupt</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">&nbsp;Fix
+                                    Enabling ULPI interface for
+                                    platforms that integrates USB HS PHY</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">&nbsp;Fix
+                                    Host data toggling for IN Iso
+                                    transfers</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">&nbsp;Ensure
+                                    to disable USB EP during endpoint <span
+                                      class="grame">deactivation</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.7/ 08-February-2019</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix CodeSonar compilation <span
+                                    class="grame">warnings</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix SW4STM32 compilation
+                                  errors under <span class="grame">Linux</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix the user manual .chm <span
+                                    class="grame">files</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Add
+                                  support of HAL callback registration <span
+                                    class="grame">feature</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Add
+                                  new<span class="apple-converted-space">
+                                  </span><b>HAL EXTI</b><span
+                                    class="apple-converted-space"> </span>driver</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">The
+                                    following changes done on the HAL
+                                    drivers require an update on the
+                                    application code based on older HAL
+                                    <span class="grame">versions</span></span></b><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rework
+                                    of HAL CRYP driver<b> (compatibility
+                                      break) </b></span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      CRYP driver has been redesigned
+                                      with new API's, to bypass
+                                      limitations on data
+                                      Encryption/Decryption management
+                                      present with previous HAL CRYP
+                                      driver version.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      new HAL CRYP driver is the
+                                      recommended version. It is located
+                                      as usual in
+                                      Drivers/STM32F7xx_HAL_Driver/Src
+                                      and
+                                      Drivers/STM32f7xx_HAL_Driver/Inc
+                                      folders. It can be enabled through
+                                      switch HAL_CRYP_MODULE_ENABLED in
+                                      stm32f7xx_hal_conf.h</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      legacy HAL CRYP driver is no
+                                      longer supported.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL/LL
+                                    Generic </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of <b>HAL callback
+                                      registration</b> <span
+                                      class="grame">feature</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      feature disabled by default is
+                                      available for the following HAL
+                                      drivers:</span><span style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><b><span
+                                          style="font-size: 10pt;
+                                          font-family:
+                                          &quot;Verdana&quot;,sans-serif;">ADC,
+                                          CAN, CEC, CRYP, DAC, DCMI,
+                                          DFSDM, DMA2D, DSI, ETH, HASH,
+                                          HCD, I2C, SMBUS, UART, USART,
+                                          IRDA, JPEG, SMARTCARD, LPTIM,
+                                          LTDC, MDIOS, MMC, NAND, <span
+                                            class="grame">NOR,</span>
+                                          PCD, QSPI, RNG, RTC, SAI, SD,
+                                          SDRAM, SRAM, SPDIFRX, SPI,
+                                          I2S, TIM </span></b><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">and<b>
+                                          WWDG</b></span><span style=""><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      feature may be enabled
+                                      individually per HAL <i>PPP</i>
+                                      driver by setting the
+                                      corresponding definition USE_HAL_<i>PPP</i>_REGISTER_CALLBACKS
+
+                                      to&nbsp;1U in stm32f7xx_hal_conf.h
+                                      project configuration file
+                                      (template file
+                                      stm32f7xx_hal_conf_template.h
+                                      available <span class="grame">from&nbsp;
+                                        Drivers</span>/STM32F7xx_HAL_Driver/Inc)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Once
+                                      <span class="grame">enabled ,</span>
+                                      the user application may resort to
+                                      HAL_PPP_RegisterCallback() to
+                                      register specific callback
+                                      function(s) and unregister
+                                      it(them) with HAL_<i>PPP</i>_UnRegisterCallback().</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">General
+                                    updates to fix MISRA 2012
+                                    compilation <span class="grame">errors</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_IS_BIT_SET()/HAL_IS_BIT_<span
+                                        class="grame">CLR(</span>)
+                                      macros implementation update</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">"stdio.h"
+                                      include updated with "stddef.<span
+                                        class="grame">h</span>"</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    GPIO</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  Update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_GPIO_<span
+                                      class="grame">TogglePin(</span>)
+                                    API implementation update: to
+                                    improve robustness</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_GPIO_<span
+                                      class="grame">DeInit(</span>) API
+                                    update to ensure clear all GPIO EXTI
+                                    pending interrupts.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CRYP</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><b><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      CRYP_InitTypeDef </span></b><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">is
+                                    no more supported, changed by <b>CRYP_ConfigTypedef</b>
+                                    to allow changing parameters <br>
+                                    using HAL_CRYP_<span class="grame">setConfig(</span>)
+                                    API without reinitialize the CRYP IP
+                                    using the HAL_CRYP_Init() API</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">New
+                                    parameters added in the <b>CRYP_ConfigTypeDef</b>
+                                    structure: <b>B0</b> and <span
+                                      class="grame"><b>DataWidthUnit</b></span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Input
+                                    data size parameter is added in the
+                                    <b>CRYP_HandleTypeDef</b> structure</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new APIs to manage the CRYP
+                                    configuration:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">&nbsp;HAL_CRYP_<span
+                                        class="grame">SetConfig(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYP_<span
+                                        class="grame">GetConfig(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new APIs to manage the Key
+                                    derivation:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_<span
+                                        class="grame">EnableAutoKeyDerivation(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_<span
+                                        class="grame">DisableAutoKeyDerivation(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new APIs to encrypt and decrypt
+                                    data:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYP_<span
+                                        class="grame">Encypt(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYP_<span
+                                        class="grame">Decypt(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Encypt_<span
+                                        class="grame">IT(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Decypt_<span
+                                        class="grame">IT(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Encypt_<span
+                                        class="grame">DMA(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Decypt_<span
+                                        class="grame">DMA(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new APIs to generate TAG:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_AES<b>GCM</b>_<span
+                                        class="grame">GenerateAuthTAG(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_AES<b>CCM</b>_<span
+                                        class="grame">GenerateAuthTAG(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    I2C</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">I2C
+                                    API changes for MISRA-C 2012
+                                    compliancy:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+HAL_I2C_Master_Sequential_Transmit_<span class="grame">IT(</span>) to
+                                      HAL_I2C_Master_Seq_Transmit_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_I2C_Master_Sequentiel_Receive_<span
+                                        class="grame">IT(</span>) to
+                                      HAL_I2C_Master_Seq_Receive_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_I2C_Slave_Sequentiel_Transmit_<span
+                                        class="grame">IT(</span>) to
+                                      HAL_I2C_Slave_Seq_Transmit_IT() </span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_I2C_Slave_Sequentiel_Receive_<span
+                                        class="grame">DMA(</span>) to
+                                      HAL_I2C_Slave_Seq_Receive_DMA()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black;"><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of I2C repeated start
+                                    feature in DMA Mode:</span><span
+                                    style="font-size: 13.5pt;"><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <p class="MsoNormal" style="margin-left:
+                              1.5in; text-indent: -0.25in;"><span
+                                style="font-size: 13.5pt; color: black;">1.</span><span
+                                style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">With the following new API's</span><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <p class="MsoNormal" style="margin-left:
+                              2in; text-indent: -0.25in;"><span
+                                style="font-size: 13.5pt; color: black;">1.</span><span
+                                style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">HAL_I2C_Master_Seq_Transmit_<span
+                                  class="grame">DMA(</span>)</span><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <p class="MsoNormal" style="margin-left:
+                              2in; text-indent: -0.25in;"><span
+                                style="font-size: 13.5pt; color: black;">2.</span><span
+                                style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">HAL_I2C_Master_Seq_Receive_<span
+                                  class="grame">DMA(</span>)</span><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <p class="MsoNormal" style="margin-left:
+                              2in; text-indent: -0.25in;"><span
+                                style="font-size: 13.5pt; color: black;">3.</span><span
+                                style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">HAL_I2C_Slave_Seq_Transmit_<span
+                                  class="grame">DMA(</span>)</span><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <p class="MsoNormal" style="margin-left:
+                              2in; text-indent: -0.25in;"><span
+                                style="font-size: 13.5pt; color: black;">4.</span><span
+                                style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">HAL_I2C_Slave_Seq_Receive_<span
+                                  class="grame">DMA(</span>)</span><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <p class="MsoNormal" style="margin-left:
+                              1in; text-indent: -0.25in;"><span
+                                style="font-size: 13.5pt; color: black;">3.</span><span
+                                style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">Add new I2C transfer options to
+                                easy manage the sequential <span
+                                  class="grame">transfers</span></span><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <p class="MsoNormal" style="margin-left:
+                              1.5in; text-indent: -0.25in;"><span
+                                style="font-size: 13.5pt; color: black;">1.</span><span
+                                style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">I2C_OTHER_FRAME</span><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <p class="MsoNormal" style="margin-left:
+                              1.5in; text-indent: -0.25in;"><span
+                                style="font-size: 13.5pt; color: black;">2.</span><span
+                                style="font-size: 7pt; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">I2C_OTHER_AND_LAST_FRAME</span><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span class="grame"><b><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL&nbsp;
+                                      RCC</span></b></span><b><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;"> </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    LL_RCC_<span class="grame">GetSAIClockFreq(</span>)
+                                    API to return the right frequency
+                                    according to the SAI clock source</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RNG </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    to manage RNG error code: </span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      ErrorCode parameter in HAL RNG
+                                      Handler structure</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      HAL_RNG_<span class="grame">GetError(</span>)
+                                      API</span><span style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    Lock/Unlock mecanism <span
+                                      class="grame">update</span> </span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    ADC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    VREFINT/TEMPSENSOR calibration
+                                    address registers for
+                                    STM32F74x/75x/F76/F77 devices</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><b><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Note</span></b><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">:
+                                      For STM32F72/F73 the issue will be
+                                      fixed in next release</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_ADC_<span
+                                      class="grame">Start(</span>),
+                                    HAL_ADC_Start_IT() and
+                                    HAL_ADC_Start_DMA() update to
+                                    prevention from starting ADC2 or
+                                    ADC3 once multimode is enabled</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    <span class="grame">DFSDM&nbsp; </span></span></b><span
+                                  class="grame"><span style="font-size:
+                                    10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">General
+                                    updates to be compliant with DFSDM
+                                    bits naming used in CMSIS files.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    <span class="grame">CAN&nbsp; </span></span></b><span
+                                  class="grame"><span style="font-size:
+                                    10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    possible values list for
+                                    FilterActivation parameter in
+                                    CAN_FilterTypeDef structure</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">CAN_FILTER_ENABLE
+                                      instead of <span class="grame">ENABLE</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">CAN_FILTER_DISABLE
+                                      instead of <span class="grame">DISABLE</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    <span class="grame">CEC&nbsp; </span></span></b><span
+                                  class="grame"><span style="font-size:
+                                    10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL CEC State management method:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      HAL_CEC_StateTypeDef structure <span
+                                        class="grame">parameters</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new defines for CEC <span
+                                        class="grame">states</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA2<span class="grame">D&nbsp; </span></span></b><span
+                                  class="grame"><span style="font-size:
+                                    10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    unused DMA2D_ColorTypeDef structure
+                                    to be compliant with MISRAC 2012
+                                    Rule 2.3</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">General
+                                    update to use dedicated defines for
+                                    DMA2D_BACKGROUND_LAYER and
+                                    DMA2D_FOREGROUND_LAYER instead of
+                                    numerical values: 0/1.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL/LL
+                                    RTC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL/
+                                    LL <span class="grame">drivers</span>
+                                    optimization</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      driver: remove unused <span
+                                        class="grame">variables</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL
+                                      driver: getter APIs optimization</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    JPEG </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    parameters type in JPEG_ConfTypeDef
+                                    structure to be aligned with 32-<span
+                                      class="grame">bits</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SPI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    rework of the driver for a more
+                                    efficient&nbsp;implementation</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the following new macros:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">SPI_CHECK_<span
+                                        class="grame">FLAG(</span>) </span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">SPI_CHECK_IT_<span
+                                        class="grame">SOURCE(</span>) </span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    HAL_SPIEx_<span class="grame">FlushRxFifo(</span>)
+                                    API to flush the SPI FIFO RX.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_SPI_<span class="grame">Abort(</span>)
+                                    to fix abort issue in SPI TX or Rx
+                                    mode only </span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_SPI_Transmit()/HAL_SPI_<span
+                                      class="grame">Receive(</span>)
+                                    API's to fix memory overflow issue.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    I2S </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    rework of the driver for a more
+                                    efficient&nbsp;implementation</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the following new macros:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">I2S_CHECK_<span
+                                        class="grame">FLAG(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">I2S_CHECK_IT_<span
+                                        class="grame">SOURCE(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_I2S_Transmit()/HAL_I2S_<span
+                                      class="grame">Receive(</span>)
+                                    API's to fix memory overflow issue.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL/LL
+                                    TIM </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Move
+                                    the following TIM structures from
+                                    stm32f4xx_hal_tim_ex.h into
+                                    stm32f4xx_hal_tim.h</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">TIM_MasterConfigTypeDef</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">TIM_BreakDeadTimeConfigTypeDef</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new TIM Callbacks API's:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_TIM_<span
+                                        class="grame">PeriodElapsedHalfCpltCallback(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_TIM_IC_<span
+                                        class="grame">CaptureHalfCpltCallback(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_TIM_PWM_<span
+                                        class="grame">PulseFinishedHalfCpltCallback(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_TIM_<span
+                                        class="grame">TriggerHalfCpltCallback(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">TIM
+                                    API changes for MISRA-C 2012
+                                    compliancy:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_TIM_SlaveConfigSynchronization
+                                      to HAL_TIM_SlaveConfigSynchro</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_TIM_SlaveConfigSynchronization_IT
+                                      to HAL_TIM_SlaveConfigSynchro_IT</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_TIMEx_ConfigCommutationEvent
+                                      to HAL_TIMEx_ConfigCommutEvent</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_TIMEx_ConfigCommutationEvent_IT
+                                      to HAL_TIMEx_ConfigCommutEvent_IT</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_TIMEx_ConfigCommutationEvent_DMA
+                                      to HAL_TIMEx_ConfigCommutEvent_DMA</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_TIMEx_CommutationCallback to
+                                      HAL_TIMEx_CommutCallback</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_TIMEx_DMACommutationCplt to
+                                      TIMEx_DMACommutationCplt</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    UART </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    rework of the driver for a more
+                                    efficient&nbsp;implementation</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the following UART API's in
+                                    stm32f7xx_hal_uart_ex.c:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">&nbsp;HAL_RS485Ex_<span
+                                        class="grame">Init(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_MultiProcessorEx_AddressLength_<span
+                                        class="grame">Set(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL/LL
+                                    USB</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rework
+                                    USB interrupt handler and improve HS
+                                    DMA support in Device <span
+                                      class="grame">mode</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    BCD handling for OTG instance in
+                                    device <span class="grame">mode</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">cleanup
+                                    reference to low speed in device
+                                    mode</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">allow
+                                    writing TX FIFO in case of transfer
+                                    length is equal to available space
+                                    in the TX <span class="grame">FIFO</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    Toggle OUT interrupt channel in host
+                                    <span class="grame">mode</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    IWDG </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    LL inline macros to use IWDGx
+                                    parameter instead of IWDG instance
+                                    defined in CMSIS <span
+                                      class="grame">device</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.6 / 29-June-2018</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; orphans: 2; text-align:
+                              start; widows: 2; word-spacing: 0px;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b><span
+                                style="font-size: 13.5pt; color: black;"><o:p></o:p></span></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Update
+                                  to support STM32F730xx and STM32F750xx
+                                  value <span class="grame">lines</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">DMA_CHANNEL_8
+                                    to DMA_CHANNEL_15 <span
+                                      class="grame">are</span> also
+                                    defined in case of&nbsp;STM32F730xx
+                                    (same&nbsp;features as STM32F733xx
+                                    line)</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    FLASH&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of&nbsp;STM32F730xx with 4
+                                    FLash sectors of 16KB each.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of&nbsp;STM32F750xx with 2
+                                    FLash sectors of 32KB each.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    GPIO&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of&nbsp;STM32F730xx value <span
+                                      class="grame">line :</span>
+                                    same&nbsp;features as STM32F733xx
+                                    line</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of&nbsp;STM32F750xx value <span
+                                      class="grame">line :</span>
+                                    same&nbsp;features as
+                                    STM32F756xx&nbsp;line</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RCC&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of&nbsp;STM32F730xx value <span
+                                      class="grame">line :</span>
+                                    same&nbsp;features as
+                                    STM32F733xx&nbsp;line</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of&nbsp;STM32F750xx value <span
+                                      class="grame">line :</span>
+                                    same&nbsp;features as
+                                    STM32F756xx&nbsp;line</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.5 / 02-February-2018</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new macro to get variable aligned on
+                                    32-bytes, required for cache
+                                    maintenance <span class="grame">purpose</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    <span class="grame">UNUSED(</span>)
+                                    macro implementation to avoid GCC
+                                    warning</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      warning is detected when the <span
+                                        class="grame">UNUSED(</span>)
+                                      macro is called from C++ file</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SAI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_SAI_<span class="grame">DMAStop(</span>)
+                                    and HAL_SAI_Abort() process to fix
+                                    the lock/unlock audio issue </span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    PWR </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_PWR_<span class="grame">EnterSLEEPMode(</span>)
+                                    and HAL_PWR_EnterSTOPMode() APIs to
+                                    ensure that all instructions
+                                    finished before entering STOP mode.
+                                  </span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    HCD </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new callback to be used to handle
+                                    usb device connection/<span
+                                      class="grame">disconnection</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HCD_PortEnabled_<span
+                                        class="grame">Callback(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_HCD_PortDisabled_<span
+                                        class="grame">Callback(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    to prevent reactivate host
+                                    interrrupt <span class="grame">channel</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.4 / 22-December-2017</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">The
+                                    following changes done on the HAL
+                                    drivers require an update on the
+                                    application code based on older HAL
+                                    <span class="grame">versions</span></span></b><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><b><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rework
+                                      of HAL CAN driver (compatibility
+                                      break)&nbsp;</span></b><b><span
+                                      style=""><o:p></o:p></span></b></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">A
+                                      new HAL CAN driver has been
+                                      redesigned with new APIs, to
+                                      bypass limitations on CAN Tx/Rx
+                                      FIFO management present with
+                                      previous HAL CAN driver version.</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      new HAL CAN driver is the
+                                      recommended version. It is located
+                                      as usual in
+                                      Drivers/STM32F7xx_HAL_Driver/Src
+                                      and
+                                      Drivers/STM32f7xx_HAL_Driver/Inc
+                                      folders. It can be enabled through
+                                      switch HAL_CAN_MODULE_ENABLED in
+                                      stm32f7xx_hal_conf.h</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      legacy HAL CAN driver is also
+                                      present in the release in
+                                      Drivers/STM32F7xx_HAL_Driver/Src/Legacy
+                                      and
+                                      Drivers/STM32F7xx_HAL_Driver/Inc/Legacy
+                                      folders for software compatibility
+                                      reasons. Its usage is not
+                                      recommended as deprecated.&nbsp;It
+                                      can however be enabled through
+                                      switch
+                                      HAL_CAN_LEGACY_MODULE_ENABLED in
+                                      stm32f7xx_hal_conf.h</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL driver to allow user to change
+                                    systick period to 1<span
+                                      class="grame">ms ,</span> 10 ms or
+                                    100 ms :</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      the following <span class="grame">API's
+                                        :</span>&nbsp;&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_<span
+                                          class="grame">GetTickPrio(</span>)
+                                        : Returns a tick priority.</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_<span
+                                          class="grame">SetTickFreq(</span>)
+                                        : Sets new tick&nbsp;frequency.</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_<span
+                                          class="grame">GetTickFreq(</span>)
+                                        : Returns tick frequency.</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      HAL_TickFreqTypeDef enumeration
+                                      for the different Tick <span
+                                        class="grame">Frequencies :</span>
+                                      10 Hz , 100 Hz and 1KHz (default).</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CAN </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fields
+                                    of CAN_InitTypeDef structure are
+                                    reworked:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">SJW
+                                      to SyncJumpWidth, BS1 to TimeSeg1,
+                                      BS2 to TimeSeg2, TTCM to
+                                      TimeTriggeredMode, ABOM to
+                                      AutoBusOff, AWUM to AutoWakeUp,
+                                      NART to AutoRetransmission
+                                      (inversed), RFLM to
+                                      ReceiveFifoLocked and TXFP to
+                                      TransmitFifoPriority</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span
+                                      class="grame">Init(</span>) is
+                                    split into both HAL_CAN_Init() and
+                                    HAL_CAN_Start() API's</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span
+                                      class="grame">Transmit(</span>) is
+                                    replaced by HAL_CAN_AddTxMessage()
+                                    to place Tx Request, then
+                                    HAL_CAN_GetTxMailboxesFreeLevel()
+                                    for polling until completion.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_CAN_Transmit_<span
+                                      class="grame">IT(</span>) is
+                                    replaced by
+                                    HAL_CAN_ActivateNotification() to
+                                    enable transmit IT, then
+                                    HAL_CAN_AddTxMessage() for place Tx
+                                    request.</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span
+                                      class="grame">Receive(</span>) is
+                                    replaced by
+                                    HAL_CAN_GetRxFifoFillLevel() for
+                                    polling until reception, then
+                                    HAL_CAN_GetRxMessage() <br>
+                                    to get Rx message.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_CAN_Receive_<span
+                                      class="grame">IT(</span>) is
+                                    replaced by
+                                    HAL_CAN_ActivateNotification()&nbsp;to
+                                    enable receive IT, then
+                                    HAL_CAN_GetRxMessage()<br>
+                                    in the receivecallback to get Rx
+                                    message</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span
+                                      class="grame">Slepp(</span>) is
+                                    renamed as HAL_CAN_RequestSleep()</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_CAN_<span
+                                      class="grame">TxCpltCallback(</span>)
+                                    is split into
+                                    HAL_CAN_TxMailbox0CompleteCallback(),
+                                    HAL_CAN_TxMailbox1CompleteCallback()
+and&nbsp;HAL_CAN_TxMailbox2CompleteCallback().</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_CAN_RxCpltCallback
+                                    is split into HAL_CAN_RxFifo0<span
+                                      class="grame">MsgPendingCallback(</span>)
+                                    and
+                                    HAL_CAN_RxFifo1MsgPendingCallback().</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">More
+                                    complete "How to use the new driver"
+                                    is detailed in the driver header
+                                    section itself.</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RCC&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new LL <span class="grame">macro</span>
+                                    </span><span style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">LL_RCC_PLL_<span
+                                          class="grame">SetMainSource(</span>)
+                                        allowing to configure PLL clock
+                                        source</span><span style=""><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new HAL <span class="grame">macros</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">__HAL_RCC_GET_RTC_<span
+                                          class="grame">SOURCE(</span>)
+                                        allowing to get the RTC clock
+                                        source<o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">__HAL_RCC_GET_RTC_HSE_<span
+                                          class="grame">PRESCALER(</span>)
+                                        allowing to get the HSE clock
+                                        divider for RTC peripheral<o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Ensure
+                                      reset of CIR and CSR registers
+                                      when issuing HAL_RCC_<span
+                                        class="grame">DeInit(</span>)/LL_RCC_DeInit
+
+                                      functions<o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      HAL_RCC_<span class="grame">GetSysClockFreq(</span>)
+                                      to avoid risk of rounding error
+                                      which may leads to a wrong
+                                      returned value.</span><span
+                                      style="font-size: 7pt;">&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      HAL_RCC_<span class="grame">DeInit(</span>)
+                                      &nbsp;and LL_RCC_DeInit() APIs to</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Be
+                                        able to return HAL/LL status</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add
+                                        checks for HSI, PLL and PLLI2<span
+                                          class="grame">S &nbsp;ready</span>
+                                        before modifying RCC CFGR
+                                        registers</span><span style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Clear
+                                        all interrupt <span
+                                          class="grame">flags</span></span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Initialize
+                                        systick interrupt <span
+                                          class="grame">period</span></span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    clean of callbacks in HAL_DMA_<span
+                                      class="grame">DeInit(</span>)&nbsp;API</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    wrong DMA_FLAG_FEIFO_4 and
+                                    DMA_FLAGDMAEIFO_4 defines <span
+                                      class="grame">values</span>&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    I2C </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    Interface APIs headers to remove
+                                    confusing message about device <span
+                                      class="grame">address</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    I2C_<span class="grame">WaitOnRXNEFlagUntilTimeout(</span>)
+                                    to resolve a race condition between
+                                    STOPF and RXNE Flags</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update&nbsp;I2C_<span
+                                      class="grame">TransferConfig(</span>)
+                                    to fix wrong bit management</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    USART&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    assert macros to check USART
+                                    BaudRate register</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    ETH </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Do{..}
+                                    <span class="grame">While(</span>0)&nbsp;insured
+
+                                    in&nbsp;multi statement macros :</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">__HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_<span
+                                        class="grame">TRIGGER(</span>)&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">__HAL_ETH_WAKEUP_EXTI_DISABLE_FALLINGRISING_<span
+                                        class="grame">TRIGGER(</span>) </span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    FLASH&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_FLASH_<span
+                                      class="grame">Unlock(</span>)
+                                    update to return state error when
+                                    the FLASH is already unlocked</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    GPIO </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    missing define of GPIO_PIN_2 in
+                                    GPIOK_PIN_AVAILABLE list</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    PCD </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Do{..}
+                                    <span class="grame">While(</span>0)
+                                    &nbsp;insured in multi statement
+                                    macros</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    UTILS </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">stm32f7xx_ll_utils.<span
+                                      class="grame">h :</span> Update
+                                    LL_GetPackageType command to return
+                                    uint32_t instead of uint16_t</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    TIM </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">stm32f7xx_hal_tim_ex.<span
+                                      class="grame">c :</span> Update
+                                    HAL_TIMEx_ConfigBreakDeadTime API to
+                                    avoid to block timer behavior when <br>
+                                    remains in the state
+                                    HAL_TIM_STATE_BUSY.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">&nbsp;stm32f7xx_hal_tim.<span
+                                      class="grame">h :</span>&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Fix
+                                      __HAL_TIM_SET_<span class="grame">PRESCALER(</span>)
+                                      macro</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Fix
+                                      typos in some exported macros <span
+                                        class="grame">description</span>&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    FMC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL_SDRAM_<span
+                                      class="grame">SendCommand(</span>)
+                                    API: Remove the&nbsp;timeout check</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    NAND </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    wrong check for NAND <span
+                                      class="grame">status</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.3 / 25-August-2017</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Remove
+                                  Date and Version from header <span
+                                    class="grame">files</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Update
+                                  HAL drivers to refer to the
+                                  new&nbsp;CMSIS bit position defines
+                                  instead of usage the POSITION_<span
+                                    class="grame">VAL(</span>) macro</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CAN </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    missing unlock in HAL_CAN_Receive_<span
+                                      class="grame">IT(</span>) process</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DCMI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DCMI driver clean-up: remove non
+                                    referenced callback APIs: HAL_DCMI_<span
+                                      class="grame">VsyncCallback(</span>)
+                                    and HAL_DCMI_HsyncCallback()</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL&nbsp;DFSDM
+                                  </span></b><span style="font-size:
+                                  10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    cast issue on APIs that return
+                                    signed integer value
+                                    (uint32_t)&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA driver clean-up: remove non
+                                    referenced callback APIs: HAL_DMA_<span
+                                      class="grame">CleanCallbacks(</span>)</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    FLASH </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">FLASH_Program_<span
+                                      class="grame">DoubleWord(</span>)
+                                    API: Replace 64-bit accesses with 2
+                                    double words operations</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    Generic </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    assert_<span class="grame">param(</span>)
+                                    macro definition to be in line with
+                                    stm32_ll_utils.c driver</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    GPIO </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">GPIOK_PIN_<span
+                                      class="grame">AVAILABLE(</span>)
+                                    assert macro update to allow
+                                    possibility to configure GPIO_PIN_2</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    LTDC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    HAL_LTDC_<span class="grame">LineEvenCallback(</span>)
+                                    API to&nbsp;HAL_LTDC_LineEven<b>t</b>Callback()</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    PCD </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_PCD_<span class="grame">IRQHandler(</span>)
+                                    API to fix&nbsp;transfer issues when
+                                    USB HS is used with DMA&nbsp;enabled</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RCC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_RCC_<span class="grame">GetOscConfig(</span>)
+                                    API to:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">set
+                                      PLLR in the RCC_OscInitStruct</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">check
+                                      on null <span class="grame">pointer</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_RCC_<span class="grame">ClockConfig(</span>)
+                                    API to:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">check
+                                      on null <span class="grame">pointer</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">optimize&nbsp;code
+                                      size by updating the handling
+                                      method of the SWS <span
+                                        class="grame">bits</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">update
+                                      to <span class="grame">use&nbsp;
+                                        _</span>_HAL_FLASH_GET_LATENCY()
+                                      flash macro instead of using
+                                      direct register access
+                                      to&nbsp;LATENCY bits in FLASH ACR
+                                      register</span><span style="">. <o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SAI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_SAI_<span class="grame">DMAStop(</span>)
+                                    API to flush fifo after
+                                    disabling&nbsp;SAI</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    TIM </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_TIMEx_<span class="grame">ConfigBreakInput(</span>)
+                                    API to&nbsp;support BKINP/BKIN2P
+                                    polarity bits.</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    DMA </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    SET_<span class="grame">BIT(</span>)
+                                    access to LIFCR and HIFCR registers
+                                    by WRITE_REG() to avoid read access
+                                    that is not allowed when clearing
+                                    DMA flags</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    I2C </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    LL_I2C_<span class="grame">Init(</span>)
+                                    API to avoid enabling own address1
+                                    when OwnAddress1 parameter value in
+                                    the I2C_InitStruct is equal to 0.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    TIM </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    LL_TIM_<span class="grame">EnableUpdateEvent(</span>)
+                                    API to clear UDIS bit in CR1
+                                    register instead of setting it.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    LL_TIM_<span class="grame">DisableUpdateEvent(</span>)
+                                    API to set UDIS bit in CR1 register
+                                    instead of clearing it.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    USB </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    USB_EP0<span class="grame">StartXfer(</span>)
+                                    API to fix&nbsp;transfer issues when
+                                    USB HS is used with DMA&nbsp;enabled</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.2 / 14-April-2017</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CAN </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    management of&nbsp;overrun
+                                    error.&nbsp;</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Allow
+                                    possibility to receive messages from
+                                    the 2 RX FIFOs in parallel via
+                                    interrupt.</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix&nbsp;message
+                                    lost issue with specific sequence of
+                                    transmit requests.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Handle
+                                    transmission failure with error
+                                    callback, when NART is enabled.</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    __HAL_CAN_CANCEL_<span class="grame">TRANSMIT(</span>)
+                                    call to abort transmission when
+                                    timeout is reached</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.1 / 24-March-2017</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b><o:p></o:p></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="widows: 1; float:
+                                  none; word-spacing: 0px;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+
+                                    CHM UserManuals to support LL <span
+                                      class="grame">drivers</span></span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_DMA_<span class="grame">Init(</span>)
+                                    function to adjust the compatibility
+                                    check between FIFO threshold and
+                                    burst configuration</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    MMC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_MMC_<span class="grame">InitCard(</span>)
+                                    function with proper initialization
+                                    sequence adding a delay after MMC
+                                    clock enable</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    MMC_<span class="grame">DMAError(</span>)
+                                    function ignore DMA FIFO error as
+                                    not impacting the data transfer</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SD </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_SD_<span class="grame">InitCard(</span>)
+                                    function with proper initialization
+                                    sequence adding a delay after SD
+                                    clock enable</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    SD_<span class="grame">DMAError(</span>)
+                                    function ignore DMA FIFO error as
+                                    not impacting the data transfer</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    NAND </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_NAND_Address_<span class="grame">Inc(</span>)
+                                    function implementation for proper
+                                    plane number check</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    SDMMC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    SDMMC_DATATIMEOUT value with
+                                    appropriate value needed by reading
+                                    and writing operations of SD and MMC
+                                    cards</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    RTC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL_RTC_TIME_<span
+                                      class="grame">Get(</span>) and
+                                    LL_RTC_DATE_Get() inline macros
+                                    optimization</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    ADC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    wrong ADC group injected sequence <span
+                                      class="grame">configuration</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">LL_ADC_INJ_<span
+                                        class="grame">SetSequencerRanks(</span>)
+                                      and LL_ADC_INJ_GetSequencerRanks()
+                                      API's update to take in
+                                      consideration the ADC number of
+                                      conversions</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      the&nbsp;defined values for ADC
+                                      group injected seqencer <span
+                                        class="grame">ranks</span>&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.2.0 / 30-December-2016</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Official
+                                  release to add the support of <b>STM32F722xx,
+
+                                    STM32F723xx, STM32F732xx</b> <b>and
+                                    STM32F733xx</b> devices</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="widows: 1; float:
+                                  none; word-spacing: 0px;"><b><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      Low Layer drivers allowing
+                                      performance and footprint <span
+                                        class="grame">optimization</span></span></b></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Low
+                                    Layer <span class="grame">drivers</span>
+                                    APIs provide register level
+                                    programming: require deep knowledge
+                                    of peripherals described in
+                                    STM32F7xx Reference Manuals</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="widows: 1; float: none;
+                                    word-spacing: 0px;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Low
+
+                                      Layer drivers are available for:
+                                      ADC,&nbsp;Cortex, CRC, DAC, DMA,
+                                      DMA2D, EXTI, GPIO, I2C, IWDG,
+                                      LPTIM, PWR, RCC, RNG, RTC, SPI,
+                                      TIM, USART, WWDG peripherals and
+                                      additionnal Low Level Bus, System
+                                      and Utilities APIs.</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Low
+                                    Layer <span class="grame">drivers</span>
+                                    APIs are implemented as static
+                                    inline function in new<span
+                                      class="apple-converted-space">&nbsp;</span><i>Inc/stm32f7xx_ll_ppp.h</i><span
+                                      class="apple-converted-space">&nbsp;</span>files
+                                    for PPP peripherals, there is no
+                                    configuration file and each<span
+                                      class="apple-converted-space">&nbsp;</span><i>stm32f7xx_ll_ppp.h</i><span
+                                      class="apple-converted-space">&nbsp;</span>file
+                                    must be included in user code.</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Add
+                                  new HAL <b>MMC</b> and <b>SMBUS</b>
+                                  drivers</span><span style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    Cortex</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Move
+                                    HAL_MPU_<span class="grame">Disable(</span>)
+                                    and HAL_MPU_Enable() from
+                                    stm32f7xx_hal_cortex.h to
+                                    stm32f7xx_hal_cortex.c</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Clear
+                                    the whole MPU control register
+                                    in&nbsp;HAL_MPU_<span class="grame">Disable(</span>)
+                                    API</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CRYP</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of <span class="grame">AES</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    a check on DMA stream instance in
+                                    HAL_DMA_<span class="grame">DeInit(</span>)
+                                    API</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    ETH</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    wrong definitions in driver header
+                                    file stm32f7_hal_eth.h</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    FLASH</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Support
+                                    OTP program operation</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the support of PCROP <span
+                                      class="grame">feature</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    the clearing of error <span
+                                      class="grame">flags</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    I2C</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Align
+                                    driver source code with other STM32
+                                    <span class="grame">families</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    JPEG</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    the output data management
+                                    when&nbsp;HAL_JPEG_<span
+                                      class="grame">Pause(</span>) is
+                                    performed during the last data
+                                    sending</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RCC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Enable
+                                    PWR only if necessary for LSE
+                                    configuration in HAL_RCC_<span
+                                      class="grame">OscConfig(</span>)
+                                    API</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    RCC_LPTIM1CLKSOURCE_PCLK define to
+                                    RCC_LPTIM1CLKSOURCE_PCLK1</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    RCC_DFSDM1CLKSOURCE_PCLK define to
+                                    RCC_DFSDM1CLKSOURCE_PCLK2</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SPI</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Clear
+                                    RX FIFO at the end of each
+                                    transaction</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    UART</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    USART_CR2_LINEN bit
+                                    clearing&nbsp;when initializing in
+                                    synchronous <span class="grame">mode</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    USB</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of embedded USB PHY
+                                    Controller</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    support of Battery Charging Detector
+                                    (BCD) feature</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    SDMMC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new SDMMC_CmdSDEraseStartAdd,
+                                    SDMMC_CmdSDEraseEndAdd,
+                                    SDMMC_CmdOpCondition and
+                                    SDMMC_CmdSwitch functions</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    USB</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    PENA bit clearing in OTG_HPRT0
+                                    register</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">The
+                                    following changes done on the HAL
+                                    drivers require an update on the
+                                    application code based on older HAL
+                                    <span class="grame">versions</span></span></b><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><b><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      SD</span></b><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">
+                                    update</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Overall
+                                      rework of the driver for a more
+                                      efficient&nbsp;implementation</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Modify
+                                        initialization API and <span
+                                          class="grame">structures</span></span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Modify
+                                        Read / Write sequences: separate
+                                        transfer process and SD Cards
+                                        state <span class="grame">management</span>&nbsp;</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Adding
+                                        interrupt mode for Read / Write
+                                        operations</span><span style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Update
+                                        the HAL_SD_IRQHandler function
+                                        by optimizing the management of
+                                        interrupt <span class="grame">errors</span></span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Refer
+                                      to the following example to
+                                      identify the changes: BSP example
+                                      and USB_Device/MSC_Standalone
+                                      application</span><span style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><b><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      TIM</span></b><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">
+                                    update</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new AutoReloadPreload field in
+                                      TIM_Base_InitTypeDef structure</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Refer
+                                      to the TIM examples to identify
+                                      the <span class="grame">changes</span><b>&nbsp;</b></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><b><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      NAND</span></b><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">
+                                    update</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Modify
+                                      NAND_AddressTypeDef,
+                                      NAND_DeviceConfigTypeDef and
+                                      NAND_HandleTypeDef structures <span
+                                        class="grame">fields</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new HAL_NAND_ConfigDevice API</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.1.1 / 01-July-2016</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_DMA_<span class="grame">PollForTransfer(</span>)
+                                    function implementation
+                                    to&nbsp;avoid early TIMEOUT error.</span><span
+                                    style=""> <o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    JPEG</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_JPEG_<span class="grame">ConfigEncoding(</span>)
+                                    function to properly set the
+                                    ImageHeight and ImageWidth</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SPI</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    SPI_<span class="grame">DMATransmitReceiveCplt(</span>)
+                                    function to properly handle the CRC
+                                    and avoid conditional statement
+                                    duplication</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.1.0 / 22-April-2016</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Official
+                                  release to add the support of <b>STM32F765xx,
+
+                                    STM32F767xx, STM32F768xx,
+                                    STM32F769xx, STM32F777xx,
+                                    STM32F778xx</b> <b>and STM32F779xx</b>
+                                  devices</span><span style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Add
+                                  new HAL drivers for<span
+                                    class="apple-converted-space"> </span><b>DFSDM,
+                                    DSI<span
+                                      class="apple-converted-space">,
+                                      JPEG </span></b>and<span
+                                    class="apple-converted-space"> </span><b>MDIOS<span
+                                      class="apple-converted-space"> </span></b>peripherals</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Enhance
+                                  HAL delay and timebase <span
+                                    class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new drivers
+                                    stm32f7xx_hal_timebase_tim_template.c,
+                                    stm32f7xx_hal_timebase_rtc_alarm_template.c
+                                    and
+                                    stm32f7xx_hal_timebase_rtc_wakeup_template.c
+                                    which override the native HAL time
+                                    base functions (defined as weak) to
+                                    either use the TIM or the RTC as
+                                    time base tick source. For more
+                                    details about the usage of these
+                                    drivers, please refer to
+                                    HAL\HAL_TimeBase examples&nbsp;<span
+                                      style="widows: 1; float: none;
+                                      word-spacing: 0px;">and
+                                      FreeRTOS-based <span
+                                        class="grame">applications</span></span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">The
+                                    following changes done on the HAL
+                                    drivers require an update on the
+                                    application code based on HAL V1.0.4</span></b><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><i><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      UART, USART, IRDA, SMARTCARD, SPI,
+                                      I2C,&nbsp;QSPI </span></i><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">(referenced
+
+                                    as <i>PPP</i> here below)<i> </i><span
+                                      class="grame">drivers</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      PPP error management during DMA
+                                      process. This requires the
+                                      following updates on&nbsp;user
+                                      application:</span><span style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Configure
+                                        and enable the PPP IRQ in
+                                        HAL_PPP_<span class="grame">MspInit(</span>)
+                                        function</span><span style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">In
+                                        stm32f7xx_it.c file, PPP_<span
+                                          class="grame">IRQHandler(</span>)
+                                        function: add a call to
+                                        HAL_PPP_IRQHandler() function</span><span
+                                        style=""> <o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add
+                                        and customize the Error Callback
+                                        API: HAL_PPP_<span class="grame">ErrorCallback(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><i><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      I2C</span></i><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">
+                                    (referenced as <i>PPP</i> here
+                                    below)<i> </i>drivers:</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      to avoid waiting on STOPF/BTF/AF
+                                      flag under DMA ISR by using the
+                                      PPP end of transfer interrupt in
+                                      the DMA transfer process. This
+                                      requires the following updates
+                                      on&nbsp;user application:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Configure
+                                        and enable the PPP IRQ in
+                                        HAL_PPP_<span class="grame">MspInit(</span>)
+                                        function</span><span style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">In
+                                        stm32f7xx_it.c file, PPP_<span
+                                          class="grame">IRQHandler(</span>)
+                                        function: add a call to
+                                        HAL_PPP_IRQHandler() function</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><i><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      IWDG </span></i><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">driver:
+
+                                    rework overall driver for better
+                                    implementation</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove&nbsp;HAL_IWDG_<span
+                                        class="grame">Start(</span>),
+                                      HAL_IWDG_MspInit() and
+                                      HAL_IWDG_GetState()&nbsp;APIs</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><i><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      WWDG </span></i><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">driver:
+
+                                    rework overall driver for better
+                                    implementation</span><span style="">
+                                    <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      HAL_WWDG_<span class="grame">Start(</span>),
+
+                                      HAL_WWDG_Start_IT(),
+                                      HAL_WWDG_MspDeInit() and
+                                      HAL_WWDG_GetState() APIs&nbsp;</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      the&nbsp;</span><span
+                                      style="font-size: 11pt;
+                                      font-family:
+                                      &quot;Calibri&quot;,sans-serif;">HAL_WWDG_<span
+                                        class="grame">Refresh(</span>WWDG_HandleTypeDef
+
+                                      *hwwdg, uint32_t counter)
+                                      &nbsp;function and API &nbsp;by
+                                      removing the &nbsp;"counter"
+                                      parameter</span><span style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><i><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      QSPI driver: </span></i><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">&nbsp;Enhance
+                                    the DMA transmit process
+                                    by&nbsp;using&nbsp;PPP TC interrupt
+                                    instead of waiting on TC flag under
+                                    DMA ISR.&nbsp;This requires the
+                                    following updates on&nbsp;user
+                                    application:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Configure
+                                      and enable the QSPI&nbsp;IRQ in
+                                      HAL_QSPI_<span class="grame">MspInit(</span>)
+                                      function</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">In
+                                      stm32f7xx_it.c file, QSPI_<span
+                                        class="grame">IRQHandler(</span>)
+                                      function: add a call to
+                                      HAL_QSPI_IRQHandler() function</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><i><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL
+                                      CEC driver: </span></i><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">&nbsp;Overall
+
+                                    driver rework with compatibility
+                                    break versus previous HAL version</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      HAL CEC polling Process functions:
+                                      HAL_CEC_<span class="grame">Transmit(</span>)
+                                      and HAL_CEC_Receive()</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      HAL CEC receive interrupt process
+                                      function&nbsp;HAL_CEC_Receive_<span
+                                        class="grame">IT(</span>) and
+                                      enable the "receive" &nbsp;mode
+                                      during the Init phase</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename&nbsp;HAL_CEC_<span
+                                        class="grame">GetReceivedFrameSize(</span>)
+                                      funtion
+                                      to&nbsp;HAL_CEC_GetLastReceivedFrameSize()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new HAL APIs: HAL_CEC_<span
+                                        class="grame">SetDeviceAddress(</span>)
+                                      and HAL_CEC_ChangeRxBuffer()</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      the&nbsp;'InitiatorAddress' field
+                                      from the&nbsp;CEC_InitTypeDef
+                                      structure&nbsp;and manage
+                                      it&nbsp;as a parameter in the
+                                      HAL_CEC_Transmit_<span
+                                        class="grame">IT(</span>)
+                                      function</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new parameter 'RxFrameSize' in
+                                      HAL_CEC_<span class="grame">RxCpltCallback(</span>)
+                                      function</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Move
+                                      CEC Rx buffer pointer&nbsp;from
+                                      CEC_HandleTypeDef structure to
+                                      CEC_InitTypeDef structure</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CAN</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the support of <span class="grame">CAN3</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CEC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    driver rework with&nbsp;break of
+                                    compatibility with HAL V1.0.4</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      the HAL CEC polling Process:
+                                      HAL_CEC_<span class="grame">Transmit(</span>)
+                                      and HAL_CEC_Receive()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      the HAL CEC receive interrupt
+                                      process (HAL_CEC_Receive_<span
+                                        class="grame">IT(</span>)) and
+                                      manage the "Receive" mode enable
+                                      within the Init phase</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      HAL_CEC_<span class="grame">GetReceivedFrameSize(</span>)
+                                      function
+                                      to&nbsp;HAL_CEC_GetLastReceivedFrameSize()
+                                      function</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new HAL APIs: HAL_CEC_<span
+                                        class="grame">SetDeviceAddress(</span>)
+                                      and HAL_CEC_ChangeRxBuffer()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      the&nbsp;'InitiatorAddress' field
+                                      from the&nbsp;CEC_InitTypeDef
+                                      structure&nbsp;and manage
+                                      it&nbsp;as a parameter in the
+                                      HAL_CEC_Transmit_<span
+                                        class="grame">IT(</span>)
+                                      function</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new parameter 'RxFrameSize' in
+                                      HAL_CEC_<span class="grame">RxCpltCallback(</span>)
+                                      function</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Move
+                                      CEC Rx buffer pointer&nbsp;from
+                                      CEC_HandleTypeDef structure to
+                                      CEC_InitTypeDef structure <o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    driver to implement the new CEC
+                                    state machine: </span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new&nbsp;"rxState" field in
+                                      CEC_HandleTypeDef structure to
+                                      provide the CEC state information
+                                      related to Rx <span class="grame">Operations</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Rename
+                                      "state" field in CEC_HandleTypeDef
+                                      structure to "gstate": CEC state
+                                      information related to global
+                                      Handle management and Tx <span
+                                        class="grame">Operations</span></span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      CEC process to manage the new CEC
+                                      states.</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      __HAL_CEC_RESET_HANDLE_<span
+                                        class="grame">STATE(</span>)
+                                      macro to handle the new CEC state
+                                      parameters (gState, rxState)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new APIs HAL_DMA_<span class="grame">RegisterCallback(</span>)
+                                    and HAL_DMA_UnRegisterCallback to
+                                    register/unregister the different
+                                    callbacks identified by the enum
+                                    typedef HAL_DMA_CallbackIDTypeDef</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new API HAL_DMA_Abort_<span
+                                      class="grame">IT(</span>) to abort
+                                    DMA transfer under interrupt context</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      new registered Abort callback is
+                                      called when DMA transfer abortion
+                                      is <span class="grame">completed</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the check of compatibility between
+                                    FIFO threshold level and size of the
+                                    memory burst in the HAL_DMA_<span
+                                      class="grame">Init(</span>) API</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new Error Codes:
+                                    HAL_DMA_ERROR_PARAM,
+                                    HAL_DMA_ERROR_NO_XFER and
+                                    HAL_DMA_ERROR_NOT_SUPPORTED</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  rgb(98, 98, 98); margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Remove all DMA states
+                                    related to MEM0/MEM1 in
+                                    HAL_DMA_StateTypeDef</span><span
+                                    style="font-size: 9.5pt;
+                                    font-family:
+                                    &quot;Helvetica&quot;,sans-serif;"><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA2D</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    the HAL_DMA2D_<span class="grame">DeInit(</span>)
+                                    function to:</span><span style=""> <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Abort
+                                      transfer in case of ongoing DMA2D
+                                      transfer</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black;"><span style="font-size:
+                                      10pt; font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Reset
+                                      DMA2D control <span class="grame">registers</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style=""><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_DMA2D_<span class="grame">Abort(</span>)
+                                    to disable DMA2D interrupts after
+                                    stopping transfer</span><span
+                                    style="font-size: 10pt;"><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Optimize
+                                    HAL_DMA2D_<span class="grame">IRQHandler(</span>)
+                                    by reading status registers only
+                                    once</span><span style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_DMA2D_<span class="grame">ProgramLineEvent(</span>)
+                                    function to:</span><span style=""> <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Return
+                                      HAL error state in case of wrong
+                                      line <span class="grame">value</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Enable
+                                      line interrupt after setting the
+                                      line watermark <span
+                                        class="grame">configuration</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new HAL_DMA2D_<span class="grame">CLUTLoad(</span>)
+                                    and HAL_DMA2D_CLUTLoad_IT()
+                                    functions to start DMA2D CLUT
+                                    loading</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_CLUTLoading_<span
+                                        class="grame">Abort(</span>)
+                                      function to abort the DMA2D CLUT
+                                      loading</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_CLUTLoading_<span
+                                        class="grame">Suspend(</span>)
+                                      function to suspend the DMA2D CLUT
+                                      loading</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_CLUTLoading_<span
+                                        class="grame">Resume(</span>)
+                                      function to resume the DMA2D CLUT
+                                      loading</span><span style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new DMA2D dead time management:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_<span
+                                        class="grame">EnableDeadTime(</span>)
+                                      function to enable DMA2D dead time
+                                      feature</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_<span
+                                        class="grame">DisableDeadTime(</span>)
+                                      function to disable DMA2D dead
+                                      time feature</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_DMA2D_<span
+                                        class="grame">ConfigDeadTime(</span>)
+                                      function to configure dead time</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    the name of DMA2D Input/Output color
+                                    mode defines to be <span
+                                      class="grame">more clear</span>
+                                    for user (DMA2D_INPUT_XXX for input
+                                    layers Colors, DMA2D_OUTPUT_XXX for
+                                    output framebuffer Colors)</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DCMI</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    DCMI_DMAConvCplt to DCMI_DMAXferCplt</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_DCMI_Start_<span class="grame">DMA(</span>)
+                                    function to&nbsp;Enable the DCMI
+                                    peripheral</span><span style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new timeout implementation based on
+                                    cpu cycles for DCMI <span
+                                      class="grame">stop</span></span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    HAL_DCMI_<span class="grame">Suspend(</span>)
+                                    function to suspend DCMI capture</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    HAL_DCMI_<span class="grame">Resume(</span>)
+                                    function to resume capture after
+                                    DCMI suspend</span><span style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    lock mechanism for DCMI process</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_DCMI_<span class="grame">IRQHandler(</span>)
+                                    function to:</span><span style=""> <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      error management in case DMA
+                                      errors through <span
+                                        class="grame">XferAbortCallback(</span>)
+                                      and HAL_DMA_Abort_IT()</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Optimize
+                                      code by using direct register <span
+                                        class="grame">read</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Move
+                                    the content of the
+                                    stm32f7xx_hal_dcmi_ex.c/.h files to
+                                    common driver files (the extension
+                                    files are kept empty for projects
+                                    compatibility reason)</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    FLASH</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the support of Dual BANK feature</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    __HAL_FLASH_CALC_BOOT_BASE_<span
+                                      class="grame">ADR(</span>) macro
+                                    to calculate the FLASH Boot Base
+                                    Adress</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Move
+                                    Flash total sector define to CMSIS
+                                    header <span class="grame">files</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    FMC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    FMC_NORSRAM_<span class="grame">Init(</span>)
+                                    to remove the Burst access mode
+                                    configuration</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    FMC_SDRAM_Timing_<span class="grame">Init(</span>)
+                                    to fix initialization issue when
+                                    configuring 2 SDRAM banks</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    HCD</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HCD_Port_<span class="grame">IRQHandler(</span>)
+                                    to be compliant with new Time base
+                                    implementation</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    I2C</span></b><i><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;"> </span></i><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""> <o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the support of I2C fast mode plus
+                                    (FM+)</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    Polling management:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      Timeout value must be estimated
+                                      for the overall process duration:
+                                      <span class="grame">the</span>
+                                      Timeout measurement is cumulative</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the management of Abort
+                                    service:&nbsp;Abort DMA transfer
+                                    through <span class="grame">interrupt</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">In
+                                      the case of Master Abort IT
+                                      transfer usage:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add&nbsp;new
+                                        user HAL_I2C_<span class="grame">AbortCpltCallback(</span>)
+                                        to inform user of the end of
+                                        abort process</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">A
+                                        new abort state is defined in
+                                        the HAL_I2C_StateTypeDef
+                                        structure</span><span style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the management of I2C peripheral
+                                    errors, ACK failure and STOP
+                                    condition detection during DMA
+                                    process. This requires the following
+                                    updates on user application:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Configure
+                                      and enable the I2C IRQ in HAL_I2C_<span
+                                        class="grame">MspInit(</span>)
+                                      function</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">In
+                                      stm32f7xx_it.c file, I2C_<span
+                                        class="grame">IRQHandler(</span>)
+                                      function: add a call to
+                                      HAL_I2C_IRQHandler() function</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      and customize the Error Callback
+                                      API: HAL_I2C_<span class="grame">ErrorCallback(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Refer
+                                      to the I2C_EEPROM or
+                                      I2C_TwoBoards_ComDMA project
+                                      examples usage of the <span
+                                        class="grame">API</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black;"><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the support of&nbsp;I2C repeated
+                                    start feature:</span><span style="">
+                                    <o:p></o:p></span></li>
+                                <ul type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black;"><span style="font-size:
+                                      10pt; font-family:
+                                      &quot;Verdana&quot;,sans-serif;">With
+                                      the following new APIs</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Sequential_Transmit_<span
+                                          class="grame">IT(</span>)</span><span
+                                        style=""> <o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Sequential_Receive_<span
+                                          class="grame">IT(</span>)</span><span
+                                        style=""> <o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Abort_<span
+                                          class="grame">IT(</span>)</span><span
+                                        style=""> <o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_Slave_Sequential_Transmit_<span
+                                          class="grame">IT(</span>)</span><span
+                                        style=""> <o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_Slave_Sequential_Receive_<span
+                                          class="grame">IT(</span>)</span><span
+                                        style=""> <o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_EnableListen_<span
+                                          class="grame">IT(</span>)</span><span
+                                        style=""> <o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_DisableListen_<span
+                                          class="grame">IT(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black;"><span style="font-size:
+                                      10pt; font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new user callbacks:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_<span
+                                          class="grame">ListenCpltCallback(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black;"><span style="font-size:
+                                        10pt; font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_I2C_<span
+                                          class="grame">AddrCallback(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black;"><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Several
+                                    updates on HAL I2C driver to
+                                    implement the new I2C state machine:
+                                  </span><span style=""><o:p></o:p></span></li>
+                                <ul type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black;"><span style="font-size:
+                                      10pt; font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new API to get the&nbsp;I2C mode:
+                                      HAL_I2C_<span class="grame">GetMode(</span>)</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black;"><span style="font-size:
+                                      10pt; font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update&nbsp;I2C
+                                      process to manage the new&nbsp;I2C
+                                      <span class="grame">states</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    IWDG</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    rework of the driver for a more
+                                    efficient&nbsp;implementation</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      the following APIs:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span
+                                          class="grame">Start(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span
+                                          class="grame">MspInit(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span
+                                          class="grame">GetState(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      implementation:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span
+                                          class="grame">Init(</span>) :
+                                        this function insures the
+                                        configuration and the start of
+                                        the IWDG counter</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_IWDG_<span
+                                          class="grame">Refresh(</span>)
+                                        : this function insures the
+                                        reload of the IWDG counter</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Refer
+                                      to the following example to
+                                      identify the changes: IWDG_<span
+                                        class="grame">Example</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    LPTIM </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_LPTIM_TimeOut_Start_<span
+                                      class="grame">IT(</span>) and
+                                    HAL_LPTIM_Counter_Start_IT( ) APIs
+                                    to configure WakeUp Timer EXTI
+                                    interrupt to be able to wakeup MCU
+                                    from low power mode by pressing the
+                                    EXTI line </span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_LPTIM_TimeOut_Stop_<span
+                                      class="grame">IT(</span>) and
+                                    HAL_LPTIM_Counter_Stop_IT( ) APIs to
+                                    disable WakeUp Timer EXTI interrupt
+                                  </span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    LTDC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_LTDC_<span class="grame">IRQHandler(</span>)
+                                    to manage the case of reload
+                                    interrupt</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    LTDC extension driver needed with <span
+                                      class="grame">DSI</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    HAL_LTDC_<span class="grame">SetPitch(</span>)
+                                    function for pitch reconfiguration</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new callback API HAL_LTDC_<span
+                                      class="grame">ReloadEventCallback(</span>)</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    HAL_LTDC_<span class="grame">Reload(</span>)
+                                    to configure LTDC reload feature</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new No Reload LTDC variant <span
+                                      class="grame">APIs</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_ConfigLayer_<span
+                                        class="grame">NoReload(</span>)
+                                      to configure the LTDC Layer
+                                      according to the specified without
+                                      reloading</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetWindowSize_<span
+                                        class="grame">NoReload(</span>)
+                                      to set the LTDC window size
+                                      without reloading</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetWindowPosition_<span
+                                        class="grame">NoReload(</span>)
+                                      to set the LTDC window position
+                                      without reloading</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetPixelFormat_<span
+                                        class="grame">NoReload(</span>)
+                                      to reconfigure the pixel format
+                                      without reloading</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetAlpha_<span
+                                        class="grame">NoReload(</span>)
+                                      to reconfigure the layer alpha
+                                      value without reloading</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetAddress_<span
+                                        class="grame">NoReload(</span>)
+                                      to reconfigure the frame buffer
+                                      Address without reloading</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetPitch_<span
+                                        class="grame">NoReload(</span>)
+                                      to reconfigure the pitch for
+                                      specific cases</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_ConfigColorKeying_<span
+                                        class="grame">NoReload(</span>)
+                                      to configure the color keying
+                                      without reloading</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_EnableColorKeying_<span
+                                        class="grame">NoReload(</span>)
+                                      to enable the color keying without
+                                      reloading</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_DisableColorKeying_<span
+                                        class="grame">NoReload(</span>)
+                                      to disable the color keying
+                                      without reloading</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_EnableCLUT_<span
+                                        class="grame">NoReload(</span>)
+                                      to enable the color lookup table
+                                      without reloading</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_LTDC_DisableCLUT_<span
+                                        class="grame">NoReload(</span>)
+                                      to disable the color lookup table
+                                      without reloading</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><i><u><span
+                                          style="font-size: 10pt;
+                                          font-family:
+                                          &quot;Verdana&quot;,sans-serif;">Note:</span></u></i><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">
+                                      Variant functions with “_NoReload”
+                                      post fix allows to set the LTDC
+                                      configuration/settings without
+                                      immediate reload. This is useful
+                                      in case when the program requires
+                                      to modify several LTDC settings
+                                      (on one or both layers) then
+                                      applying (reload) these settings
+                                      in one shot by calling the
+                                      function “HAL_LTDC_<span
+                                        class="grame">Reload</span>”</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    NOR</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    NOR_ADDR_SHIFT macro <span
+                                      class="grame">implementation</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    PCD</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_PCD_<span class="grame">IRQHandler(</span>)
+                                    to get HCLK frequency before setting
+                                    TRDT value</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    QSPI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    to manage QSPI error management
+                                    during DMA <span class="grame">process</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Improve
+                                    the DMA transmit process by using
+                                    QSPI TC interrupt instead of waiting
+                                    loop on TC flag under DMA ISR</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">These
+                                    two improvements require the
+                                    following updates on user
+                                    application:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Configure
+                                      and enable the QSPI IRQ in
+                                      HAL_QSPI_<span class="grame">MspInit(</span>)
+                                      function</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">In
+                                      stm32f7xx_it.c file, QSPI_<span
+                                        class="grame">IRQHandler(</span>)
+                                      function: add a call to
+                                      HAL_QSPI_IRQHandler() function</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      and customize the Error Callback
+                                      API: HAL_QSPI_<span class="grame">ErrorCallback(</span>)</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    the management of non-blocking
+                                    transfer abort
+                                    service:&nbsp;HAL_QSPI_Abort_<span
+                                      class="grame">IT(</span>). In this
+                                    case the user must:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      new callback HAL_QSPI_<span
+                                        class="grame">AbortCpltCallback(</span>)
+                                      to inform user at the end of abort
+                                      process</span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">A
+                                      new value of State in the
+                                      HAL_QSPI_StateTypeDef provides the
+                                      current state during the abort <span
+                                        class="grame">phase</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Polling
+                                    management update:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      Timeout value user must be
+                                      estimated for the overall process
+                                      duration: <span class="grame">the</span>
+                                      Timeout measurement is
+                                      cumulative.&nbsp;</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Refer
+                                    to the following examples, which
+                                    describe the changes:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">QSPI_ReadWrite_DMA</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">QSPI_MemoryMapped</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">QSPI_ExecuteInPlace</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    two new APIs for the QSPI fifo
+                                    threshold:</span><span style=""> <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_QSPI_<span
+                                        class="grame">SetFifoThreshold(</span>):
+
+                                      configure the FIFO threshold of
+                                      the QSPI</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">HAL_QSPI_<span
+                                        class="grame">GetFifoThreshold(</span>):
+
+                                      give the current FIFO threshold</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Fix
+                                    wrong data size management in
+                                    HAL_QSPI_Receive_<span class="grame">DMA(</span>)</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RCC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_RCC_<span class="grame">PeriphCLKConfig(</span>)
+                                    function to adjust the
+                                    SystemCoreClock</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Optimize
+                                    HAL_RCC_<span class="grame">ClockConfig(</span>)
+                                    function code</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Optimize
+                                    internal oscillators and PLL startup
+                                    <span class="grame">times</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RTC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update&nbsp;</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_RTC_<span class="grame">GetTime(</span>)
+                                    with proper 'SubSeconds' and
+                                    'SecondFraction' management</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SAI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update&nbsp;</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    SAI state in case of TIMEOUT error
+                                    within the HAL_SAI_<span
+                                      class="grame">Transmit(</span>) /
+                                    HAL_SAI_Receive()</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_SAI_IRQHandler:</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      error management in case DMA
+                                      errors through <span
+                                        class="grame">XferAbortCallback(</span>)
+                                      and HAL_DMA_Abort_IT()</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      error management in case of <span
+                                        class="grame">IT</span></span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Move
+                                    SAI_<span class="grame">BlockSynchroConfig(</span>)
+                                    and SAI_GetInputClock() functions to
+                                    stm32f7xx_hal_sai.c/.h files
+                                    (extension files are kept empty for
+                                    projects compatibility reason)</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SPDIFRX </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    <span class="grame">driver</span>
+                                    update for wait on flag management
+                                    optimization </span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SPI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    driver optimization to improve
+                                    performance in polling/interrupt
+                                    mode to reach maximum peripheral <span
+                                      class="grame">frequency</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Polling
+                                      mode:</span><span style=""> <o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal" style=""><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Replace
+                                        the use of SPI_<span
+                                          class="grame">WaitOnFlagUnitTimeout(</span>)
+                                        function by "if" statement to
+                                        check on RXNE/TXE flage while
+                                        transferring data</span><span
+                                        style="font-size: 10pt;"><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">&nbsp;Interrupt
+                                      mode:</span><span style=""><o:p></o:p></span></li>
+                                  <ul type="square">
+                                    <li class="MsoNormal" style=""><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Minimize
+                                        access on SPI <span
+                                          class="grame">registers</span></span><span
+                                        style="font-size: 10pt;"> <o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">All
+                                      modes:</span><span style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add
+                                        the USE_SPI_CRC switch to
+                                        minimize the number of
+                                        statements when CRC calculation
+                                        is <span class="grame">disabled</span></span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Update&nbsp;timeout
+
+                                        management to check on global <span
+                                          class="grame">processes</span></span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Update
+                                        error code management in all
+                                        processes</span><span style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    DMA process:</span><span style=""> </span><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Add
+                                      the management of SPI peripheral
+                                      errors during DMA process. This
+                                      requires the following updates in
+                                      the user application:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Configure
+                                        and enable the SPI IRQ in
+                                        HAL_SPI_<span class="grame">MspInit(</span>)
+                                        function</span><span style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">In
+                                        stm32f7xx_it.c file, SPI_<span
+                                          class="grame">IRQHandler(</span>)
+                                        function: add a call to
+                                        HAL_SPI_IRQHandler() function</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add
+                                        and customize the Error Callback
+                                        API: HAL_SPI_<span class="grame">ErrorCallback(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Refer
+                                        to the following example which
+                                        describe the changes:
+                                        SPI_FullDuplex_ComDMA</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    TIM </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update&nbsp;</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_TIM_<span class="grame">ConfigOCrefClear(</span>)
+                                    function for proper configuration of
+                                    the SMCR register</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new function HAL_TIMEx_<span
+                                      class="grame">ConfigBreakInput(</span>)
+                                    to configure the break input source</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    UART, USART, SMARTCARD and IRDA </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">(referenced
+                                  as <i>PPP</i> here below)<i> </i><span
+                                    class="grame">update</span></span><span
+                                  style=""> </span><b><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></b></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    Polling management:</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">The
+                                      user Timeout value&nbsp;must be
+                                      estimated for the overall process
+                                      duration: <span class="grame">the</span>
+                                      Timeout measurement is cumulative</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    DMA process:</span><span style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      the management of PPP peripheral
+                                      errors during DMA process. This
+                                      requires the following updates in
+                                      user application:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Configure
+                                        and enable the PPP IRQ in
+                                        HAL_PPP_<span class="grame">MspInit(</span>)
+                                        function</span><span style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">In
+                                        stm32f7xx_it.c file, PPP_<span
+                                          class="grame">IRQHandler(</span>)
+                                        function: add a call to
+                                        HAL_PPP_IRQHandler() function</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">Add
+                                        and customize the Error Callback
+                                        API: HAL_PPP_<span class="grame">ErrorCallback(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    WWDG </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update&nbsp;</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    rework of the driver for more
+                                    efficient implementation</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Remove
+                                      the following APIs:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span
+                                          class="grame">Start(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_Start_<span
+                                          class="grame">IT(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span
+                                          class="grame">MspDeInit(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span
+                                          class="grame">GetState(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      implementation:</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <ul style="margin-top: 0in;"
+                                    type="square">
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span
+                                          class="grame">Init(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <ul style="margin-top: 0in;"
+                                      type="square">
+                                      <li class="MsoNormal"
+                                        style="color: black; margin-top:
+                                        4.5pt; margin-bottom: 4.5pt;"><span
+                                          style="font-size: 10pt;
+                                          font-family:
+                                          &quot;Verdana&quot;,sans-serif;">A&nbsp;new
+                                          parameter in the Init
+                                          Structure:&nbsp;EWIMode</span><span
+                                          style=""><o:p></o:p></span></li>
+                                    </ul>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span
+                                          class="grame">MspInit(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span
+                                          class="grame">Refresh(</span>)&nbsp;</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <ul style="margin-top: 0in;"
+                                      type="square">
+                                      <li class="MsoNormal"
+                                        style="color: black; margin-top:
+                                        4.5pt; margin-bottom: 4.5pt;"><span
+                                          style="font-size: 10pt;
+                                          font-family:
+                                          &quot;Verdana&quot;,sans-serif;">This
+                                          function insures the reload of
+                                          the <span class="grame">counter</span></span><span
+                                          style=""><o:p></o:p></span></li>
+                                      <li class="MsoNormal"
+                                        style="color: black; margin-top:
+                                        4.5pt; margin-bottom: 4.5pt;"><span
+                                          style="font-size: 10pt;
+                                          font-family:
+                                          &quot;Verdana&quot;,sans-serif;">The
+                                          "counter" parameter has been <span
+                                            class="grame">removed</span></span><span
+                                          style=""><o:p></o:p></span></li>
+                                    </ul>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span
+                                          class="grame">IRQHandler(</span>)</span><span
+                                        style=""><o:p></o:p></span></li>
+                                    <li class="MsoNormal" style="color:
+                                      black; margin-top: 4.5pt;
+                                      margin-bottom: 4.5pt;"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">HAL_WWDG_<span
+                                          class="grame">EarlyWakeupCallback(</span>)
+                                        is the new prototype of
+                                        HAL_WWDG_WakeupCallback()</span><span
+                                        style=""><o:p></o:p></span></li>
+                                  </ul>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Refer
+                                    to the following example to identify
+                                    the changes: WWDG_<span
+                                      class="grame">Example</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.0.4 / 09-December-2015</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    Generic </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL weak empty callbacks to prevent
+                                    unused argument compilation warnings
+                                    with some compilers by calling the
+                                    following line:</span><span style="">
+                                    <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      class="grame"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">UNUSED(</span></span><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">hppp);</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    ETH</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update&nbsp;</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_ETH_<span class="grame">Init(</span>)
+                                    function to add timeout on the
+                                    Software reset management</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.0.3 / 13-November-2015</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">One
+                                    change done on the HAL CRYP requires
+                                    an update on the application code
+                                    based on HAL V1.0.2</span></b><span
+                                  style=""> <o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_CRYP_DESECB_<span class="grame">Decrypt(</span>)
+                                    API to invert pPlainData and
+                                    pCypherData parameters</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    Generic </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL weak empty callbacks to prevent
+                                    unused argument compilation warnings
+                                    with some compilers by calling the
+                                    following line:</span><span style="">
+                                    <o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      class="grame"><span
+                                        style="font-size: 10pt;
+                                        font-family:
+                                        &quot;Verdana&quot;,sans-serif;">UNUSED(</span></span><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">hppp);</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    references to STM32CubeMX and
+                                    MicroXplorer from
+                                    stm32f7xx_hal_msp_template.c <span
+                                      class="grame">file</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    ADC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Replace
+                                    ADC_CHANNEL_TEMPSENSOR definition
+                                    from ADC_CHANNEL_16 to
+                                    ADC_CHANNEL_18 &nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL ADC driver state machine for
+                                    code efficiency</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    new literal:
+                                    ADC_INJECTED_SOFTWARE_START to be
+                                    used as possible value for the
+                                    ExternalTrigInjecConvEdge parameter
+                                    in the ADC_InitTypeDef structure to
+                                    select the ADC software trigger
+                                    mode.</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CORTEX </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""> <o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    duplication for
+                                    __HAL_CORTEX_SYSTICKCLK_<span
+                                      class="grame">CONFIG(</span>)
+                                    macro</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CRYP </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_CRYP_DESECB_<span class="grame">Decrypt(</span>)
+                                    API to fix the inverted pPlainData
+                                    and pCypherData parameters issue </span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    FLASH </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    OB_IWDG_STOP_ACTIVE definition</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    OB_RDP_LEVEL_x definition by proper
+                                    values</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    FLASH_<span class="grame">MassErase(</span>)
+                                    function to consider the voltage
+                                    range parameter in the mass erase
+                                    configuration </span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RCC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    values for LSE Drive capability <span
+                                      class="grame">defines</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    PLLN min value 50 instead of <span
+                                      class="grame">100</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">add
+                                    RCC_PLLI2SP_DIVx defines for PLLI2SP
+                                    clock <span class="grame">divider</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    __HAL_RCC_USB_OTG_FS_CLK_<span
+                                      class="grame">DISABLE(</span>)
+                                    macro to remove the disable of the
+                                    SYSCFG&nbsp;</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_RCCEx_<span class="grame">GetPeriphCLKFreq(</span>)
+                                    function for proper SAI clock
+                                    configuration</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SAI </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    for proper management of the
+                                    external synchronization input <span
+                                      class="grame">selection</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">update
+                                      of&nbsp;HAL_SAI_Init () funciton</span><span
+                                      style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">update
+                                      definition of SAI_Block_SyncExt
+                                      and SAI_Block_Synchronization
+                                      groups</span><span style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    SAI_SLOTACTIVE_<span class="grame">X
+                                      &nbsp;defines</span> values</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update&nbsp;HAL_SAI_<span
+                                      class="grame">Init(</span>)
+                                    function for proper companding mode
+                                    management</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    SAI_Transmit_<span class="grame">ITxxBit(</span>)
+                                    functions to add the check on
+                                    transfer counter before writing new
+                                    data to SAIx_DR registers</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    SAI_<span class="grame">FillFifo(</span>)
+                                    function to avoid issue when the
+                                    number of data to transmit is
+                                    smaller than the FIFO size</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_SAI_<span class="grame">EnableRxMuteMode(</span>)
+                                    function for proper mute management</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    SAI_<span class="grame">InitPCM(</span>)
+                                    function to support 24bits
+                                    configuration</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SD </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_SD_Get_<span class="grame">CardInfo(</span>)
+                                    to properly support high capacity
+                                    cards</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SPDIFRX </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    SPDIFRX_<span class="grame">DMARxCplt(</span>)
+                                    function implementation
+                                    to&nbsp;check on circular mode
+                                    before disabling the DMA</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    TIM </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    HAL_TIM_<span class="grame">ConfigClockSource(</span>)
+                                    function implementation for proper
+                                    parameters check</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    UART</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    __HAL_UART_CLEAR_IT macro for proper
+                                    functionning&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">ll
+                                    FMC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">add
+                                    FMC_PAGE_SIZE_512 define</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">ll
+                                    SDMMC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    SDMMC_<span class="grame">SetSDMMCReadWaitMode(</span>)
+                                    function for proper functionning</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.0.2 / 21-September-2015</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    Generic </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">stm32f7xx_hal.conf_template.h:
+
+                                    update&nbsp;HSE_STARTUP_TIMEOUT</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">stm32f7xx_hal_def.h:
+                                    update the quotation marks used in
+                                    #error"USE_RTOS should be 0 in the
+                                    current HAL <span class="grame">release</span>"</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    DMA</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Overall
+                                    <span class="grame">driver</span>
+                                    update for code optimization</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">add
+                                      StreamBaseAddress and StreamIndex
+                                      new fields in the
+                                      DMA_HandleTypeDef structure</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">add
+                                      DMA_Base_Registers private <span
+                                        class="grame">structure</span></span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">add
+                                      static function DMA_<span
+                                        class="grame">CalcBaseAndBitshift(</span>)</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">update
+                                      HAL_DMA_<span class="grame">Init(</span>)
+                                      function to use the new added
+                                      static function</span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">update
+                                      HAL_DMA_<span class="grame">DeInit(</span>)
+                                      function to optimize clear flag
+                                      operations</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">update
+                                      HAL_DMA_Start_<span class="grame">IT(</span>)
+                                      function to optimize interrupts
+                                      enable</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">update
+                                      HAL_DMA_<span class="grame">PollForTransfer(</span>)
+                                      function to optimize check on
+                                      flags</span><span style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">update
+                                      HAL_DMA_<span class="grame">IRQHandler(</span>)
+                                      function to optimize interrupt
+                                      flag management</span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    ETH&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">remove
+                                    duplicated macro IS_ETH_RX_<span
+                                      class="grame">MODE(</span>)</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    GPIO </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    GPIO_SPEED_LOW define to
+                                    GPIO_SPEED_FREQ_LOW</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    GPIO_SPEED_MEDIUM define to
+                                    GPIO_SPEED_FREQ_MEDIUM</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    GPIO_SPEED_FAST define to
+                                    GPIO_SPEED_FREQ_HIGH</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    GPIO_SPEED_HIGH define to
+                                    GPIO_SPEED_FREQ_VERY_HIGH</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    HASH </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    HAL_HASH_STATETypeDef to
+                                    HAL_HASH_StateTypeDef</span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Rename
+                                    HAL_HASH_PhaseTypeDef to
+                                    HAL_HASHPhaseTypeDef</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RCC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    values for LSE Drive capability <span
+                                      class="grame">defines</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    PLLN/PLLI2SN/PLLSAI VCO min value
+                                    100MHz instead of <span
+                                      class="grame">192MHz</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">add
+                                    __HAL_RCC_MCO1_<span class="grame">CONFIG(</span>)
+                                    and __HAL_RCC_MCO2_CONFIG() macros</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_RCCEx_<span class="grame">PeriphCLKConfig(</span>)
+                                    function to reset the Backup domain
+                                    only if the RTC Clock source
+                                    selection is modified&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    TIM</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    the implementation of __HAL_TIM_SET_<span
+                                      class="grame">COMPARE(</span>)
+                                    macro</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">remove
+                                    useless <span class="grame">assert(</span>)
+                                    in&nbsp;HAL_TIM_PWM_ConfigChannel(),
+                                    TIM_OC2_SetConfig() and
+                                    HAL_TIM_PWM_ConfigChannel()
+                                    functions</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CAN</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">add
+                                    the clear flag ERRI bit in HAL_CAN_<span
+                                      class="grame">IRQHandler(</span>)</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    I2S</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    I2S HAL_I2S_<span class="grame">Transmit(</span>)
+                                    API&nbsp;to keep the check on busy
+                                    flag only for the slave</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    QSPI</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Add
+                                    __HAL_QSPI_CLEAR_<span class="grame">FLAG(</span>)
+                                    before QSPI_Config()</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    UART</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    enabling of ERR IT source and PE
+                                    source from HAL_UART_Transmit_<span
+                                      class="grame">IT(</span>) and
+                                    remove the corresponding disabling
+                                    ERR/PE IT from UART_EndTransmit_IT()</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    PCD</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><b><span style="">&nbsp;</span></b><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Clean
+                                    status phase received interrupt when
+                                    DMA mode <span class="grame">enabled</span>&nbsp;</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    HCD </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    to use local variable in USB Host
+                                    channel re-<span class="grame">activation</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">ll
+                                    FMC</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">
+                                  update</span><span style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    the define FMC Write FIFO
+                                    Disable/Enable:
+                                    FMC_WRITE_FIFO_DISABLE and
+                                    FMC_WRITE_FIFO_ENABLE</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">remove
+                                    return HAL_ERROR from FMC_SDRAM_<span
+                                      class="grame">SendCommand(</span>)
+                                    function</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.0.1 / 25-June-2015</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">General
+                                  updates to fix known defects and
+                                  enhancements <span class="grame">implementation</span></span><span
+                                  style=""><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CRC&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    __HAL_CRC_SET_<span class="grame">IDR(</span>)
+                                    macro implementation to use
+                                    WRITE_REG() instead of MODIFY_REG()</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    CEC&nbsp;</span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    timeout management in HAL_CEC_<span
+                                      class="grame">Transmit(</span>)
+                                    and HAL_CEC_Receive() functions</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    Cortex </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_MPU_<span class="grame">ConfigRegion(</span>)
+                                    function to be misra compliant</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    ETH </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    duplicated IS_ETH_DUPLEX_<span
+                                      class="grame">MODE(</span>) and
+                                    IS_ETH_RX_MODE() macros</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Remove
+                                    illegal space
+                                    ETH_MAC_READCONTROLLER_FLUSHING
+                                    macro</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    ETH_MAC_READCONTROLLER_XXX defined
+                                    values (XXX can be IDLE,
+                                    READING_DATA and READING_STATUS)</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    FLASH </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    FLASH_OB_<span class="grame">GetRDP(</span>)
+                                    function to return uint8_t
+                                    &nbsp;instead of FlagStatus</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    OB_RDP_LEVELx definition</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">add
+                                    __HAL_FLASH_GET_<span class="grame">LATENCY(</span>)
+                                    macro</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    HASH </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HASH_<span class="grame">DMAXferCplt(</span>)
+                                    and HASHEx_DMAXferCplt() functions
+                                    to properly configure the number of
+                                    valid bits in last word of the
+                                    message</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_HASH_SHA1_<span class="grame">Accumulate(</span>)
+                                    function to check on the length of
+                                    the input buffer</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_HASH_<b><i>MODE</i></b>_Start_<span
+                                      class="grame">IT(</span>)
+                                    functions (<b><i>Mode </i></b>stands
+                                    for MD5, SHA1, SHA224 and SHA256<b><i>
+                                      </i></b>) to :</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <ul style="margin-top: 0in;"
+                                  type="square">
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Fix
+                                      processing fail for small input <span
+                                        class="grame">buffers</span></span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">to
+                                      unlock the process and call return
+                                      HAL_OK at the end of HASH
+                                      processing to avoid incorrect
+                                      repeating <span class="grame">software</span></span><span
+                                      style=""> <o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">properly
+                                      to manage the HashITCounter
+                                      efficiency </span><span style=""><o:p></o:p></span></li>
+                                  <li class="MsoNormal" style="color:
+                                    black; margin-top: 4.5pt;
+                                    margin-bottom: 4.5pt;"><span
+                                      style="font-size: 10pt;
+                                      font-family:
+                                      &quot;Verdana&quot;,sans-serif;">Update
+                                      to call the HAL_HASH_<span
+                                        class="grame">InCpltCallback(</span>)
+                                      at the end of the complete buffer
+                                      instead of every each 512 bits </span><span
+                                      style=""><o:p></o:p></span></li>
+                                </ul>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HASH_IT_DINI and HASH_IT_DCI
+                                    definition</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    __HAL_HASH_GET_<span class="grame">FLAG(</span>)
+                                    macro definition</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    I2S </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_I2S_<span class="grame">Transmit(</span>)
+                                    function to ensure the waiting on
+                                    Busy flag in case of slave mode
+                                    selection</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    RTC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_RTCEx_<span class="grame">SetWakeUpTimer(</span>)
+                                    and HAL_RTCEx_SetWakeUpTimer_IT()
+                                    functions to properly check on WUTWF
+                                    flag</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">rename
+                                    RTC_TIMESTAMPPIN_PI8 define to
+                                    RTC_TIMESTAMPPIN_POS1</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">rename
+                                    RTC_TIMESTAMPPIN_PC1 define to
+                                    RTC_TIMESTAMPPIN_POS2</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    __HAL_RTC_WAKEUPTIMER_CLEAR_<span
+                                      class="grame">FLAG(</span>) macro
+                                    definition</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    __HAL_RTC_TAMPER_GET_<span
+                                      class="grame">IT(</span>) macro
+                                    definition</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    __HAL_RTC_TAMPER_CLEAR_<span
+                                      class="grame">FLAG(</span>) macro
+                                    definition</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    __HAL_RTC_TIMESTAMP_CLEAR_<span
+                                      class="grame">FLAG(</span>) macro
+                                    definition</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_<span
+                                      class="grame">FLAG(</span>) macro
+                                    definition</span><span style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">add
+                                    RTC_TAMPCR_TAMPXE and
+                                    RTC_TAMPCR_TAMPXIE defines</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    SMARTCARD </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">add
+                                    SMARTCARD_FLAG_IDLE,
+                                    SMARTCARD_IT_IDLE <span
+                                      class="grame">and&nbsp; SMARTCARD</span>_CLEAR_IDLEF
+                                    defines</span><span style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    UART </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_UART_<span class="grame">DMAResume(</span>)
+                                    function to clear overrun flag
+                                    before resuming the Rx transfer</span><span
+                                    style=""><o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    UART_FLAG_SBKF definition</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">HAL
+                                    USART </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    HAL_USART_<span class="grame">DMAResume(</span>)
+                                    function to clear overrun flag
+                                    before resuming the Rx transfer</span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    FMC </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""><o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">update
+                                    NAND timing maximum <span
+                                      class="grame">values</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><b><span style="font-size: 10pt;
+                                    font-family:
+                                    &quot;Verdana&quot;,sans-serif;">LL
+                                    USB </span></b><span
+                                  style="font-size: 10pt; font-family:
+                                  &quot;Verdana&quot;,sans-serif;">update</span><span
+                                  style=""> <o:p></o:p></span></li>
+                              <ul style="margin-top: 0in;" type="circle">
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">USB_FlushTxFifo
+                                    API: update to flush all Tx <span
+                                      class="grame">FIFO</span></span><span
+                                    style=""> <o:p></o:p></span></li>
+                                <li class="MsoNormal" style="color:
+                                  black; margin-top: 4.5pt;
+                                  margin-bottom: 4.5pt;"><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;">Update
+                                    to use local variable in USB Host
+                                    channel re-<span class="grame">activation</span></span><span
+                                    style=""><o:p></o:p></span></li>
+                              </ul>
+                            </ul>
+                            <h3 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial; margin-right: 500pt;"><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Arial&quot;,sans-serif; color:
+                                white;">V1.0.0 / 12-May-2015</span><span
+                                style=""><o:p></o:p></span></h3>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in;"><b><u><span
+                                    style="font-size: 10pt; font-family:
+                                    &quot;Verdana&quot;,sans-serif;
+                                    color: black;">Main Changes</span></u></b></p>
+                            <ul style="margin-top: 0in;" type="disc">
+                              <li class="MsoNormal" style="color: black;
+                                margin-top: 4.5pt; margin-bottom:
+                                4.5pt;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">First
+                                  official release for<b><i>
+                                      STM32F756xx/746xx/745xx</i></b>
+                                  devices</span><span style=""><o:p></o:p></span></li>
+                            </ul>
+                            <h2 style="background: rgb(51, 102, 255)
+                              none repeat scroll 0% 50%;
+                              -moz-background-clip: -moz-initial;
+                              -moz-background-origin: -moz-initial;
+                              -moz-background-inline-policy:
+                              -moz-initial;"><a name="License"></a><span
+                                style="font-size: 12pt; color: white;">License<o:p></o:p></span></h2>
+                            <p class="MsoNormal" style="text-align:
+                              justify;"><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif;">Redistribution
+
+                                and use in source and binary forms, with
+                                or without modification, are permitted
+                                provided that the following conditions
+                                are met:</span><span style="font-size:
+                                10pt;"><o:p></o:p></span></p>
+                            <ul type="disc">
+                              <li class="MsoNormal" style="text-align:
+                                justify;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Redistributions
+                                  of source code must retain the above
+                                  copyright notice, this list of
+                                  conditions and the following
+                                  disclaimer.</span><span
+                                  style="font-size: 10pt;"><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="text-align:
+                                justify;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Redistributions
+                                  in binary form must reproduce the
+                                  above copyright notice, this list of
+                                  conditions and the following
+                                  disclaimer in the documentation and/or
+                                  other materials provided with the
+                                  distribution.</span><span
+                                  style="font-size: 10pt;"><o:p></o:p></span></li>
+                              <li class="MsoNormal" style="text-align:
+                                justify;"><span style="font-size: 10pt;
+                                  font-family:
+                                  &quot;Verdana&quot;,sans-serif;">Neither
+                                  the name of STMicroelectronics nor the
+                                  names of its contributors may be used
+                                  to endorse or promote products derived
+                                </span><span style="font-size: 10pt;"><o:p></o:p></span></li>
+                            </ul>
+                            <p class="MsoNormal" style="text-align:
+                              justify;"><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+                                from this software without specific
+                                prior written permission.</span><span
+                                style="font-size: 10pt;"><br>
+                                <br>
+                              </span><span style="font-size: 10pt;
+                                font-family:
+                                &quot;Verdana&quot;,sans-serif;">THIS
+                                SOFTWARE IS PROVIDED BY THE COPYRIGHT
+                                HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+                                EXPRESS OR IMPLIED WARRANTIES,
+                                INCLUDING, BUT NOT LIMITED TO, THE
+                                IMPLIED WARRANTIES OF MERCHANTABILITY
+                                AND FITNESS FOR A PARTICULAR PURPOSE ARE
+                                DISCLAIMED. IN NO EVENT SHALL THE
+                                COPYRIGHT HOLDER OR CONTRIBUTORS BE
+                                LIABLE FOR ANY DIRECT, INDIRECT,
+                                INCIDENTAL, SPECIAL, EXEMPLARY, OR
+                                CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+                                NOT LIMITED TO, PROCUREMENT OF
+                                SUBSTITUTE GOODS OR SERVICES; LOSS OF
+                                USE, DATA, OR PROFITS; OR BUSINESS
+                                INTERRUPTION) HOWEVER CAUSED AND ON ANY
+                                THEORY OF LIABILITY, WHETHER IN
+                                CONTRACT, STRICT LIABILITY, OR TORT
+                                (INCLUDING NEGLIGENCE OR OTHERWISE)
+                                ARISING IN ANY WAY OUT OF THE USE OF
+                                THIS SOFTWARE, EVEN IF ADVISED OF THE
+                                POSSIBILITY OF SUCH DAMAGE.</span><span
+                                style="font-size: 10pt;"> <o:p></o:p></span></p>
+                            <div class="MsoNormal" style="text-align:
+                              center;" align="center"><span
+                                style="color: black;">
+                                <hr size="1" align="center" width="100%">
+                              </span></div>
+                            <p class="MsoNormal" style="margin: 4.5pt
+                              0in 4.5pt 0.25in; text-align: center;"
+                              align="center"><span style="font-size:
+                                10pt; font-family:
+                                &quot;Verdana&quot;,sans-serif; color:
+                                black;">For complete documentation on </span><span
+                                style="font-size: 10pt; font-family:
+                                &quot;Verdana&quot;,sans-serif;">STM32<span
+                                  style="color: black;">
+                                  Microcontrollers visit </span><u><span
+                                    style="color: blue;"><a
+                                      href="http://www.st.com/internet/mcu/family/141.jsp"
+                                      target="_blank">www.st.com/STM32</a></span></u></span><span
+                                style="color: black;"><o:p></o:p></span></p>
+                          </td>
+                        </tr>
+                        <tr style="">
+                          <td style="padding: 0in;" valign="top"><br>
+                          </td>
+                        </tr>
+                      </tbody>
+                    </table>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+          <p class="MsoNormal" style=""><span style="" lang="FR"><o:p>&nbsp;</o:p></span></p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/Src/Legacy/stm32f7xx_hal_can.c b/Src/Legacy/stm32f7xx_hal_can.c
index 33c70e9..f25e952 100644
--- a/Src/Legacy/stm32f7xx_hal_can.c
+++ b/Src/Legacy/stm32f7xx_hal_can.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State and Error functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                                  ##### User NOTE #####
@@ -83,29 +94,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * Redistribution and use in source and binary forms, with or without modification,
-  * are permitted provided that the following conditions are met:
-  *   1. Redistributions of source code must retain the above copyright notice,
-  *      this list of conditions and the following disclaimer.
-  *   2. Redistributions in binary form must reproduce the above copyright notice,
-  *      this list of conditions and the following disclaimer in the documentation
-  *      and/or other materials provided with the distribution.
-  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-  *      may be used to endorse or promote products derived from this software
-  *      without specific prior written permission.
-  *
-  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -1684,5 +1678,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal.c b/Src/stm32f7xx_hal.c
index e65e36f..9f82e36 100644
--- a/Src/stm32f7xx_hal.c
+++ b/Src/stm32f7xx_hal.c
@@ -5,6 +5,17 @@
   * @brief   HAL module driver.
   *          This is the common part of the HAL initialization
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
@@ -19,17 +30,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */ 
 
 /* Includes ------------------------------------------------------------------*/
@@ -50,11 +50,11 @@
   * @{
   */
 /**
- * @brief STM32F7xx HAL Driver version number V1.2.9
+ * @brief STM32F7xx HAL Driver version number V1.2.10
    */
 #define __STM32F7xx_HAL_VERSION_MAIN   (0x01) /*!< [31:24] main version */
 #define __STM32F7xx_HAL_VERSION_SUB1   (0x02) /*!< [23:16] sub1 version */
-#define __STM32F7xx_HAL_VERSION_SUB2   (0x09) /*!< [15:8]  sub2 version */
+#define __STM32F7xx_HAL_VERSION_SUB2   (0x0A) /*!< [15:8]  sub2 version */
 #define __STM32F7xx_HAL_VERSION_RC     (0x00) /*!< [7:0]  release candidate */ 
 #define __STM32F7xx_HAL_VERSION         ((__STM32F7xx_HAL_VERSION_MAIN << 24)\
                                         |(__STM32F7xx_HAL_VERSION_SUB1 << 16)\
@@ -139,7 +139,7 @@
 {
   /* Configure Instruction cache through ART accelerator */ 
 #if (ART_ACCLERATOR_ENABLE != 0)
-   __HAL_FLASH_ART_ENABLE();
+  __HAL_FLASH_ART_ENABLE();
 #endif /* ART_ACCLERATOR_ENABLE */
 
   /* Configure Flash prefetch */
@@ -152,10 +152,10 @@
 
   /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
   HAL_InitTick(TICK_INT_PRIORITY);
-  
+
   /* Init the low level hardware */
   HAL_MspInit();
-  
+
   /* Return function status */
   return HAL_OK;
 }
@@ -185,7 +185,7 @@
 
   /* De-Init the low level hardware */
   HAL_MspDeInit();
-    
+
   /* Return function status */
   return HAL_OK;
 }
@@ -418,7 +418,7 @@
   */
 uint32_t HAL_GetHalVersion(void)
 {
- return __STM32F7xx_HAL_VERSION;
+  return __STM32F7xx_HAL_VERSION;
 }
 
 /**
@@ -445,7 +445,7 @@
   */
 uint32_t HAL_GetUIDw0(void)
 {
-   return(READ_REG(*((uint32_t *)UID_BASE)));
+  return(READ_REG(*((uint32_t *)UID_BASE)));
 }
 
 /**
@@ -454,7 +454,7 @@
   */
 uint32_t HAL_GetUIDw1(void)
 {
-   return(READ_REG(*((uint32_t *)(UID_BASE + 4U))));
+  return(READ_REG(*((uint32_t *)(UID_BASE + 4U))));
 }
 
 /**
@@ -463,7 +463,7 @@
   */
 uint32_t HAL_GetUIDw2(void)
 {
-   return(READ_REG(*((uint32_t *)(UID_BASE + 8U))));
+  return(READ_REG(*((uint32_t *)(UID_BASE + 8U))));
 }
 
 /**
@@ -565,7 +565,6 @@
   */
 void HAL_DisableFMCMemorySwapping(void)
 {
-
   SYSCFG->MEMRMP &= (uint32_t)~((uint32_t)SYSCFG_MEMRMP_SWP_FMC);
 }
 
@@ -617,4 +616,4 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Src/stm32f7xx_hal_adc.c b/Src/stm32f7xx_hal_adc.c
index c244fc2..3b831db 100644
--- a/Src/stm32f7xx_hal_adc.c
+++ b/Src/stm32f7xx_hal_adc.c
@@ -5,9 +5,20 @@
   * @brief   This file provides firmware functions to manage the following 
   *          functionalities of the Analog to Digital Converter (ADC) peripheral:
   *           + Initialization and de-initialization functions
-  *           + IO operation functions
-  *           + State and errors functions
-  *         
+  *           + Peripheral Control functions
+  *           + Peripheral State functions
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### ADC Peripheral features #####
@@ -172,11 +183,11 @@
 
      The compilation flag USE_HAL_ADC_REGISTER_CALLBACKS, when set to 1,
      allows the user to configure dynamically the driver callbacks.
-     Use Functions @ref HAL_ADC_RegisterCallback()
+     Use Functions HAL_ADC_RegisterCallback()
      to register an interrupt callback.
     [..]
 
-     Function @ref HAL_ADC_RegisterCallback() allows to register following callbacks:
+     Function HAL_ADC_RegisterCallback() allows to register following callbacks:
        (+) ConvCpltCallback               : ADC conversion complete callback
        (+) ConvHalfCpltCallback           : ADC conversion DMA half-transfer callback
        (+) LevelOutOfWindowCallback       : ADC analog watchdog 1 callback
@@ -192,11 +203,11 @@
      and a pointer to the user callback function.
     [..]
 
-     Use function @ref HAL_ADC_UnRegisterCallback to reset a callback to the default
+     Use function HAL_ADC_UnRegisterCallback to reset a callback to the default
      weak function.
     [..]
 
-     @ref HAL_ADC_UnRegisterCallback takes as parameters the HAL peripheral handle,
+     HAL_ADC_UnRegisterCallback takes as parameters the HAL peripheral handle,
      and the Callback ID.
      This function allows to reset following callbacks:
        (+) ConvCpltCallback               : ADC conversion complete callback
@@ -212,27 +223,27 @@
        (+) MspDeInitCallback              : ADC Msp DeInit callback
      [..]
 
-     By default, after the @ref HAL_ADC_Init() and when the state is @ref HAL_ADC_STATE_RESET
+     By default, after the HAL_ADC_Init() and when the state is HAL_ADC_STATE_RESET
      all callbacks are set to the corresponding weak functions:
-     examples @ref HAL_ADC_ConvCpltCallback(), @ref HAL_ADC_ErrorCallback().
+     examples HAL_ADC_ConvCpltCallback(), HAL_ADC_ErrorCallback().
      Exception done for MspInit and MspDeInit functions that are
-     reset to the legacy weak functions in the @ref HAL_ADC_Init()/ @ref HAL_ADC_DeInit() only when
+     reset to the legacy weak functions in the HAL_ADC_Init()/ HAL_ADC_DeInit() only when
      these callbacks are null (not registered beforehand).
     [..]
 
-     If MspInit or MspDeInit are not null, the @ref HAL_ADC_Init()/ @ref HAL_ADC_DeInit()
+     If MspInit or MspDeInit are not null, the HAL_ADC_Init()/ HAL_ADC_DeInit()
      keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
      [..]
 
-     Callbacks can be registered/unregistered in @ref HAL_ADC_STATE_READY state only.
+     Callbacks can be registered/unregistered in HAL_ADC_STATE_READY state only.
      Exception done MspInit/MspDeInit functions that can be registered/unregistered
-     in @ref HAL_ADC_STATE_READY or @ref HAL_ADC_STATE_RESET state,
+     in HAL_ADC_STATE_READY or HAL_ADC_STATE_RESET state,
      thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
     [..]
 
      Then, the user first registers the MspInit/MspDeInit user callbacks
-     using @ref HAL_ADC_RegisterCallback() before calling @ref HAL_ADC_DeInit()
-     or @ref HAL_ADC_Init() function.
+     using HAL_ADC_RegisterCallback() before calling HAL_ADC_DeInit()
+     or HAL_ADC_Init() function.
      [..]
 
      When the compilation flag USE_HAL_ADC_REGISTER_CALLBACKS is set to 0 or
@@ -241,17 +252,6 @@
 
     @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */ 
 
 /* Includes ------------------------------------------------------------------*/
@@ -1209,14 +1209,18 @@
 void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc)
 {
   uint32_t tmp1 = 0, tmp2 = 0;
-  
+
+  uint32_t tmp_sr = hadc->Instance->SR;
+  uint32_t tmp_cr1 = hadc->Instance->CR1;
+
   /* Check the parameters */
   assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
   assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion));
   assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection));
-  
-  tmp1 = __HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC);
-  tmp2 = __HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_EOC);
+
+  tmp1 = tmp_sr & ADC_FLAG_EOC;
+  tmp2 = tmp_cr1 & ADC_IT_EOC;
+
   /* Check End of conversion flag for regular channels */
   if(tmp1 && tmp2)
   {
@@ -1264,8 +1268,8 @@
     __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC);
   }
   
-  tmp1 = __HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOC);
-  tmp2 = __HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_JEOC);                               
+  tmp1 = tmp_sr & ADC_FLAG_JEOC;
+  tmp2 = tmp_cr1 & ADC_IT_JEOC;
   /* Check End of conversion flag for injected channels */
   if(tmp1 && tmp2)
   {
@@ -1310,8 +1314,8 @@
     __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JSTRT | ADC_FLAG_JEOC));
   }
   
-  tmp1 = __HAL_ADC_GET_FLAG(hadc, ADC_FLAG_AWD);
-  tmp2 = __HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_AWD);                          
+  tmp1 = tmp_sr & ADC_FLAG_AWD;
+  tmp2 = tmp_cr1 & ADC_IT_AWD;
   /* Check Analog watchdog flag */
   if(tmp1 && tmp2)
   {
@@ -1333,8 +1337,8 @@
     }
   }
   
-  tmp1 = __HAL_ADC_GET_FLAG(hadc, ADC_FLAG_OVR);
-  tmp2 = __HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_OVR);
+  tmp1 = tmp_sr & ADC_FLAG_OVR;
+  tmp2 = tmp_cr1 & ADC_IT_OVR;
   /* Check Overrun flag */
   if(tmp1 && tmp2)
   {
@@ -1739,6 +1743,9 @@
   /* if ADC1 Channel_18 is selected enable VBAT Channel */
   if ((hadc->Instance == ADC1) && (sConfig->Channel == ADC_CHANNEL_VBAT))
   {
+    /* Disable the TEMPSENSOR channel as it is multiplixed with the VBAT channel */
+    ADC->CCR &= ~ADC_CCR_TSVREFE;
+
     /* Enable the VBAT channel*/
     ADC->CCR |= ADC_CCR_VBATE;
   }
@@ -1746,6 +1753,9 @@
   /* if ADC1 Channel_18 or Channel_17 is selected enable TSVREFE Channel(Temperature sensor and VREFINT) */
   if ((hadc->Instance == ADC1) && ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || (sConfig->Channel == ADC_CHANNEL_VREFINT)))
   {
+    /* Disable the VBAT channel as it is multiplixed with TEMPSENSOR channel */
+    ADC->CCR &= ~ADC_CCR_VBATE;
+
     /* Enable the TSVREFE channel*/
     ADC->CCR |= ADC_CCR_TSVREFE;
 
@@ -2102,4 +2112,3 @@
   * @}
   */ 
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_adc_ex.c b/Src/stm32f7xx_hal_adc_ex.c
index ec26b35..702a62d 100644
--- a/Src/stm32f7xx_hal_adc_ex.c
+++ b/Src/stm32f7xx_hal_adc_ex.c
@@ -6,6 +6,17 @@
   *          functionalities of the ADC extension peripheral:
   *           + Extended features functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### How to use this driver #####
@@ -70,17 +81,6 @@
 
     @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -1064,4 +1064,3 @@
   * @}
   */ 
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_can.c b/Src/stm32f7xx_hal_can.c
index 96c6d80..305e3ed 100644
--- a/Src/stm32f7xx_hal_can.c
+++ b/Src/stm32f7xx_hal_can.c
@@ -12,6 +12,17 @@
   *           + Callbacks functions
   *           + Peripheral State and Error functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -131,9 +142,9 @@
 
   The compilation define  USE_HAL_CAN_REGISTER_CALLBACKS when set to 1
   allows the user to configure dynamically the driver callbacks.
-  Use Function @ref HAL_CAN_RegisterCallback() to register an interrupt callback.
+  Use Function HAL_CAN_RegisterCallback() to register an interrupt callback.
 
-  Function @ref HAL_CAN_RegisterCallback() allows to register following callbacks:
+  Function HAL_CAN_RegisterCallback() allows to register following callbacks:
     (+) TxMailbox0CompleteCallback   : Tx Mailbox 0 Complete Callback.
     (+) TxMailbox1CompleteCallback   : Tx Mailbox 1 Complete Callback.
     (+) TxMailbox2CompleteCallback   : Tx Mailbox 2 Complete Callback.
@@ -152,9 +163,9 @@
   This function takes as parameters the HAL peripheral handle, the Callback ID
   and a pointer to the user callback function.
 
-  Use function @ref HAL_CAN_UnRegisterCallback() to reset a callback to the default
+  Use function HAL_CAN_UnRegisterCallback() to reset a callback to the default
   weak function.
-  @ref HAL_CAN_UnRegisterCallback takes as parameters the HAL peripheral handle,
+  HAL_CAN_UnRegisterCallback takes as parameters the HAL peripheral handle,
   and the Callback ID.
   This function allows to reset following callbacks:
     (+) TxMailbox0CompleteCallback   : Tx Mailbox 0 Complete Callback.
@@ -173,13 +184,13 @@
     (+) MspInitCallback              : CAN MspInit.
     (+) MspDeInitCallback            : CAN MspDeInit.
 
-  By default, after the @ref HAL_CAN_Init() and when the state is HAL_CAN_STATE_RESET,
+  By default, after the HAL_CAN_Init() and when the state is HAL_CAN_STATE_RESET,
   all callbacks are set to the corresponding weak functions:
-  example @ref HAL_CAN_ErrorCallback().
+  example HAL_CAN_ErrorCallback().
   Exception done for MspInit and MspDeInit functions that are
-  reset to the legacy weak function in the @ref HAL_CAN_Init()/ @ref HAL_CAN_DeInit() only when
+  reset to the legacy weak function in the HAL_CAN_Init()/ HAL_CAN_DeInit() only when
   these callbacks are null (not registered beforehand).
-  if not, MspInit or MspDeInit are not null, the @ref HAL_CAN_Init()/ @ref HAL_CAN_DeInit()
+  if not, MspInit or MspDeInit are not null, the HAL_CAN_Init()/ HAL_CAN_DeInit()
   keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
   Callbacks can be registered/unregistered in HAL_CAN_STATE_READY state only.
@@ -187,8 +198,8 @@
   in HAL_CAN_STATE_READY or HAL_CAN_STATE_RESET state,
   thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
   In that case first register the MspInit/MspDeInit user callbacks
-  using @ref HAL_CAN_RegisterCallback() before calling @ref HAL_CAN_DeInit()
-  or @ref HAL_CAN_Init() function.
+  using HAL_CAN_RegisterCallback() before calling HAL_CAN_DeInit()
+  or HAL_CAN_Init() function.
 
   When The compilation define USE_HAL_CAN_REGISTER_CALLBACKS is set to 0 or
   not defined, the callback registration feature is not available and all callbacks
@@ -196,17 +207,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -330,14 +330,14 @@
   }
 #endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
 
-  /* Exit from sleep mode */
-  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);
+  /* Request initialisation */
+  SET_BIT(hcan->Instance->MCR, CAN_MCR_INRQ);
 
   /* Get tick */
   tickstart = HAL_GetTick();
 
-  /* Check Sleep mode leave acknowledge */
-  while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U)
+  /* Wait initialisation acknowledge */
+  while ((hcan->Instance->MSR & CAN_MSR_INAK) == 0U)
   {
     if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
     {
@@ -351,14 +351,14 @@
     }
   }
 
-  /* Request initialisation */
-  SET_BIT(hcan->Instance->MCR, CAN_MCR_INRQ);
+  /* Exit from sleep mode */
+  CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);
 
   /* Get tick */
   tickstart = HAL_GetTick();
 
-  /* Wait initialisation acknowledge */
-  while ((hcan->Instance->MSR & CAN_MSR_INAK) == 0U)
+  /* Check Sleep mode leave acknowledge */
+  while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U)
   {
     if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
     {
@@ -537,19 +537,19 @@
   *         the configuration information for CAN module
   * @param  CallbackID ID of the callback to be registered
   *         This parameter can be one of the following values:
-  *           @arg @ref HAL_CAN_TX_MAILBOX0_COMPLETE_CALLBACK_CB_ID Tx Mailbox 0 Complete callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX1_COMPLETE_CALLBACK_CB_ID Tx Mailbox 1 Complete callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX2_COMPLETE_CALLBACK_CB_ID Tx Mailbox 2 Complete callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX0_ABORT_CALLBACK_CB_ID Tx Mailbox 0 Abort callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX1_ABORT_CALLBACK_CB_ID Tx Mailbox 1 Abort callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX2_ABORT_CALLBACK_CB_ID Tx Mailbox 2 Abort callback ID
-  *           @arg @ref HAL_CAN_RX_FIFO0_MSG_PENDING_CALLBACK_CB_ID Rx Fifo 0 message pending callback ID
-  *           @arg @ref HAL_CAN_RX_FIFO0_FULL_CALLBACK_CB_ID Rx Fifo 0 full callback ID
-  *           @arg @ref HAL_CAN_RX_FIFO1_MSGPENDING_CALLBACK_CB_ID Rx Fifo 1 message pending callback ID
-  *           @arg @ref HAL_CAN_RX_FIFO1_FULL_CALLBACK_CB_ID Rx Fifo 1 full callback ID
-  *           @arg @ref HAL_CAN_SLEEP_CALLBACK_CB_ID Sleep callback ID
-  *           @arg @ref HAL_CAN_WAKEUP_FROM_RX_MSG_CALLBACK_CB_ID Wake Up from Rx message callback ID
-  *           @arg @ref HAL_CAN_ERROR_CALLBACK_CB_ID Error callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX0_COMPLETE_CB_ID Tx Mailbox 0 Complete callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX1_COMPLETE_CB_ID Tx Mailbox 1 Complete callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX2_COMPLETE_CB_ID Tx Mailbox 2 Complete callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX0_ABORT_CB_ID Tx Mailbox 0 Abort callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX1_ABORT_CB_ID Tx Mailbox 1 Abort callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX2_ABORT_CB_ID Tx Mailbox 2 Abort callback ID
+  *           @arg @ref HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID Rx Fifo 0 message pending callback ID
+  *           @arg @ref HAL_CAN_RX_FIFO0_FULL_CB_ID Rx Fifo 0 full callback ID
+  *           @arg @ref HAL_CAN_RX_FIFO1_MSG_PENDING_CB_ID Rx Fifo 1 message pending callback ID
+  *           @arg @ref HAL_CAN_RX_FIFO1_FULL_CB_ID Rx Fifo 1 full callback ID
+  *           @arg @ref HAL_CAN_SLEEP_CB_ID Sleep callback ID
+  *           @arg @ref HAL_CAN_WAKEUP_FROM_RX_MSG_CB_ID Wake Up from Rx message callback ID
+  *           @arg @ref HAL_CAN_ERROR_CB_ID Error callback ID
   *           @arg @ref HAL_CAN_MSPINIT_CB_ID MspInit callback ID
   *           @arg @ref HAL_CAN_MSPDEINIT_CB_ID MspDeInit callback ID
   * @param  pCallback pointer to the Callback function
@@ -680,19 +680,19 @@
   *         the configuration information for CAN module
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
-  *           @arg @ref HAL_CAN_TX_MAILBOX0_COMPLETE_CALLBACK_CB_ID Tx Mailbox 0 Complete callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX1_COMPLETE_CALLBACK_CB_ID Tx Mailbox 1 Complete callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX2_COMPLETE_CALLBACK_CB_ID Tx Mailbox 2 Complete callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX0_ABORT_CALLBACK_CB_ID Tx Mailbox 0 Abort callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX1_ABORT_CALLBACK_CB_ID Tx Mailbox 1 Abort callback ID
-  *           @arg @ref HAL_CAN_TX_MAILBOX2_ABORT_CALLBACK_CB_ID Tx Mailbox 2 Abort callback ID
-  *           @arg @ref HAL_CAN_RX_FIFO0_MSG_PENDING_CALLBACK_CB_ID Rx Fifo 0 message pending callback ID
-  *           @arg @ref HAL_CAN_RX_FIFO0_FULL_CALLBACK_CB_ID Rx Fifo 0 full callback ID
-  *           @arg @ref HAL_CAN_RX_FIFO1_MSGPENDING_CALLBACK_CB_ID Rx Fifo 1 message pending callback ID
-  *           @arg @ref HAL_CAN_RX_FIFO1_FULL_CALLBACK_CB_ID Rx Fifo 1 full callback ID
-  *           @arg @ref HAL_CAN_SLEEP_CALLBACK_CB_ID Sleep callback ID
-  *           @arg @ref HAL_CAN_WAKEUP_FROM_RX_MSG_CALLBACK_CB_ID Wake Up from Rx message callback ID
-  *           @arg @ref HAL_CAN_ERROR_CALLBACK_CB_ID Error callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX0_COMPLETE_CB_ID Tx Mailbox 0 Complete callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX1_COMPLETE_CB_ID Tx Mailbox 1 Complete callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX2_COMPLETE_CB_ID Tx Mailbox 2 Complete callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX0_ABORT_CB_ID Tx Mailbox 0 Abort callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX1_ABORT_CB_ID Tx Mailbox 1 Abort callback ID
+  *           @arg @ref HAL_CAN_TX_MAILBOX2_ABORT_CB_ID Tx Mailbox 2 Abort callback ID
+  *           @arg @ref HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID Rx Fifo 0 message pending callback ID
+  *           @arg @ref HAL_CAN_RX_FIFO0_FULL_CB_ID Rx Fifo 0 full callback ID
+  *           @arg @ref HAL_CAN_RX_FIFO1_MSG_PENDING_CB_ID Rx Fifo 1 message pending callback ID
+  *           @arg @ref HAL_CAN_RX_FIFO1_FULL_CB_ID Rx Fifo 1 full callback ID
+  *           @arg @ref HAL_CAN_SLEEP_CB_ID Sleep callback ID
+  *           @arg @ref HAL_CAN_WAKEUP_FROM_RX_MSG_CB_ID Wake Up from Rx message callback ID
+  *           @arg @ref HAL_CAN_ERROR_CB_ID Error callback ID
   *           @arg @ref HAL_CAN_MSPINIT_CB_ID MspInit callback ID
   *           @arg @ref HAL_CAN_MSPDEINIT_CB_ID MspDeInit callback ID
   * @retval HAL status
@@ -2460,5 +2460,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_cec.c b/Src/stm32f7xx_hal_cec.c
index 5e2877b..0b92375 100644
--- a/Src/stm32f7xx_hal_cec.c
+++ b/Src/stm32f7xx_hal_cec.c
@@ -11,6 +11,17 @@
   *           + Peripheral Control function
   *
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                         ##### How to use this driver #####
@@ -47,10 +58,10 @@
 
   The compilation define  USE_HAL_CEC_REGISTER_CALLBACKS when set to 1
   allows the user to configure dynamically the driver callbacks.
-  Use Functions @ref HAL_CEC_RegisterCallback() or HAL_CEC_RegisterXXXCallback()
+  Use Functions HAL_CEC_RegisterCallback() or HAL_CEC_RegisterXXXCallback()
   to register an interrupt callback.
 
-  Function @ref HAL_CEC_RegisterCallback() allows to register following callbacks:
+  Function HAL_CEC_RegisterCallback() allows to register following callbacks:
     (+) TxCpltCallback     : Tx Transfer completed callback.
     (+) ErrorCallback      : callback for error detection.
     (+) MspInitCallback    : CEC MspInit.
@@ -59,11 +70,11 @@
   and a pointer to the user callback function.
 
   For specific callback HAL_CEC_RxCpltCallback use dedicated register callbacks
-  @ref HAL_CEC_RegisterRxCpltCallback().
+  HAL_CEC_RegisterRxCpltCallback().
 
-  Use function @ref HAL_CEC_UnRegisterCallback() to reset a callback to the default
+  Use function HAL_CEC_UnRegisterCallback() to reset a callback to the default
   weak function.
-  @ref HAL_CEC_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+  HAL_CEC_UnRegisterCallback() takes as parameters the HAL peripheral handle,
   and the Callback ID.
   This function allows to reset following callbacks:
     (+) TxCpltCallback     : Tx Transfer completed callback.
@@ -72,15 +83,15 @@
     (+) MspDeInitCallback  : CEC MspDeInit.
 
   For callback HAL_CEC_RxCpltCallback use dedicated unregister callback :
-  @ref HAL_CEC_UnRegisterRxCpltCallback().
+  HAL_CEC_UnRegisterRxCpltCallback().
 
-  By default, after the @ref HAL_CEC_Init() and when the state is HAL_CEC_STATE_RESET
+  By default, after the HAL_CEC_Init() and when the state is HAL_CEC_STATE_RESET
   all callbacks are set to the corresponding weak functions :
-  examples @ref HAL_CEC_TxCpltCallback() , @ref HAL_CEC_RxCpltCallback().
+  examples HAL_CEC_TxCpltCallback() , HAL_CEC_RxCpltCallback().
   Exception done for MspInit and MspDeInit functions that are
-  reset to the legacy weak function in the @ref HAL_CEC_Init()/ @ref HAL_CEC_DeInit() only when
+  reset to the legacy weak function in the HAL_CEC_Init()/ HAL_CEC_DeInit() only when
   these callbacks are null (not registered beforehand).
-  if not, MspInit or MspDeInit are not null, the @ref HAL_CEC_Init() / @ref HAL_CEC_DeInit()
+  if not, MspInit or MspDeInit are not null, the HAL_CEC_Init() / HAL_CEC_DeInit()
   keep and use the user MspInit/MspDeInit functions (registered beforehand)
 
   Callbacks can be registered/unregistered in HAL_CEC_STATE_READY state only.
@@ -88,25 +99,14 @@
   in HAL_CEC_STATE_READY or HAL_CEC_STATE_RESET state,
   thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
   In that case first register the MspInit/MspDeInit user callbacks
-  using @ref HAL_CEC_RegisterCallback() before calling @ref HAL_CEC_DeInit()
-  or @ref HAL_CEC_Init() function.
+  using HAL_CEC_RegisterCallback() before calling HAL_CEC_DeInit()
+  or HAL_CEC_Init() function.
 
   When the compilation define USE_HAL_CEC_REGISTER_CALLBACKS is set to 0 or
   not defined, the callback registration feature is not available and all callbacks
   are set to the corresponding weak functions.
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -696,7 +696,7 @@
 HAL_StatusTypeDef HAL_CEC_Transmit_IT(CEC_HandleTypeDef *hcec, uint8_t InitiatorAddress, uint8_t DestinationAddress,
                                       uint8_t *pData, uint32_t Size)
 {
-  /* if the IP isn't already busy and if there is no previous transmission
+  /* if the peripheral isn't already busy and if there is no previous transmission
      already pending due to arbitration lost */
   if (hcec->gState == HAL_CEC_STATE_READY)
   {
@@ -994,4 +994,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_cortex.c b/Src/stm32f7xx_hal_cortex.c
index a338d07..8aff1b5 100644
--- a/Src/stm32f7xx_hal_cortex.c
+++ b/Src/stm32f7xx_hal_cortex.c
@@ -68,13 +68,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -502,4 +501,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_crc.c b/Src/stm32f7xx_hal_crc.c
index 1ba51ad..ba985ba 100644
--- a/Src/stm32f7xx_hal_crc.c
+++ b/Src/stm32f7xx_hal_crc.c
@@ -9,6 +9,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                      ##### How to use this driver #####
@@ -29,17 +40,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -62,8 +62,8 @@
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
 /** @defgroup CRC_Private_Functions CRC Private Functions
- * @{
- */
+  * @{
+  */
 static uint32_t CRC_Handle_8(CRC_HandleTypeDef *hcrc, uint8_t pBuffer[], uint32_t BufferLength);
 static uint32_t CRC_Handle_16(CRC_HandleTypeDef *hcrc, uint16_t pBuffer[], uint32_t BufferLength);
 /**
@@ -77,8 +77,8 @@
   */
 
 /** @defgroup CRC_Exported_Functions_Group1 Initialization and de-initialization functions
- *  @brief    Initialization and Configuration functions.
- *
+  *  @brief    Initialization and Configuration functions.
+  *
 @verbatim
  ===============================================================================
             ##### Initialization and de-initialization functions #####
@@ -250,8 +250,8 @@
   */
 
 /** @defgroup CRC_Exported_Functions_Group2 Peripheral Control functions
- *  @brief    management functions.
- *
+  *  @brief    management functions.
+  *
 @verbatim
  ===============================================================================
                       ##### Peripheral Control functions #####
@@ -385,8 +385,8 @@
   */
 
 /** @defgroup CRC_Exported_Functions_Group3 Peripheral State functions
- *  @brief    Peripheral State functions.
- *
+  *  @brief    Peripheral State functions.
+  *
 @verbatim
  ===============================================================================
                       ##### Peripheral State functions #####
@@ -418,8 +418,8 @@
   */
 
 /** @addtogroup CRC_Private_Functions
- * @{
- */
+  * @{
+  */
 
 /**
   * @brief  Enter 8-bit input data to the CRC calculator.
@@ -514,5 +514,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_crc_ex.c b/Src/stm32f7xx_hal_crc_ex.c
index d542da1..a498ab7 100644
--- a/Src/stm32f7xx_hal_crc_ex.c
+++ b/Src/stm32f7xx_hal_crc_ex.c
@@ -6,6 +6,17 @@
   *          This file provides firmware functions to manage the extended
   *          functionalities of the CRC peripheral.
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
 ================================================================================
             ##### How to use this driver #####
@@ -16,17 +27,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -221,5 +221,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_cryp.c b/Src/stm32f7xx_hal_cryp.c
index 6b94244..d46fcb6 100644
--- a/Src/stm32f7xx_hal_cryp.c
+++ b/Src/stm32f7xx_hal_cryp.c
@@ -11,6 +11,17 @@
   *           + CRYP IRQ handler management
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
@@ -148,10 +159,10 @@
 
   The compilation define  USE_HAL_CRYP_REGISTER_CALLBACKS when set to 1
   allows the user to configure dynamically the driver callbacks.
-  Use Functions @ref HAL_CRYP_RegisterCallback() or HAL_CRYP_RegisterXXXCallback()
+  Use Functions HAL_CRYP_RegisterCallback() or HAL_CRYP_RegisterXXXCallback()
   to register an interrupt callback.
 
-  Function @ref HAL_CRYP_RegisterCallback() allows to register following callbacks:
+  Function HAL_CRYP_RegisterCallback() allows to register following callbacks:
     (+) InCpltCallback     :  Input FIFO transfer completed callback.
     (+) OutCpltCallback    : Output FIFO transfer completed callback.
     (+) ErrorCallback      : callback for error detection.
@@ -160,9 +171,9 @@
   This function takes as parameters the HAL peripheral handle, the Callback ID
   and a pointer to the user callback function.
 
-  Use function @ref HAL_CRYP_UnRegisterCallback() to reset a callback to the default
+  Use function HAL_CRYP_UnRegisterCallback() to reset a callback to the default
   weak function.
-  @ref HAL_CRYP_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+  HAL_CRYP_UnRegisterCallback() takes as parameters the HAL peripheral handle,
   and the Callback ID.
   This function allows to reset following callbacks:
     (+) InCpltCallback     :  Input FIFO transfer completed callback.
@@ -171,13 +182,13 @@
     (+) MspInitCallback    : CRYP MspInit.
     (+) MspDeInitCallback  : CRYP MspDeInit.
 
-  By default, after the @ref HAL_CRYP_Init() and when the state is HAL_CRYP_STATE_RESET
+  By default, after the HAL_CRYP_Init() and when the state is HAL_CRYP_STATE_RESET
   all callbacks are set to the corresponding weak functions :
-  examples @ref HAL_CRYP_InCpltCallback() , @ref HAL_CRYP_OutCpltCallback().
+  examples HAL_CRYP_InCpltCallback() , HAL_CRYP_OutCpltCallback().
   Exception done for MspInit and MspDeInit functions that are
-  reset to the legacy weak function in the @ref HAL_CRYP_Init()/ @ref HAL_CRYP_DeInit() only when
+  reset to the legacy weak function in the HAL_CRYP_Init()/ HAL_CRYP_DeInit() only when
   these callbacks are null (not registered beforehand).
-  if not, MspInit or MspDeInit are not null, the @ref HAL_CRYP_Init() / @ref HAL_CRYP_DeInit()
+  if not, MspInit or MspDeInit are not null, the HAL_CRYP_Init() / HAL_CRYP_DeInit()
   keep and use the user MspInit/MspDeInit functions (registered beforehand)
 
   Callbacks can be registered/unregistered in HAL_CRYP_STATE_READY state only.
@@ -185,8 +196,8 @@
   in HAL_CRYP_STATE_READY or HAL_CRYP_STATE_RESET state,
   thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
   In that case first register the MspInit/MspDeInit user callbacks
-  using @ref HAL_CRYP_RegisterCallback() before calling @ref HAL_CRYP_DeInit()
-  or @ref HAL_CRYP_Init() function.
+  using HAL_CRYP_RegisterCallback() before calling HAL_CRYP_DeInit()
+  or HAL_CRYP_Init() function.
 
   When The compilation define USE_HAL_CRYP_REGISTER_CALLBACKS is set to 0 or
   not defined, the callback registration feature is not available and all callbacks
@@ -241,17 +252,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -470,7 +470,7 @@
   }
 #endif /* (USE_HAL_CRYP_REGISTER_CALLBACKS) */
 
-  /* Set the key size(This bit field is don’t care in the DES or TDES modes) data type and Algorithm */
+  /* Set the key size(This bit field is don't care in the DES or TDES modes) data type and Algorithm */
 #if defined (CRYP)
 
   MODIFY_REG(hcryp->Instance->CR, CRYP_CR_DATATYPE | CRYP_CR_KEYSIZE | CRYP_CR_ALGOMODE,
@@ -589,7 +589,7 @@
     hcryp->Init.KeyIVConfigSkip = pConf->KeyIVConfigSkip;
     hcryp->Init.HeaderWidthUnit = pConf->HeaderWidthUnit;
 
-    /* Set the key size(This bit field is don’t care in the DES or TDES modes) data type, AlgoMode and operating mode*/
+    /* Set the key size(This bit field is don't care in the DES or TDES modes) data type, AlgoMode and operating mode*/
 #if defined (CRYP)
 
     MODIFY_REG(hcryp->Instance->CR, CRYP_CR_DATATYPE | CRYP_CR_KEYSIZE | CRYP_CR_ALGOMODE,
@@ -7124,4 +7124,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_cryp_ex.c b/Src/stm32f7xx_hal_cryp_ex.c
index 5bcce35..0170632 100644
--- a/Src/stm32f7xx_hal_cryp_ex.c
+++ b/Src/stm32f7xx_hal_cryp_ex.c
@@ -7,6 +7,17 @@
   *          functionalities of CRYP extension peripheral:
   *           + Extended AES processing functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
@@ -20,17 +31,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -177,7 +177,7 @@
     /* Select final phase */
     MODIFY_REG(hcryp->Instance->CR, CRYP_CR_GCM_CCMPH, CRYP_PHASE_FINAL);
 
-    /*ALGODIR bit must be set to ‘0’.*/
+    /*ALGODIR bit must be set to '0'.*/
     hcryp->Instance->CR &=  ~CRYP_CR_ALGODIR;
 
     /* Enable the CRYP peripheral */
@@ -395,7 +395,7 @@
     /* Disable CRYP to start the final phase */
     __HAL_CRYP_DISABLE(hcryp);
 
-    /* Select final phase & ALGODIR bit must be set to ‘0’. */
+    /* Select final phase & ALGODIR bit must be set to '0'. */
     MODIFY_REG(hcryp->Instance->CR, CRYP_CR_GCM_CCMPH | CRYP_CR_ALGODIR, CRYP_PHASE_FINAL | CRYP_OPERATINGMODE_ENCRYPT);
 
     /* Enable the CRYP peripheral */
@@ -678,4 +678,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dac.c b/Src/stm32f7xx_hal_dac.c
index 98b57c2..f441a29 100644
--- a/Src/stm32f7xx_hal_dac.c
+++ b/Src/stm32f7xx_hal_dac.c
@@ -11,6 +11,17 @@
   *           + Peripheral State and Errors functions
   *
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                       ##### DAC Peripheral features #####
@@ -139,7 +150,7 @@
       The compilation define  USE_HAL_DAC_REGISTER_CALLBACKS when set to 1
       allows the user to configure dynamically the driver callbacks.
 
-    Use Functions @ref HAL_DAC_RegisterCallback() to register a user callback,
+    Use Functions HAL_DAC_RegisterCallback() to register a user callback,
       it allows to register following callbacks:
       (+) ConvCpltCallbackCh1     : callback when a half transfer is completed on Ch1.
       (+) ConvHalfCpltCallbackCh1 : callback when a transfer is completed on Ch1.
@@ -154,7 +165,7 @@
       This function takes as parameters the HAL peripheral handle, the Callback ID
       and a pointer to the user callback function.
 
-    Use function @ref HAL_DAC_UnRegisterCallback() to reset a callback to the default
+    Use function HAL_DAC_UnRegisterCallback() to reset a callback to the default
       weak (surcharged) function. It allows to reset following callbacks:
       (+) ConvCpltCallbackCh1     : callback when a half transfer is completed on Ch1.
       (+) ConvHalfCpltCallbackCh1 : callback when a transfer is completed on Ch1.
@@ -169,12 +180,12 @@
       (+) All Callbacks
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
-      By default, after the @ref HAL_DAC_Init and if the state is HAL_DAC_STATE_RESET
+      By default, after the HAL_DAC_Init and if the state is HAL_DAC_STATE_RESET
       all callbacks are reset to the corresponding legacy weak (surcharged) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the @ref HAL_DAC_Init
-      and @ref  HAL_DAC_DeInit only when these callbacks are null (not registered beforehand).
-      If not, MspInit or MspDeInit are not null, the @ref HAL_DAC_Init and @ref HAL_DAC_DeInit
+      reset to the legacy weak (surcharged) functions in the HAL_DAC_Init
+      and  HAL_DAC_DeInit only when these callbacks are null (not registered beforehand).
+      If not, MspInit or MspDeInit are not null, the HAL_DAC_Init and HAL_DAC_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
       Callbacks can be registered/unregistered in READY state only.
@@ -182,8 +193,8 @@
       in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
       during the Init/DeInit.
       In that case first register the MspInit/MspDeInit user callbacks
-      using @ref HAL_DAC_RegisterCallback before calling @ref HAL_DAC_DeInit
-      or @ref HAL_DAC_Init function.
+      using HAL_DAC_RegisterCallback before calling HAL_DAC_DeInit
+      or HAL_DAC_Init function.
 
       When The compilation define USE_HAL_DAC_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
@@ -204,17 +215,6 @@
 
 @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -520,7 +520,7 @@
 HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t *pData, uint32_t Length,
                                     uint32_t Alignment)
 {
-  HAL_StatusTypeDef status = HAL_ERROR;
+  HAL_StatusTypeDef status;
   uint32_t tmpreg = 0U;
 
   /* Check the parameters */
@@ -893,23 +893,23 @@
   */
 uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef *hdac, uint32_t Channel)
 {
-  uint32_t tmp = 0U;
+  uint32_t result;
 
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
 
   if (Channel == DAC_CHANNEL_1)
   {
-    tmp = hdac->Instance->DOR1;
+    result = hdac->Instance->DOR1;
   }
 
   else
   {
-    tmp = hdac->Instance->DOR2;
+    result = hdac->Instance->DOR2;
   }
 
   /* Returns the DAC channel data output register value */
-  return tmp;
+  return result;
 }
 
 /**
@@ -1337,4 +1337,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dac_ex.c b/Src/stm32f7xx_hal_dac_ex.c
index 2871e78..cb6cf69 100644
--- a/Src/stm32f7xx_hal_dac_ex.c
+++ b/Src/stm32f7xx_hal_dac_ex.c
@@ -7,6 +7,17 @@
   *          functionalities of the DAC peripheral.
   *
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                       ##### How to use this driver #####
@@ -29,17 +40,6 @@
 
  @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 
@@ -154,7 +154,6 @@
 }
 
 
-
 /**
   * @brief  Enable or disable the selected DAC channel wave generation.
   * @param  hdac pointer to a DAC_HandleTypeDef structure that contains
@@ -494,4 +493,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dcmi.c b/Src/stm32f7xx_hal_dcmi.c
index 29c22f6..1267ebd 100644
--- a/Src/stm32f7xx_hal_dcmi.c
+++ b/Src/stm32f7xx_hal_dcmi.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State and Error functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -62,9 +73,9 @@
 
     The compilation define USE_HAL_DCMI_REGISTER_CALLBACKS when set to 1
     allows the user to configure dynamically the driver callbacks.
-    Use functions @ref HAL_DCMI_RegisterCallback() to register a user callback.
+    Use functions HAL_DCMI_RegisterCallback() to register a user callback.
 
-    Function @ref HAL_DCMI_RegisterCallback() allows to register following callbacks:
+    Function HAL_DCMI_RegisterCallback() allows to register following callbacks:
       (+) FrameEventCallback : DCMI Frame Event.
       (+) VsyncEventCallback : DCMI Vsync Event.
       (+) LineEventCallback  : DCMI Line Event.
@@ -74,9 +85,9 @@
     This function takes as parameters the HAL peripheral handle, the callback ID
     and a pointer to the user callback function.
 
-    Use function @ref HAL_DCMI_UnRegisterCallback() to reset a callback to the default
+    Use function HAL_DCMI_UnRegisterCallback() to reset a callback to the default
     weak (surcharged) function.
-    @ref HAL_DCMI_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+    HAL_DCMI_UnRegisterCallback() takes as parameters the HAL peripheral handle,
     and the callback ID.
     This function allows to reset following callbacks:
       (+) FrameEventCallback : DCMI Frame Event.
@@ -86,13 +97,13 @@
       (+) MspInitCallback    : DCMI MspInit.
       (+) MspDeInitCallback  : DCMI MspDeInit.
 
-    By default, after the @ref HAL_DCMI_Init and if the state is HAL_DCMI_STATE_RESET
+    By default, after the HAL_DCMI_Init and if the state is HAL_DCMI_STATE_RESET
     all callbacks are reset to the corresponding legacy weak (surcharged) functions:
-    examples @ref FrameEventCallback(), @ref HAL_DCMI_ErrorCallback().
+    examples FrameEventCallback(), HAL_DCMI_ErrorCallback().
     Exception done for MspInit and MspDeInit callbacks that are respectively
-    reset to the legacy weak (surcharged) functions in the @ref HAL_DCMI_Init
-    and @ref  HAL_DCMI_DeInit only when these callbacks are null (not registered beforehand).
-    If not, MspInit or MspDeInit are not null, the @ref HAL_DCMI_Init and @ref HAL_DCMI_DeInit
+    reset to the legacy weak (surcharged) functions in the HAL_DCMI_Init
+    and  HAL_DCMI_DeInit only when these callbacks are null (not registered beforehand).
+    If not, MspInit or MspDeInit are not null, the HAL_DCMI_Init and HAL_DCMI_DeInit
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
 
     Callbacks can be registered/unregistered in READY state only.
@@ -100,8 +111,8 @@
     in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
     during the Init/DeInit.
     In that case first register the MspInit/MspDeInit user callbacks
-    using @ref HAL_DCMI_RegisterCallback before calling @ref HAL_DCMI_DeInit
-    or @ref HAL_DCMI_Init function.
+    using HAL_DCMI_RegisterCallback before calling HAL_DCMI_DeInit
+    or HAL_DCMI_Init function.
 
     When the compilation define USE_HAL_DCMI_REGISTER_CALLBACKS is set to 0 or
     not defined, the callback registering feature is not available
@@ -109,17 +120,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -1203,4 +1203,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dcmi_ex.c b/Src/stm32f7xx_hal_dcmi_ex.c
index 9a059b1..2e5e2bf 100644
--- a/Src/stm32f7xx_hal_dcmi_ex.c
+++ b/Src/stm32f7xx_hal_dcmi_ex.c
@@ -10,13 +10,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -30,5 +29,3 @@
 /* Private function prototypes -----------------------------------------------*/
 /* Exported functions --------------------------------------------------------*/
 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dfsdm.c b/Src/stm32f7xx_hal_dfsdm.c
index caf3398..fbaad9b 100644
--- a/Src/stm32f7xx_hal_dfsdm.c
+++ b/Src/stm32f7xx_hal_dfsdm.c
@@ -15,7 +15,18 @@
   *           + Extremes detector feature
   *           + Clock absence detector feature
   *           + Break generation on analog watchdog or short-circuit event
-  *         
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
@@ -251,17 +262,6 @@
 
     @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -3547,5 +3547,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dma.c b/Src/stm32f7xx_hal_dma.c
index 9b3abe3..df3d285 100644
--- a/Src/stm32f7xx_hal_dma.c
+++ b/Src/stm32f7xx_hal_dma.c
@@ -84,13 +84,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */ 
@@ -201,11 +200,12 @@
     assert_param(IS_DMA_PERIPHERAL_BURST(hdma->Init.PeriphBurst));
   }
   
+  /* Change DMA peripheral state */
+  hdma->State = HAL_DMA_STATE_BUSY;
+  
   /* Allocate lock resource */
   __HAL_UNLOCK(hdma);
 
-  /* Change DMA peripheral state */
-  hdma->State = HAL_DMA_STATE_BUSY;
   
   /* Disable the peripheral */
   __HAL_DMA_DISABLE(hdma);
@@ -552,12 +552,12 @@
         /* Update error code */
         hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;
         
-        /* Process Unlocked */
-        __HAL_UNLOCK(hdma);
-        
         /* Change the DMA state */
         hdma->State = HAL_DMA_STATE_TIMEOUT;
         
+        /* Process Unlocked */
+        __HAL_UNLOCK(hdma);
+
         return HAL_TIMEOUT;
       }
     }
@@ -565,11 +565,12 @@
     /* Clear all interrupt flags at correct offset within the register */
     regs->IFCR = 0x3FU << hdma->StreamIndex;
     
+    /* Change the DMA state*/
+    hdma->State = HAL_DMA_STATE_READY;
+    
     /* Process Unlocked */
     __HAL_UNLOCK(hdma);
     
-    /* Change the DMA state*/
-    hdma->State = HAL_DMA_STATE_READY;
   }
   return HAL_OK;
 }
@@ -659,13 +660,13 @@
       {
         /* Update error code */
         hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT;
-
-        /* Process Unlocked */
-        __HAL_UNLOCK(hdma);
         
         /* Change the DMA state */
         hdma->State = HAL_DMA_STATE_READY;
-        
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(hdma);
+
         return HAL_TIMEOUT;
       }
     }
@@ -710,12 +711,12 @@
       /* Clear the half transfer and transfer complete flags */
       regs->IFCR = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << hdma->StreamIndex;
     
-      /* Process Unlocked */
-      __HAL_UNLOCK(hdma);
-
       /* Change the DMA state */
       hdma->State= HAL_DMA_STATE_READY;
 
+      /* Process Unlocked */
+      __HAL_UNLOCK(hdma);
+
       return HAL_ERROR;
    }
   }
@@ -726,10 +727,11 @@
     /* Clear the half transfer and transfer complete flags */
     regs->IFCR = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << hdma->StreamIndex;
     
+    hdma->State = HAL_DMA_STATE_READY;
+
     /* Process Unlocked */
     __HAL_UNLOCK(hdma);
 
-    hdma->State = HAL_DMA_STATE_READY;
   }
   else
   {
@@ -865,12 +867,12 @@
         /* Clear all interrupt flags at correct offset within the register */
         regs->IFCR = 0x3FU << hdma->StreamIndex;
 
-        /* Process Unlocked */
-        __HAL_UNLOCK(hdma);
-
         /* Change the DMA state */
         hdma->State = HAL_DMA_STATE_READY;
 
+        /* Process Unlocked */
+        __HAL_UNLOCK(hdma);
+
         if(hdma->XferAbortCallback != NULL)
         {
           hdma->XferAbortCallback(hdma);
@@ -907,11 +909,12 @@
           /* Disable the transfer complete interrupt */
           hdma->Instance->CR  &= ~(DMA_IT_TC);
 
+          /* Change the DMA state */
+          hdma->State = HAL_DMA_STATE_READY;
+
           /* Process Unlocked */
           __HAL_UNLOCK(hdma);
 
-          /* Change the DMA state */
-          hdma->State = HAL_DMA_STATE_READY;
         }
 
         if(hdma->XferCpltCallback != NULL)
@@ -942,11 +945,12 @@
       }
       while((hdma->Instance->CR & DMA_SxCR_EN) != RESET);
 
+      /* Change the DMA state */
+      hdma->State = HAL_DMA_STATE_READY;
+
       /* Process Unlocked */
       __HAL_UNLOCK(hdma);
 
-      /* Change the DMA state */
-      hdma->State = HAL_DMA_STATE_READY;
     }
 
     if(hdma->XferErrorCallback != NULL)
@@ -1004,6 +1008,8 @@
       break;
 
     default:
+      /* Return error status */
+      status =  HAL_ERROR;
       break;
     }
   }
@@ -1304,4 +1310,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dma2d.c b/Src/stm32f7xx_hal_dma2d.c
index e52b29f..c635294 100644
--- a/Src/stm32f7xx_hal_dma2d.c
+++ b/Src/stm32f7xx_hal_dma2d.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State and Errors functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -147,17 +158,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -2144,5 +2144,3 @@
   */
 #endif /* DMA2D */
 #endif /* HAL_DMA2D_MODULE_ENABLED */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dma_ex.c b/Src/stm32f7xx_hal_dma_ex.c
index cb96197..6f8634d 100644
--- a/Src/stm32f7xx_hal_dma_ex.c
+++ b/Src/stm32f7xx_hal_dma_ex.c
@@ -25,13 +25,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -307,4 +306,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_dsi.c b/Src/stm32f7xx_hal_dsi.c
index 341b48d..d498938 100644
--- a/Src/stm32f7xx_hal_dsi.c
+++ b/Src/stm32f7xx_hal_dsi.c
@@ -9,6 +9,17 @@
   *           + IO operation functions
   *           + Peripheral Control functions
   *           + Peripheral State and Errors functions
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -140,17 +151,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -173,7 +173,7 @@
 /** @addtogroup DSI_Private_Constants
   * @{
   */
-#define DSI_TIMEOUT_VALUE ((uint32_t)1000U)  /* 1s */
+#define DSI_TIMEOUT_VALUE ((uint32_t)100U)  /* 100ms */
 
 #define DSI_ERROR_ACK_MASK (DSI_ISR0_AE0 | DSI_ISR0_AE1 | DSI_ISR0_AE2 | DSI_ISR0_AE3 | \
                             DSI_ISR0_AE4 | DSI_ISR0_AE5 | DSI_ISR0_AE6 | DSI_ISR0_AE7 | \
@@ -200,12 +200,14 @@
                                    uint32_t Data1);
 
 static HAL_StatusTypeDef DSI_ShortWrite(DSI_HandleTypeDef *hdsi,
-                                     uint32_t ChannelID,
-                                     uint32_t Mode,
-                                     uint32_t Param1,
-                                     uint32_t Param2);
-
+                                        uint32_t ChannelID,
+                                        uint32_t Mode,
+                                        uint32_t Param1,
+                                        uint32_t Param2);
 /* Private functions ---------------------------------------------------------*/
+/** @defgroup DSI_Private_Functions DSI Private Functions
+  * @{
+  */
 /**
   * @brief  Generic DSI packet header configuration
   * @param  DSIx  Pointer to DSI register base
@@ -255,10 +257,10 @@
   tickstart = HAL_GetTick();
 
   /* Wait for Command FIFO Empty */
-  while((hdsi->Instance->GPSR & DSI_GPSR_CMDFE) == 0U)
+  while ((hdsi->Instance->GPSR & DSI_GPSR_CMDFE) == 0U)
   {
     /* Check for the Timeout */
-    if((HAL_GetTick() - tickstart ) > DSI_TIMEOUT_VALUE)
+    if ((HAL_GetTick() - tickstart) > DSI_TIMEOUT_VALUE)
     {
       return HAL_TIMEOUT;
     }
@@ -271,6 +273,10 @@
   return HAL_OK;
 }
 
+/**
+  * @}
+  */
+
 /* Exported functions --------------------------------------------------------*/
 /** @addtogroup DSI_Exported_Functions
   * @{
@@ -365,11 +371,17 @@
 
   /* Set the PLL division factors */
   hdsi->Instance->WRPCR &= ~(DSI_WRPCR_PLL_NDIV | DSI_WRPCR_PLL_IDF | DSI_WRPCR_PLL_ODF);
-  hdsi->Instance->WRPCR |= (((PLLInit->PLLNDIV) << 2U) | ((PLLInit->PLLIDF) << 11U) | ((PLLInit->PLLODF) << 16U));
+  hdsi->Instance->WRPCR |= (((PLLInit->PLLNDIV) << DSI_WRPCR_PLL_NDIV_Pos) | \
+                            ((PLLInit->PLLIDF) << DSI_WRPCR_PLL_IDF_Pos) | \
+                            ((PLLInit->PLLODF) << DSI_WRPCR_PLL_ODF_Pos));
 
   /* Enable the DSI PLL */
   __HAL_DSI_PLL_ENABLE(hdsi);
 
+  /* Requires min of 400µs delay before reading the PLLLS flag */
+  /* 1ms delay is inserted that is the minimum HAL delay granularity */
+  HAL_Delay(1);
+
   /* Get tick */
   tickstart = HAL_GetTick();
 
@@ -419,7 +431,7 @@
   hdsi->Instance->IER[1U] = 0U;
   hdsi->ErrorMsk = 0U;
 
-  /* Initialise the error code */
+  /* Initialize the error code */
   hdsi->ErrorCode = HAL_DSI_ERROR_NONE;
 
   /* Initialize the DSI state*/
@@ -473,7 +485,7 @@
   HAL_DSI_MspDeInit(hdsi);
 #endif /* USE_HAL_DSI_REGISTER_CALLBACKS */
 
-  /* Initialise the error code */
+  /* Initialize the error code */
   hdsi->ErrorCode = HAL_DSI_ERROR_NONE;
 
   /* Initialize the DSI state*/
@@ -733,11 +745,11 @@
         break;
 
       case HAL_DSI_MSPINIT_CB_ID :
-        hdsi->MspInitCallback = HAL_DSI_MspInit;                     /* Legcay weak MspInit Callback     */
+        hdsi->MspInitCallback = HAL_DSI_MspInit;                     /* Legacy weak MspInit Callback     */
         break;
 
       case HAL_DSI_MSPDEINIT_CB_ID :
-        hdsi->MspDeInitCallback = HAL_DSI_MspDeInit;                 /* Legcay weak MspDeInit Callback   */
+        hdsi->MspDeInitCallback = HAL_DSI_MspDeInit;                 /* Legacy weak MspDeInit Callback   */
         break;
 
       default :
@@ -753,11 +765,11 @@
     switch (CallbackID)
     {
       case HAL_DSI_MSPINIT_CB_ID :
-        hdsi->MspInitCallback = HAL_DSI_MspInit;                  /* Legcay weak MspInit Callback   */
+        hdsi->MspInitCallback = HAL_DSI_MspInit;                  /* Legacy weak MspInit Callback   */
         break;
 
       case HAL_DSI_MSPDEINIT_CB_ID :
-        hdsi->MspDeInitCallback = HAL_DSI_MspDeInit;              /* Legcay weak MspDeInit Callback */
+        hdsi->MspDeInitCallback = HAL_DSI_MspDeInit;              /* Legacy weak MspDeInit Callback */
         break;
 
       default :
@@ -808,7 +820,8 @@
   */
 void HAL_DSI_IRQHandler(DSI_HandleTypeDef *hdsi)
 {
-  uint32_t ErrorStatus0, ErrorStatus1;
+  uint32_t ErrorStatus0;
+  uint32_t ErrorStatus1;
 
   /* Tearing Effect Interrupt management ***************************************/
   if (__HAL_DSI_GET_FLAG(hdsi, DSI_FLAG_TE) != 0U)
@@ -1365,7 +1378,8 @@
      High-Speed transmission.
      To do so, the DSI Host calculates the time required for the clock lane to change from HighSpeed
      to Low-Power and from Low-Power to High-Speed.
-     This timings are configured by the HS2LP_TIME and LP2HS_TIME in the DSI Host Clock Lane Timer Configuration Register (DSI_CLTCR).
+     This timings are configured by the HS2LP_TIME and LP2HS_TIME in the DSI Host Clock Lane Timer Configuration
+     Register (DSI_CLTCR).
      But the DSI Host is not calculating LP2HS_TIME + HS2LP_TIME but 2 x HS2LP_TIME.
 
      Workaround : Configure HS2LP_TIME and LP2HS_TIME with the same value being the max of HS2LP_TIME or LP2HS_TIME.
@@ -1587,7 +1601,7 @@
   /* Process locked */
   __HAL_LOCK(hdsi);
 
-   status = DSI_ShortWrite(hdsi, ChannelID, Mode, Param1, Param2);
+  status = DSI_ShortWrite(hdsi, ChannelID, Mode, Param1, Param2);
 
   /* Process unlocked */
   __HAL_UNLOCK(hdsi);
@@ -1616,7 +1630,9 @@
                                     uint32_t Param1,
                                     uint8_t *ParametersTable)
 {
-  uint32_t uicounter, nbBytes, count;
+  uint32_t uicounter;
+  uint32_t nbBytes;
+  uint32_t count;
   uint32_t tickstart;
   uint32_t fifoword;
   uint8_t *pparams = ParametersTable;
@@ -1721,7 +1737,7 @@
   {
     /* set max return packet size */
     if (DSI_ShortWrite(hdsi, ChannelNbr, DSI_MAX_RETURN_PKT_SIZE, ((datasize) & 0xFFU),
-                           (((datasize) >> 8U) & 0xFFU)) != HAL_OK)
+                       (((datasize) >> 8U) & 0xFFU)) != HAL_OK)
     {
       /* Process Unlocked */
       __HAL_UNLOCK(hdsi);
@@ -2077,7 +2093,7 @@
   /* De-assert the ULPM requests and the ULPM exit bits */
   hdsi->Instance->PUCR = 0U;
 
-  /* Switch the lanbyteclock source in the RCC from system PLL to D-PHY */
+  /* Switch the lane byte clock source in the RCC from system PLL to D-PHY */
   __HAL_RCC_DSI_CONFIG(RCC_DSICLKSOURCE_DSIPHY);
 
   /* Restore clock lane configuration to HS */
@@ -2727,5 +2743,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_eth.c b/Src/stm32f7xx_hal_eth.c
index 2164229..37038c5 100644
--- a/Src/stm32f7xx_hal_eth.c
+++ b/Src/stm32f7xx_hal_eth.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions 
   *           + Peripheral State and Errors functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### How to use this driver #####
@@ -113,17 +124,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -2288,4 +2288,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_exti.c b/Src/stm32f7xx_hal_exti.c
index d4fe089..c43c1da 100644
--- a/Src/stm32f7xx_hal_exti.c
+++ b/Src/stm32f7xx_hal_exti.c
@@ -8,6 +8,17 @@
   *           + Initialization and de-initialization functions
   *           + IO operation functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2018 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### EXTI Peripheral features #####
@@ -69,18 +80,6 @@
     (#) Generate software interrupt using HAL_EXTI_GenerateSWI().
 
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -276,6 +275,10 @@
     pExtiConfig->Mode |= EXTI_MODE_EVENT;
   }
 
+  /* Get default Trigger and GPIOSel configuration */
+  pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
+  pExtiConfig->GPIOSel = 0x00u;
+
   /* 2] Get trigger for configurable lines : rising */
   if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u)
   {
@@ -284,10 +287,6 @@
     {
       pExtiConfig->Trigger = EXTI_TRIGGER_RISING;
     }
-    else
-    {
-      pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
-    }
 
     /* Get falling configuration */
     /* Check if configuration of selected line is enable */
@@ -304,16 +303,6 @@
       regval = SYSCFG->EXTICR[linepos >> 2u];
       pExtiConfig->GPIOSel = ((regval << (SYSCFG_EXTICR1_EXTI1_Pos * (3uL - (linepos & 0x03u)))) >> 24);
     }
-    else
-    {
-      pExtiConfig->GPIOSel = 0x00u;
-    }
-  }
-  else
-  {
-    /* No Trigger selected */
-    pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
-    pExtiConfig->GPIOSel = 0x00u;
   }
 
   return HAL_OK;
@@ -556,4 +545,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_flash.c b/Src/stm32f7xx_hal_flash.c
index cc8932e..25075ab 100644
--- a/Src/stm32f7xx_hal_flash.c
+++ b/Src/stm32f7xx_hal_flash.c
@@ -70,14 +70,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */ 
 
@@ -819,4 +817,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_flash_ex.c b/Src/stm32f7xx_hal_flash_ex.c
index 835e275..5fa74aa 100644
--- a/Src/stm32f7xx_hal_flash_ex.c
+++ b/Src/stm32f7xx_hal_flash_ex.c
@@ -42,14 +42,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */ 
 
@@ -1119,4 +1117,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_gpio.c b/Src/stm32f7xx_hal_gpio.c
index c9d4c12..d354cde 100644
--- a/Src/stm32f7xx_hal_gpio.c
+++ b/Src/stm32f7xx_hal_gpio.c
@@ -8,6 +8,17 @@
   *           + Initialization and de-initialization functions
   *           + IO operation functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### GPIO Peripheral features #####
@@ -91,17 +102,6 @@
   
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */ 
 
 /* Includes ------------------------------------------------------------------*/
@@ -123,13 +123,6 @@
 /** @addtogroup GPIO_Private_Constants GPIO Private Constants
   * @{
   */
-#define GPIO_MODE             ((uint32_t)0x00000003U)
-#define EXTI_MODE             ((uint32_t)0x10000000U)
-#define GPIO_MODE_IT          ((uint32_t)0x00010000U)
-#define GPIO_MODE_EVT         ((uint32_t)0x00020000U)
-#define RISING_EDGE           ((uint32_t)0x00100000U)
-#define FALLING_EDGE          ((uint32_t)0x00200000U)
-#define GPIO_OUTPUT_TYPE      ((uint32_t)0x00000010U)
 
 #define GPIO_NUMBER           ((uint32_t)16U)
 /**
@@ -177,7 +170,6 @@
   assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
   assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
   assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
-  assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
 
   /* Configure the port pins */
   for(position = 0; position < GPIO_NUMBER; position++)
@@ -191,8 +183,7 @@
     {
       /*--------------------- GPIO Mode Configuration ------------------------*/
       /* In case of Output or Alternate function mode selection */
-      if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
-         (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
+      if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF))
       {
         /* Check the Speed parameter */
         assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
@@ -205,18 +196,24 @@
         /* Configure the IO Output Type */
         temp = GPIOx->OTYPER;
         temp &= ~(GPIO_OTYPER_OT_0 << position) ;
-        temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4) << position);
+        temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position);
         GPIOx->OTYPER = temp;
       }
+      
+      if((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG)
+      {
+        /* Check the Pull parameter */
+        assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
 
-      /* Activate the Pull-up or Pull down resistor for the current IO */
-      temp = GPIOx->PUPDR;
-      temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
-      temp |= ((GPIO_Init->Pull) << (position * 2));
-      GPIOx->PUPDR = temp;
+        /* Activate the Pull-up or Pull down resistor for the current IO */
+        temp = GPIOx->PUPDR;
+        temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
+        temp |= ((GPIO_Init->Pull) << (position * 2));
+        GPIOx->PUPDR = temp;
+      }
 
       /* In case of Alternate function mode selection */
-      if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
+      if((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)
       {
         /* Check the Alternate function parameter */
         assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
@@ -236,7 +233,7 @@
 
       /*--------------------- EXTI Mode Configuration ------------------------*/
       /* Configure the External Interrupt or event for the current IO */
-      if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
+      if((GPIO_Init->Mode & EXTI_MODE) != 0x00u)
       {
         /* Enable SYSCFG Clock */
         __HAL_RCC_SYSCFG_CLK_ENABLE();
@@ -246,27 +243,10 @@
         temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)));
         SYSCFG->EXTICR[position >> 2] = temp;
 
-        /* Clear EXTI line configuration */
-        temp = EXTI->IMR;
-        temp &= ~((uint32_t)iocurrent);
-        if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
-        {
-          temp |= iocurrent;
-        }
-        EXTI->IMR = temp;
-
-        temp = EXTI->EMR;
-        temp &= ~((uint32_t)iocurrent);
-        if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
-        {
-          temp |= iocurrent;
-        }
-        EXTI->EMR = temp;
-
         /* Clear Rising Falling edge configuration */
         temp = EXTI->RTSR;
         temp &= ~((uint32_t)iocurrent);
-        if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
+        if((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u)
         {
           temp |= iocurrent;
         }
@@ -274,11 +254,28 @@
 
         temp = EXTI->FTSR;
         temp &= ~((uint32_t)iocurrent);
-        if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
+        if((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u)
         {
           temp |= iocurrent;
         }
         EXTI->FTSR = temp;
+
+        temp = EXTI->EMR;
+        temp &= ~((uint32_t)iocurrent);
+        if((GPIO_Init->Mode & EXTI_EVT) != 0x00u)
+        {
+          temp |= iocurrent;
+        }
+        EXTI->EMR = temp;
+
+        /* Clear EXTI line configuration */
+        temp = EXTI->IMR;
+        temp &= ~((uint32_t)iocurrent);
+        if((GPIO_Init->Mode & EXTI_IT) != 0x00u)
+        {
+          temp |= iocurrent;
+        }
+        EXTI->IMR = temp;
       }
     }
   }
@@ -321,8 +318,8 @@
         EXTI->EMR &= ~((uint32_t)iocurrent);
 
         /* Clear Rising Falling edge configuration */
-        EXTI->RTSR &= ~((uint32_t)iocurrent);
         EXTI->FTSR &= ~((uint32_t)iocurrent);
+        EXTI->RTSR &= ~((uint32_t)iocurrent);
 
         /* Configure the External Interrupt or event for the current IO */
         tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
@@ -528,4 +525,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_hash.c b/Src/stm32f7xx_hal_hash.c
index 521e395..5b94f86 100644
--- a/Src/stm32f7xx_hal_hash.c
+++ b/Src/stm32f7xx_hal_hash.c
@@ -12,6 +12,17 @@
   *           + Peripheral State methods
   *           + HASH or HMAC processing suspension/resumption
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                      ##### How to use this driver #####
@@ -147,9 +158,9 @@
      [..]
       (#) The compilation define  USE_HAL_HASH_REGISTER_CALLBACKS when set to 1
           allows the user to configure dynamically the driver callbacks.
-          Use function @ref HAL_HASH_RegisterCallback() to register a user callback.
+          Use function HAL_HASH_RegisterCallback() to register a user callback.
 
-      (#) Function @ref HAL_HASH_RegisterCallback() allows to register following callbacks:
+      (#) Function HAL_HASH_RegisterCallback() allows to register following callbacks:
             (+) InCpltCallback    : callback for input completion.
             (+) DgstCpltCallback  : callback for digest computation completion.
             (+) ErrorCallback     : callback for error.
@@ -158,9 +169,9 @@
           This function takes as parameters the HAL peripheral handle, the Callback ID
           and a pointer to the user callback function.
 
-      (#) Use function @ref HAL_HASH_UnRegisterCallback() to reset a callback to the default
+      (#) Use function HAL_HASH_UnRegisterCallback() to reset a callback to the default
           weak (surcharged) function.
-          @ref HAL_HASH_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+          HAL_HASH_UnRegisterCallback() takes as parameters the HAL peripheral handle,
           and the Callback ID.
           This function allows to reset following callbacks:
             (+) InCpltCallback    : callback for input completion.
@@ -169,13 +180,13 @@
             (+) MspInitCallback   : HASH MspInit.
             (+) MspDeInitCallback : HASH MspDeInit.
 
-      (#) By default, after the @ref HAL_HASH_Init and if the state is HAL_HASH_STATE_RESET
+      (#) By default, after the HAL_HASH_Init and if the state is HAL_HASH_STATE_RESET
           all callbacks are reset to the corresponding legacy weak (surcharged) functions:
-          examples @ref HAL_HASH_InCpltCallback(), @ref HAL_HASH_DgstCpltCallback()
+          examples HAL_HASH_InCpltCallback(), HAL_HASH_DgstCpltCallback()
           Exception done for MspInit and MspDeInit callbacks that are respectively
-          reset to the legacy weak (surcharged) functions in the @ref HAL_HASH_Init
-          and @ref HAL_HASH_DeInit only when these callbacks are null (not registered beforehand)
-          If not, MspInit or MspDeInit are not null, the @ref HAL_HASH_Init and @ref HAL_HASH_DeInit
+          reset to the legacy weak (surcharged) functions in the HAL_HASH_Init
+          and HAL_HASH_DeInit only when these callbacks are null (not registered beforehand)
+          If not, MspInit or MspDeInit are not null, the HAL_HASH_Init and HAL_HASH_DeInit
           keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
 
           Callbacks can be registered/unregistered in READY state only.
@@ -183,8 +194,8 @@
           in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
           during the Init/DeInit.
           In that case first register the MspInit/MspDeInit user callbacks
-          using @ref HAL_HASH_RegisterCallback before calling @ref HAL_HASH_DeInit
-          or @ref HAL_HASH_Init function.
+          using HAL_HASH_RegisterCallback before calling HAL_HASH_DeInit
+          or HAL_HASH_Init function.
 
           When The compilation define USE_HAL_HASH_REGISTER_CALLBACKS is set to 0 or
           not defined, the callback registering feature is not available
@@ -192,17 +203,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -1760,8 +1760,6 @@
                                 (((buffersize % 4U) != 0U) ? ((buffersize + (4U - (buffersize % 4U))) / 4U) : \
                                  (buffersize / 4U)));
 
-
-
       /* Enable DMA requests */
       SET_BIT(HASH->CR, HASH_CR_DMAE);
 
@@ -2896,8 +2894,8 @@
            Update HashInCount and pHashInBuffPtr accordingly. */
         hhash->HashInCount = SizeVar;
         hhash->pHashInBuffPtr = (uint8_t *)inputaddr;
-        __HAL_HASH_SET_NBVALIDBITS(
-          SizeVar);  /* Update the configuration of the number of valid bits in last word of the message */
+        /* Update the configuration of the number of valid bits in last word of the message */
+        __HAL_HASH_SET_NBVALIDBITS(SizeVar);
         hhash->pHashOutBuffPtr = pOutBuffer;  /* Points at the computed digest */
         if (initialization_skipped == 1U)
         {
@@ -2965,11 +2963,11 @@
   HAL_StatusTypeDef status ;
   HAL_HASH_StateTypeDef State_tmp = hhash->State;
 
-  
+
   /* Make sure the input buffer size (in bytes) is a multiple of 4 when MDMAT bit is set
      (case of multi-buffer HASH processing) */
   assert_param(IS_HASH_DMA_MULTIBUFFER_SIZE(Size));
-  
+
   /* If State is ready or suspended, start or resume polling-based HASH processing */
   if ((State_tmp == HAL_HASH_STATE_READY) || (State_tmp == HAL_HASH_STATE_SUSPENDED))
   {
@@ -3449,6 +3447,7 @@
     status = HAL_DMA_Start_IT(hhash->hdmain, inputaddr, (uint32_t)&HASH->DIN,  \
                               (((inputSize % 4U) != 0U) ? ((inputSize + (4U - (inputSize % 4U))) / 4U) \
                               : (inputSize / 4U)));
+
     /* Enable DMA requests */
     SET_BIT(HASH->CR, HASH_CR_DMAE);
 
@@ -3484,6 +3483,3 @@
   * @}
   */
 
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_hash_ex.c b/Src/stm32f7xx_hal_hash_ex.c
index 78f1f4e..e6e6063 100644
--- a/Src/stm32f7xx_hal_hash_ex.c
+++ b/Src/stm32f7xx_hal_hash_ex.c
@@ -14,6 +14,17 @@
   *         and SHA-256.
   *
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                      ##### HASH peripheral extended features  #####
@@ -69,17 +80,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -1038,6 +1038,3 @@
   * @}
   */
 
-
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_hcd.c b/Src/stm32f7xx_hal_hcd.c
index 7dd5816..af0051a 100644
--- a/Src/stm32f7xx_hal_hcd.c
+++ b/Src/stm32f7xx_hal_hcd.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### How to use this driver #####
@@ -40,17 +51,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -61,7 +61,6 @@
   */
 
 #ifdef HAL_HCD_MODULE_ENABLED
-
 #if defined (USB_OTG_FS) || defined (USB_OTG_HS)
 
 /** @defgroup HCD HCD
@@ -495,7 +494,8 @@
 {
   USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t i, interrupt;
+  uint32_t i;
+  uint32_t interrupt;
 
   /* Ensure that we are in device mode */
   if (USB_GetMode(hhcd->Instance) == USB_OTG_MODE_HOST)
@@ -537,14 +537,19 @@
 
       if ((USBx_HPRT0 & USB_OTG_HPRT_PCSTS) == 0U)
       {
+        /* Flush USB Fifo */
+        (void)USB_FlushTxFifo(USBx, 0x10U);
+        (void)USB_FlushRxFifo(USBx);
+
+        /* Restore FS Clock */
+        (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ);
+
         /* Handle Host Port Disconnect Interrupt */
 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
         hhcd->DisconnectCallback(hhcd);
 #else
         HAL_HCD_Disconnect_Callback(hhcd);
 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
-
-        (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ);
       }
     }
 
@@ -961,7 +966,8 @@
 
 /**
   * @brief  Unregister the USB HCD Host Channel Notify URB Change Callback
-  *         USB HCD Host Channel Notify URB Change Callback is redirected to the weak HAL_HCD_HC_NotifyURBChange_Callback() predefined callback
+  *         USB HCD Host Channel Notify URB Change Callback is redirected
+  *         to the weak HAL_HCD_HC_NotifyURBChange_Callback() predefined callback
   * @param  hhcd HCD handle
   * @retval HAL status
   */
@@ -1019,8 +1025,11 @@
 HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd)
 {
   __HAL_LOCK(hhcd);
-  __HAL_HCD_ENABLE(hhcd);
+  /* Enable port power */
   (void)USB_DriveVbus(hhcd->Instance, 1U);
+
+  /* Enable global interrupt */
+  __HAL_HCD_ENABLE(hhcd);
   __HAL_UNLOCK(hhcd);
 
   return HAL_OK;
@@ -1183,13 +1192,13 @@
   if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR)
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_AHBERR);
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
+    hhcd->hc[ch_num].state = HC_XACTERR;
+    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_BBERR) == USB_OTG_HCINT_BBERR)
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_BBERR);
     hhcd->hc[ch_num].state = HC_BBLERR;
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_ACK) == USB_OTG_HCINT_ACK)
@@ -1198,26 +1207,21 @@
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL)
   {
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
-    hhcd->hc[ch_num].state = HC_STALL;
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_STALL);
+    hhcd->hc[ch_num].state = HC_STALL;
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_DTERR) == USB_OTG_HCINT_DTERR)
   {
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
-    hhcd->hc[ch_num].state = HC_DATATGLERR;
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_DTERR);
+    hhcd->hc[ch_num].state = HC_DATATGLERR;
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_TXERR) == USB_OTG_HCINT_TXERR)
   {
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
+    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_TXERR);
     hhcd->hc[ch_num].state = HC_XACTERR;
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_TXERR);
   }
   else
   {
@@ -1226,7 +1230,6 @@
 
   if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_FRMOR) == USB_OTG_HCINT_FRMOR)
   {
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_FRMOR);
   }
@@ -1245,7 +1248,6 @@
     if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) ||
         (hhcd->hc[ch_num].ep_type == EP_TYPE_BULK))
     {
-      __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
       (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
       __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
     }
@@ -1290,8 +1292,6 @@
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_CHH) == USB_OTG_HCINT_CHH)
   {
-    __HAL_HCD_MASK_HALT_HC_INT(ch_num);
-
     if (hhcd->hc[ch_num].state == HC_XFRC)
     {
       hhcd->hc[ch_num].urb_state = URB_DONE;
@@ -1340,14 +1340,18 @@
       /* ... */
     }
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_CHH);
+
+#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
+    hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+#else
     HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NAK) == USB_OTG_HCINT_NAK)
   {
     if (hhcd->hc[ch_num].ep_type == EP_TYPE_INTR)
     {
       hhcd->hc[ch_num].ErrCnt = 0U;
-      __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
       (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     }
     else if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) ||
@@ -1358,7 +1362,6 @@
       if (hhcd->Init.dma_enable == 0U)
       {
         hhcd->hc[ch_num].state = HC_NAK;
-        __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
         (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
       }
     }
@@ -1392,7 +1395,8 @@
   if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR)
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_AHBERR);
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
+    hhcd->hc[ch_num].state = HC_XACTERR;
+    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_ACK) == USB_OTG_HCINT_ACK)
   {
@@ -1401,16 +1405,14 @@
     if (hhcd->hc[ch_num].do_ping == 1U)
     {
       hhcd->hc[ch_num].do_ping = 0U;
-      hhcd->hc[ch_num].urb_state  = URB_NOTREADY;
-      __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
+      hhcd->hc[ch_num].urb_state = URB_NOTREADY;
       (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     }
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_FRMOR) == USB_OTG_HCINT_FRMOR)
   {
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_FRMOR);
+    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_XFRC) == USB_OTG_HCINT_XFRC)
   {
@@ -1422,26 +1424,23 @@
       hhcd->hc[ch_num].do_ping = 1U;
       __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NYET);
     }
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_XFRC);
     hhcd->hc[ch_num].state = HC_XFRC;
+    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NYET) == USB_OTG_HCINT_NYET)
   {
     hhcd->hc[ch_num].state = HC_NYET;
     hhcd->hc[ch_num].do_ping = 1U;
     hhcd->hc[ch_num].ErrCnt = 0U;
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NYET);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL)
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_STALL);
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     hhcd->hc[ch_num].state = HC_STALL;
+    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NAK) == USB_OTG_HCINT_NAK)
   {
@@ -1456,7 +1455,6 @@
       }
     }
 
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
   }
@@ -1465,7 +1463,6 @@
     if (hhcd->Init.dma_enable == 0U)
     {
       hhcd->hc[ch_num].state = HC_XACTERR;
-      __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
       (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     }
     else
@@ -1475,7 +1472,12 @@
       {
         hhcd->hc[ch_num].ErrCnt = 0U;
         hhcd->hc[ch_num].urb_state = URB_ERROR;
+
+#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
+        hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+#else
         HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
       }
       else
       {
@@ -1486,38 +1488,32 @@
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_DTERR) == USB_OTG_HCINT_DTERR)
   {
-    __HAL_HCD_UNMASK_HALT_HC_INT(ch_num);
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_DTERR);
     hhcd->hc[ch_num].state = HC_DATATGLERR;
+    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
+    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_DTERR);
   }
   else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_CHH) == USB_OTG_HCINT_CHH)
   {
-    __HAL_HCD_MASK_HALT_HC_INT(ch_num);
-
     if (hhcd->hc[ch_num].state == HC_XFRC)
     {
       hhcd->hc[ch_num].urb_state  = URB_DONE;
       if ((hhcd->hc[ch_num].ep_type == EP_TYPE_BULK) ||
           (hhcd->hc[ch_num].ep_type == EP_TYPE_INTR))
       {
-        if (hhcd->Init.dma_enable == 1U)
-        {
-          if (hhcd->hc[ch_num].xfer_len > 0U)
-          {
-            num_packets = (hhcd->hc[ch_num].xfer_len + hhcd->hc[ch_num].max_packet - 1U) / hhcd->hc[ch_num].max_packet;
-
-            if ((num_packets & 1U) != 0U)
-            {
-              hhcd->hc[ch_num].toggle_out ^= 1U;
-            }
-          }
-        }
-        else
+        if (hhcd->Init.dma_enable == 0U)
         {
           hhcd->hc[ch_num].toggle_out ^= 1U;
         }
+
+        if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[ch_num].xfer_len > 0U))
+        {
+          num_packets = (hhcd->hc[ch_num].xfer_len + hhcd->hc[ch_num].max_packet - 1U) / hhcd->hc[ch_num].max_packet;
+
+          if ((num_packets & 1U) != 0U)
+          {
+            hhcd->hc[ch_num].toggle_out ^= 1U;
+          }
+        }
       }
     }
     else if (hhcd->hc[ch_num].state == HC_NAK)
@@ -1558,7 +1554,12 @@
     }
 
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_CHH);
+
+#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
+    hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+#else
     HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
   }
   else
   {
@@ -1641,7 +1642,8 @@
 {
   USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  __IO uint32_t hprt0, hprt0_dup;
+  __IO uint32_t hprt0;
+  __IO uint32_t hprt0_dup;
 
   /* Handle Host Port Interrupts */
   hprt0 = USBx_HPRT0;
@@ -1661,7 +1663,7 @@
       HAL_HCD_Connect_Callback(hhcd);
 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
     }
-    hprt0_dup  |= USB_OTG_HPRT_PCDET;
+    hprt0_dup |= USB_OTG_HPRT_PCDET;
   }
 
   /* Check whether Port Enable Changed */
@@ -1734,5 +1736,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_i2c.c b/Src/stm32f7xx_hal_i2c.c
index 64e9ba9..c5ec9a1 100644
--- a/Src/stm32f7xx_hal_i2c.c
+++ b/Src/stm32f7xx_hal_i2c.c
@@ -9,6 +9,17 @@
   *           + IO operation functions
   *           + Peripheral State and Errors functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -19,7 +30,7 @@
     (#) Declare a I2C_HandleTypeDef handle structure, for example:
         I2C_HandleTypeDef  hi2c;
 
-    (#)Initialize the I2C low level resources by implementing the @ref HAL_I2C_MspInit() API:
+    (#)Initialize the I2C low level resources by implementing the HAL_I2C_MspInit() API:
         (##) Enable the I2Cx interface clock
         (##) I2C pins configuration
             (+++) Enable the clock for the I2C GPIOs
@@ -28,7 +39,8 @@
             (+++) Configure the I2Cx interrupt priority
             (+++) Enable the NVIC I2C IRQ Channel
         (##) DMA Configuration if you need to use DMA process
-            (+++) Declare a DMA_HandleTypeDef handle structure for the transmit or receive stream
+            (+++) Declare a DMA_HandleTypeDef handle structure for
+                  the transmit or receive stream
             (+++) Enable the DMAx interface clock using
             (+++) Configure the DMA handle parameters
             (+++) Configure the DMA Tx or Rx stream
@@ -39,49 +51,49 @@
     (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addressing mode,
         Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure.
 
-    (#) Initialize the I2C registers by calling the @ref HAL_I2C_Init(), configures also the low level Hardware
-        (GPIO, CLOCK, NVIC...etc) by calling the customized @ref HAL_I2C_MspInit(&hi2c) API.
+    (#) Initialize the I2C registers by calling the HAL_I2C_Init(), configures also the low level Hardware
+        (GPIO, CLOCK, NVIC...etc) by calling the customized HAL_I2C_MspInit(&hi2c) API.
 
-    (#) To check if target device is ready for communication, use the function @ref HAL_I2C_IsDeviceReady()
+    (#) To check if target device is ready for communication, use the function HAL_I2C_IsDeviceReady()
 
     (#) For I2C IO and IO MEM operations, three operation modes are available within this driver :
 
     *** Polling mode IO operation ***
     =================================
     [..]
-      (+) Transmit in master mode an amount of data in blocking mode using @ref HAL_I2C_Master_Transmit()
-      (+) Receive in master mode an amount of data in blocking mode using @ref HAL_I2C_Master_Receive()
-      (+) Transmit in slave mode an amount of data in blocking mode using @ref HAL_I2C_Slave_Transmit()
-      (+) Receive in slave mode an amount of data in blocking mode using @ref HAL_I2C_Slave_Receive()
+      (+) Transmit in master mode an amount of data in blocking mode using HAL_I2C_Master_Transmit()
+      (+) Receive in master mode an amount of data in blocking mode using HAL_I2C_Master_Receive()
+      (+) Transmit in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Transmit()
+      (+) Receive in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Receive()
 
     *** Polling mode IO MEM operation ***
     =====================================
     [..]
-      (+) Write an amount of data in blocking mode to a specific memory address using @ref HAL_I2C_Mem_Write()
-      (+) Read an amount of data in blocking mode from a specific memory address using @ref HAL_I2C_Mem_Read()
+      (+) Write an amount of data in blocking mode to a specific memory address using HAL_I2C_Mem_Write()
+      (+) Read an amount of data in blocking mode from a specific memory address using HAL_I2C_Mem_Read()
 
 
     *** Interrupt mode IO operation ***
     ===================================
     [..]
-      (+) Transmit in master mode an amount of data in non-blocking mode using @ref HAL_I2C_Master_Transmit_IT()
-      (+) At transmission end of transfer, @ref HAL_I2C_MasterTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MasterTxCpltCallback()
-      (+) Receive in master mode an amount of data in non-blocking mode using @ref HAL_I2C_Master_Receive_IT()
-      (+) At reception end of transfer, @ref HAL_I2C_MasterRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MasterRxCpltCallback()
-      (+) Transmit in slave mode an amount of data in non-blocking mode using @ref HAL_I2C_Slave_Transmit_IT()
-      (+) At transmission end of transfer, @ref HAL_I2C_SlaveTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_SlaveTxCpltCallback()
-      (+) Receive in slave mode an amount of data in non-blocking mode using @ref HAL_I2C_Slave_Receive_IT()
-      (+) At reception end of transfer, @ref HAL_I2C_SlaveRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_SlaveRxCpltCallback()
-      (+) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()
-      (+) Abort a master I2C process communication with Interrupt using @ref HAL_I2C_Master_Abort_IT()
-      (+) End of abort process, @ref HAL_I2C_AbortCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_AbortCpltCallback()
-      (+) Discard a slave I2C process communication using @ref __HAL_I2C_GENERATE_NACK() macro.
+      (+) Transmit in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Transmit_IT()
+      (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback()
+      (+) Receive in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Receive_IT()
+      (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()
+      (+) Transmit in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Transmit_IT()
+      (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback()
+      (+) Receive in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Receive_IT()
+      (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()
+      (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
+           add their own code by customization of function pointer HAL_I2C_ErrorCallback()
+      (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
+      (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()
+      (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.
            This action will inform Master to generate a Stop condition to discard the communication.
 
 
@@ -92,120 +104,135 @@
           when a direction change during transfer
     [..]
       (+) A specific option field manage the different steps of a sequential transfer
-      (+) Option field values are defined through @ref I2C_XFEROPTIONS and are listed below:
-      (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfaces in no sequential mode
+      (+) Option field values are defined through I2C_XFEROPTIONS and are listed below:
+      (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfaces in
+           no sequential mode
       (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start condition, address
                             and data to transfer without a final stop condition
-      (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a sequence with start condition, address
-                            and data to transfer without a final stop condition, an then permit a call the same master sequential interface
-                            several times (like @ref HAL_I2C_Master_Seq_Transmit_IT() then @ref HAL_I2C_Master_Seq_Transmit_IT()
-                            or @ref HAL_I2C_Master_Seq_Transmit_DMA() then @ref HAL_I2C_Master_Seq_Transmit_DMA())
+      (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a sequence with
+                            start condition, address and data to transfer without a final stop condition,
+                            an then permit a call the same master sequential interface several times
+                            (like HAL_I2C_Master_Seq_Transmit_IT() then HAL_I2C_Master_Seq_Transmit_IT()
+                            or HAL_I2C_Master_Seq_Transmit_DMA() then HAL_I2C_Master_Seq_Transmit_DMA())
       (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart condition, address
-                            and with new data to transfer if the direction change or manage only the new data to transfer
+                            and with new data to transfer if the direction change or manage only the new data to
+                            transfer
                             if no direction change and without a final stop condition in both cases
       (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart condition, address
-                            and with new data to transfer if the direction change or manage only the new data to transfer
+                            and with new data to transfer if the direction change or manage only the new data to
+                            transfer
                             if no direction change and with a final stop condition in both cases
-      (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a restart condition after several call of the same master sequential
-                            interface several times (link with option I2C_FIRST_AND_NEXT_FRAME).
-                            Usage can, transfer several bytes one by one using HAL_I2C_Master_Seq_Transmit_IT(option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME)
-                              or HAL_I2C_Master_Seq_Receive_IT(option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME)
-                              or HAL_I2C_Master_Seq_Transmit_DMA(option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME)
-                              or HAL_I2C_Master_Seq_Receive_DMA(option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME).
-                            Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit or Receive sequence permit to call the opposite interface Receive or Transmit
+      (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a restart condition
+                            after several call of the same master sequential interface several times
+                            (link with option I2C_FIRST_AND_NEXT_FRAME).
+                            Usage can, transfer several bytes one by one using
+                              HAL_I2C_Master_Seq_Transmit_IT
+                              or HAL_I2C_Master_Seq_Receive_IT
+                              or HAL_I2C_Master_Seq_Transmit_DMA
+                              or HAL_I2C_Master_Seq_Receive_DMA
+                              with option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME.
+                             Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit or
+                              Receive sequence permit to call the opposite interface Receive or Transmit
                               without stopping the communication and so generate a restart condition.
-      (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart condition after each call of the same master sequential
+      (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart condition after
+                            each call of the same master sequential
                             interface.
-                            Usage can, transfer several bytes one by one with a restart with slave address between each bytes using HAL_I2C_Master_Seq_Transmit_IT(option I2C_FIRST_FRAME then I2C_OTHER_FRAME)
-                              or HAL_I2C_Master_Seq_Receive_IT(option I2C_FIRST_FRAME then I2C_OTHER_FRAME)
-                              or HAL_I2C_Master_Seq_Transmit_DMA(option I2C_FIRST_FRAME then I2C_OTHER_FRAME)
-                              or HAL_I2C_Master_Seq_Receive_DMA(option I2C_FIRST_FRAME then I2C_OTHER_FRAME).
-                            Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to help automatic generation of STOP condition.
+                            Usage can, transfer several bytes one by one with a restart with slave address between
+                            each bytes using
+                              HAL_I2C_Master_Seq_Transmit_IT
+                              or HAL_I2C_Master_Seq_Receive_IT
+                              or HAL_I2C_Master_Seq_Transmit_DMA
+                              or HAL_I2C_Master_Seq_Receive_DMA
+                              with option I2C_FIRST_FRAME then I2C_OTHER_FRAME.
+                            Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to help automatic
+                            generation of STOP condition.
 
       (+) Different sequential I2C interfaces are listed below:
-      (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using @ref HAL_I2C_Master_Seq_Transmit_IT()
-            or using @ref HAL_I2C_Master_Seq_Transmit_DMA()
-      (+++) At transmission end of current frame transfer, @ref HAL_I2C_MasterTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MasterTxCpltCallback()
-      (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using @ref HAL_I2C_Master_Seq_Receive_IT()
-            or using @ref HAL_I2C_Master_Seq_Receive_DMA()
-      (+++) At reception end of current frame transfer, @ref HAL_I2C_MasterRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MasterRxCpltCallback()
-      (++) Abort a master IT or DMA I2C process communication with Interrupt using @ref HAL_I2C_Master_Abort_IT()
-      (+++) End of abort process, @ref HAL_I2C_AbortCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_AbortCpltCallback()
-      (++) Enable/disable the Address listen mode in slave I2C mode using @ref HAL_I2C_EnableListen_IT() @ref HAL_I2C_DisableListen_IT()
-      (+++) When address slave I2C match, @ref HAL_I2C_AddrCallback() is executed and user can
-           add his own code to check the Address Match Code and the transmission direction request by master (Write/Read).
-      (+++) At Listen mode end @ref HAL_I2C_ListenCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_ListenCpltCallback()
-      (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using @ref HAL_I2C_Slave_Seq_Transmit_IT()
-            or using @ref HAL_I2C_Slave_Seq_Transmit_DMA()
-      (+++) At transmission end of current frame transfer, @ref HAL_I2C_SlaveTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_SlaveTxCpltCallback()
-      (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using @ref HAL_I2C_Slave_Seq_Receive_IT()
-            or using @ref HAL_I2C_Slave_Seq_Receive_DMA()
-      (+++) At reception end of current frame transfer, @ref HAL_I2C_SlaveRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_SlaveRxCpltCallback()
-      (++) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()
-      (++) Discard a slave I2C process communication using @ref __HAL_I2C_GENERATE_NACK() macro.
+      (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using
+            HAL_I2C_Master_Seq_Transmit_IT() or using HAL_I2C_Master_Seq_Transmit_DMA()
+      (+++) At transmission end of current frame transfer, HAL_I2C_MasterTxCpltCallback() is executed and
+            users can add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback()
+      (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using
+            HAL_I2C_Master_Seq_Receive_IT() or using HAL_I2C_Master_Seq_Receive_DMA()
+      (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()
+      (++) Abort a master IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
+      (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()
+      (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT()
+            HAL_I2C_DisableListen_IT()
+      (+++) When address slave I2C match, HAL_I2C_AddrCallback() is executed and users can
+           add their own code to check the Address Match Code and the transmission direction request by master
+           (Write/Read).
+      (+++) At Listen mode end HAL_I2C_ListenCpltCallback() is executed and users can
+          add their own code by customization of function pointer HAL_I2C_ListenCpltCallback()
+      (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using
+            HAL_I2C_Slave_Seq_Transmit_IT() or using HAL_I2C_Slave_Seq_Transmit_DMA()
+      (+++) At transmission end of current frame transfer, HAL_I2C_SlaveTxCpltCallback() is executed and
+            users can add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback()
+      (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using
+            HAL_I2C_Slave_Seq_Receive_IT() or using HAL_I2C_Slave_Seq_Receive_DMA()
+      (+++) At reception end of current frame transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()
+      (++) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
+           add their own code by customization of function pointer HAL_I2C_ErrorCallback()
+      (++) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.
            This action will inform Master to generate a Stop condition to discard the communication.
 
     *** Interrupt mode IO MEM operation ***
     =======================================
     [..]
       (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address using
-          @ref HAL_I2C_Mem_Write_IT()
-      (+) At Memory end of write transfer, @ref HAL_I2C_MemTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MemTxCpltCallback()
+          HAL_I2C_Mem_Write_IT()
+      (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback()
       (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address using
-          @ref HAL_I2C_Mem_Read_IT()
-      (+) At Memory end of read transfer, @ref HAL_I2C_MemRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MemRxCpltCallback()
-      (+) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()
+          HAL_I2C_Mem_Read_IT()
+      (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback()
+      (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
+           add their own code by customization of function pointer HAL_I2C_ErrorCallback()
 
     *** DMA mode IO operation ***
     ==============================
     [..]
       (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using
-          @ref HAL_I2C_Master_Transmit_DMA()
-      (+) At transmission end of transfer, @ref HAL_I2C_MasterTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MasterTxCpltCallback()
+          HAL_I2C_Master_Transmit_DMA()
+      (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback()
       (+) Receive in master mode an amount of data in non-blocking mode (DMA) using
-          @ref HAL_I2C_Master_Receive_DMA()
-      (+) At reception end of transfer, @ref HAL_I2C_MasterRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MasterRxCpltCallback()
+          HAL_I2C_Master_Receive_DMA()
+      (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()
       (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using
-          @ref HAL_I2C_Slave_Transmit_DMA()
-      (+) At transmission end of transfer, @ref HAL_I2C_SlaveTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_SlaveTxCpltCallback()
+          HAL_I2C_Slave_Transmit_DMA()
+      (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback()
       (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using
-          @ref HAL_I2C_Slave_Receive_DMA()
-      (+) At reception end of transfer, @ref HAL_I2C_SlaveRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_SlaveRxCpltCallback()
-      (+) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()
-      (+) Abort a master I2C process communication with Interrupt using @ref HAL_I2C_Master_Abort_IT()
-      (+) End of abort process, @ref HAL_I2C_AbortCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_AbortCpltCallback()
-      (+) Discard a slave I2C process communication using @ref __HAL_I2C_GENERATE_NACK() macro.
+          HAL_I2C_Slave_Receive_DMA()
+      (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()
+      (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
+           add their own code by customization of function pointer HAL_I2C_ErrorCallback()
+      (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
+      (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_AbortCpltCallback()
+      (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro.
            This action will inform Master to generate a Stop condition to discard the communication.
 
     *** DMA mode IO MEM operation ***
     =================================
     [..]
       (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using
-          @ref HAL_I2C_Mem_Write_DMA()
-      (+) At Memory end of write transfer, @ref HAL_I2C_MemTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MemTxCpltCallback()
+          HAL_I2C_Mem_Write_DMA()
+      (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback()
       (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using
-          @ref HAL_I2C_Mem_Read_DMA()
-      (+) At Memory end of read transfer, @ref HAL_I2C_MemRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_MemRxCpltCallback()
-      (+) In case of transfer Error, @ref HAL_I2C_ErrorCallback() function is executed and user can
-           add his own code by customization of function pointer @ref HAL_I2C_ErrorCallback()
+          HAL_I2C_Mem_Read_DMA()
+      (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback()
+      (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can
+           add their own code by customization of function pointer HAL_I2C_ErrorCallback()
 
 
      *** I2C HAL driver macros list ***
@@ -213,23 +240,23 @@
      [..]
        Below the list of most used macros in I2C HAL driver.
 
-      (+) @ref __HAL_I2C_ENABLE: Enable the I2C peripheral
-      (+) @ref __HAL_I2C_DISABLE: Disable the I2C peripheral
-      (+) @ref __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode
-      (+) @ref __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not
-      (+) @ref __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag
-      (+) @ref __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt
-      (+) @ref __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt
+      (+) __HAL_I2C_ENABLE: Enable the I2C peripheral
+      (+) __HAL_I2C_DISABLE: Disable the I2C peripheral
+      (+) __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode
+      (+) __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not
+      (+) __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag
+      (+) __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt
+      (+) __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt
 
      *** Callback registration ***
      =============================================
     [..]
      The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1
      allows the user to configure dynamically the driver callbacks.
-     Use Functions @ref HAL_I2C_RegisterCallback() or @ref HAL_I2C_RegisterAddrCallback()
+     Use Functions HAL_I2C_RegisterCallback() or HAL_I2C_RegisterAddrCallback()
      to register an interrupt callback.
     [..]
-     Function @ref HAL_I2C_RegisterCallback() allows to register following callbacks:
+     Function HAL_I2C_RegisterCallback() allows to register following callbacks:
        (+) MasterTxCpltCallback : callback for Master transmission end of transfer.
        (+) MasterRxCpltCallback : callback for Master reception end of transfer.
        (+) SlaveTxCpltCallback  : callback for Slave transmission end of transfer.
@@ -244,11 +271,11 @@
      This function takes as parameters the HAL peripheral handle, the Callback ID
      and a pointer to the user callback function.
     [..]
-     For specific callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_RegisterAddrCallback().
+     For specific callback AddrCallback use dedicated register callbacks : HAL_I2C_RegisterAddrCallback().
     [..]
-     Use function @ref HAL_I2C_UnRegisterCallback to reset a callback to the default
+     Use function HAL_I2C_UnRegisterCallback to reset a callback to the default
      weak function.
-     @ref HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
+     HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
      and the Callback ID.
      This function allows to reset following callbacks:
        (+) MasterTxCpltCallback : callback for Master transmission end of transfer.
@@ -263,24 +290,24 @@
        (+) MspInitCallback      : callback for Msp Init.
        (+) MspDeInitCallback    : callback for Msp DeInit.
     [..]
-     For callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_UnRegisterAddrCallback().
+     For callback AddrCallback use dedicated register callbacks : HAL_I2C_UnRegisterAddrCallback().
     [..]
-     By default, after the @ref HAL_I2C_Init() and when the state is @ref HAL_I2C_STATE_RESET
+     By default, after the HAL_I2C_Init() and when the state is HAL_I2C_STATE_RESET
      all callbacks are set to the corresponding weak functions:
-     examples @ref HAL_I2C_MasterTxCpltCallback(), @ref HAL_I2C_MasterRxCpltCallback().
+     examples HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback().
      Exception done for MspInit and MspDeInit functions that are
-     reset to the legacy weak functions in the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit() only when
+     reset to the legacy weak functions in the HAL_I2C_Init()/ HAL_I2C_DeInit() only when
      these callbacks are null (not registered beforehand).
-     If MspInit or MspDeInit are not null, the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit()
+     If MspInit or MspDeInit are not null, the HAL_I2C_Init()/ HAL_I2C_DeInit()
      keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
     [..]
-     Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.
+     Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only.
      Exception done MspInit/MspDeInit functions that can be registered/unregistered
-     in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,
+     in HAL_I2C_STATE_READY or HAL_I2C_STATE_RESET state,
      thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
      Then, the user first registers the MspInit/MspDeInit user callbacks
-     using @ref HAL_I2C_RegisterCallback() before calling @ref HAL_I2C_DeInit()
-     or @ref HAL_I2C_Init() function.
+     using HAL_I2C_RegisterCallback() before calling HAL_I2C_DeInit()
+     or HAL_I2C_Init() function.
     [..]
      When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or
      not defined, the callback registration feature is not available and all callbacks
@@ -290,18 +317,6 @@
        (@) You can refer to the I2C HAL driver header file for more useful macros
 
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -336,28 +351,48 @@
 #define I2C_TIMEOUT_FLAG    (25U)          /*!< 25 ms */
 
 #define MAX_NBYTE_SIZE      255U
-#define SlaveAddr_SHIFT     7U
-#define SlaveAddr_MSK       0x06U
+#define SLAVE_ADDR_SHIFT     7U
+#define SLAVE_ADDR_MSK       0x06U
 
 /* Private define for @ref PreviousState usage */
-#define I2C_STATE_MSK             ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | (uint32_t)HAL_I2C_STATE_BUSY_RX) & (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY)))) /*!< Mask State define, keep only RX and TX bits            */
-#define I2C_STATE_NONE            ((uint32_t)(HAL_I2C_MODE_NONE))                                                        /*!< Default Value                                          */
-#define I2C_STATE_MASTER_BUSY_TX  ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MASTER))            /*!< Master Busy TX, combinaison of State LSB and Mode enum */
-#define I2C_STATE_MASTER_BUSY_RX  ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MASTER))            /*!< Master Busy RX, combinaison of State LSB and Mode enum */
-#define I2C_STATE_SLAVE_BUSY_TX   ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_SLAVE))             /*!< Slave Busy TX, combinaison of State LSB and Mode enum  */
-#define I2C_STATE_SLAVE_BUSY_RX   ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_SLAVE))             /*!< Slave Busy RX, combinaison of State LSB and Mode enum  */
-#define I2C_STATE_MEM_BUSY_TX     ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MEM))               /*!< Memory Busy TX, combinaison of State LSB and Mode enum */
-#define I2C_STATE_MEM_BUSY_RX     ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | (uint32_t)HAL_I2C_MODE_MEM))               /*!< Memory Busy RX, combinaison of State LSB and Mode enum */
+#define I2C_STATE_MSK             ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | \
+                                                         (uint32_t)HAL_I2C_STATE_BUSY_RX) & \
+                                              (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY))))
+/*!< Mask State define, keep only RX and TX bits */
+#define I2C_STATE_NONE            ((uint32_t)(HAL_I2C_MODE_NONE))
+/*!< Default Value */
+#define I2C_STATE_MASTER_BUSY_TX  ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \
+                                              (uint32_t)HAL_I2C_MODE_MASTER))
+/*!< Master Busy TX, combinaison of State LSB and Mode enum */
+#define I2C_STATE_MASTER_BUSY_RX  ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \
+                                              (uint32_t)HAL_I2C_MODE_MASTER))
+/*!< Master Busy RX, combinaison of State LSB and Mode enum */
+#define I2C_STATE_SLAVE_BUSY_TX   ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \
+                                              (uint32_t)HAL_I2C_MODE_SLAVE))
+/*!< Slave Busy TX, combinaison of State LSB and Mode enum */
+#define I2C_STATE_SLAVE_BUSY_RX   ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \
+                                              (uint32_t)HAL_I2C_MODE_SLAVE))
+/*!< Slave Busy RX, combinaison of State LSB and Mode enum  */
+#define I2C_STATE_MEM_BUSY_TX     ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \
+                                              (uint32_t)HAL_I2C_MODE_MEM))
+/*!< Memory Busy TX, combinaison of State LSB and Mode enum */
+#define I2C_STATE_MEM_BUSY_RX     ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \
+                                              (uint32_t)HAL_I2C_MODE_MEM))
+/*!< Memory Busy RX, combinaison of State LSB and Mode enum */
 
 
 /* Private define to centralize the enable/disable of Interrupts */
-#define I2C_XFER_TX_IT          (uint16_t)(0x0001U)   /* Bit field can be combinated with @ref I2C_XFER_LISTEN_IT */
-#define I2C_XFER_RX_IT          (uint16_t)(0x0002U)   /* Bit field can be combinated with @ref I2C_XFER_LISTEN_IT */
-#define I2C_XFER_LISTEN_IT      (uint16_t)(0x8000U)   /* Bit field can be combinated with @ref I2C_XFER_TX_IT and @ref I2C_XFER_RX_IT */
+#define I2C_XFER_TX_IT          (uint16_t)(0x0001U)   /*!< Bit field can be combinated with
+                                                         @ref I2C_XFER_LISTEN_IT */
+#define I2C_XFER_RX_IT          (uint16_t)(0x0002U)   /*!< Bit field can be combinated with
+                                                         @ref I2C_XFER_LISTEN_IT */
+#define I2C_XFER_LISTEN_IT      (uint16_t)(0x8000U)   /*!< Bit field can be combinated with @ref I2C_XFER_TX_IT
+                                                         and @ref I2C_XFER_RX_IT */
 
-#define I2C_XFER_ERROR_IT       (uint16_t)(0x0010U)   /* Bit definition to manage addition of global Error and NACK treatment */
-#define I2C_XFER_CPLT_IT        (uint16_t)(0x0020U)   /* Bit definition to manage only STOP evenement */
-#define I2C_XFER_RELOAD_IT      (uint16_t)(0x0040U)   /* Bit definition to manage only Reload of NBYTE */
+#define I2C_XFER_ERROR_IT       (uint16_t)(0x0010U)   /*!< Bit definition to manage addition of global Error
+                                                         and NACK treatment */
+#define I2C_XFER_CPLT_IT        (uint16_t)(0x0020U)   /*!< Bit definition to manage only STOP evenement */
+#define I2C_XFER_RELOAD_IT      (uint16_t)(0x0040U)   /*!< Bit definition to manage only Reload of NBYTE */
 
 /* Private define Sequential Transfer Options default/reset value */
 #define I2C_NO_OPTION_FRAME     (0xFFFF0000U)
@@ -366,6 +401,9 @@
   */
 
 /* Private macro -------------------------------------------------------------*/
+/* Macro to get remaining data to transfer on DMA side */
+#define I2C_GET_DMA_REMAIN_DATA(__HANDLE__)     __HAL_DMA_GET_COUNTER(__HANDLE__)
+
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
 
@@ -390,24 +428,34 @@
 static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode);
 
 /* Private functions to handle IT transfer */
-static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                                uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
-static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                               uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart);
+static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
+                                                uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
+                                                uint32_t Tickstart);
+static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
+                                               uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
+                                               uint32_t Tickstart);
 
 /* Private functions for I2C transfer IRQ handler */
-static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);
-static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);
-static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);
-static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);
+static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                           uint32_t ITSources);
+static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                          uint32_t ITSources);
+static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                            uint32_t ITSources);
+static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                           uint32_t ITSources);
 
 /* Private functions to handle flags during polling transfer */
 static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status,
                                                     uint32_t Timeout, uint32_t Tickstart);
-static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart);
-static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart);
-static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart);
-static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart);
+static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
+                                                        uint32_t Tickstart);
+static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
+                                                        uint32_t Tickstart);
+static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
+                                                        uint32_t Tickstart);
+static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
+                                             uint32_t Tickstart);
 
 /* Private functions to centralize the enable/disable of Interrupts */
 static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest);
@@ -559,7 +607,8 @@
   hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE;
 
   /* Configure I2Cx: Dual mode and Own Address2 */
-  hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | (hi2c->Init.OwnAddress2Masks << 8));
+  hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \
+                          (hi2c->Init.OwnAddress2Masks << 8));
 
   /*---------------------------- I2Cx CR1 Configuration ----------------------*/
   /* Configure I2Cx: Generalcall and NoStretch mode */
@@ -1065,8 +1114,8 @@
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size,
-                                          uint32_t Timeout)
+HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
+                                          uint16_t Size, uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -1097,12 +1146,14 @@
     if (hi2c->XferCount > MAX_NBYTE_SIZE)
     {
       hi2c->XferSize = MAX_NBYTE_SIZE;
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
+                         I2C_GENERATE_START_WRITE);
     }
     else
     {
       hi2c->XferSize = hi2c->XferCount;
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_WRITE);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                         I2C_GENERATE_START_WRITE);
     }
 
     while (hi2c->XferCount > 0U)
@@ -1132,12 +1183,14 @@
         if (hi2c->XferCount > MAX_NBYTE_SIZE)
         {
           hi2c->XferSize = MAX_NBYTE_SIZE;
-          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
+                             I2C_NO_STARTSTOP);
         }
         else
         {
           hi2c->XferSize = hi2c->XferCount;
-          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                             I2C_NO_STARTSTOP);
         }
       }
     }
@@ -1180,8 +1233,8 @@
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size,
-                                         uint32_t Timeout)
+HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
+                                         uint16_t Size, uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -1212,12 +1265,14 @@
     if (hi2c->XferCount > MAX_NBYTE_SIZE)
     {
       hi2c->XferSize = MAX_NBYTE_SIZE;
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_GENERATE_START_READ);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
+                         I2C_GENERATE_START_READ);
     }
     else
     {
       hi2c->XferSize = hi2c->XferCount;
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_READ);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                         I2C_GENERATE_START_READ);
     }
 
     while (hi2c->XferCount > 0U)
@@ -1248,12 +1303,14 @@
         if (hi2c->XferCount > MAX_NBYTE_SIZE)
         {
           hi2c->XferSize = MAX_NBYTE_SIZE;
-          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
+                             I2C_NO_STARTSTOP);
         }
         else
         {
           hi2c->XferSize = hi2c->XferCount;
-          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                             I2C_NO_STARTSTOP);
         }
       }
     }
@@ -1294,7 +1351,8 @@
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
+HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
+                                         uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -1376,22 +1434,27 @@
       hi2c->XferCount--;
     }
 
+    /* Wait until AF flag is set */
+    if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart) != HAL_OK)
+    {
+      /* Disable Address Acknowledge */
+      hi2c->Instance->CR2 |= I2C_CR2_NACK;
+      return HAL_ERROR;
+    }
+
+    /* Flush TX register */
+    I2C_Flush_TXDR(hi2c);
+
+    /* Clear AF flag */
+    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
+
     /* Wait until STOP flag is set */
     if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK)
     {
       /* Disable Address Acknowledge */
       hi2c->Instance->CR2 |= I2C_CR2_NACK;
 
-      if (hi2c->ErrorCode == HAL_I2C_ERROR_AF)
-      {
-        /* Normal use case for Transmitter mode */
-        /* A NACK is generated to confirm the end of transfer */
-        hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
-      }
-      else
-      {
-        return HAL_ERROR;
-      }
+      return HAL_ERROR;
     }
 
     /* Clear STOP flag */
@@ -1431,7 +1494,8 @@
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
+HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
+                                        uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -1455,6 +1519,7 @@
     /* Prepare transfer parameters */
     hi2c->pBuffPtr  = pData;
     hi2c->XferCount = Size;
+    hi2c->XferSize = hi2c->XferCount;
     hi2c->XferISR   = NULL;
 
     /* Enable Address Acknowledge */
@@ -1497,6 +1562,7 @@
           hi2c->pBuffPtr++;
 
           hi2c->XferCount--;
+          hi2c->XferSize--;
         }
 
         return HAL_ERROR;
@@ -1509,6 +1575,7 @@
       hi2c->pBuffPtr++;
 
       hi2c->XferCount--;
+      hi2c->XferSize--;
     }
 
     /* Wait until STOP flag is set */
@@ -1606,7 +1673,8 @@
 
     /* Enable ERR, TC, STOP, NACK, TXI interrupt */
     /* possible to enable all of these */
-    /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
     I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
 
     return HAL_OK;
@@ -1627,7 +1695,8 @@
   * @param  Size Amount of data to be sent
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
+HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
+                                            uint16_t Size)
 {
   uint32_t xfermode;
 
@@ -1675,7 +1744,8 @@
 
     /* Enable ERR, TC, STOP, NACK, RXI interrupt */
     /* possible to enable all of these */
-    /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
     I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
 
     return HAL_OK;
@@ -1724,7 +1794,8 @@
 
     /* Enable ERR, TC, STOP, NACK, TXI interrupt */
     /* possible to enable all of these */
-    /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
     I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT);
 
     return HAL_OK;
@@ -1773,7 +1844,8 @@
 
     /* Enable ERR, TC, STOP, NACK, RXI interrupt */
     /* possible to enable all of these */
-    /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
     I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
 
     return HAL_OK;
@@ -1846,7 +1918,8 @@
         hi2c->hdmatx->XferAbortCallback = NULL;
 
         /* Enable the DMA stream */
-        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);
+        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,
+                                         hi2c->XferSize);
       }
       else
       {
@@ -1906,7 +1979,8 @@
 
       /* Send Slave Address */
       /* Set NBYTES to write and generate START condition */
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_WRITE);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                         I2C_GENERATE_START_WRITE);
 
       /* Process Unlocked */
       __HAL_UNLOCK(hi2c);
@@ -1916,7 +1990,8 @@
                 process unlock */
       /* Enable ERR, TC, STOP, NACK, TXI interrupt */
       /* possible to enable all of these */
-      /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+      /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+        I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
       I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
     }
 
@@ -1990,7 +2065,8 @@
         hi2c->hdmarx->XferAbortCallback = NULL;
 
         /* Enable the DMA stream */
-        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);
+        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData,
+                                         hi2c->XferSize);
       }
       else
       {
@@ -2050,7 +2126,8 @@
 
       /* Send Slave Address */
       /* Set NBYTES to read and generate START condition */
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_READ);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                         I2C_GENERATE_START_READ);
 
       /* Process Unlocked */
       __HAL_UNLOCK(hi2c);
@@ -2060,7 +2137,8 @@
                 process unlock */
       /* Enable ERR, TC, STOP, NACK, TXI interrupt */
       /* possible to enable all of these */
-      /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+      /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+        I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
       I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
     }
 
@@ -2118,7 +2196,8 @@
       hi2c->hdmatx->XferAbortCallback = NULL;
 
       /* Enable the DMA stream */
-      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);
+      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,
+                                       hi2c->XferSize);
     }
     else
     {
@@ -2221,7 +2300,8 @@
       hi2c->hdmarx->XferAbortCallback = NULL;
 
       /* Enable the DMA stream */
-      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);
+      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData,
+                                       hi2c->XferSize);
     }
     else
     {
@@ -2374,12 +2454,14 @@
         if (hi2c->XferCount > MAX_NBYTE_SIZE)
         {
           hi2c->XferSize = MAX_NBYTE_SIZE;
-          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
+                             I2C_NO_STARTSTOP);
         }
         else
         {
           hi2c->XferSize = hi2c->XferCount;
-          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                             I2C_NO_STARTSTOP);
         }
       }
 
@@ -2474,12 +2556,14 @@
     if (hi2c->XferCount > MAX_NBYTE_SIZE)
     {
       hi2c->XferSize = MAX_NBYTE_SIZE;
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_GENERATE_START_READ);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE,
+                         I2C_GENERATE_START_READ);
     }
     else
     {
       hi2c->XferSize = hi2c->XferCount;
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_READ);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                         I2C_GENERATE_START_READ);
     }
 
     do
@@ -2510,12 +2594,14 @@
         if (hi2c->XferCount > MAX_NBYTE_SIZE)
         {
           hi2c->XferSize = MAX_NBYTE_SIZE;
-          I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE,
+                             I2C_NO_STARTSTOP);
         }
         else
         {
           hi2c->XferSize = hi2c->XferCount;
-          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                             I2C_NO_STARTSTOP);
         }
       }
     } while (hi2c->XferCount > 0U);
@@ -2608,7 +2694,8 @@
     }
 
     /* Send Slave Address and Memory Address */
-    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
+    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart)
+        != HAL_OK)
     {
       /* Process Unlocked */
       __HAL_UNLOCK(hi2c);
@@ -2627,7 +2714,8 @@
 
     /* Enable ERR, TC, STOP, NACK, TXI interrupt */
     /* possible to enable all of these */
-    /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
     I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
 
     return HAL_OK;
@@ -2719,7 +2807,8 @@
 
     /* Enable ERR, TC, STOP, NACK, RXI interrupt */
     /* possible to enable all of these */
-    /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+    /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+      I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
     I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
 
     return HAL_OK;
@@ -2792,7 +2881,8 @@
     }
 
     /* Send Slave Address and Memory Address */
-    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
+    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart)
+        != HAL_OK)
     {
       /* Process Unlocked */
       __HAL_UNLOCK(hi2c);
@@ -2813,7 +2903,8 @@
       hi2c->hdmatx->XferAbortCallback = NULL;
 
       /* Enable the DMA stream */
-      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);
+      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,
+                                       hi2c->XferSize);
     }
     else
     {
@@ -2957,7 +3048,8 @@
       hi2c->hdmarx->XferAbortCallback = NULL;
 
       /* Enable the DMA stream */
-      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);
+      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData,
+                                       hi2c->XferSize);
     }
     else
     {
@@ -3028,7 +3120,8 @@
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)
+HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials,
+                                        uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -3205,9 +3298,11 @@
       xfermode = hi2c->XferOptions;
     }
 
-    /* If transfer direction not change and there is no request to start another frame, do not generate Restart Condition */
+    /* If transfer direction not change and there is no request to start another frame,
+       do not generate Restart Condition */
     /* Mean Previous state is same as current state */
-    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
+    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \
+        (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
     {
       xferrequest = I2C_NO_STARTSTOP;
     }
@@ -3291,9 +3386,11 @@
       xfermode = hi2c->XferOptions;
     }
 
-    /* If transfer direction not change and there is no request to start another frame, do not generate Restart Condition */
+    /* If transfer direction not change and there is no request to start another frame,
+       do not generate Restart Condition */
     /* Mean Previous state is same as current state */
-    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
+    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \
+        (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
     {
       xferrequest = I2C_NO_STARTSTOP;
     }
@@ -3324,7 +3421,8 @@
         hi2c->hdmatx->XferAbortCallback = NULL;
 
         /* Enable the DMA stream */
-        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);
+        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,
+                                         hi2c->XferSize);
       }
       else
       {
@@ -3383,7 +3481,8 @@
 
       /* Send Slave Address */
       /* Set NBYTES to write and generate START condition */
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_WRITE);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                         I2C_GENERATE_START_WRITE);
 
       /* Process Unlocked */
       __HAL_UNLOCK(hi2c);
@@ -3393,7 +3492,8 @@
                 process unlock */
       /* Enable ERR, TC, STOP, NACK, TXI interrupt */
       /* possible to enable all of these */
-      /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+      /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+        I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
       I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
     }
 
@@ -3453,9 +3553,11 @@
       xfermode = hi2c->XferOptions;
     }
 
-    /* If transfer direction not change and there is no request to start another frame, do not generate Restart Condition */
+    /* If transfer direction not change and there is no request to start another frame,
+       do not generate Restart Condition */
     /* Mean Previous state is same as current state */
-    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
+    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \
+        (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
     {
       xferrequest = I2C_NO_STARTSTOP;
     }
@@ -3539,9 +3641,11 @@
       xfermode = hi2c->XferOptions;
     }
 
-    /* If transfer direction not change and there is no request to start another frame, do not generate Restart Condition */
+    /* If transfer direction not change and there is no request to start another frame,
+       do not generate Restart Condition */
     /* Mean Previous state is same as current state */
-    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
+    if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \
+        (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0))
     {
       xferrequest = I2C_NO_STARTSTOP;
     }
@@ -3572,7 +3676,8 @@
         hi2c->hdmarx->XferAbortCallback = NULL;
 
         /* Enable the DMA stream */
-        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);
+        dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData,
+                                         hi2c->XferSize);
       }
       else
       {
@@ -3631,7 +3736,8 @@
 
       /* Send Slave Address */
       /* Set NBYTES to read and generate START condition */
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_GENERATE_START_READ);
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE,
+                         I2C_GENERATE_START_READ);
 
       /* Process Unlocked */
       __HAL_UNLOCK(hi2c);
@@ -3641,7 +3747,8 @@
                 process unlock */
       /* Enable ERR, TC, STOP, NACK, TXI interrupt */
       /* possible to enable all of these */
-      /* I2C_IT_ERRI | I2C_IT_TCI| I2C_IT_STOPI| I2C_IT_NACKI | I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
+      /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI |
+        I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */
       I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
     }
 
@@ -3862,7 +3969,8 @@
       hi2c->hdmatx->XferAbortCallback = NULL;
 
       /* Enable the DMA stream */
-      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize);
+      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR,
+                                       hi2c->XferSize);
     }
     else
     {
@@ -3912,15 +4020,15 @@
     /* Process Unlocked */
     __HAL_UNLOCK(hi2c);
 
+    /* Enable DMA Request */
+    hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
+
     /* Note : The I2C interrupts must be enabled after unlocking current process
     to avoid the risk of I2C interrupt handle execution before current
     process unlock */
     /* Enable ERR, STOP, NACK, ADDR interrupts */
     I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT);
 
-    /* Enable DMA Request */
-    hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
-
     return HAL_OK;
   }
   else
@@ -4138,7 +4246,8 @@
       hi2c->hdmarx->XferAbortCallback = NULL;
 
       /* Enable the DMA stream */
-      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, hi2c->XferSize);
+      dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR,
+                                       (uint32_t)pData, hi2c->XferSize);
     }
     else
     {
@@ -4188,15 +4297,15 @@
     /* Process Unlocked */
     __HAL_UNLOCK(hi2c);
 
+    /* Enable DMA Request */
+    hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
+
     /* Note : The I2C interrupts must be enabled after unlocking current process
     to avoid the risk of I2C interrupt handle execution before current
     process unlock */
     /* REnable ADDR interrupt */
     I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT);
 
-    /* Enable DMA Request */
-    hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
-
     return HAL_OK;
   }
   else
@@ -4356,7 +4465,8 @@
   uint32_t tmperror;
 
   /* I2C Bus error interrupt occurred ------------------------------------*/
-  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
+  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
   {
     hi2c->ErrorCode |= HAL_I2C_ERROR_BERR;
 
@@ -4365,7 +4475,8 @@
   }
 
   /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/
-  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
+  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
   {
     hi2c->ErrorCode |= HAL_I2C_ERROR_OVR;
 
@@ -4374,7 +4485,8 @@
   }
 
   /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/
-  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
+  if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET))
   {
     hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO;
 
@@ -4628,7 +4740,8 @@
   * @param  ITSources Interrupt sources enabled.
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)
+static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                           uint32_t ITSources)
 {
   uint16_t devaddress;
   uint32_t tmpITFlags = ITFlags;
@@ -4636,7 +4749,8 @@
   /* Process Locked */
   __HAL_LOCK(hi2c);
 
-  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
+  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
   {
     /* Clear NACK Flag */
     __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
@@ -4649,7 +4763,8 @@
     /* Flush TX register */
     I2C_Flush_TXDR(hi2c);
   }
-  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
+  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
   {
     /* Remove RXNE flag on temporary variable as read done */
     tmpITFlags &= ~I2C_FLAG_RXNE;
@@ -4663,7 +4778,8 @@
     hi2c->XferSize--;
     hi2c->XferCount--;
   }
-  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
+  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
   {
     /* Write data to TXDR */
     hi2c->Instance->TXDR = *hi2c->pBuffPtr;
@@ -4674,7 +4790,8 @@
     hi2c->XferSize--;
     hi2c->XferCount--;
   }
-  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
+  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
   {
     if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U))
     {
@@ -4690,11 +4807,13 @@
         hi2c->XferSize = hi2c->XferCount;
         if (hi2c->XferOptions != I2C_NO_OPTION_FRAME)
         {
-          I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, hi2c->XferOptions, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize,
+                             hi2c->XferOptions, I2C_NO_STARTSTOP);
         }
         else
         {
-          I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
+          I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize,
+                             I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
         }
       }
     }
@@ -4714,7 +4833,8 @@
       }
     }
   }
-  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
+  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
   {
     if (hi2c->XferCount == 0U)
     {
@@ -4745,7 +4865,8 @@
     /* Nothing to do */
   }
 
-  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
+  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
   {
     /* Call I2C Master complete process */
     I2C_ITMasterCplt(hi2c, tmpITFlags);
@@ -4765,7 +4886,8 @@
   * @param  ITSources Interrupt sources enabled.
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)
+static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                          uint32_t ITSources)
 {
   uint32_t tmpoptions = hi2c->XferOptions;
   uint32_t tmpITFlags = ITFlags;
@@ -4774,13 +4896,15 @@
   __HAL_LOCK(hi2c);
 
   /* Check if STOPF is set */
-  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
+  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
   {
     /* Call I2C Slave complete process */
     I2C_ITSlaveCplt(hi2c, tmpITFlags);
   }
 
-  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
+  if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
   {
     /* Check that I2C transfer finished */
     /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */
@@ -4788,8 +4912,9 @@
     /* So clear Flag NACKF only */
     if (hi2c->XferCount == 0U)
     {
-      /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */
       if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME))
+        /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for
+           Warning[Pa134]: left and right operands are identical */
       {
         /* Call I2C Listen complete process */
         I2C_ITListenCplt(hi2c, tmpITFlags);
@@ -4828,7 +4953,8 @@
       }
     }
   }
-  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
+  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET))
   {
     if (hi2c->XferCount > 0U)
     {
@@ -4854,7 +4980,8 @@
   {
     I2C_ITAddrCplt(hi2c, tmpITFlags);
   }
-  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
+  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
   {
     /* Write data to TXDR only if XferCount not reach "0" */
     /* A TXIS flag can be set, during STOP treatment      */
@@ -4900,7 +5027,8 @@
   * @param  ITSources Interrupt sources enabled.
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)
+static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                            uint32_t ITSources)
 {
   uint16_t devaddress;
   uint32_t xfermode;
@@ -4908,7 +5036,8 @@
   /* Process Locked */
   __HAL_LOCK(hi2c);
 
-  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
+  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
   {
     /* Clear NACK Flag */
     __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
@@ -4924,7 +5053,8 @@
     /* Flush TX register */
     I2C_Flush_TXDR(hi2c);
   }
-  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
+  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
   {
     /* Disable TC interrupt */
     __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI);
@@ -4985,7 +5115,8 @@
       }
     }
   }
-  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
+  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
   {
     if (hi2c->XferCount == 0U)
     {
@@ -5011,7 +5142,8 @@
       I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
     }
   }
-  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
+  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
   {
     /* Call I2C Master complete process */
     I2C_ITMasterCplt(hi2c, ITFlags);
@@ -5035,7 +5167,8 @@
   * @param  ITSources Interrupt sources enabled.
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources)
+static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                           uint32_t ITSources)
 {
   uint32_t tmpoptions = hi2c->XferOptions;
   uint32_t treatdmanack = 0U;
@@ -5045,13 +5178,15 @@
   __HAL_LOCK(hi2c);
 
   /* Check if STOPF is set */
-  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
+  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
   {
     /* Call I2C Slave complete process */
     I2C_ITSlaveCplt(hi2c, ITFlags);
   }
 
-  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
+  if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \
+      (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
   {
     /* Check that I2C transfer finished */
     /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */
@@ -5065,7 +5200,7 @@
       {
         if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)
         {
-          if (__HAL_DMA_GET_COUNTER(hi2c->hdmarx) == 0U)
+          if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U)
           {
             treatdmanack = 1U;
           }
@@ -5077,7 +5212,7 @@
       {
         if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET)
         {
-          if (__HAL_DMA_GET_COUNTER(hi2c->hdmatx) == 0U)
+          if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U)
           {
             treatdmanack = 1U;
           }
@@ -5086,8 +5221,9 @@
 
       if (treatdmanack == 1U)
       {
-        /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */
         if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME))
+          /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for
+             Warning[Pa134]: left and right operands are identical */
         {
           /* Call I2C Listen complete process */
           I2C_ITListenCplt(hi2c, ITFlags);
@@ -5148,7 +5284,8 @@
       __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
     }
   }
-  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))
+  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET))
   {
     I2C_ITAddrCplt(hi2c, ITFlags);
   }
@@ -5175,8 +5312,9 @@
   * @param  Tickstart Tick start value
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                                uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
+static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
+                                                uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
+                                                uint32_t Tickstart)
 {
   I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE);
 
@@ -5229,8 +5367,9 @@
   * @param  Tickstart Tick start value
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                               uint16_t MemAddSize, uint32_t Timeout, uint32_t Tickstart)
+static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress,
+                                               uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
+                                               uint32_t Tickstart)
 {
   I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE);
 
@@ -5298,7 +5437,7 @@
     /* If 10bits addressing mode is selected */
     if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT)
     {
-      if ((slaveaddrcode & SlaveAddr_MSK) == ((ownadd1code >> SlaveAddr_SHIFT) & SlaveAddr_MSK))
+      if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK))
       {
         slaveaddrcode = ownadd1code;
         hi2c->AddrEventCount++;
@@ -5684,7 +5823,7 @@
 
     if (hi2c->hdmatx != NULL)
     {
-      hi2c->XferCount = (uint16_t)__HAL_DMA_GET_COUNTER(hi2c->hdmatx);
+      hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx);
     }
   }
   else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET)
@@ -5694,7 +5833,7 @@
 
     if (hi2c->hdmarx != NULL)
     {
-      hi2c->XferCount = (uint16_t)__HAL_DMA_GET_COUNTER(hi2c->hdmarx);
+      hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx);
     }
   }
   else
@@ -6025,7 +6164,8 @@
   */
 static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma)
 {
-  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */
+  /* Derogation MISRAC2012-Rule-11.5 */
+  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
 
   /* Disable DMA Request */
   hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN;
@@ -6053,7 +6193,8 @@
     }
 
     /* Enable the DMA stream */
-    if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize) != HAL_OK)
+    if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR,
+                         hi2c->XferSize) != HAL_OK)
     {
       /* Call the corresponding callback to inform upper layer of End of Transfer */
       I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);
@@ -6073,7 +6214,8 @@
   */
 static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma)
 {
-  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */
+  /* Derogation MISRAC2012-Rule-11.5 */
+  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
   uint32_t tmpoptions = hi2c->XferOptions;
 
   if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME))
@@ -6100,7 +6242,8 @@
   */
 static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma)
 {
-  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */
+  /* Derogation MISRAC2012-Rule-11.5 */
+  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
 
   /* Disable DMA Request */
   hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN;
@@ -6128,7 +6271,8 @@
     }
 
     /* Enable the DMA stream */
-    if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, hi2c->XferSize) != HAL_OK)
+    if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr,
+                         hi2c->XferSize) != HAL_OK)
     {
       /* Call the corresponding callback to inform upper layer of End of Transfer */
       I2C_ITError(hi2c, HAL_I2C_ERROR_DMA);
@@ -6148,10 +6292,11 @@
   */
 static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma)
 {
-  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */
+  /* Derogation MISRAC2012-Rule-11.5 */
+  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
   uint32_t tmpoptions = hi2c->XferOptions;
 
-  if ((__HAL_DMA_GET_COUNTER(hi2c->hdmarx) == 0U) && \
+  if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \
       (tmpoptions != I2C_NO_OPTION_FRAME))
   {
     /* Disable DMA Request */
@@ -6176,11 +6321,12 @@
 static void I2C_DMAError(DMA_HandleTypeDef *hdma)
 {
   uint32_t treatdmaerror = 0U;
-  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */
+  /* Derogation MISRAC2012-Rule-11.5 */
+  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
 
   if (hi2c->hdmatx != NULL)
   {
-    if (__HAL_DMA_GET_COUNTER(hi2c->hdmatx) == 0U)
+    if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U)
     {
       treatdmaerror = 1U;
     }
@@ -6188,7 +6334,7 @@
 
   if (hi2c->hdmarx != NULL)
   {
-    if (__HAL_DMA_GET_COUNTER(hi2c->hdmarx) == 0U)
+    if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U)
     {
       treatdmaerror = 1U;
     }
@@ -6213,7 +6359,8 @@
   */
 static void I2C_DMAAbort(DMA_HandleTypeDef *hdma)
 {
-  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); /* Derogation MISRAC2012-Rule-11.5 */
+  /* Derogation MISRAC2012-Rule-11.5 */
+  I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent);
 
   /* Reset AbortCpltCallback */
   if (hi2c->hdmatx != NULL)
@@ -6229,11 +6376,12 @@
 }
 
 /**
-  * @brief  This function handles I2C Communication Timeout.
+  * @brief  This function handles I2C Communication Timeout. It waits
+  *                until a flag is no longer in the specified status.
   * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
   *                the configuration information for the specified I2C.
   * @param  Flag Specifies the I2C flag to check.
-  * @param  Status The new Flag status (SET or RESET).
+  * @param  Status The actual Flag status (SET or RESET).
   * @param  Timeout Timeout duration
   * @param  Tickstart Tick start value
   * @retval HAL status
@@ -6269,12 +6417,13 @@
   * @param  Tickstart Tick start value
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
+static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
+                                                        uint32_t Tickstart)
 {
   while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)
   {
-    /* Check if a NACK is detected */
-    if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK)
+    /* Check if an error is detected */
+    if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)
     {
       return HAL_ERROR;
     }
@@ -6306,12 +6455,13 @@
   * @param  Tickstart Tick start value
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
+static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
+                                                        uint32_t Tickstart)
 {
   while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)
   {
-    /* Check if a NACK is detected */
-    if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK)
+    /* Check if an error is detected */
+    if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)
     {
       return HAL_ERROR;
     }
@@ -6340,12 +6490,13 @@
   * @param  Tickstart Tick start value
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
+static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout,
+                                                        uint32_t Tickstart)
 {
   while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)
   {
-    /* Check if a NACK is detected */
-    if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK)
+    /* Check if an error is detected */
+    if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK)
     {
       return HAL_ERROR;
     }
@@ -6363,13 +6514,22 @@
       }
       else
       {
+        if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET)
+        {
+          __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
+          hi2c->ErrorCode = HAL_I2C_ERROR_AF;
+        }
+        else
+        {
+          hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
+        }
+
         /* Clear STOP Flag */
         __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
 
         /* Clear Configuration Register 2 */
         I2C_RESET_CR2(hi2c);
 
-        hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
         hi2c->State = HAL_I2C_STATE_READY;
         hi2c->Mode = HAL_I2C_MODE_NONE;
 
@@ -6396,60 +6556,136 @@
 }
 
 /**
-  * @brief  This function handles Acknowledge failed detection during an I2C Communication.
+  * @brief  This function handles errors detection during an I2C Communication.
   * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
   *                the configuration information for the specified I2C.
   * @param  Timeout Timeout duration
   * @param  Tickstart Tick start value
   * @retval HAL status
   */
-static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
+static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart)
 {
-  if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET)
+  HAL_StatusTypeDef status = HAL_OK;
+  uint32_t itflag   = hi2c->Instance->ISR;
+  uint32_t error_code = 0;
+  uint32_t tickstart = Tickstart;
+  uint32_t tmp1;
+  HAL_I2C_ModeTypeDef tmp2;
+
+  if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF))
   {
-    /* Wait until STOP Flag is reset */
+    /* Clear NACKF Flag */
+    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
+
+    /* Wait until STOP Flag is set or timeout occurred */
     /* AutoEnd should be initiate after AF */
-    while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)
+    while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK))
     {
       /* Check for the Timeout */
       if (Timeout != HAL_MAX_DELAY)
       {
-        if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
+        if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
         {
-          hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;
-          hi2c->State = HAL_I2C_STATE_READY;
-          hi2c->Mode = HAL_I2C_MODE_NONE;
+          tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP);
+          tmp2 = hi2c->Mode;
 
-          /* Process Unlocked */
-          __HAL_UNLOCK(hi2c);
-
-          return HAL_ERROR;
+          /* In case of I2C still busy, try to regenerate a STOP manually */
+          if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \
+              (tmp1 != I2C_CR2_STOP) && \
+              (tmp2 != HAL_I2C_MODE_SLAVE))
+          {
+            /* Generate Stop */
+            hi2c->Instance->CR2 |= I2C_CR2_STOP;
+            
+            /* Update Tick with new reference */
+            tickstart = HAL_GetTick();
+          }
+          
+          while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)
+          {
+            /* Check for the Timeout */
+            if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF)
+            {
+              hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT;
+              hi2c->State = HAL_I2C_STATE_READY;
+              hi2c->Mode = HAL_I2C_MODE_NONE;
+              
+              /* Process Unlocked */
+              __HAL_UNLOCK(hi2c);
+              
+              status = HAL_ERROR;
+            }
+          }
         }
       }
     }
 
-    /* Clear NACKF Flag */
-    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF);
+    /* In case STOP Flag is detected, clear it */
+    if (status == HAL_OK)
+    {
+      /* Clear STOP Flag */
+      __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
+    }
 
-    /* Clear STOP Flag */
-    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF);
+    error_code |= HAL_I2C_ERROR_AF;
 
+    status = HAL_ERROR;
+  }
+
+  /* Refresh Content of Status register */
+  itflag = hi2c->Instance->ISR;
+
+  /* Then verify if an additional errors occurs */
+  /* Check if a Bus error occurred */
+  if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR))
+  {
+    error_code |= HAL_I2C_ERROR_BERR;
+
+    /* Clear BERR flag */
+    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR);
+
+    status = HAL_ERROR;
+  }
+
+  /* Check if an Over-Run/Under-Run error occurred */
+  if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR))
+  {
+    error_code |= HAL_I2C_ERROR_OVR;
+
+    /* Clear OVR flag */
+    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR);
+
+    status = HAL_ERROR;
+  }
+
+  /* Check if an Arbitration Loss error occurred */
+  if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO))
+  {
+    error_code |= HAL_I2C_ERROR_ARLO;
+
+    /* Clear ARLO flag */
+    __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO);
+
+    status = HAL_ERROR;
+  }
+
+  if (status != HAL_OK)
+  {
     /* Flush TX register */
     I2C_Flush_TXDR(hi2c);
 
     /* Clear Configuration Register 2 */
     I2C_RESET_CR2(hi2c);
 
-    hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
+    hi2c->ErrorCode |= error_code;
     hi2c->State = HAL_I2C_STATE_READY;
     hi2c->Mode = HAL_I2C_MODE_NONE;
 
     /* Process Unlocked */
     __HAL_UNLOCK(hi2c);
-
-    return HAL_ERROR;
   }
-  return HAL_OK;
+
+  return status;
 }
 
 /**
@@ -6479,12 +6715,16 @@
   assert_param(IS_TRANSFER_MODE(Mode));
   assert_param(IS_TRANSFER_REQUEST(Request));
 
+  /* Declaration of tmp to prevent undefined behavior of volatile usage */
+  uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \
+                            (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \
+                              (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U));
+
   /* update CR2 register */
-  MODIFY_REG(hi2c->Instance->CR2,
+  MODIFY_REG(hi2c->Instance->CR2, \
              ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \
-               (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | I2C_CR2_START | I2C_CR2_STOP)), \
-             (uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) |
-                        (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | (uint32_t)Mode | (uint32_t)Request));
+               (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \
+                I2C_CR2_START | I2C_CR2_STOP)), tmp);
 }
 
 /**
@@ -6663,5 +6903,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_i2c_ex.c b/Src/stm32f7xx_hal_i2c_ex.c
index 05c5775..9c8450e 100644
--- a/Src/stm32f7xx_hal_i2c_ex.c
+++ b/Src/stm32f7xx_hal_i2c_ex.c
@@ -5,8 +5,20 @@
   * @brief   I2C Extended HAL module driver.
   *          This file provides firmware functions to manage the following
   *          functionalities of I2C Extended peripheral:
-  *           + Extended features functions
+  *           + Filter Mode Functions
+  *           + FastModePlus Functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                ##### I2C peripheral Extended features  #####
@@ -28,18 +40,6 @@
           (++) HAL_I2CEx_EnableFastModePlus()
           (++) HAL_I2CEx_DisableFastModePlus()
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -67,16 +67,15 @@
   * @{
   */
 
-/** @defgroup I2CEx_Exported_Functions_Group1 Extended features functions
-  * @brief    Extended features functions
+/** @defgroup I2CEx_Exported_Functions_Group1 Filter Mode Functions
+  * @brief    Filter Mode Functions
   *
 @verbatim
  ===============================================================================
-                      ##### Extended features functions #####
+                      ##### Filter Mode Functions #####
  ===============================================================================
     [..] This section provides functions allowing to:
       (+) Configure Noise Filters
-      (+) Configure Fast Mode Plus
 
 @endverbatim
   * @{
@@ -177,8 +176,25 @@
     return HAL_BUSY;
   }
 }
-
+/**
+  * @}
+  */
 #if  (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2C_PB8_FMP) || defined(SYSCFG_PMC_I2C_PB9_FMP)) || (defined(SYSCFG_PMC_I2C1_FMP)) || (defined(SYSCFG_PMC_I2C2_FMP)) || defined(SYSCFG_PMC_I2C3_FMP) || defined(SYSCFG_PMC_I2C4_FMP)
+
+/** @defgroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions
+  * @brief    Fast Mode Plus Functions
+  *
+@verbatim
+ ===============================================================================
+                      ##### Fast Mode Plus Functions #####
+ ===============================================================================
+    [..] This section provides functions allowing to:
+      (+) Configure Fast Mode Plus
+
+@endverbatim
+  * @{
+  */
+
 /**
   * @brief Enable the I2C fast mode plus driving capability.
   * @param ConfigFastModePlus Selects the pin.
@@ -236,12 +252,10 @@
   /* Disable fast mode plus driving capability for selected pin */
   CLEAR_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus);
 }
-
-#endif
 /**
   * @}
   */
-
+#endif /* Fast Mode Plus Availability */
 /**
   * @}
   */
@@ -254,5 +268,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_i2s.c b/Src/stm32f7xx_hal_i2s.c
index a116d92..621563f 100644
--- a/Src/stm32f7xx_hal_i2s.c
+++ b/Src/stm32f7xx_hal_i2s.c
@@ -8,6 +8,17 @@
   *           + Initialization and de-initialization functions
   *           + IO operation functions
   *           + Peripheral State and Errors functions
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                   ##### How to use this driver #####
@@ -167,18 +178,7 @@
        and weak (surcharged) callbacks are used.
 
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
+
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -1922,4 +1922,3 @@
 
 #endif /* HAL_I2S_MODULE_ENABLED */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_irda.c b/Src/stm32f7xx_hal_irda.c
index 8fcc80a..d2ccd16 100644
--- a/Src/stm32f7xx_hal_irda.c
+++ b/Src/stm32f7xx_hal_irda.c
@@ -11,6 +11,17 @@
   *           + Peripheral State and Errors functions
   *           + Peripheral Control functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -114,8 +125,8 @@
     allows the user to configure dynamically the driver callbacks.
 
     [..]
-    Use Function @ref HAL_IRDA_RegisterCallback() to register a user callback.
-    Function @ref HAL_IRDA_RegisterCallback() allows to register following callbacks:
+    Use Function HAL_IRDA_RegisterCallback() to register a user callback.
+    Function HAL_IRDA_RegisterCallback() allows to register following callbacks:
     (+) TxHalfCpltCallback        : Tx Half Complete Callback.
     (+) TxCpltCallback            : Tx Complete Callback.
     (+) RxHalfCpltCallback        : Rx Half Complete Callback.
@@ -130,9 +141,9 @@
     and a pointer to the user callback function.
 
     [..]
-    Use function @ref HAL_IRDA_UnRegisterCallback() to reset a callback to the default
+    Use function HAL_IRDA_UnRegisterCallback() to reset a callback to the default
     weak (surcharged) function.
-    @ref HAL_IRDA_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+    HAL_IRDA_UnRegisterCallback() takes as parameters the HAL peripheral handle,
     and the Callback ID.
     This function allows to reset following callbacks:
     (+) TxHalfCpltCallback        : Tx Half Complete Callback.
@@ -147,13 +158,13 @@
     (+) MspDeInitCallback         : IRDA MspDeInit.
 
     [..]
-    By default, after the @ref HAL_IRDA_Init() and when the state is HAL_IRDA_STATE_RESET
+    By default, after the HAL_IRDA_Init() and when the state is HAL_IRDA_STATE_RESET
     all callbacks are set to the corresponding weak (surcharged) functions:
-    examples @ref HAL_IRDA_TxCpltCallback(), @ref HAL_IRDA_RxHalfCpltCallback().
+    examples HAL_IRDA_TxCpltCallback(), HAL_IRDA_RxHalfCpltCallback().
     Exception done for MspInit and MspDeInit functions that are respectively
-    reset to the legacy weak (surcharged) functions in the @ref HAL_IRDA_Init()
-    and @ref HAL_IRDA_DeInit() only when these callbacks are null (not registered beforehand).
-    If not, MspInit or MspDeInit are not null, the @ref HAL_IRDA_Init() and @ref HAL_IRDA_DeInit()
+    reset to the legacy weak (surcharged) functions in the HAL_IRDA_Init()
+    and HAL_IRDA_DeInit() only when these callbacks are null (not registered beforehand).
+    If not, MspInit or MspDeInit are not null, the HAL_IRDA_Init() and HAL_IRDA_DeInit()
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
 
     [..]
@@ -162,8 +173,8 @@
     in HAL_IRDA_STATE_READY or HAL_IRDA_STATE_RESET state, thus registered (user)
     MspInit/DeInit callbacks can be used during the Init/DeInit.
     In that case first register the MspInit/MspDeInit user callbacks
-    using @ref HAL_IRDA_RegisterCallback() before calling @ref HAL_IRDA_DeInit()
-    or @ref HAL_IRDA_Init() function.
+    using HAL_IRDA_RegisterCallback() before calling HAL_IRDA_DeInit()
+    or HAL_IRDA_Init() function.
 
     [..]
     When The compilation define USE_HAL_IRDA_REGISTER_CALLBACKS is set to 0 or
@@ -172,17 +183,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -799,10 +799,10 @@
   * @param Timeout Specify timeout value.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32_t Timeout)
+HAL_StatusTypeDef HAL_IRDA_Transmit(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
 {
-  uint8_t  *pdata8bits;
-  uint16_t *pdata16bits;
+  const uint8_t  *pdata8bits;
+  const uint16_t *pdata16bits;
   uint32_t tickstart;
 
   /* Check that a Tx process is not already ongoing */
@@ -829,7 +829,7 @@
     if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE))
     {
       pdata8bits  = NULL;
-      pdata16bits = (uint16_t *) pData; /* Derogation R.11.3 */
+      pdata16bits = (const uint16_t *) pData; /* Derogation R.11.3 */
     }
     else
     {
@@ -978,7 +978,7 @@
   * @param Size Amount of data elements (u8 or u16) to be sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size)
+HAL_StatusTypeDef HAL_IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size)
 {
   /* Check that a Tx process is not already ongoing */
   if (hirda->gState == HAL_IRDA_STATE_READY)
@@ -1050,8 +1050,16 @@
     /* Process Unlocked */
     __HAL_UNLOCK(hirda);
 
-    /* Enable the IRDA Parity Error and Data Register not empty Interrupts */
-    SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
+    if (hirda->Init.Parity != IRDA_PARITY_NONE)
+    { 
+      /* Enable the IRDA Parity Error and Data Register not empty Interrupts */  
+      SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
+    }
+    else
+    {
+     /* Enable the IRDA Data Register not empty Interrupts */ 
+     SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE); 
+    }
 
     /* Enable the IRDA Error Interrupt: (Frame error, noise error, overrun error) */
     SET_BIT(hirda->Instance->CR3, USART_CR3_EIE);
@@ -1075,7 +1083,7 @@
   * @param Size Amount of data elements (u8 or u16) to be sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size)
+HAL_StatusTypeDef HAL_IRDA_Transmit_DMA(IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size)
 {
   /* Check that a Tx process is not already ongoing */
   if (hirda->gState == HAL_IRDA_STATE_READY)
@@ -1192,8 +1200,11 @@
       /* Process Unlocked */
       __HAL_UNLOCK(hirda);
 
-      /* Enable the UART Parity Error Interrupt */
-      SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE);
+      if (hirda->Init.Parity != IRDA_PARITY_NONE)
+      {
+        /* Enable the UART Parity Error Interrupt */
+        SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE);
+      }
 
       /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
       SET_BIT(hirda->Instance->CR3, USART_CR3_EIE);
@@ -1285,7 +1296,10 @@
     __HAL_IRDA_CLEAR_OREFLAG(hirda);
 
     /* Re-enable PE and ERR (Frame error, noise error, overrun error) interrupts */
-    SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE);
+    if (hirda->Init.Parity != IRDA_PARITY_NONE)
+    {    
+      SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE);
+    }
     SET_BIT(hirda->Instance->CR3, USART_CR3_EIE);
 
     /* Enable the IRDA DMA Rx request */
@@ -2273,21 +2287,21 @@
   {
     case IRDA_CLOCKSOURCE_PCLK1:
       pclk = HAL_RCC_GetPCLK1Freq();
-      tmpreg = (uint16_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate));
+      tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate));
       break;
     case IRDA_CLOCKSOURCE_PCLK2:
       pclk = HAL_RCC_GetPCLK2Freq();
-      tmpreg = (uint16_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate));
+      tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate));
       break;
     case IRDA_CLOCKSOURCE_HSI:
-      tmpreg = (uint16_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate));
+      tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(HSI_VALUE, hirda->Init.BaudRate));
       break;
     case IRDA_CLOCKSOURCE_SYSCLK:
       pclk = HAL_RCC_GetSysClockFreq();
-      tmpreg = (uint16_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate));
+      tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16(pclk, hirda->Init.BaudRate));
       break;
     case IRDA_CLOCKSOURCE_LSE:
-      tmpreg = (uint16_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate));
+      tmpreg = (uint32_t)(IRDA_DIV_SAMPLING16((uint32_t)LSE_VALUE, hirda->Init.BaudRate));
       break;
     default:
       ret = HAL_ERROR;
@@ -2297,7 +2311,7 @@
   /* USARTDIV must be greater than or equal to 0d16 */
   if ((tmpreg >= USART_BRR_MIN) && (tmpreg <= USART_BRR_MAX))
   {
-    hirda->Instance->BRR = tmpreg;
+    hirda->Instance->BRR = (uint16_t)tmpreg;
   }
   else
   {
@@ -2345,11 +2359,12 @@
 }
 
 /**
-  * @brief  Handle IRDA Communication Timeout.
+  * @brief  Handle IRDA Communication Timeout. It waits
+  *         until a flag is no longer in the specified status.
   * @param  hirda Pointer to a IRDA_HandleTypeDef structure that contains
   *               the configuration information for the specified IRDA module.
   * @param  Flag Specifies the IRDA flag to check.
-  * @param  Status Flag status (SET or RESET)
+  * @param  Status The actual Flag status (SET or RESET)
   * @param  Tickstart Tick start value
   * @param  Timeout Timeout duration
   * @retval HAL status
@@ -2750,7 +2765,7 @@
   */
 static void IRDA_Transmit_IT(IRDA_HandleTypeDef *hirda)
 {
-  uint16_t *tmp;
+  const uint16_t *tmp;
 
   /* Check that a Tx process is ongoing */
   if (hirda->gState == HAL_IRDA_STATE_BUSY_TX)
@@ -2767,7 +2782,7 @@
     {
       if ((hirda->Init.WordLength == IRDA_WORDLENGTH_9B) && (hirda->Init.Parity == IRDA_PARITY_NONE))
       {
-        tmp = (uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */
+        tmp = (const uint16_t *) hirda->pTxBuffPtr; /* Derogation R.11.3 */
         hirda->Instance->TDR = (uint16_t)(*tmp & 0x01FFU);
         hirda->pTxBuffPtr += 2U;
       }
@@ -2875,4 +2890,4 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Src/stm32f7xx_hal_iwdg.c b/Src/stm32f7xx_hal_iwdg.c
index 49c4e51..c7b8064 100644
--- a/Src/stm32f7xx_hal_iwdg.c
+++ b/Src/stm32f7xx_hal_iwdg.c
@@ -8,6 +8,17 @@
   *           + Initialization and Start functions
   *           + IO operation functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### IWDG Generic features #####
@@ -86,18 +97,6 @@
           the reload register
 
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -121,11 +120,13 @@
 /* Status register needs up to 5 LSI clock periods divided by the clock
    prescaler to be updated. The number of LSI clock periods is upper-rounded to
    6 for the timeout value calculation.
-   The timeout value is also calculated using the highest prescaler (256) and
+   The timeout value is calculated using the highest prescaler (256) and
    the LSI_VALUE constant. The value of this constant can be changed by the user
    to take into account possible LSI clock period variations.
-   The timeout value is multiplied by 1000 to be converted in milliseconds. */
-#define HAL_IWDG_DEFAULT_TIMEOUT        ((6UL * 256UL * 1000UL) / LSI_VALUE)
+   The timeout value is multiplied by 1000 to be converted in milliseconds.
+   LSI startup time is also considered here by adding LSI_STARTUP_TIME
+   converted in milliseconds. */
+#define HAL_IWDG_DEFAULT_TIMEOUT        (((6UL * 256UL * 1000UL) / LSI_VALUE) + ((LSI_STARTUP_TIME / 1000UL) + 1UL))
 #define IWDG_KERNEL_UPDATE_FLAGS        (IWDG_SR_WVU | IWDG_SR_RVU | IWDG_SR_PVU)
 /**
   * @}
@@ -279,5 +280,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_jpeg.c b/Src/stm32f7xx_hal_jpeg.c
index ab3b542..01f7bb8 100644
--- a/Src/stm32f7xx_hal_jpeg.c
+++ b/Src/stm32f7xx_hal_jpeg.c
@@ -16,6 +16,17 @@
   *           + IRQ handler management
   *           + Peripheral State and Error functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
@@ -203,17 +214,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -4164,4 +4164,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_lptim.c b/Src/stm32f7xx_hal_lptim.c
index a29e1ec..820320b 100644
--- a/Src/stm32f7xx_hal_lptim.c
+++ b/Src/stm32f7xx_hal_lptim.c
@@ -11,6 +11,17 @@
   *           + Reading operation functions.
   *           + Peripheral State functions.
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
@@ -93,13 +104,13 @@
   The compilation define  USE_HAL_LPTIM_REGISTER_CALLBACKS when set to 1
   allows the user to configure dynamically the driver callbacks.
   [..]
-  Use Function @ref HAL_LPTIM_RegisterCallback() to register a callback.
-  @ref HAL_LPTIM_RegisterCallback() takes as parameters the HAL peripheral handle,
+  Use Function HAL_LPTIM_RegisterCallback() to register a callback.
+  HAL_LPTIM_RegisterCallback() takes as parameters the HAL peripheral handle,
   the Callback ID and a pointer to the user callback function.
   [..]
-  Use function @ref HAL_LPTIM_UnRegisterCallback() to reset a callback to the
+  Use function HAL_LPTIM_UnRegisterCallback() to reset a callback to the
   default weak function.
-  @ref HAL_LPTIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
+  HAL_LPTIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
   and the Callback ID.
   [..]
   These functions allow to register/unregister following callbacks:
@@ -117,7 +128,7 @@
   [..]
   By default, after the Init and when the state is HAL_LPTIM_STATE_RESET
   all interrupt callbacks are set to the corresponding weak functions:
-  examples @ref HAL_LPTIM_TriggerCallback(), @ref HAL_LPTIM_CompareMatchCallback().
+  examples HAL_LPTIM_TriggerCallback(), HAL_LPTIM_CompareMatchCallback().
 
   [..]
   Exception done for MspInit and MspDeInit functions that are reset to the legacy weak
@@ -131,7 +142,7 @@
   in HAL_LPTIM_STATE_READY or HAL_LPTIM_STATE_RESET state,
   thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
   In that case first register the MspInit/MspDeInit user callbacks
-  using @ref HAL_LPTIM_RegisterCallback() before calling DeInit or Init function.
+  using HAL_LPTIM_RegisterCallback() before calling DeInit or Init function.
 
   [..]
   When The compilation define USE_HAL_LPTIM_REGISTER_CALLBACKS is set to 0 or
@@ -140,17 +151,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -232,8 +232,8 @@
 
   assert_param(IS_LPTIM_CLOCK_SOURCE(hlptim->Init.Clock.Source));
   assert_param(IS_LPTIM_CLOCK_PRESCALER(hlptim->Init.Clock.Prescaler));
-  if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM) 
-   || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
+  if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM)
+      || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
   {
     assert_param(IS_LPTIM_CLOCK_POLARITY(hlptim->Init.UltraLowPowerClock.Polarity));
     assert_param(IS_LPTIM_CLOCK_SAMPLE_TIME(hlptim->Init.UltraLowPowerClock.SampleTime));
@@ -276,8 +276,8 @@
   /* Get the LPTIMx CFGR value */
   tmpcfgr = hlptim->Instance->CFGR;
 
-  if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM) 
-   || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
+  if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM)
+      || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
   {
     tmpcfgr &= (uint32_t)(~(LPTIM_CFGR_CKPOL | LPTIM_CFGR_CKFLT));
   }
@@ -307,8 +307,8 @@
   }
 
   /* Configure LPTIM external clock polarity and digital filter */
-  if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM) 
-   || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
+  if ((hlptim->Init.Clock.Source == LPTIM_CLOCKSOURCE_ULPTIM)
+      || (hlptim->Init.CounterSource == LPTIM_COUNTERSOURCE_EXTERNAL))
   {
     tmpcfgr |= (hlptim->Init.UltraLowPowerClock.Polarity |
                 hlptim->Init.UltraLowPowerClock.SampleTime);
@@ -520,7 +520,7 @@
     return HAL_TIMEOUT;
   }
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state*/
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -656,7 +656,7 @@
     __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
   }
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state*/
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -743,7 +743,7 @@
     return HAL_TIMEOUT;
   }
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state*/
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -879,7 +879,7 @@
     __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
   }
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state*/
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -966,7 +966,7 @@
     return HAL_TIMEOUT;
   }
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state*/
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1102,7 +1102,7 @@
     __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
   }
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state*/
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -2173,39 +2173,48 @@
     switch (CallbackID)
     {
       case HAL_LPTIM_MSPINIT_CB_ID :
-        hlptim->MspInitCallback = HAL_LPTIM_MspInit;                          /* Legacy weak MspInit Callback */
+        /* Legacy weak MspInit Callback */
+        hlptim->MspInitCallback = HAL_LPTIM_MspInit;
         break;
 
       case HAL_LPTIM_MSPDEINIT_CB_ID :
-        hlptim->MspDeInitCallback = HAL_LPTIM_MspDeInit;                       /* Legacy weak Msp DeInit Callback */
+        /* Legacy weak Msp DeInit Callback */
+        hlptim->MspDeInitCallback = HAL_LPTIM_MspDeInit;
         break;
 
       case HAL_LPTIM_COMPARE_MATCH_CB_ID :
-        hlptim->CompareMatchCallback = HAL_LPTIM_CompareMatchCallback;         /* Legacy weak Compare match Callback */
+        /* Legacy weak Compare match Callback */
+        hlptim->CompareMatchCallback = HAL_LPTIM_CompareMatchCallback;
         break;
 
       case HAL_LPTIM_AUTORELOAD_MATCH_CB_ID :
-        hlptim->AutoReloadMatchCallback = HAL_LPTIM_AutoReloadMatchCallback;   /* Legacy weak Auto-reload match Callback */
+        /* Legacy weak Auto-reload match Callback */
+        hlptim->AutoReloadMatchCallback = HAL_LPTIM_AutoReloadMatchCallback;
         break;
 
       case HAL_LPTIM_TRIGGER_CB_ID :
-        hlptim->TriggerCallback = HAL_LPTIM_TriggerCallback;                   /* Legacy weak External trigger event detection Callback */
+        /* Legacy weak External trigger event detection Callback */
+        hlptim->TriggerCallback = HAL_LPTIM_TriggerCallback;
         break;
 
       case HAL_LPTIM_COMPARE_WRITE_CB_ID :
-        hlptim->CompareWriteCallback = HAL_LPTIM_CompareWriteCallback;         /* Legacy weak Compare register write complete Callback */
+        /* Legacy weak Compare register write complete Callback */
+        hlptim->CompareWriteCallback = HAL_LPTIM_CompareWriteCallback;
         break;
 
       case HAL_LPTIM_AUTORELOAD_WRITE_CB_ID :
-        hlptim->AutoReloadWriteCallback = HAL_LPTIM_AutoReloadWriteCallback;   /* Legacy weak Auto-reload register write complete Callback */
+        /* Legacy weak Auto-reload register write complete Callback */
+        hlptim->AutoReloadWriteCallback = HAL_LPTIM_AutoReloadWriteCallback;
         break;
 
       case HAL_LPTIM_DIRECTION_UP_CB_ID :
-        hlptim->DirectionUpCallback = HAL_LPTIM_DirectionUpCallback;           /* Legacy weak Up-counting direction change Callback */
+        /* Legacy weak Up-counting direction change Callback */
+        hlptim->DirectionUpCallback = HAL_LPTIM_DirectionUpCallback;
         break;
 
       case HAL_LPTIM_DIRECTION_DOWN_CB_ID :
-        hlptim->DirectionDownCallback = HAL_LPTIM_DirectionDownCallback;       /* Legacy weak Down-counting direction change Callback */
+        /* Legacy weak Down-counting direction change Callback */
+        hlptim->DirectionDownCallback = HAL_LPTIM_DirectionDownCallback;
         break;
 
       default :
@@ -2219,11 +2228,13 @@
     switch (CallbackID)
     {
       case HAL_LPTIM_MSPINIT_CB_ID :
-        hlptim->MspInitCallback = HAL_LPTIM_MspInit;                           /* Legacy weak MspInit Callback */
+        /* Legacy weak MspInit Callback */
+        hlptim->MspInitCallback = HAL_LPTIM_MspInit;
         break;
 
       case HAL_LPTIM_MSPDEINIT_CB_ID :
-        hlptim->MspDeInitCallback = HAL_LPTIM_MspDeInit;                        /* Legacy weak Msp DeInit Callback */
+        /* Legacy weak Msp DeInit Callback */
+        hlptim->MspDeInitCallback = HAL_LPTIM_MspDeInit;
         break;
 
       default :
@@ -2298,13 +2309,13 @@
 static void LPTIM_ResetCallback(LPTIM_HandleTypeDef *lptim)
 {
   /* Reset the LPTIM callback to the legacy weak callbacks */
-  lptim->CompareMatchCallback    = HAL_LPTIM_CompareMatchCallback;    /* Compare match Callback                       */
-  lptim->AutoReloadMatchCallback = HAL_LPTIM_AutoReloadMatchCallback; /* Auto-reload match Callback                   */
-  lptim->TriggerCallback         = HAL_LPTIM_TriggerCallback;         /* External trigger event detection Callback    */
-  lptim->CompareWriteCallback    = HAL_LPTIM_CompareWriteCallback;    /* Compare register write complete Callback     */
-  lptim->AutoReloadWriteCallback = HAL_LPTIM_AutoReloadWriteCallback; /* Auto-reload register write complete Callback */
-  lptim->DirectionUpCallback     = HAL_LPTIM_DirectionUpCallback;     /* Up-counting direction change Callback        */
-  lptim->DirectionDownCallback   = HAL_LPTIM_DirectionDownCallback;   /* Down-counting direction change Callback      */
+  lptim->CompareMatchCallback    = HAL_LPTIM_CompareMatchCallback;
+  lptim->AutoReloadMatchCallback = HAL_LPTIM_AutoReloadMatchCallback;
+  lptim->TriggerCallback         = HAL_LPTIM_TriggerCallback;
+  lptim->CompareWriteCallback    = HAL_LPTIM_CompareWriteCallback;
+  lptim->AutoReloadWriteCallback = HAL_LPTIM_AutoReloadWriteCallback;
+  lptim->DirectionUpCallback     = HAL_LPTIM_DirectionUpCallback;
+  lptim->DirectionDownCallback   = HAL_LPTIM_DirectionDownCallback;
 }
 #endif /* USE_HAL_LPTIM_REGISTER_CALLBACKS */
 
@@ -2347,8 +2358,11 @@
   uint32_t tmpCFGR;
   uint32_t tmpCMP;
   uint32_t tmpARR;
+  uint32_t primask_bit;
 
-  __disable_irq();
+  /* Enter critical section */
+  primask_bit = __get_PRIMASK();
+  __set_PRIMASK(1) ;
 
   /*********** Save LPTIM Config ***********/
   /* Save LPTIM source clock */
@@ -2436,7 +2450,8 @@
   hlptim->Instance->IER = tmpIER;
   hlptim->Instance->CFGR = tmpCFGR;
 
-  __enable_irq();
+  /* Exit critical section: restore previous priority mask */
+  __set_PRIMASK(primask_bit);
 }
 /**
   * @}
@@ -2451,5 +2466,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_ltdc.c b/Src/stm32f7xx_hal_ltdc.c
index 50671bf..7a0f9be 100644
--- a/Src/stm32f7xx_hal_ltdc.c
+++ b/Src/stm32f7xx_hal_ltdc.c
@@ -10,16 +10,39 @@
   *           + Peripheral Control functions
   *           + Peripheral State and Errors functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
   ==============================================================================
-    [..]
-     (#) Program the required configuration through the following parameters:
-         the LTDC timing, the horizontal and vertical polarity,
-         the pixel clock polarity, Data Enable polarity and the LTDC background color value
-         using HAL_LTDC_Init() function
+     [..]
+     The LTDC HAL driver can be used as follows:
 
+     (#) Declare a LTDC_HandleTypeDef handle structure, for example: LTDC_HandleTypeDef  hltdc;
+
+     (#) Initialize the LTDC low level resources by implementing the HAL_LTDC_MspInit() API:
+         (##) Enable the LTDC interface clock
+         (##) NVIC configuration if you need to use interrupt process
+             (+++) Configure the LTDC interrupt priority
+             (+++) Enable the NVIC LTDC IRQ Channel
+
+     (#) Initialize the required configuration through the following parameters:
+         the LTDC timing, the horizontal and vertical polarity, the pixel clock polarity,
+         Data Enable polarity and the LTDC background color value using HAL_LTDC_Init() function
+
+     *** Configuration ***
+     =========================
+     [..]
      (#) Program the required configuration through the following parameters:
          the pixel format, the blending factors, input alpha value, the window size
          and the image size using HAL_LTDC_ConfigLayer() function for foreground
@@ -73,82 +96,80 @@
       (+) __HAL_LTDC_DISABLE_IT: Disable the specified LTDC interrupts.
       (+) __HAL_LTDC_GET_IT_SOURCE: Check whether the specified LTDC interrupt has occurred or not.
 
-
-  *** Callback registration ***
-  =============================================
-
-  The compilation define  USE_HAL_LTDC_REGISTER_CALLBACKS when set to 1
-  allows the user to configure dynamically the driver callbacks.
-  Use Function @ref HAL_LTDC_RegisterCallback() to register a callback.
-
-  Function @ref HAL_LTDC_RegisterCallback() allows to register following callbacks:
-    (+) LineEventCallback   : LTDC Line Event Callback.
-    (+) ReloadEventCallback : LTDC Reload Event Callback.
-    (+) ErrorCallback       : LTDC Error Callback
-    (+) MspInitCallback     : LTDC MspInit.
-    (+) MspDeInitCallback   : LTDC MspDeInit.
-  This function takes as parameters the HAL peripheral handle, the Callback ID
-  and a pointer to the user callback function.
-
-  Use function @ref HAL_LTDC_UnRegisterCallback() to reset a callback to the default
-  weak function.
-  @ref HAL_LTDC_UnRegisterCallback takes as parameters the HAL peripheral handle,
-  and the Callback ID.
-  This function allows to reset following callbacks:
-    (+) LineEventCallback   : LTDC Line Event Callback.
-    (+) ReloadEventCallback : LTDC Reload Event Callback.
-    (+) ErrorCallback       : LTDC Error Callback
-    (+) MspInitCallback     : LTDC MspInit.
-    (+) MspDeInitCallback   : LTDC MspDeInit.
-
-  By default, after the HAL_LTDC_Init and when the state is HAL_LTDC_STATE_RESET
-  all callbacks are set to the corresponding weak functions:
-  examples @ref HAL_LTDC_LineEventCallback(), @ref HAL_LTDC_ErrorCallback().
-  Exception done for MspInit and MspDeInit functions that are
-  reset to the legacy weak function in the HAL_LTDC_Init/ @ref HAL_LTDC_DeInit only when
-  these callbacks are null (not registered beforehand).
-  if not, MspInit or MspDeInit are not null, the @ref HAL_LTDC_Init/ @ref HAL_LTDC_DeInit
-  keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
-
-  Callbacks can be registered/unregistered in HAL_LTDC_STATE_READY state only.
-  Exception done MspInit/MspDeInit that can be registered/unregistered
-  in HAL_LTDC_STATE_READY or HAL_LTDC_STATE_RESET state,
-  thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
-  In that case first register the MspInit/MspDeInit user callbacks
-  using @ref HAL_LTDC_RegisterCallback() before calling @ref HAL_LTDC_DeInit
-  or HAL_LTDC_Init function.
-
-  When The compilation define USE_HAL_LTDC_REGISTER_CALLBACKS is set to 0 or
-  not defined, the callback registration feature is not available and all callbacks
-  are set to the corresponding weak functions.
-
      [..]
        (@) You can refer to the LTDC HAL driver header file for more useful macros
 
+
+     *** Callback registration ***
+     =============================================
+     [..]
+     The compilation define  USE_HAL_LTDC_REGISTER_CALLBACKS when set to 1
+     allows the user to configure dynamically the driver callbacks.
+     Use function HAL_LTDC_RegisterCallback() to register a callback.
+
+    [..]
+    Function HAL_LTDC_RegisterCallback() allows to register following callbacks:
+      (+) LineEventCallback   : LTDC Line Event Callback.
+      (+) ReloadEventCallback : LTDC Reload Event Callback.
+      (+) ErrorCallback       : LTDC Error Callback
+      (+) MspInitCallback     : LTDC MspInit.
+      (+) MspDeInitCallback   : LTDC MspDeInit.
+    [..]
+    This function takes as parameters the HAL peripheral handle, the callback ID
+    and a pointer to the user callback function.
+
+    [..]
+    Use function HAL_LTDC_UnRegisterCallback() to reset a callback to the default
+    weak function.
+    HAL_LTDC_UnRegisterCallback() takes as parameters the HAL peripheral handle
+    and the callback ID.
+    [..]
+    This function allows to reset following callbacks:
+      (+) LineEventCallback   : LTDC Line Event Callback
+      (+) ReloadEventCallback : LTDC Reload Event Callback
+      (+) ErrorCallback       : LTDC Error Callback
+      (+) MspInitCallback     : LTDC MspInit
+      (+) MspDeInitCallback   : LTDC MspDeInit.
+
+    [..]
+    By default, after the HAL_LTDC_Init and when the state is HAL_LTDC_STATE_RESET
+    all callbacks are set to the corresponding weak functions:
+    examples HAL_LTDC_LineEventCallback(), HAL_LTDC_ErrorCallback().
+    Exception done for MspInit and MspDeInit functions that are
+    reset to the legacy weak (surcharged) functions in the HAL_LTDC_Init() and HAL_LTDC_DeInit()
+    only when these callbacks are null (not registered beforehand).
+    If not, MspInit or MspDeInit are not null, the HAL_LTDC_Init() and HAL_LTDC_DeInit()
+    keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
+
+    [..]
+    Callbacks can be registered/unregistered in HAL_LTDC_STATE_READY state only.
+    Exception done MspInit/MspDeInit that can be registered/unregistered
+    in HAL_LTDC_STATE_READY or HAL_LTDC_STATE_RESET state,
+    thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
+    In that case first register the MspInit/MspDeInit user callbacks
+    using HAL_LTDC_RegisterCallback() before calling HAL_LTDC_DeInit()
+    or HAL_LTDC_Init() function.
+
+    [..]
+    When the compilation define USE_HAL_LTDC_REGISTER_CALLBACKS is set to 0 or
+    not defined, the callback registration feature is not available and all callbacks
+    are set to the corresponding weak functions.
+
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
 
-#ifdef HAL_LTDC_MODULE_ENABLED
-#if defined (LTDC)
 /** @addtogroup STM32F7xx_HAL_Driver
   * @{
   */
 
+#ifdef HAL_LTDC_MODULE_ENABLED
+
+#if defined (LTDC)
+
 /** @defgroup LTDC LTDC
   * @brief LTDC HAL module driver
   * @{
@@ -2131,12 +2152,10 @@
   * @}
   */
 
+#endif /* LTDC */
+
+#endif /* HAL_LTDC_MODULE_ENABLED */
 
 /**
   * @}
   */
-
-#endif /* LTDC */
-#endif /* HAL_LTDC_MODULE_ENABLED */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_ltdc_ex.c b/Src/stm32f7xx_hal_ltdc_ex.c
index 79c6a24..905b2a5 100644
--- a/Src/stm32f7xx_hal_ltdc_ex.c
+++ b/Src/stm32f7xx_hal_ltdc_ex.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -24,6 +23,8 @@
   * @{
   */
 
+#if defined(HAL_LTDC_MODULE_ENABLED) && defined(HAL_DSI_MODULE_ENABLED)
+
 #if defined (LTDC) && defined (DSI)
 
 /** @defgroup LTDCEx LTDCEx
@@ -31,8 +32,6 @@
   * @{
   */
 
-#if defined(HAL_LTDC_MODULE_ENABLED) && defined(HAL_DSI_MODULE_ENABLED)
-
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
 /* Private macro -------------------------------------------------------------*/
@@ -134,16 +133,14 @@
   * @}
   */
 
-#endif /* HAL_LTCD_MODULE_ENABLED && HAL_DSI_MODULE_ENABLED */
-
 /**
   * @}
   */
 
 #endif /* LTDC && DSI */
 
+#endif /* HAL_LTCD_MODULE_ENABLED && HAL_DSI_MODULE_ENABLED */
+
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_mdios.c b/Src/stm32f7xx_hal_mdios.c
index b2caab0..685ac9e 100644
--- a/Src/stm32f7xx_hal_mdios.c
+++ b/Src/stm32f7xx_hal_mdios.c
@@ -8,7 +8,18 @@
   *           + Initialization and de-initialization functions
   *           + IO operation functions
   *           + Peripheral Control functions
-  *           
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim       
  ===============================================================================
                         ##### How to use this driver #####
@@ -112,17 +123,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -896,4 +896,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_mmc.c b/Src/stm32f7xx_hal_mmc.c
index 57058f1..e7c0074 100644
--- a/Src/stm32f7xx_hal_mmc.c
+++ b/Src/stm32f7xx_hal_mmc.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + MMC card Control functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -195,7 +206,7 @@
     The compilation define USE_HAL_MMC_REGISTER_CALLBACKS when set to 1
     allows the user to configure dynamically the driver callbacks.
 
-    Use Functions @ref HAL_MMC_RegisterCallback() to register a user callback,
+    Use Functions HAL_MMC_RegisterCallback() to register a user callback,
     it allows to register following callbacks:
       (+) TxCpltCallback : callback when a transmission transfer is completed.
       (+) RxCpltCallback : callback when a reception transfer is completed.
@@ -206,7 +217,7 @@
     This function takes as parameters the HAL peripheral handle, the Callback ID
     and a pointer to the user callback function.
 
-    Use function @ref HAL_MMC_UnRegisterCallback() to reset a callback to the default
+    Use function HAL_MMC_UnRegisterCallback() to reset a callback to the default
     weak (surcharged) function. It allows to reset following callbacks:
       (+) TxCpltCallback : callback when a transmission transfer is completed.
       (+) RxCpltCallback : callback when a reception transfer is completed.
@@ -216,12 +227,12 @@
       (+) MspDeInitCallback  : MMC MspDeInit.
     This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
-    By default, after the @ref HAL_MMC_Init and if the state is HAL_MMC_STATE_RESET
+    By default, after the HAL_MMC_Init and if the state is HAL_MMC_STATE_RESET
     all callbacks are reset to the corresponding legacy weak (surcharged) functions.
     Exception done for MspInit and MspDeInit callbacks that are respectively
-    reset to the legacy weak (surcharged) functions in the @ref HAL_MMC_Init
-    and @ref  HAL_MMC_DeInit only when these callbacks are null (not registered beforehand).
-    If not, MspInit or MspDeInit are not null, the @ref HAL_MMC_Init and @ref HAL_MMC_DeInit
+    reset to the legacy weak (surcharged) functions in the HAL_MMC_Init
+    and  HAL_MMC_DeInit only when these callbacks are null (not registered beforehand).
+    If not, MspInit or MspDeInit are not null, the HAL_MMC_Init and HAL_MMC_DeInit
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
     Callbacks can be registered/unregistered in READY state only.
@@ -229,8 +240,8 @@
     in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
     during the Init/DeInit.
     In that case first register the MspInit/MspDeInit user callbacks
-    using @ref HAL_MMC_RegisterCallback before calling @ref HAL_MMC_DeInit
-    or @ref HAL_MMC_Init function.
+    using HAL_MMC_RegisterCallback before calling HAL_MMC_DeInit
+    or HAL_MMC_Init function.
 
     When The compilation define USE_HAL_MMC_REGISTER_CALLBACKS is set to 0 or
     not defined, the callback registering feature is not available
@@ -238,17 +249,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                       opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -272,7 +272,30 @@
 /** @addtogroup MMC_Private_Defines
   * @{
   */
+#if defined (VDD_VALUE) && (VDD_VALUE <= 1950U)
+#define MMC_VOLTAGE_RANGE               EMMC_LOW_VOLTAGE_RANGE
 
+#define MMC_EXT_CSD_PWR_CL_26_INDEX     201
+#define MMC_EXT_CSD_PWR_CL_52_INDEX     200
+#define MMC_EXT_CSD_PWR_CL_DDR_52_INDEX 238
+
+#define MMC_EXT_CSD_PWR_CL_26_POS       8
+#define MMC_EXT_CSD_PWR_CL_52_POS       0
+#define MMC_EXT_CSD_PWR_CL_DDR_52_POS   16
+#else
+#define MMC_VOLTAGE_RANGE               EMMC_HIGH_VOLTAGE_RANGE
+
+#define MMC_EXT_CSD_PWR_CL_26_INDEX     203
+#define MMC_EXT_CSD_PWR_CL_52_INDEX     202
+#define MMC_EXT_CSD_PWR_CL_DDR_52_INDEX 239
+
+#define MMC_EXT_CSD_PWR_CL_26_POS       24
+#define MMC_EXT_CSD_PWR_CL_52_POS       16
+#define MMC_EXT_CSD_PWR_CL_DDR_52_POS   24
+#endif
+
+/* Frequencies used in the driver for clock divider calculation */
+#define MMC_INIT_FREQ                   400000U   /* Initalization phase : 400 kHz max */
 /**
   * @}
   */
@@ -296,6 +319,7 @@
 static void     MMC_DMAError(DMA_HandleTypeDef *hdma);
 static void     MMC_DMATxAbort(DMA_HandleTypeDef *hdma);
 static void     MMC_DMARxAbort(DMA_HandleTypeDef *hdma);
+static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide);
 /**
   * @}
   */
@@ -375,7 +399,7 @@
   }
 
   /* Initialize the error code */
-  hmmc->ErrorCode = HAL_DMA_ERROR_NONE;
+  hmmc->ErrorCode = HAL_MMC_ERROR_NONE;
 
   /* Initialize the MMC operation */
   hmmc->Context = MMC_CONTEXT_NONE;
@@ -383,6 +407,15 @@
   /* Initialize the MMC state */
   hmmc->State = HAL_MMC_STATE_READY;
 
+  /* Configure bus width */
+  if (hmmc->Init.BusWide != SDMMC_BUS_WIDE_1B)
+  {
+    if (HAL_MMC_ConfigWideBusOperation(hmmc, hmmc->Init.BusWide) != HAL_OK)
+    {
+      return HAL_ERROR;
+    }
+  }
+
   return HAL_OK;
 }
 
@@ -427,6 +460,9 @@
   /* Enable MMC Clock */
   __HAL_MMC_ENABLE(hmmc);
 
+  /* Required power up waiting time before starting the MMC initialization  sequence */
+  HAL_Delay(2);
+
   /* Identify card operating voltage */
   errorstate = MMC_PowerON(hmmc);
   if(errorstate != HAL_MMC_ERROR_NONE)
@@ -1135,7 +1171,7 @@
 
   if(hmmc->State == HAL_MMC_STATE_READY)
   {
-    hmmc->ErrorCode = HAL_DMA_ERROR_NONE;
+    hmmc->ErrorCode = HAL_MMC_ERROR_NONE;
 
     if((BlockAdd + NumberOfBlocks) > (hmmc->MmcCard.LogBlockNbr))
     {
@@ -2081,6 +2117,122 @@
 }
 
 /**
+  * @brief  Returns information the information of the card which are stored on
+  *         the Extended CSD register.
+  * @param  hmmc Pointer to MMC handle
+  * @param  pExtCSD Pointer to a memory area (512 bytes) that contains all 
+  *         Extended CSD register parameters
+  * @param  Timeout Specify timeout value
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeout)
+{
+  SDMMC_DataInitTypeDef config;
+  uint32_t errorstate;
+  uint32_t tickstart = HAL_GetTick();
+  uint32_t count;
+  uint32_t *tmp_buf;
+
+  if(NULL == pExtCSD)
+  {
+    hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM;
+    return HAL_ERROR;
+  }
+
+  if(hmmc->State == HAL_MMC_STATE_READY)
+  {
+    hmmc->ErrorCode = HAL_MMC_ERROR_NONE;
+
+    hmmc->State = HAL_MMC_STATE_BUSY;
+
+    /* Initialize data control register */
+    hmmc->Instance->DCTRL = 0;
+
+    /* Initiaize the destination pointer */
+    tmp_buf = pExtCSD;
+
+    /* Configure the MMC DPSM (Data Path State Machine) */
+    config.DataTimeOut   = SDMMC_DATATIMEOUT;
+    config.DataLength    = 512;
+    config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B;
+    config.TransferDir   = SDMMC_TRANSFER_DIR_TO_SDMMC;
+    config.TransferMode  = SDMMC_TRANSFER_MODE_BLOCK;
+    config.DPSM          = SDMMC_DPSM_ENABLE;
+    (void)SDMMC_ConfigData(hmmc->Instance, &config);
+
+    /* Send ExtCSD Read command to Card */
+    errorstate = SDMMC_CmdSendEXTCSD(hmmc->Instance, 0);
+    if(errorstate != HAL_MMC_ERROR_NONE)
+    {
+      /* Clear all the static flags */
+      __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS);
+      hmmc->ErrorCode |= errorstate;
+      hmmc->State = HAL_MMC_STATE_READY;
+      return HAL_ERROR;
+    }
+
+    /* Poll on SDMMC flags */
+    while(!__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DATAEND))
+    {
+      if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXFIFOHF))
+      {
+        /* Read data from SDMMC Rx FIFO */
+        for(count = 0U; count < 8U; count++)
+        {
+          *tmp_buf = SDMMC_ReadFIFO(hmmc->Instance);
+          tmp_buf++;
+        }
+      }
+
+      if(((HAL_GetTick()-tickstart) >=  Timeout) || (Timeout == 0U))
+      {
+        /* Clear all the static flags */
+        __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS);
+        hmmc->ErrorCode |= HAL_MMC_ERROR_TIMEOUT;
+        hmmc->State= HAL_MMC_STATE_READY;
+        return HAL_TIMEOUT;
+      }
+    }
+
+    /* Get error state */
+    if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DTIMEOUT))
+    {
+      /* Clear all the static flags */
+      __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS);
+      hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_TIMEOUT;
+      hmmc->State = HAL_MMC_STATE_READY;
+      return HAL_ERROR;
+    }
+    else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_DCRCFAIL))
+    {
+      /* Clear all the static flags */
+      __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS);
+      hmmc->ErrorCode |= HAL_MMC_ERROR_DATA_CRC_FAIL;
+      hmmc->State = HAL_MMC_STATE_READY;
+      return HAL_ERROR;
+    }
+    else if(__HAL_MMC_GET_FLAG(hmmc, SDMMC_FLAG_RXOVERR))
+    {
+      /* Clear all the static flags */
+      __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS);
+      hmmc->ErrorCode |= HAL_MMC_ERROR_RX_OVERRUN;
+      hmmc->State = HAL_MMC_STATE_READY;
+      return HAL_ERROR;
+    }
+    else
+    {
+      /* Nothing to do */
+    }
+
+    /* Clear all the static flags */
+    __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_DATA_FLAGS);
+    hmmc->State = HAL_MMC_STATE_READY;
+  }
+
+  return HAL_OK;
+}
+
+/**
   * @brief  Enables wide bus operation for the requested card if supported by
   *         card.
   * @param  hmmc: Pointer to MMC handle
@@ -2093,10 +2245,10 @@
   */
 HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode)
 {
-  __IO uint32_t count = 0U;
+  uint32_t count;
   SDMMC_InitTypeDef Init;
   uint32_t errorstate;
-  uint32_t response = 0U, busy = 0U;
+  uint32_t response = 0U;
 
   /* Check the parameters */
   assert_param(IS_SDMMC_BUS_WIDE(WideMode));
@@ -2104,116 +2256,84 @@
   /* Change State */
   hmmc->State = HAL_MMC_STATE_BUSY;
 
-  /* Update Clock for Bus mode update */
-  Init.ClockEdge           = SDMMC_CLOCK_EDGE_RISING;
-  Init.ClockBypass         = SDMMC_CLOCK_BYPASS_DISABLE;
-  Init.ClockPowerSave      = SDMMC_CLOCK_POWER_SAVE_DISABLE;
-  Init.BusWide             = WideMode;
-  Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE;
-  Init.ClockDiv            = SDMMC_INIT_CLK_DIV;
-  /* Initialize SDMMC*/
-  (void)SDMMC_Init(hmmc->Instance, Init); 
+  errorstate = MMC_PwrClassUpdate(hmmc, WideMode);
 
-  if(WideMode == SDMMC_BUS_WIDE_8B)
+  if(errorstate == HAL_MMC_ERROR_NONE)
   {
-    errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U);
-    if(errorstate != HAL_MMC_ERROR_NONE)
+    if(WideMode == SDMMC_BUS_WIDE_8B)
     {
-      hmmc->ErrorCode |= errorstate;
+      errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70200U);
     }
-  }
-  else if(WideMode == SDMMC_BUS_WIDE_4B)
-  {
-    errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U);
-    if(errorstate != HAL_MMC_ERROR_NONE)
+    else if(WideMode == SDMMC_BUS_WIDE_4B)
     {
-      hmmc->ErrorCode |= errorstate;
+      errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70100U);
     }
-  }
-  else if(WideMode == SDMMC_BUS_WIDE_1B)
-  {
-    errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U);
-    if(errorstate != HAL_MMC_ERROR_NONE)
+    else if(WideMode == SDMMC_BUS_WIDE_1B)
     {
-      hmmc->ErrorCode |= errorstate;
+      errorstate = SDMMC_CmdSwitch(hmmc->Instance, 0x03B70000U);
     }
-  }
-  else
-  {
-    /* WideMode is not a valid argument*/
-    hmmc->ErrorCode |= HAL_MMC_ERROR_PARAM;
-  }
-
-  /* Check for switch error and violation of the trial number of sending CMD 13 */
-  while(busy == 0U)
-  {
-    if(count == SDMMC_MAX_TRIAL)
+    else
     {
-      hmmc->State = HAL_MMC_STATE_READY;
-      hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE;
-      return HAL_ERROR;
-    }
-    count++;
-
-    /* While card is not ready for data and trial number for sending CMD13 is not exceeded */
-    errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U));
-    if(errorstate != HAL_MMC_ERROR_NONE)
-    {
-      hmmc->ErrorCode |= errorstate;
+      /* WideMode is not a valid argument*/
+      errorstate = HAL_MMC_ERROR_PARAM;
     }
 
-    /* Get command response */
-    response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1);
-
-    /* Get operating voltage*/
-    busy = (((response >> 7U) == 1U) ? 0U : 1U);
-  }
-
-  /* While card is not ready for data and trial number for sending CMD13 is not exceeded */
-  count = SDMMC_DATATIMEOUT;
-  while((response & 0x00000100U) == 0U)
-  {
-    if(count == 0U)
+    /* Check for switch error and violation of the trial number of sending CMD 13 */
+    if(errorstate == HAL_MMC_ERROR_NONE)
     {
-      hmmc->State = HAL_MMC_STATE_READY;
-      hmmc->ErrorCode |= HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE;
-      return HAL_ERROR;
+      /* While card is not ready for data and trial number for sending CMD13 is not exceeded */
+      count = SDMMC_MAX_TRIAL;
+      do
+      {
+        errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U));
+        if(errorstate != HAL_MMC_ERROR_NONE)
+        {
+          break;
+        }
+        
+        /* Get command response */
+        response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1);
+        count--;
+      }while(((response & 0x100U) == 0U) && (count != 0U));
+
+      /* Check the status after the switch command execution */
+      if ((count != 0U) && (errorstate == HAL_MMC_ERROR_NONE))
+      {
+        /* Check the bit SWITCH_ERROR of the device status */
+        if ((response & 0x80U) != 0U)
+        {
+          errorstate = SDMMC_ERROR_GENERAL_UNKNOWN_ERR;
+        }
+        else
+        {
+          /* Configure the SDMMC peripheral */
+          Init = hmmc->Init;
+          Init.BusWide = WideMode;
+          (void)SDMMC_Init(hmmc->Instance, Init);
+        }
+      }
+      else if (count == 0U)
+      {
+        errorstate = SDMMC_ERROR_TIMEOUT;
+      }
+      else
+      {
+        /* Nothing to do */
+      }
     }
-    count--;
-
-    /* While card is not ready for data and trial number for sending CMD13 is not exceeded */
-    errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U));
-    if(errorstate != HAL_MMC_ERROR_NONE)
-    {
-      hmmc->ErrorCode |= errorstate;
-    }
-
-    /* Get command response */
-    response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1);
-  }
-
-  if(hmmc->ErrorCode != HAL_MMC_ERROR_NONE)
-  {
-    /* Clear all the static flags */
-    __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS);
-    hmmc->State = HAL_MMC_STATE_READY;
-    return HAL_ERROR;
-  }
-  else
-  {
-    /* Configure the SDMMC peripheral */
-    Init.ClockEdge           = hmmc->Init.ClockEdge;
-    Init.ClockBypass         = hmmc->Init.ClockBypass;
-    Init.ClockPowerSave      = hmmc->Init.ClockPowerSave;
-    Init.BusWide             = WideMode;
-    Init.HardwareFlowControl = hmmc->Init.HardwareFlowControl;
-    Init.ClockDiv            = hmmc->Init.ClockDiv;
-    (void)SDMMC_Init(hmmc->Instance, Init);
   }
 
   /* Change State */
   hmmc->State = HAL_MMC_STATE_READY;
 
+  if(errorstate != HAL_MMC_ERROR_NONE)
+  {
+    /* Clear all the static flags */
+    __HAL_MMC_CLEAR_FLAG(hmmc, SDMMC_STATIC_FLAGS);
+    hmmc->ErrorCode |= errorstate;
+    return HAL_ERROR;
+  }
+
   return HAL_OK;
 }
 
@@ -2574,7 +2694,8 @@
 {
   HAL_MMC_CardCSDTypeDef CSD;
   uint32_t errorstate;
-  uint16_t mmc_rca = 1U;
+  uint16_t mmc_rca = 2U;
+  MMC_InitTypeDef Init;
 
   /* Check the power State */
   if(SDMMC_GetPowerState(hmmc->Instance) == 0U)
@@ -2598,9 +2719,9 @@
     hmmc->CID[3U] = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP4);
   }
 
-  /* Send CMD3 SET_REL_ADDR with argument 0 */
+  /* Send CMD3 SET_REL_ADDR with RCA = 2 (should be greater than 1) */
   /* MMC Card publishes its RCA. */
-  errorstate = SDMMC_CmdSetRelAdd(hmmc->Instance, &mmc_rca);
+  errorstate = SDMMC_CmdSetRelAddMmc(hmmc->Instance, mmc_rca);
   if(errorstate != HAL_MMC_ERROR_NONE)
   {
     return errorstate;
@@ -2627,12 +2748,6 @@
   /* Get the Card Class */
   hmmc->MmcCard.Class = (SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP2) >> 20U);
 
-  /* Get CSD parameters */
-  if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK)
-  {
-    return hmmc->ErrorCode;
-  }
-
   /* Select the Card */
   errorstate = SDMMC_CmdSelDesel(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U));
   if(errorstate != HAL_MMC_ERROR_NONE)
@@ -2640,8 +2755,36 @@
     return errorstate;
   }
 
-  /* Configure SDMMC peripheral interface */
-  (void)SDMMC_Init(hmmc->Instance, hmmc->Init);
+  /* Get CSD parameters */
+  if (HAL_MMC_GetCardCSD(hmmc, &CSD) != HAL_OK)
+  {
+    return hmmc->ErrorCode;
+  }
+
+  /* While card is not ready for data and trial number for sending CMD13 is not exceeded */
+  errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U));
+  if(errorstate != HAL_MMC_ERROR_NONE)
+  {
+    hmmc->ErrorCode |= errorstate;
+  }
+  
+  /* Get Extended CSD parameters */
+  if (HAL_MMC_GetCardExtCSD(hmmc, hmmc->Ext_CSD, SDMMC_DATATIMEOUT) != HAL_OK)
+  {
+    return hmmc->ErrorCode;
+  }
+
+  /* While card is not ready for data and trial number for sending CMD13 is not exceeded */
+  errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U));
+  if(errorstate != HAL_MMC_ERROR_NONE)
+  {
+    hmmc->ErrorCode |= errorstate;
+  }
+
+  /* Configure the SDMMC peripheral */
+  Init = hmmc->Init;
+  Init.BusWide = SDMMC_BUS_WIDE_1B;
+  (void)SDMMC_Init(hmmc->Instance, Init);
 
   /* All cards are initialized */
   return HAL_MMC_ERROR_NONE;
@@ -2674,8 +2817,8 @@
       return HAL_MMC_ERROR_INVALID_VOLTRANGE;
     }
 
-    /* SEND CMD1 APP_CMD with MMC_HIGH_VOLTAGE_RANGE(0xC0FF8000) as argument */
-    errorstate = SDMMC_CmdOpCondition(hmmc->Instance, eMMC_HIGH_VOLTAGE_RANGE);
+    /* SEND CMD1 APP_CMD with voltage range as argument */
+    errorstate = SDMMC_CmdOpCondition(hmmc->Instance, MMC_VOLTAGE_RANGE);
     if(errorstate != HAL_MMC_ERROR_NONE)
     {
       return HAL_MMC_ERROR_UNSUPPORTED_FEATURE;
@@ -2907,6 +3050,93 @@
 }
 
 /**
+  * @brief  Update the power class of the device.
+  * @param  hmmc MMC handle
+  * @param  Wide Wide of MMC bus
+  * @param  Speed Speed of the MMC bus
+  * @retval MMC Card error state
+  */
+static uint32_t MMC_PwrClassUpdate(MMC_HandleTypeDef *hmmc, uint32_t Wide)
+{
+  uint32_t count;
+  uint32_t response = 0U;
+  uint32_t errorstate = HAL_MMC_ERROR_NONE;
+  uint32_t power_class, supported_pwr_class;
+
+  if((Wide == SDMMC_BUS_WIDE_8B) || (Wide == SDMMC_BUS_WIDE_4B))
+  {
+    power_class = 0U; /* Default value after power-on or software reset */
+
+    /* Read the PowerClass field of the Extended CSD register */
+    if(MMC_ReadExtCSD(hmmc, &power_class, 187, SDMMC_DATATIMEOUT) != HAL_OK) /* Field POWER_CLASS [187] */
+    {
+      errorstate = SDMMC_ERROR_GENERAL_UNKNOWN_ERR;
+    }
+    else
+    {
+      power_class = ((power_class >> 24U) & 0x000000FFU);
+    }
+
+    /* Get the supported PowerClass field of the Extended CSD register */
+    /* Field PWR_CL_26_xxx [201 or 203] */
+    supported_pwr_class = ((hmmc->Ext_CSD[(MMC_EXT_CSD_PWR_CL_26_INDEX/4)] >> MMC_EXT_CSD_PWR_CL_26_POS) & 0x000000FFU);
+
+    if(errorstate == HAL_MMC_ERROR_NONE)
+    {
+      if(Wide == SDMMC_BUS_WIDE_8B)
+      {
+        /* Bit [7:4] : power class for 8-bits bus configuration - Bit [3:0] : power class for 4-bits bus configuration */
+        supported_pwr_class = (supported_pwr_class >> 4U);
+      }
+
+      if ((power_class & 0x0FU) != (supported_pwr_class & 0x0FU))
+      {
+        /* Need to change current power class */
+        errorstate = SDMMC_CmdSwitch(hmmc->Instance, (0x03BB0000U | ((supported_pwr_class & 0x0FU) << 8U)));
+
+        if(errorstate == HAL_MMC_ERROR_NONE)
+        {
+          /* While card is not ready for data and trial number for sending CMD13 is not exceeded */
+          count = SDMMC_MAX_TRIAL;
+          do
+          {
+            errorstate = SDMMC_CmdSendStatus(hmmc->Instance, (uint32_t)(((uint32_t)hmmc->MmcCard.RelCardAdd) << 16U));
+            if(errorstate != HAL_MMC_ERROR_NONE)
+            {
+              break;
+            }
+
+            /* Get command response */
+            response = SDMMC_GetResponse(hmmc->Instance, SDMMC_RESP1);
+            count--;
+          }while(((response & 0x100U) == 0U) && (count != 0U));
+
+          /* Check the status after the switch command execution */
+          if ((count != 0U) && (errorstate == HAL_MMC_ERROR_NONE))
+          {
+            /* Check the bit SWITCH_ERROR of the device status */
+            if ((response & 0x80U) != 0U)
+            {
+              errorstate = SDMMC_ERROR_UNSUPPORTED_FEATURE;
+            }
+          }
+          else if (count == 0U)
+          {
+            errorstate = SDMMC_ERROR_TIMEOUT;
+          }
+          else
+          {
+            /* Nothing to do */
+          }
+        }
+      }
+    }
+  }
+
+  return errorstate;
+}
+
+/**
   * @}
   */
 
@@ -2921,5 +3151,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_msp_template.c b/Src/stm32f7xx_hal_msp_template.c
index ff6fcc1..cbd0f68 100644
--- a/Src/stm32f7xx_hal_msp_template.c
+++ b/Src/stm32f7xx_hal_msp_template.c
@@ -5,7 +5,18 @@
   * @brief   HAL MSP module.
   *          This file template is located in the HAL folder and should be copied 
   *          to the user folder.
-  *         
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                      ##### How to use this driver #####
@@ -14,17 +25,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */ 
 
 /* Includes ------------------------------------------------------------------*/
@@ -98,4 +98,4 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Src/stm32f7xx_hal_nand.c b/Src/stm32f7xx_hal_nand.c
index 87070dc..24f406c 100644
--- a/Src/stm32f7xx_hal_nand.c
+++ b/Src/stm32f7xx_hal_nand.c
@@ -3,53 +3,64 @@
   * @file    stm32f7xx_hal_nand.c
   * @author  MCD Application Team
   * @brief   NAND HAL module driver.
-  *          This file provides a generic firmware to drive NAND memories mounted 
+  *          This file provides a generic firmware to drive NAND memories mounted
   *          as external device.
-  *         
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                          ##### How to use this driver #####
-  ==============================================================================    
+  ==============================================================================
     [..]
-      This driver is a generic layered driver which contains a set of APIs used to 
-      control NAND flash memories. It uses the FMC/FSMC layer functions to interface 
+      This driver is a generic layered driver which contains a set of APIs used to
+      control NAND flash memories. It uses the FMC layer functions to interface
       with NAND devices. This driver is used as follows:
-    
-      (+) NAND flash memory configuration sequence using the function HAL_NAND_Init() 
+
+      (+) NAND flash memory configuration sequence using the function HAL_NAND_Init()
           with control and timing parameters for both common and attribute spaces.
-            
+
       (+) Read NAND flash memory maker and device IDs using the function
-          HAL_NAND_Read_ID(). The read information is stored in the NAND_ID_TypeDef 
-          structure declared by the function caller. 
-        
+          HAL_NAND_Read_ID(). The read information is stored in the NAND_ID_TypeDef
+          structure declared by the function caller.
+
       (+) Access NAND flash memory by read/write operations using the functions
-          HAL_NAND_Read_Page_8b()/HAL_NAND_Read_SpareArea_8b(), 
+          HAL_NAND_Read_Page_8b()/HAL_NAND_Read_SpareArea_8b(),
           HAL_NAND_Write_Page_8b()/HAL_NAND_Write_SpareArea_8b(),
-          HAL_NAND_Read_Page_16b()/HAL_NAND_Read_SpareArea_16b(), 
+          HAL_NAND_Read_Page_16b()/HAL_NAND_Read_SpareArea_16b(),
           HAL_NAND_Write_Page_16b()/HAL_NAND_Write_SpareArea_16b()
-          to read/write page(s)/spare area(s). These functions use specific device 
-          information (Block, page size..) predefined by the user in the NAND_DeviceConfigTypeDef 
+          to read/write page(s)/spare area(s). These functions use specific device
+          information (Block, page size..) predefined by the user in the NAND_DeviceConfigTypeDef
           structure. The read/write address information is contained by the Nand_Address_Typedef
           structure passed as parameter.
-        
+
       (+) Perform NAND flash Reset chip operation using the function HAL_NAND_Reset().
-        
+
       (+) Perform NAND flash erase block operation using the function HAL_NAND_Erase_Block().
-          The erase block address information is contained in the Nand_Address_Typedef 
+          The erase block address information is contained in the Nand_Address_Typedef
           structure passed as parameter.
-    
+
       (+) Read the NAND flash status operation using the function HAL_NAND_Read_Status().
-        
+
       (+) You can also control the NAND device by calling the control APIs HAL_NAND_ECC_Enable()/
           HAL_NAND_ECC_Disable() to respectively enable/disable the ECC code correction
-          feature or the function HAL_NAND_GetECC() to get the ECC correction code. 
-       
+          feature or the function HAL_NAND_GetECC() to get the ECC correction code.
+
       (+) You can monitor the NAND device HAL state by calling the function
-          HAL_NAND_GetState()  
+          HAL_NAND_GetState()
 
     [..]
       (@) This driver is a set of generic APIs which handle standard NAND flash operations.
-          If a NAND flash device contains different operations and/or implementations, 
+          If a NAND flash device contains different operations and/or implementations,
           it should be implemented separately.
 
     *** Callback registration ***
@@ -58,25 +69,25 @@
       The compilation define  USE_HAL_NAND_REGISTER_CALLBACKS when set to 1
       allows the user to configure dynamically the driver callbacks.
 
-      Use Functions @ref HAL_NAND_RegisterCallback() to register a user callback,
+      Use Functions HAL_NAND_RegisterCallback() to register a user callback,
       it allows to register following callbacks:
         (+) MspInitCallback    : NAND MspInit.
         (+) MspDeInitCallback  : NAND MspDeInit.
       This function takes as parameters the HAL peripheral handle, the Callback ID
       and a pointer to the user callback function.
 
-      Use function @ref HAL_NAND_UnRegisterCallback() to reset a callback to the default
+      Use function HAL_NAND_UnRegisterCallback() to reset a callback to the default
       weak (surcharged) function. It allows to reset following callbacks:
         (+) MspInitCallback    : NAND MspInit.
         (+) MspDeInitCallback  : NAND MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
-      By default, after the @ref HAL_NAND_Init and if the state is HAL_NAND_STATE_RESET
+      By default, after the HAL_NAND_Init and if the state is HAL_NAND_STATE_RESET
       all callbacks are reset to the corresponding legacy weak (surcharged) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the @ref HAL_NAND_Init
-      and @ref  HAL_NAND_DeInit only when these callbacks are null (not registered beforehand).
-      If not, MspInit or MspDeInit are not null, the @ref HAL_NAND_Init and @ref HAL_NAND_DeInit
+      reset to the legacy weak (surcharged) functions in the HAL_NAND_Init
+      and  HAL_NAND_DeInit only when these callbacks are null (not registered beforehand).
+      If not, MspInit or MspDeInit are not null, the HAL_NAND_Init and HAL_NAND_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
       Callbacks can be registered/unregistered in READY state only.
@@ -84,8 +95,8 @@
       in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
       during the Init/DeInit.
       In that case first register the MspInit/MspDeInit user callbacks
-      using @ref HAL_NAND_RegisterCallback before calling @ref HAL_NAND_DeInit
-      or @ref HAL_NAND_Init function.
+      using HAL_NAND_RegisterCallback before calling HAL_NAND_DeInit
+      or HAL_NAND_Init function.
 
       When The compilation define USE_HAL_NAND_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
@@ -93,37 +104,26 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
-  */ 
+  */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
 
+
 /** @addtogroup STM32F7xx_HAL_Driver
   * @{
   */
 
-
 #ifdef HAL_NAND_MODULE_ENABLED
 
-/** @defgroup NAND NAND 
+/** @defgroup NAND NAND
   * @brief NAND HAL module driver
   * @{
   */
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private Constants ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/    
+/* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
 /* Exported functions ---------------------------------------------------------*/
@@ -131,22 +131,22 @@
 /** @defgroup NAND_Exported_Functions NAND Exported Functions
   * @{
   */
-    
-/** @defgroup NAND_Exported_Functions_Group1 Initialization and de-initialization functions 
-  * @brief    Initialization and Configuration functions 
+
+/** @defgroup NAND_Exported_Functions_Group1 Initialization and de-initialization functions
+  * @brief    Initialization and Configuration functions
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
             ##### NAND Initialization and de-initialization functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to initialize/de-initialize
     the NAND memory
-  
+
 @endverbatim
   * @{
   */
-    
+
 /**
   * @brief  Perform NAND memory Initialization sequence
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
@@ -155,21 +155,22 @@
   * @param  AttSpace_Timing pointer to Attribute space timing structure
   * @retval HAL status
   */
-HAL_StatusTypeDef  HAL_NAND_Init(NAND_HandleTypeDef *hnand, FMC_NAND_PCC_TimingTypeDef *ComSpace_Timing, FMC_NAND_PCC_TimingTypeDef *AttSpace_Timing)
+HAL_StatusTypeDef  HAL_NAND_Init(NAND_HandleTypeDef *hnand, FMC_NAND_PCC_TimingTypeDef *ComSpace_Timing,
+                                 FMC_NAND_PCC_TimingTypeDef *AttSpace_Timing)
 {
   /* Check the NAND handle state */
-  if(hnand == NULL)
+  if (hnand == NULL)
   {
-     return HAL_ERROR;
+    return HAL_ERROR;
   }
 
-  if(hnand->State == HAL_NAND_STATE_RESET)
+  if (hnand->State == HAL_NAND_STATE_RESET)
   {
     /* Allocate lock resource and initialize it */
     hnand->Lock = HAL_UNLOCKED;
 
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
-    if(hnand->MspInitCallback == NULL)
+    if (hnand->MspInitCallback == NULL)
     {
       hnand->MspInitCallback = HAL_NAND_MspInit;
     }
@@ -180,21 +181,21 @@
 #else
     /* Initialize the low level hardware (MSP) */
     HAL_NAND_MspInit(hnand);
-#endif
+#endif /* (USE_HAL_NAND_REGISTER_CALLBACKS) */
   }
 
   /* Initialize NAND control Interface */
-  FMC_NAND_Init(hnand->Instance, &(hnand->Init));
-  
-  /* Initialize NAND common space timing Interface */  
-  FMC_NAND_CommonSpace_Timing_Init(hnand->Instance, ComSpace_Timing, hnand->Init.NandBank);
-  
-  /* Initialize NAND attribute space timing Interface */  
-  FMC_NAND_AttributeSpace_Timing_Init(hnand->Instance, AttSpace_Timing, hnand->Init.NandBank);
-  
+  (void)FMC_NAND_Init(hnand->Instance, &(hnand->Init));
+
+  /* Initialize NAND common space timing Interface */
+  (void)FMC_NAND_CommonSpace_Timing_Init(hnand->Instance, ComSpace_Timing, hnand->Init.NandBank);
+
+  /* Initialize NAND attribute space timing Interface */
+  (void)FMC_NAND_AttributeSpace_Timing_Init(hnand->Instance, AttSpace_Timing, hnand->Init.NandBank);
+
   /* Enable the NAND device */
   __FMC_NAND_ENABLE(hnand->Instance);
-  
+
   /* Update the NAND controller state */
   hnand->State = HAL_NAND_STATE_READY;
 
@@ -207,10 +208,10 @@
   *                the configuration information for NAND module.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_DeInit(NAND_HandleTypeDef *hnand)  
+HAL_StatusTypeDef HAL_NAND_DeInit(NAND_HandleTypeDef *hnand)
 {
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
-  if(hnand->MspDeInitCallback == NULL)
+  if (hnand->MspDeInitCallback == NULL)
   {
     hnand->MspDeInitCallback = HAL_NAND_MspDeInit;
   }
@@ -220,10 +221,10 @@
 #else
   /* Initialize the low level hardware (MSP) */
   HAL_NAND_MspDeInit(hnand);
-#endif
+#endif /* (USE_HAL_NAND_REGISTER_CALLBACKS) */
 
   /* Configure the NAND registers with their reset values */
-  FMC_NAND_DeInit(hnand->Instance, hnand->Init.NandBank);
+  (void)FMC_NAND_DeInit(hnand->Instance, hnand->Init.NandBank);
 
   /* Reset the NAND controller state */
   hnand->State = HAL_NAND_STATE_RESET;
@@ -244,10 +245,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hnand);
-  
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_NAND_MspInit could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -260,10 +261,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hnand);
-  
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_NAND_MspDeInit could be implemented in the user file
-   */ 
+   */
 }
 
 
@@ -272,64 +273,64 @@
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @retval HAL status
-*/
+  */
 void HAL_NAND_IRQHandler(NAND_HandleTypeDef *hnand)
 {
   /* Check NAND interrupt Rising edge flag */
-  if(__FMC_NAND_GET_FLAG(hnand->Instance, hnand->Init.NandBank, FMC_FLAG_RISING_EDGE))
+  if (__FMC_NAND_GET_FLAG(hnand->Instance, hnand->Init.NandBank, FMC_FLAG_RISING_EDGE))
   {
     /* NAND interrupt callback*/
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
     hnand->ItCallback(hnand);
 #else
     HAL_NAND_ITCallback(hnand);
-#endif
+#endif /* (USE_HAL_NAND_REGISTER_CALLBACKS) */
 
     /* Clear NAND interrupt Rising edge pending bit */
     __FMC_NAND_CLEAR_FLAG(hnand->Instance, FMC_FLAG_RISING_EDGE);
   }
-  
+
   /* Check NAND interrupt Level flag */
-  if(__FMC_NAND_GET_FLAG(hnand->Instance, hnand->Init.NandBank, FMC_FLAG_LEVEL))
+  if (__FMC_NAND_GET_FLAG(hnand->Instance, hnand->Init.NandBank, FMC_FLAG_LEVEL))
   {
     /* NAND interrupt callback*/
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
     hnand->ItCallback(hnand);
 #else
     HAL_NAND_ITCallback(hnand);
-#endif
+#endif /* (USE_HAL_NAND_REGISTER_CALLBACKS) */
 
     /* Clear NAND interrupt Level pending bit */
     __FMC_NAND_CLEAR_FLAG(hnand->Instance, FMC_FLAG_LEVEL);
   }
 
   /* Check NAND interrupt Falling edge flag */
-  if(__FMC_NAND_GET_FLAG(hnand->Instance, hnand->Init.NandBank, FMC_FLAG_FALLING_EDGE))
+  if (__FMC_NAND_GET_FLAG(hnand->Instance, hnand->Init.NandBank, FMC_FLAG_FALLING_EDGE))
   {
     /* NAND interrupt callback*/
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
     hnand->ItCallback(hnand);
 #else
     HAL_NAND_ITCallback(hnand);
-#endif
+#endif /* (USE_HAL_NAND_REGISTER_CALLBACKS) */
 
     /* Clear NAND interrupt Falling edge pending bit */
     __FMC_NAND_CLEAR_FLAG(hnand->Instance, FMC_FLAG_FALLING_EDGE);
   }
-  
+
   /* Check NAND interrupt FIFO empty flag */
-  if(__FMC_NAND_GET_FLAG(hnand->Instance, hnand->Init.NandBank, FMC_FLAG_FEMPT))
+  if (__FMC_NAND_GET_FLAG(hnand->Instance, hnand->Init.NandBank, FMC_FLAG_FEMPT))
   {
     /* NAND interrupt callback*/
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
     hnand->ItCallback(hnand);
 #else
     HAL_NAND_ITCallback(hnand);
-#endif
+#endif /* (USE_HAL_NAND_REGISTER_CALLBACKS) */
 
     /* Clear NAND interrupt FIFO empty pending bit */
     __FMC_NAND_CLEAR_FLAG(hnand->Instance, FMC_FLAG_FEMPT);
-  }  
+  }
 
 }
 
@@ -343,27 +344,27 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hnand);
-  
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_NAND_ITCallback could be implemented in the user file
    */
 }
- 
+
 /**
   * @}
   */
-  
-/** @defgroup NAND_Exported_Functions_Group2 Input and Output functions 
-  * @brief    Input Output and memory control functions 
+
+/** @defgroup NAND_Exported_Functions_Group2 Input and Output functions
+  * @brief    Input Output and memory control functions
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
                     ##### NAND Input and Output functions #####
   ==============================================================================
-  [..]  
-    This section provides functions allowing to use and control the NAND 
+  [..]
+    This section provides functions allowing to use and control the NAND
     memory
-  
+
 @endverbatim
   * @{
   */
@@ -379,58 +380,64 @@
 {
   __IO uint32_t data = 0;
   __IO uint32_t data1 = 0;
-  uint32_t deviceAddress = 0;
+  uint32_t deviceaddress;
 
-  /* Process Locked */
-  __HAL_LOCK(hnand);  
-  
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
-  
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_BUSY;
-  
-  /* Send Read ID command sequence */ 	
-  *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA))  = NAND_CMD_READID;
-  __DSB();
-  *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-  __DSB();
-
-  /* Read the electronic signature from NAND flash */
-  if (hnand->Init.MemoryDataWidth == FMC_NAND_PCC_MEM_BUS_WIDTH_8)
+  else if (hnand->State == HAL_NAND_STATE_READY)
   {
-    data = *(__IO uint32_t *)deviceAddress;
+    /* Process Locked */
+    __HAL_LOCK(hnand);
 
-    /* Return the data read */
-    pNAND_ID->Maker_Id   = ADDR_1ST_CYCLE(data);
-    pNAND_ID->Device_Id  = ADDR_2ND_CYCLE(data);
-    pNAND_ID->Third_Id   = ADDR_3RD_CYCLE(data);
-    pNAND_ID->Fourth_Id  = ADDR_4TH_CYCLE(data);
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* Send Read ID command sequence */
+    *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA))  = NAND_CMD_READID;
+    __DSB();
+    *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00;
+    __DSB();
+
+    /* Read the electronic signature from NAND flash */
+    if (hnand->Init.MemoryDataWidth == FMC_NAND_MEM_BUS_WIDTH_8)
+    {
+      data = *(__IO uint32_t *)deviceaddress;
+
+      /* Return the data read */
+      pNAND_ID->Maker_Id   = ADDR_1ST_CYCLE(data);
+      pNAND_ID->Device_Id  = ADDR_2ND_CYCLE(data);
+      pNAND_ID->Third_Id   = ADDR_3RD_CYCLE(data);
+      pNAND_ID->Fourth_Id  = ADDR_4TH_CYCLE(data);
+    }
+    else
+    {
+      data = *(__IO uint32_t *)deviceaddress;
+      data1 = *((__IO uint32_t *)deviceaddress + 4);
+
+      /* Return the data read */
+      pNAND_ID->Maker_Id   = ADDR_1ST_CYCLE(data);
+      pNAND_ID->Device_Id  = ADDR_3RD_CYCLE(data);
+      pNAND_ID->Third_Id   = ADDR_1ST_CYCLE(data1);
+      pNAND_ID->Fourth_Id  = ADDR_3RD_CYCLE(data1);
+    }
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
   }
   else
   {
-    data = *(__IO uint32_t *)deviceAddress;
-    data1 = *((__IO uint32_t *)deviceAddress + 4);
-    
-    /* Return the data read */
-    pNAND_ID->Maker_Id   = ADDR_1ST_CYCLE(data);
-    pNAND_ID->Device_Id  = ADDR_3RD_CYCLE(data);
-    pNAND_ID->Third_Id   = ADDR_1ST_CYCLE(data1);
-    pNAND_ID->Fourth_Id  = ADDR_3RD_CYCLE(data1);
+    return HAL_ERROR;
   }
 
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);   
-   
   return HAL_OK;
 }
 
@@ -442,36 +449,42 @@
   */
 HAL_StatusTypeDef HAL_NAND_Reset(NAND_HandleTypeDef *hnand)
 {
-  uint32_t deviceAddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnand);
-    
+  uint32_t deviceaddress;
+
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
+  }
+  else if (hnand->State == HAL_NAND_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnand);
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* Send NAND reset command */
+    *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = 0xFF;
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
+  }
+  else
+  {
+    return HAL_ERROR;
   }
 
-  /* Identify the device address */  
-  deviceAddress = NAND_DEVICE;
-  
-  /* Update the NAND controller state */   
-  hnand->State = HAL_NAND_STATE_BUSY; 
-  
-  /* Send NAND reset command */  
-  *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = 0xFF;
-
-  /* Update the NAND controller state */   
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);    
-  
   return HAL_OK;
-  
+
 }
-  
+
 /**
   * @brief  Configure the device: Enter the physical parameters of the device
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
@@ -488,153 +501,166 @@
   hnand->Config.PlaneSize          = pDeviceConfig->PlaneSize;
   hnand->Config.PlaneNbr           = pDeviceConfig->PlaneNbr;
   hnand->Config.ExtraCommandEnable = pDeviceConfig->ExtraCommandEnable;
-  
+
   return HAL_OK;
 }
 
-
 /**
   * @brief  Read Page(s) from NAND memory block (8-bits addressing)
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
   * @param  pBuffer  pointer to destination read buffer
-  * @param  NumPageToRead  number of pages to read from block 
+  * @param  NumPageToRead  number of pages to read from block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToRead)
+HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
+                                        uint32_t NumPageToRead)
 {
-  __IO uint32_t index  = 0;
-  uint32_t tickstart = 0U;
-  uint32_t deviceAddress = 0, size = 0, numPagesRead = 0, nandAddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnand); 
-  
+  uint32_t index;
+  uint32_t tickstart;
+  uint32_t deviceaddress;
+  uint32_t numpagesread = 0U;
+  uint32_t nandaddress;
+  uint32_t nbpages = NumPageToRead;
+  uint8_t *buff = pBuffer;
+
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
-
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_BUSY;
-  
-  /* NAND raw address calculation */
-  nandAddress = ARRAY_ADDRESS(pAddress, hnand);
-  
-  /* Page(s) read loop */  
-  while((NumPageToRead != 0) && (nandAddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
+  else if (hnand->State == HAL_NAND_STATE_READY)
   {
-    /* update the buffer size */
-    size = (hnand->Config.PageSize) + ((hnand->Config.PageSize) * numPagesRead);
-    
-    /* Send read page command sequence */
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_A;
-    __DSB();
-    
-    /* Cards with page size <= 512 bytes */
-    if((hnand->Config.PageSize) <= 512)
-    {
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    else /* (hnand->Config.PageSize) > 512 */
-    {
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
+    /* Process Locked */
+    __HAL_LOCK(hnand);
 
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA))  = NAND_CMD_AREA_TRUE1;
-    __DSB();
-    
-    
-    if(hnand->Config.ExtraCommandEnable == ENABLE)
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* NAND raw address calculation */
+    nandaddress = ARRAY_ADDRESS(pAddress, hnand);
+
+    /* Page(s) read loop */
+    while ((nbpages != 0U) && (nandaddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
     {
-      /* Get tick */
-      tickstart = HAL_GetTick();
-      
-      /* Read status until NAND is ready */
-      while(HAL_NAND_Read_Status(hnand) != NAND_READY)
+      /* Send read page command sequence */
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_A;
+      __DSB();
+
+      /* Cards with page size <= 512 bytes */
+      if ((hnand->Config.PageSize) <= 512U)
       {
-        if((HAL_GetTick() - tickstart ) > NAND_WRITE_TIMEOUT)
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
         {
-          return HAL_TIMEOUT; 
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
         }
       }
-      
-      /* Go back to read mode */
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = ((uint8_t)0x00U);
-      __DSB();
-    }
-    
-    /* Get Data into Buffer */    
-    for(; index < size; index++)
-    {
-      *(uint8_t *)pBuffer++ = *(uint8_t *)deviceAddress;
-    }
-    
-    /* Increment read pages number */
-    numPagesRead++;
-    
-    /* Decrement pages to read */
-    NumPageToRead--;
-    
-    /* Increment the NAND address */
-    nandAddress = (uint32_t)(nandAddress + 1);
-  }
-  
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);  
-    
-  return HAL_OK;
+      else /* (hnand->Config.PageSize) > 512 */
+      {
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
 
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA))  = NAND_CMD_AREA_TRUE1;
+      __DSB();
+
+
+      if (hnand->Config.ExtraCommandEnable == ENABLE)
+      {
+        /* Get tick */
+        tickstart = HAL_GetTick();
+
+        /* Read status until NAND is ready */
+        while (HAL_NAND_Read_Status(hnand) != NAND_READY)
+        {
+          if ((HAL_GetTick() - tickstart) > NAND_WRITE_TIMEOUT)
+          {
+            /* Update the NAND controller state */
+            hnand->State = HAL_NAND_STATE_ERROR;
+
+            /* Process unlocked */
+            __HAL_UNLOCK(hnand);
+
+            return HAL_TIMEOUT;
+          }
+        }
+
+        /* Go back to read mode */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = ((uint8_t)0x00);
+        __DSB();
+      }
+
+      /* Get Data into Buffer */
+      for (index = 0U; index < hnand->Config.PageSize; index++)
+      {
+        *buff = *(uint8_t *)deviceaddress;
+        buff++;
+      }
+
+      /* Increment read pages number */
+      numpagesread++;
+
+      /* Decrement pages to read */
+      nbpages--;
+
+      /* Increment the NAND address */
+      nandaddress = (uint32_t)(nandaddress + 1U);
+    }
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
@@ -643,150 +669,165 @@
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
   * @param  pBuffer  pointer to destination read buffer. pBuffer should be 16bits aligned
-  * @param  NumPageToRead  number of pages to read from block 
+  * @param  NumPageToRead  number of pages to read from block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumPageToRead)
-{   
-  __IO uint32_t index  = 0;
-  uint32_t tickstart = 0;
-  uint32_t deviceAddress = 0, size = 0, numPagesRead = 0, nandAddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnand); 
-  
-  /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
-  {
-     return HAL_BUSY;
-  }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
+HAL_StatusTypeDef HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer,
+                                         uint32_t NumPageToRead)
+{
+  uint32_t index;
+  uint32_t tickstart;
+  uint32_t deviceaddress;
+  uint32_t numpagesread = 0U;
+  uint32_t nandaddress;
+  uint32_t nbpages = NumPageToRead;
+  uint16_t *buff = pBuffer;
 
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_BUSY;
-  
-  /* NAND raw address calculation */
-  nandAddress = ARRAY_ADDRESS(pAddress, hnand);
-  
-  /* Page(s) read loop */  
-  while((NumPageToRead != 0) && (nandAddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
-  {	   
-    /* update the buffer size */
-    size = (hnand->Config.PageSize) + ((hnand->Config.PageSize) * numPagesRead);
-    
-    /* Send read page command sequence */
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_A;  
-    __DSB();
-    
-    /* Cards with page size <= 512 bytes */
-    if((hnand->Config.PageSize) <= 512)
+  /* Check the NAND controller state */
+  if (hnand->State == HAL_NAND_STATE_BUSY)
+  {
+    return HAL_BUSY;
+  }
+  else if (hnand->State == HAL_NAND_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnand);
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* NAND raw address calculation */
+    nandaddress = ARRAY_ADDRESS(pAddress, hnand);
+
+    /* Page(s) read loop */
+    while ((nbpages != 0U) && (nandaddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
     {
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
+      /* Send read page command sequence */
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_A;
+      __DSB();
+
+      /* Cards with page size <= 512 bytes */
+      if ((hnand->Config.PageSize) <= 512U)
       {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    else /* (hnand->Config.PageSize) > 512 */
-    {
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-  
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA))  = NAND_CMD_AREA_TRUE1;
-    __DSB();
-    
-    if(hnand->Config.ExtraCommandEnable == ENABLE)
-    {
-      /* Get tick */
-      tickstart = HAL_GetTick();
-      
-      /* Read status until NAND is ready */
-      while(HAL_NAND_Read_Status(hnand) != NAND_READY)
-      {
-        if((HAL_GetTick() - tickstart ) > NAND_WRITE_TIMEOUT)
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
         {
-          return HAL_TIMEOUT; 
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
         }
       }
-      
-      /* Go back to read mode */
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = ((uint8_t)0x00U);
+      else /* (hnand->Config.PageSize) > 512 */
+      {
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA))  = NAND_CMD_AREA_TRUE1;
       __DSB();
+
+      if (hnand->Config.ExtraCommandEnable == ENABLE)
+      {
+        /* Get tick */
+        tickstart = HAL_GetTick();
+
+        /* Read status until NAND is ready */
+        while (HAL_NAND_Read_Status(hnand) != NAND_READY)
+        {
+          if ((HAL_GetTick() - tickstart) > NAND_WRITE_TIMEOUT)
+          {
+            /* Update the NAND controller state */
+            hnand->State = HAL_NAND_STATE_ERROR;
+
+            /* Process unlocked */
+            __HAL_UNLOCK(hnand);
+
+            return HAL_TIMEOUT;
+          }
+        }
+
+        /* Go back to read mode */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = ((uint8_t)0x00);
+        __DSB();
+      }
+
+      /* Calculate PageSize */
+      if (hnand->Init.MemoryDataWidth == FMC_NAND_MEM_BUS_WIDTH_8)
+      {
+        hnand->Config.PageSize = hnand->Config.PageSize / 2U;
+      }
+      else
+      {
+        /* Do nothing */
+        /* Keep the same PageSize for FMC_NAND_MEM_BUS_WIDTH_16*/
+      }
+
+      /* Get Data into Buffer */
+      for (index = 0U; index < hnand->Config.PageSize; index++)
+      {
+        *buff = *(uint16_t *)deviceaddress;
+        buff++;
+      }
+
+      /* Increment read pages number */
+      numpagesread++;
+
+      /* Decrement pages to read */
+      nbpages--;
+
+      /* Increment the NAND address */
+      nandaddress = (uint32_t)(nandaddress + 1U);
     }
 
-    /* Calculate PageSize */
-    if (hnand->Init.MemoryDataWidth == FMC_NAND_PCC_MEM_BUS_WIDTH_8)
-    {
-      size = size / 2U;
-    }
-    else
-    {
-      /* Do nothing */
-      /* Keep the same PageSize for FMC_NAND_MEM_BUS_WIDTH_16*/
-    }
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
 
-    /* Get Data into Buffer */    
-    for(; index < size; index++)
-    {
-      *(uint16_t *)pBuffer++ = *(uint16_t *)deviceAddress;
-    }
-    
-    /* Increment read pages number */
-    numPagesRead++;
-    
-    /* Decrement pages to read */
-    NumPageToRead--;
-    
-    /* Increment the NAND address */
-    nandAddress = (uint32_t)(nandAddress + 1);
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
   }
-  
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);  
-    
+  else
+  {
+    return HAL_ERROR;
+  }
+
   return HAL_OK;
 }
 
@@ -795,136 +836,151 @@
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
-  * @param  pBuffer  pointer to source buffer to write  
-  * @param  NumPageToWrite   number of pages to write to block 
+  * @param  pBuffer  pointer to source buffer to write
+  * @param  NumPageToWrite   number of pages to write to block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToWrite)
+HAL_StatusTypeDef HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
+                                         uint32_t NumPageToWrite)
 {
-  __IO uint32_t index = 0;
-  uint32_t tickstart = 0;
-  uint32_t deviceAddress = 0, size = 0, numPagesWritten = 0, nandAddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnand);  
+  uint32_t index;
+  uint32_t tickstart;
+  uint32_t deviceaddress;
+  uint32_t numpageswritten = 0U;
+  uint32_t nandaddress;
+  uint32_t nbpages = NumPageToWrite;
+  uint8_t *buff = pBuffer;
 
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
-  
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_BUSY;
-  
-  /* NAND raw address calculation */
-  nandAddress = ARRAY_ADDRESS(pAddress, hnand);
-  
-  /* Page(s) write loop */
-  while((NumPageToWrite != 0) && (nandAddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
-  {  
-    /* update the buffer size */
-    size = (hnand->Config.PageSize) + ((hnand->Config.PageSize) * numPagesWritten);
- 
-    /* Send write page command sequence */
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_A;
-    __DSB();
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE0;
-    __DSB();
+  else if (hnand->State == HAL_NAND_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnand);
 
-    /* Cards with page size <= 512 bytes */
-    if((hnand->Config.PageSize) <= 512)
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* NAND raw address calculation */
+    nandaddress = ARRAY_ADDRESS(pAddress, hnand);
+
+    /* Page(s) write loop */
+    while ((nbpages != 0U) && (nandaddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
     {
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    else /* (hnand->Config.PageSize) > 512 */
-    {
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    
-    /* Write data to memory */
-    for(; index < size; index++)
-    {
-      *(__IO uint8_t *)deviceAddress = *(uint8_t *)pBuffer++;
+      /* Send write page command sequence */
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_A;
       __DSB();
-    }
-   
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE_TRUE1;
-    __DSB();
-    
-	/* Get tick */
-    tickstart = HAL_GetTick();
-	
-    /* Read status until NAND is ready */
-    while(HAL_NAND_Read_Status(hnand) != NAND_READY)
-    {  
-      if((HAL_GetTick() - tickstart ) > NAND_WRITE_TIMEOUT)
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE0;
+      __DSB();
+
+      /* Cards with page size <= 512 bytes */
+      if ((hnand->Config.PageSize) <= 512U)
       {
-        return HAL_TIMEOUT; 
-      } 
-    }    
- 
-    /* Increment written pages number */
-    numPagesWritten++;
-    
-    /* Decrement pages to write */
-    NumPageToWrite--;
-    
-    /* Increment the NAND address */
-    nandAddress = (uint32_t)(nandAddress + 1);
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+      else /* (hnand->Config.PageSize) > 512 */
+      {
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+
+      /* Write data to memory */
+      for (index = 0U; index < hnand->Config.PageSize; index++)
+      {
+        *(__IO uint8_t *)deviceaddress = *buff;
+        buff++;
+        __DSB();
+      }
+
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE_TRUE1;
+      __DSB();
+
+      /* Get tick */
+      tickstart = HAL_GetTick();
+
+      /* Read status until NAND is ready */
+      while (HAL_NAND_Read_Status(hnand) != NAND_READY)
+      {
+        if ((HAL_GetTick() - tickstart) > NAND_WRITE_TIMEOUT)
+        {
+          /* Update the NAND controller state */
+          hnand->State = HAL_NAND_STATE_ERROR;
+
+          /* Process unlocked */
+          __HAL_UNLOCK(hnand);
+
+          return HAL_TIMEOUT;
+        }
+      }
+
+      /* Increment written pages number */
+      numpageswritten++;
+
+      /* Decrement pages to write */
+      nbpages--;
+
+      /* Increment the NAND address */
+      nandaddress = (uint32_t)(nandaddress + 1U);
+    }
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
   }
-  
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);      
-  
+  else
+  {
+    return HAL_ERROR;
+  }
+
   return HAL_OK;
 }
 
@@ -934,146 +990,161 @@
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
   * @param  pBuffer  pointer to source buffer to write. pBuffer should be 16bits aligned
-  * @param  NumPageToWrite   number of pages to write to block 
+  * @param  NumPageToWrite   number of pages to write to block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumPageToWrite)
+HAL_StatusTypeDef HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer,
+                                          uint32_t NumPageToWrite)
 {
-  __IO uint32_t index = 0;
-  uint32_t tickstart = 0;
-  uint32_t deviceAddress = 0, size = 0, numPagesWritten = 0, nandAddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnand);  
+  uint32_t index;
+  uint32_t tickstart;
+  uint32_t deviceaddress;
+  uint32_t numpageswritten = 0U;
+  uint32_t nandaddress;
+  uint32_t nbpages = NumPageToWrite;
+  uint16_t *buff = pBuffer;
 
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
-  
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_BUSY;
-  
-  /* NAND raw address calculation */
-  nandAddress = ARRAY_ADDRESS(pAddress, hnand);
-  
-  /* Page(s) write loop */
-  while((NumPageToWrite != 0) && (nandAddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
+  else if (hnand->State == HAL_NAND_STATE_READY)
   {
-    /* update the buffer size */
-    size = (hnand->Config.PageSize) + ((hnand->Config.PageSize) * numPagesWritten);
- 
-    /* Send write page command sequence */
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_A;
-    __DSB();
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE0;
-    __DSB();
+    /* Process Locked */
+    __HAL_LOCK(hnand);
 
-    /* Cards with page size <= 512 bytes */
-    if((hnand->Config.PageSize) <= 512)
-    {
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    else /* (hnand->Config.PageSize) > 512 */
-    {
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
 
-    /* Calculate PageSize */
-    if (hnand->Init.MemoryDataWidth == FMC_NAND_PCC_MEM_BUS_WIDTH_8)
-    {
-      size = size / 2U;
-    }
-    else
-    {
-      /* Do nothing */
-      /* Keep the same PageSize for FMC_NAND_MEM_BUS_WIDTH_16*/
-    }
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
 
-    /* Write data to memory */
-    for(; index < size; index++)
+    /* NAND raw address calculation */
+    nandaddress = ARRAY_ADDRESS(pAddress, hnand);
+
+    /* Page(s) write loop */
+    while ((nbpages != 0U) && (nandaddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
     {
-      *(__IO uint16_t *)deviceAddress = *(uint16_t *)pBuffer++;
+      /* Send write page command sequence */
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_A;
       __DSB();
-    }
-   
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE_TRUE1;
-    __DSB();
-    
-	/* Get tick */
-    tickstart = HAL_GetTick();
-	  
-    /* Read status until NAND is ready */
-    while(HAL_NAND_Read_Status(hnand) != NAND_READY)
-    {  
-      if((HAL_GetTick() - tickstart ) > NAND_WRITE_TIMEOUT)
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE0;
+      __DSB();
+
+      /* Cards with page size <= 512 bytes */
+      if ((hnand->Config.PageSize) <= 512U)
       {
-        return HAL_TIMEOUT; 
-      } 
-    }   
- 
-    /* Increment written pages number */
-    numPagesWritten++;
-    
-    /* Decrement pages to write */
-    NumPageToWrite--;
-    
-    /* Increment the NAND address */
-    nandAddress = (uint32_t)(nandAddress + 1);
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+      else /* (hnand->Config.PageSize) > 512 */
+      {
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+
+      /* Calculate PageSize */
+      if (hnand->Init.MemoryDataWidth == FMC_NAND_MEM_BUS_WIDTH_8)
+      {
+        hnand->Config.PageSize = hnand->Config.PageSize / 2U;
+      }
+      else
+      {
+        /* Do nothing */
+        /* Keep the same PageSize for FMC_NAND_MEM_BUS_WIDTH_16*/
+      }
+
+      /* Write data to memory */
+      for (index = 0U; index < hnand->Config.PageSize; index++)
+      {
+        *(__IO uint16_t *)deviceaddress = *buff;
+        buff++;
+        __DSB();
+      }
+
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE_TRUE1;
+      __DSB();
+
+      /* Get tick */
+      tickstart = HAL_GetTick();
+
+      /* Read status until NAND is ready */
+      while (HAL_NAND_Read_Status(hnand) != NAND_READY)
+      {
+        if ((HAL_GetTick() - tickstart) > NAND_WRITE_TIMEOUT)
+        {
+          /* Update the NAND controller state */
+          hnand->State = HAL_NAND_STATE_ERROR;
+
+          /* Process unlocked */
+          __HAL_UNLOCK(hnand);
+
+          return HAL_TIMEOUT;
+        }
+      }
+
+      /* Increment written pages number */
+      numpageswritten++;
+
+      /* Decrement pages to write */
+      nbpages--;
+
+      /* Increment the NAND address */
+      nandaddress = (uint32_t)(nandaddress + 1U);
+    }
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
   }
-  
-  /* Update the NAND controller state */ 
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);      
-  
+  else
+  {
+    return HAL_ERROR;
+  }
+
   return HAL_OK;
 }
 
@@ -1082,148 +1153,164 @@
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
-  * @param  pBuffer pointer to source buffer to write  
-  * @param  NumSpareAreaToRead Number of spare area to read  
+  * @param  pBuffer pointer to source buffer to write
+  * @param  NumSpareAreaToRead Number of spare area to read
   * @retval HAL status
-*/
-HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaToRead)
+  */
+HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
+                                             uint32_t NumSpareAreaToRead)
 {
-  __IO uint32_t index = 0;
-  uint32_t tickstart = 0U;
-  uint32_t deviceAddress = 0, size = 0, numSpareAreaRead = 0, nandAddress = 0, columnAddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnand);  
-  
-  /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
-  {
-     return HAL_BUSY;
-  }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
-  
-  /* Update the NAND controller state */
-  hnand->State = HAL_NAND_STATE_BUSY;
-  
-  /* NAND raw address calculation */
-  nandAddress = ARRAY_ADDRESS(pAddress, hnand);
-  
-  /* Column in page address */
-  columnAddress = COLUMN_ADDRESS(hnand);
-  
-  /* Spare area(s) read loop */ 
-  while((NumSpareAreaToRead != 0) && (nandAddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
-  {
-    /* update the buffer size */
-    size = (hnand->Config.SpareAreaSize) + ((hnand->Config.SpareAreaSize) * numSpareAreaRead);   
-    
-    /* Cards with page size <= 512 bytes */
-    if((hnand->Config.PageSize) <= 512)
-    {
-      /* Send read spare area command sequence */     
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_C;
-      __DSB();
-      
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    else /* (hnand->Config.PageSize) > 512 */
-    {
-      /* Send read spare area command sequence */ 
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_A;
-      __DSB();
-      
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
+  uint32_t index;
+  uint32_t tickstart;
+  uint32_t deviceaddress;
+  uint32_t numsparearearead = 0U;
+  uint32_t nandaddress;
+  uint32_t columnaddress;
+  uint32_t nbspare = NumSpareAreaToRead;
+  uint8_t *buff = pBuffer;
 
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_TRUE1;
-    __DSB();
-    
-    if(hnand->Config.ExtraCommandEnable == ENABLE)
+  /* Check the NAND controller state */
+  if (hnand->State == HAL_NAND_STATE_BUSY)
+  {
+    return HAL_BUSY;
+  }
+  else if (hnand->State == HAL_NAND_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnand);
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* NAND raw address calculation */
+    nandaddress = ARRAY_ADDRESS(pAddress, hnand);
+
+    /* Column in page address */
+    columnaddress = COLUMN_ADDRESS(hnand);
+
+    /* Spare area(s) read loop */
+    while ((nbspare != 0U) && (nandaddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
     {
-      /* Get tick */
-      tickstart = HAL_GetTick();
-      
-      /* Read status until NAND is ready */
-      while(HAL_NAND_Read_Status(hnand) != NAND_READY)
+      /* Cards with page size <= 512 bytes */
+      if ((hnand->Config.PageSize) <= 512U)
       {
-        if((HAL_GetTick() - tickstart ) > NAND_WRITE_TIMEOUT)
+        /* Send read spare area command sequence */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_C;
+        __DSB();
+
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
         {
-          return HAL_TIMEOUT; 
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
         }
       }
-      
-      /* Go back to read mode */
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = ((uint8_t)0x00U);
-      __DSB();
-    }
-    
-    /* Get Data into Buffer */
-    for(; index < size; index++)
-    {
-      *(uint8_t *)pBuffer++ = *(uint8_t *)deviceAddress;
-    }
-    
-    /* Increment read spare areas number */
-    numSpareAreaRead++;
-    
-    /* Decrement spare areas to read */
-    NumSpareAreaToRead--;
-    
-    /* Increment the NAND address */
-    nandAddress = (uint32_t)(nandAddress + 1);
-  }
-  
-  /* Update the NAND controller state */
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);     
+      else /* (hnand->Config.PageSize) > 512 */
+      {
+        /* Send read spare area command sequence */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_A;
+        __DSB();
 
-  return HAL_OK;  
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_TRUE1;
+      __DSB();
+
+      if (hnand->Config.ExtraCommandEnable == ENABLE)
+      {
+        /* Get tick */
+        tickstart = HAL_GetTick();
+
+        /* Read status until NAND is ready */
+        while (HAL_NAND_Read_Status(hnand) != NAND_READY)
+        {
+          if ((HAL_GetTick() - tickstart) > NAND_WRITE_TIMEOUT)
+          {
+            /* Update the NAND controller state */
+            hnand->State = HAL_NAND_STATE_ERROR;
+
+            /* Process unlocked */
+            __HAL_UNLOCK(hnand);
+
+            return HAL_TIMEOUT;
+          }
+        }
+
+        /* Go back to read mode */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = ((uint8_t)0x00);
+        __DSB();
+      }
+
+      /* Get Data into Buffer */
+      for (index = 0U; index < hnand->Config.SpareAreaSize; index++)
+      {
+        *buff = *(uint8_t *)deviceaddress;
+        buff++;
+      }
+
+      /* Increment read spare areas number */
+      numsparearearead++;
+
+      /* Decrement spare areas to read */
+      nbspare--;
+
+      /* Increment the NAND address */
+      nandaddress = (uint32_t)(nandaddress + 1U);
+    }
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
@@ -1232,147 +1319,163 @@
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
   * @param  pBuffer pointer to source buffer to write. pBuffer should be 16bits aligned.
-  * @param  NumSpareAreaToRead Number of spare area to read  
+  * @param  NumSpareAreaToRead Number of spare area to read
   * @retval HAL status
-*/
-HAL_StatusTypeDef HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumSpareAreaToRead)
+  */
+HAL_StatusTypeDef HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+                                              uint16_t *pBuffer, uint32_t NumSpareAreaToRead)
 {
-  __IO uint32_t index = 0; 
-  uint32_t tickstart = 0U;
-  uint32_t deviceAddress = 0, size = 0, numSpareAreaRead = 0, nandAddress = 0, columnAddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnand);  
-  
+  uint32_t index;
+  uint32_t tickstart;
+  uint32_t deviceaddress;
+  uint32_t numsparearearead = 0U;
+  uint32_t nandaddress;
+  uint32_t columnaddress;
+  uint32_t nbspare = NumSpareAreaToRead;
+  uint16_t *buff = pBuffer;
+
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
-  
-  /* Update the NAND controller state */
-  hnand->State = HAL_NAND_STATE_BUSY;
-  
-  /* NAND raw address calculation */
-  nandAddress = ARRAY_ADDRESS(pAddress, hnand);
-  
-  /* Column in page address */
-  columnAddress = (uint32_t)(COLUMN_ADDRESS(hnand));
-  
-  /* Spare area(s) read loop */ 
-  while((NumSpareAreaToRead != 0) && (nandAddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
+  else if (hnand->State == HAL_NAND_STATE_READY)
   {
-    /* update the buffer size */
-    size = (hnand->Config.SpareAreaSize) + ((hnand->Config.SpareAreaSize) * numSpareAreaRead);
+    /* Process Locked */
+    __HAL_LOCK(hnand);
 
-    /* Cards with page size <= 512 bytes */
-    if((hnand->Config.PageSize) <= 512)
-    {
-      /* Send read spare area command sequence */     
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_C;
-      __DSB();
-      
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    else /* (hnand->Config.PageSize) > 512 */
-    {
-      /* Send read spare area command sequence */     
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_A;
-      __DSB();
-      
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-      }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
 
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_TRUE1;
-    __DSB();
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
 
-    if(hnand->Config.ExtraCommandEnable == ENABLE)
+    /* NAND raw address calculation */
+    nandaddress = ARRAY_ADDRESS(pAddress, hnand);
+
+    /* Column in page address */
+    columnaddress = (uint32_t)(COLUMN_ADDRESS(hnand));
+
+    /* Spare area(s) read loop */
+    while ((nbspare != 0U) && (nandaddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
     {
-      /* Get tick */
-      tickstart = HAL_GetTick();
-      
-      /* Read status until NAND is ready */
-      while(HAL_NAND_Read_Status(hnand) != NAND_READY)
+      /* Cards with page size <= 512 bytes */
+      if ((hnand->Config.PageSize) <= 512U)
       {
-        if((HAL_GetTick() - tickstart ) > NAND_WRITE_TIMEOUT)
+        /* Send read spare area command sequence */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_C;
+        __DSB();
+
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
         {
-          return HAL_TIMEOUT; 
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
         }
       }
-      
-      /* Go back to read mode */
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = ((uint8_t)0x00U);
-      __DSB();
-    }
-    
-    /* Get Data into Buffer */
-    for(; index < size; index++)
-    {
-      *(uint16_t *)pBuffer++ = *(uint16_t *)deviceAddress;
-    }
-    
-    /* Increment read spare areas number */
-    numSpareAreaRead++;
-    
-    /* Decrement spare areas to read */
-    NumSpareAreaToRead--;
-    
-    /* Increment the NAND address */
-    nandAddress = (uint32_t)(nandAddress + 1);
-  }
-  
-  /* Update the NAND controller state */
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);     
+      else /* (hnand->Config.PageSize) > 512 */
+      {
+        /* Send read spare area command sequence */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_A;
+        __DSB();
 
-  return HAL_OK;  
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_TRUE1;
+      __DSB();
+
+      if (hnand->Config.ExtraCommandEnable == ENABLE)
+      {
+        /* Get tick */
+        tickstart = HAL_GetTick();
+
+        /* Read status until NAND is ready */
+        while (HAL_NAND_Read_Status(hnand) != NAND_READY)
+        {
+          if ((HAL_GetTick() - tickstart) > NAND_WRITE_TIMEOUT)
+          {
+            /* Update the NAND controller state */
+            hnand->State = HAL_NAND_STATE_ERROR;
+
+            /* Process unlocked */
+            __HAL_UNLOCK(hnand);
+
+            return HAL_TIMEOUT;
+          }
+        }
+
+        /* Go back to read mode */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = ((uint8_t)0x00);
+        __DSB();
+      }
+
+      /* Get Data into Buffer */
+      for (index = 0U; index < hnand->Config.SpareAreaSize; index++)
+      {
+        *buff = *(uint16_t *)deviceaddress;
+        buff++;
+      }
+
+      /* Increment read spare areas number */
+      numsparearearead++;
+
+      /* Decrement spare areas to read */
+      nbspare--;
+
+      /* Increment the NAND address */
+      nandaddress = (uint32_t)(nandaddress + 1U);
+    }
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
@@ -1380,146 +1483,162 @@
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
-  * @param  pBuffer  pointer to source buffer to write  
+  * @param  pBuffer  pointer to source buffer to write
   * @param  NumSpareAreaTowrite   number of spare areas to write to block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaTowrite)
+HAL_StatusTypeDef HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+                                              uint8_t *pBuffer, uint32_t NumSpareAreaTowrite)
 {
-  __IO uint32_t index = 0;
-  uint32_t tickstart = 0;
-  uint32_t deviceAddress = 0, size = 0, numSpareAreaWritten = 0, nandAddress = 0, columnAddress =0;
+  uint32_t index;
+  uint32_t tickstart;
+  uint32_t deviceaddress;
+  uint32_t numspareareawritten = 0U;
+  uint32_t nandaddress;
+  uint32_t columnaddress;
+  uint32_t nbspare = NumSpareAreaTowrite;
+  uint8_t *buff = pBuffer;
 
-  /* Process Locked */
-  __HAL_LOCK(hnand); 
-  
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
-  
-  /* Update the FMC_NAND controller state */
-  hnand->State = HAL_NAND_STATE_BUSY;  
-  
-  /* Page address calculation */
-  nandAddress = ARRAY_ADDRESS(pAddress, hnand); 
-  
-  /* Column in page address */
-  columnAddress = COLUMN_ADDRESS(hnand);
-  
-  /* Spare area(s) write loop */
-  while((NumSpareAreaTowrite != 0) && (nandAddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
+  else if (hnand->State == HAL_NAND_STATE_READY)
   {
-    /* update the buffer size */
-    size = (hnand->Config.SpareAreaSize) + ((hnand->Config.SpareAreaSize) * numSpareAreaWritten);
+    /* Process Locked */
+    __HAL_LOCK(hnand);
 
-    /* Cards with page size <= 512 bytes */
-    if((hnand->Config.PageSize) <= 512)
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* Page address calculation */
+    nandaddress = ARRAY_ADDRESS(pAddress, hnand);
+
+    /* Column in page address */
+    columnaddress = COLUMN_ADDRESS(hnand);
+
+    /* Spare area(s) write loop */
+    while ((nbspare != 0U) && (nandaddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
     {
-      /* Send write Spare area command sequence */
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_C;
-      __DSB();
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE0;
-      __DSB();
-      
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
+      /* Cards with page size <= 512 bytes */
+      if ((hnand->Config.PageSize) <= 512U)
       {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
+        /* Send write Spare area command sequence */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_C;
         __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE0;
         __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
+
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+      else /* (hnand->Config.PageSize) > 512 */
+      {
+        /* Send write Spare area command sequence */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_A;
+        __DSB();
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE0;
+        __DSB();
+
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+
+      /* Write data to memory */
+      for (index = 0U; index < hnand->Config.SpareAreaSize; index++)
+      {
+        *(__IO uint8_t *)deviceaddress = *buff;
+        buff++;
         __DSB();
       }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    else /* (hnand->Config.PageSize) > 512 */
-    {
-      /* Send write Spare area command sequence */
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_A;
+
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE_TRUE1;
       __DSB();
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE0;
-      __DSB();
-    
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
+
+      /* Get tick */
+      tickstart = HAL_GetTick();
+
+      /* Read status until NAND is ready */
+      while (HAL_NAND_Read_Status(hnand) != NAND_READY)
       {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
+        if ((HAL_GetTick() - tickstart) > NAND_WRITE_TIMEOUT)
+        {
+          /* Update the NAND controller state */
+          hnand->State = HAL_NAND_STATE_ERROR;
+
+          /* Process unlocked */
+          __HAL_UNLOCK(hnand);
+
+          return HAL_TIMEOUT;
+        }
       }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-  
-    /* Write data to memory */
-    for(; index < size; index++)
-    {
-      *(__IO uint8_t *)deviceAddress = *(uint8_t *)pBuffer++;
-      __DSB();
-    }
-   
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE_TRUE1;
-    __DSB();
-   
-    /* Get tick */
-    tickstart = HAL_GetTick();
-	
-    /* Read status until NAND is ready */
-    while(HAL_NAND_Read_Status(hnand) != NAND_READY)
-    {  
-      if((HAL_GetTick() - tickstart ) > NAND_WRITE_TIMEOUT)
-      {
-        return HAL_TIMEOUT; 
-      }
+
+      /* Increment written spare areas number */
+      numspareareawritten++;
+
+      /* Decrement spare areas to write */
+      nbspare--;
+
+      /* Increment the NAND address */
+      nandaddress = (uint32_t)(nandaddress + 1U);
     }
 
-    /* Increment written spare areas number */
-    numSpareAreaWritten++;
-    
-    /* Decrement spare areas to write */
-    NumSpareAreaTowrite--;
-    
-    /* Increment the NAND address */
-    nandAddress = (uint32_t)(nandAddress + 1);
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
+  }
+  else
+  {
+    return HAL_ERROR;
   }
 
-  /* Update the NAND controller state */
-  hnand->State = HAL_NAND_STATE_READY;
-
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);
-
-  return HAL_OK;  
+  return HAL_OK;
 }
 
 /**
@@ -1527,150 +1646,166 @@
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
-  * @param  pBuffer  pointer to source buffer to write. pBuffer should be 16bits aligned.  
+  * @param  pBuffer  pointer to source buffer to write. pBuffer should be 16bits aligned.
   * @param  NumSpareAreaTowrite   number of spare areas to write to block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumSpareAreaTowrite)
+HAL_StatusTypeDef HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+                                               uint16_t *pBuffer, uint32_t NumSpareAreaTowrite)
 {
-  __IO uint32_t index = 0;
-  uint32_t tickstart = 0;
-  uint32_t deviceAddress = 0, size = 0, numSpareAreaWritten = 0, nandAddress = 0, columnAddress = 0;
+  uint32_t index;
+  uint32_t tickstart;
+  uint32_t deviceaddress;
+  uint32_t numspareareawritten = 0U;
+  uint32_t nandaddress;
+  uint32_t columnaddress;
+  uint32_t nbspare = NumSpareAreaTowrite;
+  uint16_t *buff = pBuffer;
 
-  /* Process Locked */
-  __HAL_LOCK(hnand); 
-  
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Identify the device address */
-  deviceAddress = NAND_DEVICE;
-  
-  /* Update the FMC_NAND controller state */
-  hnand->State = HAL_NAND_STATE_BUSY;  
-  
-  /* NAND raw address calculation */
-  nandAddress = ARRAY_ADDRESS(pAddress, hnand);
-  
-  /* Column in page address */
-  columnAddress = (uint32_t)(COLUMN_ADDRESS(hnand));
-  
-  /* Spare area(s) write loop */
-  while((NumSpareAreaTowrite != 0) && (nandAddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
+  else if (hnand->State == HAL_NAND_STATE_READY)
   {
-    /* update the buffer size */
-    size = (hnand->Config.SpareAreaSize) + ((hnand->Config.SpareAreaSize) * numSpareAreaWritten);
+    /* Process Locked */
+    __HAL_LOCK(hnand);
 
-    /* Cards with page size <= 512 bytes */
-    if((hnand->Config.PageSize) <= 512)
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* NAND raw address calculation */
+    nandaddress = ARRAY_ADDRESS(pAddress, hnand);
+
+    /* Column in page address */
+    columnaddress = (uint32_t)(COLUMN_ADDRESS(hnand));
+
+    /* Spare area(s) write loop */
+    while ((nbspare != 0U) && (nandaddress < ((hnand->Config.BlockSize) * (hnand->Config.BlockNbr))))
     {
-      /* Send write Spare area command sequence */
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_C;
-      __DSB();
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE0;
-      __DSB();
-    
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
+      /* Cards with page size <= 512 bytes */
+      if ((hnand->Config.PageSize) <= 512U)
       {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
+        /* Send write Spare area command sequence */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_C;
         __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE0;
         __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
+
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = 0x00U;
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+      else /* (hnand->Config.PageSize) > 512 */
+      {
+        /* Send write Spare area command sequence */
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_AREA_A;
+        __DSB();
+        *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE0;
+        __DSB();
+
+        if (((hnand->Config.BlockSize) * (hnand->Config.BlockNbr)) <= 65535U)
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+        }
+        else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
+        {
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandaddress);
+          __DSB();
+          *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandaddress);
+          __DSB();
+        }
+      }
+
+      /* Write data to memory */
+      for (index = 0U; index < hnand->Config.SpareAreaSize; index++)
+      {
+        *(__IO uint16_t *)deviceaddress = *buff;
+        buff++;
         __DSB();
       }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = 0x00;
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-    else /* (hnand->Config.PageSize) > 512 */
-    {
-      /* Send write Spare area command sequence */
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_AREA_A;
+
+      *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_WRITE_TRUE1;
       __DSB();
-      *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE0;
-      __DSB();
-    
-      if (((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) <= 65535)
+
+      /* Get tick */
+      tickstart = HAL_GetTick();
+
+      /* Read status until NAND is ready */
+      while (HAL_NAND_Read_Status(hnand) != NAND_READY)
       {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
+        if ((HAL_GetTick() - tickstart) > NAND_WRITE_TIMEOUT)
+        {
+          /* Update the NAND controller state */
+          hnand->State = HAL_NAND_STATE_ERROR;
+
+          /* Process unlocked */
+          __HAL_UNLOCK(hnand);
+
+          return HAL_TIMEOUT;
+        }
       }
-      else /* ((hnand->Config.BlockSize)*(hnand->Config.BlockNbr)) > 65535 */
-      {
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_1ST_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = COLUMN_2ND_CYCLE(columnAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(nandAddress);
-        __DSB();
-        *(__IO uint8_t *)((uint32_t)(deviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(nandAddress);
-        __DSB();
-      }
-    }
-  
-    /* Write data to memory */
-    for(; index < size; index++)
-    {
-      *(__IO uint16_t *)deviceAddress = *(uint16_t *)pBuffer++;
-      __DSB();
-    }
-   
-    *(__IO uint8_t *)((uint32_t)(deviceAddress | CMD_AREA)) = NAND_CMD_WRITE_TRUE1;
-    __DSB();
-   
-    /* Get tick */
-    tickstart = HAL_GetTick();
-	  
-    /* Read status until NAND is ready */
-    while(HAL_NAND_Read_Status(hnand) != NAND_READY)
-    { 
-      if((HAL_GetTick() - tickstart ) > NAND_WRITE_TIMEOUT)
-      {
-        return HAL_TIMEOUT; 
-      }
+
+      /* Increment written spare areas number */
+      numspareareawritten++;
+
+      /* Decrement spare areas to write */
+      nbspare--;
+
+      /* Increment the NAND address */
+      nandaddress = (uint32_t)(nandaddress + 1U);
     }
 
-    /* Increment written spare areas number */
-    numSpareAreaWritten++;
-    
-    /* Decrement spare areas to write */
-    NumSpareAreaTowrite--;
-    
-    /* Increment the NAND address */
-    nandAddress = (uint32_t)(nandAddress + 1);
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
+  }
+  else
+  {
+    return HAL_ERROR;
   }
 
-  /* Update the NAND controller state */
-  hnand->State = HAL_NAND_STATE_READY;
-
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);
-
-  return HAL_OK;  
+  return HAL_OK;
 }
 
 /**
-  * @brief  NAND memory Block erase 
+  * @brief  NAND memory Block erase
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @param  pAddress  pointer to NAND address structure
@@ -1678,43 +1813,49 @@
   */
 HAL_StatusTypeDef HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
 {
-  uint32_t DeviceAddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnand);
-  
+  uint32_t deviceaddress;
+
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Identify the device address */
-  DeviceAddress = NAND_DEVICE;
-  
-  /* Update the NAND controller state */
-  hnand->State = HAL_NAND_STATE_BUSY;  
-  
-  /* Send Erase block command sequence */
-  *(__IO uint8_t *)((uint32_t)(DeviceAddress | CMD_AREA)) = NAND_CMD_ERASE0;
-  __DSB();
-  *(__IO uint8_t *)((uint32_t)(DeviceAddress | ADDR_AREA)) = ADDR_1ST_CYCLE(ARRAY_ADDRESS(pAddress, hnand));
+  else if (hnand->State == HAL_NAND_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnand);
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Identify the device address */
+    deviceaddress = NAND_DEVICE;
+
+    /* Send Erase block command sequence */
+    *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_ERASE0;
     __DSB();
-  *(__IO uint8_t *)((uint32_t)(DeviceAddress | ADDR_AREA)) = ADDR_2ND_CYCLE(ARRAY_ADDRESS(pAddress, hnand));
+    *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_1ST_CYCLE(ARRAY_ADDRESS(pAddress, hnand));
     __DSB();
-  *(__IO uint8_t *)((uint32_t)(DeviceAddress | ADDR_AREA)) = ADDR_3RD_CYCLE(ARRAY_ADDRESS(pAddress, hnand));
-  __DSB();
-		
-  *(__IO uint8_t *)((uint32_t)(DeviceAddress | CMD_AREA)) = NAND_CMD_ERASE1; 
-  __DSB();
-  
-  /* Update the NAND controller state */
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnand);    
-  
-  return HAL_OK;  
+    *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_2ND_CYCLE(ARRAY_ADDRESS(pAddress, hnand));
+    __DSB();
+    *(__IO uint8_t *)((uint32_t)(deviceaddress | ADDR_AREA)) = ADDR_3RD_CYCLE(ARRAY_ADDRESS(pAddress, hnand));
+    __DSB();
+
+    *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_ERASE1;
+    __DSB();
+
+    /* Update the NAND controller state */
+    hnand->State = HAL_NAND_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnand);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
@@ -1729,28 +1870,28 @@
 uint32_t HAL_NAND_Address_Inc(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
 {
   uint32_t status = NAND_VALID_ADDRESS;
- 
+
   /* Increment page address */
   pAddress->Page++;
 
   /* Check NAND address is valid */
-  if(pAddress->Page == hnand->Config.BlockSize)
+  if (pAddress->Page == hnand->Config.BlockSize)
   {
     pAddress->Page = 0;
     pAddress->Block++;
-    
-    if(pAddress->Block == hnand->Config.PlaneSize)
+
+    if (pAddress->Block == hnand->Config.PlaneSize)
     {
       pAddress->Block = 0;
       pAddress->Plane++;
 
-      if(pAddress->Plane == (hnand->Config.PlaneNbr))
+      if (pAddress->Plane == (hnand->Config.PlaneNbr))
       {
         status = NAND_INVALID_ADDRESS;
       }
     }
-  } 
-  
+  }
+
   return (status);
 }
 
@@ -1767,11 +1908,12 @@
   * @param pCallback : pointer to the Callback function
   * @retval status
   */
-HAL_StatusTypeDef HAL_NAND_RegisterCallback (NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId, pNAND_CallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_NAND_RegisterCallback(NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId,
+                                            pNAND_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  if(pCallback == NULL)
+  if (pCallback == NULL)
   {
     return HAL_ERROR;
   }
@@ -1779,39 +1921,39 @@
   /* Process locked */
   __HAL_LOCK(hnand);
 
-  if(hnand->State == HAL_NAND_STATE_READY)
+  if (hnand->State == HAL_NAND_STATE_READY)
   {
     switch (CallbackId)
     {
-    case HAL_NAND_MSP_INIT_CB_ID :
-      hnand->MspInitCallback = pCallback;
-      break;
-    case HAL_NAND_MSP_DEINIT_CB_ID :
-      hnand->MspDeInitCallback = pCallback;
-      break;
-    case HAL_NAND_IT_CB_ID :
-      hnand->ItCallback = pCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_NAND_MSP_INIT_CB_ID :
+        hnand->MspInitCallback = pCallback;
+        break;
+      case HAL_NAND_MSP_DEINIT_CB_ID :
+        hnand->MspDeInitCallback = pCallback;
+        break;
+      case HAL_NAND_IT_CB_ID :
+        hnand->ItCallback = pCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
-  else if(hnand->State == HAL_NAND_STATE_RESET)
+  else if (hnand->State == HAL_NAND_STATE_RESET)
   {
     switch (CallbackId)
     {
-    case HAL_NAND_MSP_INIT_CB_ID :
-      hnand->MspInitCallback = pCallback;
-      break;
-    case HAL_NAND_MSP_DEINIT_CB_ID :
-      hnand->MspDeInitCallback = pCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_NAND_MSP_INIT_CB_ID :
+        hnand->MspInitCallback = pCallback;
+        break;
+      case HAL_NAND_MSP_DEINIT_CB_ID :
+        hnand->MspDeInitCallback = pCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -1836,46 +1978,46 @@
   *          @arg @ref HAL_NAND_IT_CB_ID             NAND IT callback ID
   * @retval status
   */
-HAL_StatusTypeDef HAL_NAND_UnRegisterCallback (NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId)
+HAL_StatusTypeDef HAL_NAND_UnRegisterCallback(NAND_HandleTypeDef *hnand, HAL_NAND_CallbackIDTypeDef CallbackId)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
   /* Process locked */
   __HAL_LOCK(hnand);
 
-  if(hnand->State == HAL_NAND_STATE_READY)
+  if (hnand->State == HAL_NAND_STATE_READY)
   {
     switch (CallbackId)
     {
-    case HAL_NAND_MSP_INIT_CB_ID :
-      hnand->MspInitCallback = HAL_NAND_MspInit;
-      break;
-    case HAL_NAND_MSP_DEINIT_CB_ID :
-      hnand->MspDeInitCallback = HAL_NAND_MspDeInit;
-      break;
-    case HAL_NAND_IT_CB_ID :
-      hnand->ItCallback = HAL_NAND_ITCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_NAND_MSP_INIT_CB_ID :
+        hnand->MspInitCallback = HAL_NAND_MspInit;
+        break;
+      case HAL_NAND_MSP_DEINIT_CB_ID :
+        hnand->MspDeInitCallback = HAL_NAND_MspDeInit;
+        break;
+      case HAL_NAND_IT_CB_ID :
+        hnand->ItCallback = HAL_NAND_ITCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
-  else if(hnand->State == HAL_NAND_STATE_RESET)
+  else if (hnand->State == HAL_NAND_STATE_RESET)
   {
     switch (CallbackId)
     {
-    case HAL_NAND_MSP_INIT_CB_ID :
-      hnand->MspInitCallback = HAL_NAND_MspInit;
-      break;
-    case HAL_NAND_MSP_DEINIT_CB_ID :
-      hnand->MspDeInitCallback = HAL_NAND_MspDeInit;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_NAND_MSP_INIT_CB_ID :
+        hnand->MspInitCallback = HAL_NAND_MspInit;
+        break;
+      case HAL_NAND_MSP_DEINIT_CB_ID :
+        hnand->MspDeInitCallback = HAL_NAND_MspDeInit;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -1888,52 +2030,58 @@
   __HAL_UNLOCK(hnand);
   return status;
 }
-#endif
+#endif /* USE_HAL_NAND_REGISTER_CALLBACKS */
 
 /**
   * @}
   */
 
-/** @defgroup NAND_Exported_Functions_Group3 Peripheral Control functions 
- *  @brief   management functions 
- *
-@verbatim   
+/** @defgroup NAND_Exported_Functions_Group3 Peripheral Control functions
+  *  @brief   management functions
+  *
+@verbatim
   ==============================================================================
                          ##### NAND Control functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
     This subsection provides a set of functions allowing to control dynamically
     the NAND interface.
 
 @endverbatim
   * @{
-  */ 
+  */
 
-    
+
 /**
   * @brief  Enables dynamically NAND ECC feature.
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @retval HAL status
-  */    
+  */
 HAL_StatusTypeDef  HAL_NAND_ECC_Enable(NAND_HandleTypeDef *hnand)
 {
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
+  }
+  else if (hnand->State == HAL_NAND_STATE_READY)
+  {
+    /* Update the NAND state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Enable ECC feature */
+    (void)FMC_NAND_ECC_Enable(hnand->Instance, hnand->Init.NandBank);
+
+    /* Update the NAND state */
+    hnand->State = HAL_NAND_STATE_READY;
+  }
+  else
+  {
+    return HAL_ERROR;
   }
 
-  /* Update the NAND state */
-  hnand->State = HAL_NAND_STATE_BUSY;
-   
-  /* Enable ECC feature */
-  FMC_NAND_ECC_Enable(hnand->Instance, hnand->Init.NandBank);
-  
-  /* Update the NAND state */
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  return HAL_OK;  
+  return HAL_OK;
 }
 
 /**
@@ -1941,77 +2089,89 @@
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @retval HAL status
-  */  
-HAL_StatusTypeDef  HAL_NAND_ECC_Disable(NAND_HandleTypeDef *hnand)  
+  */
+HAL_StatusTypeDef  HAL_NAND_ECC_Disable(NAND_HandleTypeDef *hnand)
 {
   /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
+  if (hnand->State == HAL_NAND_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
+  }
+  else if (hnand->State == HAL_NAND_STATE_READY)
+  {
+    /* Update the NAND state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Disable ECC feature */
+    (void)FMC_NAND_ECC_Disable(hnand->Instance, hnand->Init.NandBank);
+
+    /* Update the NAND state */
+    hnand->State = HAL_NAND_STATE_READY;
+  }
+  else
+  {
+    return HAL_ERROR;
   }
 
-  /* Update the NAND state */
-  hnand->State = HAL_NAND_STATE_BUSY;
-    
-  /* Disable ECC feature */
-  FMC_NAND_ECC_Disable(hnand->Instance, hnand->Init.NandBank);
-  
-  /* Update the NAND state */
-  hnand->State = HAL_NAND_STATE_READY;
-  
-  return HAL_OK;  
+  return HAL_OK;
 }
 
 /**
   * @brief  Disables dynamically NAND ECC feature.
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
-  * @param  ECCval pointer to ECC value 
-  * @param  Timeout maximum timeout to wait    
+  * @param  ECCval pointer to ECC value
+  * @param  Timeout maximum timeout to wait
   * @retval HAL status
   */
 HAL_StatusTypeDef  HAL_NAND_GetECC(NAND_HandleTypeDef *hnand, uint32_t *ECCval, uint32_t Timeout)
 {
-  HAL_StatusTypeDef status = HAL_OK;
-  
-  /* Check the NAND controller state */
-  if(hnand->State == HAL_NAND_STATE_BUSY)
-  {
-     return HAL_BUSY;
-  }
-  
-  /* Update the NAND state */
-  hnand->State = HAL_NAND_STATE_BUSY;  
-   
-  /* Get NAND ECC value */
-  status = FMC_NAND_GetECC(hnand->Instance, ECCval, hnand->Init.NandBank, Timeout);
-  
-  /* Update the NAND state */
-  hnand->State = HAL_NAND_STATE_READY;
+  HAL_StatusTypeDef status;
 
-  return status;  
+  /* Check the NAND controller state */
+  if (hnand->State == HAL_NAND_STATE_BUSY)
+  {
+    return HAL_BUSY;
+  }
+  else if (hnand->State == HAL_NAND_STATE_READY)
+  {
+    /* Update the NAND state */
+    hnand->State = HAL_NAND_STATE_BUSY;
+
+    /* Get NAND ECC value */
+    status = FMC_NAND_GetECC(hnand->Instance, ECCval, hnand->Init.NandBank, Timeout);
+
+    /* Update the NAND state */
+    hnand->State = HAL_NAND_STATE_READY;
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return status;
 }
-                      
+
 /**
   * @}
   */
-  
-    
-/** @defgroup NAND_Exported_Functions_Group4 Peripheral State functions  
- *  @brief   Peripheral State functions 
- *
-@verbatim   
+
+
+/** @defgroup NAND_Exported_Functions_Group4 Peripheral State functions
+  *  @brief   Peripheral State functions
+  *
+@verbatim
   ==============================================================================
                          ##### NAND State functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
-    This subsection permits to get in run-time the status of the NAND controller 
+    This subsection permits to get in run-time the status of the NAND controller
     and the data flow.
 
 @endverbatim
   * @{
   */
-  
+
 /**
   * @brief  return the NAND state
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
@@ -2024,41 +2184,48 @@
 }
 
 /**
-  * @brief  NAND memory read status 
+  * @brief  NAND memory read status
   * @param  hnand pointer to a NAND_HandleTypeDef structure that contains
   *                the configuration information for NAND module.
   * @retval NAND status
   */
 uint32_t HAL_NAND_Read_Status(NAND_HandleTypeDef *hnand)
 {
-  uint32_t data = 0;
-  uint32_t DeviceAddress = 0;
-  
+  uint32_t data;
+  uint32_t deviceaddress;
+  UNUSED(hnand);
+
   /* Identify the device address */
-   DeviceAddress = NAND_DEVICE;
+  deviceaddress = NAND_DEVICE;
 
   /* Send Read status operation command */
-  *(__IO uint8_t *)((uint32_t)(DeviceAddress | CMD_AREA)) = NAND_CMD_STATUS;
-  
+  *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_STATUS;
+
   /* Read status register data */
-  data = *(__IO uint8_t *)DeviceAddress;
+  data = *(__IO uint8_t *)deviceaddress;
 
   /* Return the status */
-  if((data & NAND_ERROR) == NAND_ERROR)
+  if ((data & NAND_ERROR) == NAND_ERROR)
   {
     return NAND_ERROR;
-  } 
-  else if((data & NAND_READY) == NAND_READY)
+  }
+  else if ((data & NAND_READY) == NAND_READY)
   {
     return NAND_READY;
   }
-
-  return NAND_BUSY; 
+  else
+  {
+    return NAND_BUSY;
+  }
 }
 
 /**
   * @}
-  */  
+  */
+
+/**
+  * @}
+  */
 
 /**
   * @}
@@ -2070,8 +2237,3 @@
   * @}
   */
 
-/**
-  * @}
-  */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_nor.c b/Src/stm32f7xx_hal_nor.c
index 1d167ac..c0ffc76 100644
--- a/Src/stm32f7xx_hal_nor.c
+++ b/Src/stm32f7xx_hal_nor.c
@@ -3,50 +3,61 @@
   * @file    stm32f7xx_hal_nor.c
   * @author  MCD Application Team
   * @brief   NOR HAL module driver.
-  *          This file provides a generic firmware to drive NOR memories mounted 
+  *          This file provides a generic firmware to drive NOR memories mounted
   *          as external device.
-  *         
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
-  ==============================================================================       
+  ==============================================================================
     [..]
-      This driver is a generic layered driver which contains a set of APIs used to 
-      control NOR flash memories. It uses the FMC layer functions to interface 
+      This driver is a generic layered driver which contains a set of APIs used to
+      control NOR flash memories. It uses the FMC layer functions to interface
       with NOR devices. This driver is used as follows:
-    
-      (+) NOR flash memory configuration sequence using the function HAL_NOR_Init() 
+
+      (+) NOR flash memory configuration sequence using the function HAL_NOR_Init()
           with control and timing parameters for both normal and extended mode.
-            
+
       (+) Read NOR flash memory manufacturer code and device IDs using the function
-          HAL_NOR_Read_ID(). The read information is stored in the NOR_ID_TypeDef 
-          structure declared by the function caller. 
-        
+          HAL_NOR_Read_ID(). The read information is stored in the NOR_ID_TypeDef
+          structure declared by the function caller.
+
       (+) Access NOR flash memory by read/write data unit operations using the functions
           HAL_NOR_Read(), HAL_NOR_Program().
-        
-      (+) Perform NOR flash erase block/chip operations using the functions 
+
+      (+) Perform NOR flash erase block/chip operations using the functions
           HAL_NOR_Erase_Block() and HAL_NOR_Erase_Chip().
-        
+
       (+) Read the NOR flash CFI (common flash interface) IDs using the function
           HAL_NOR_Read_CFI(). The read information is stored in the NOR_CFI_TypeDef
           structure declared by the function caller.
-        
+
       (+) You can also control the NOR device by calling the control APIs HAL_NOR_WriteOperation_Enable()/
-          HAL_NOR_WriteOperation_Disable() to respectively enable/disable the NOR write operation  
-       
+          HAL_NOR_WriteOperation_Disable() to respectively enable/disable the NOR write operation
+
       (+) You can monitor the NOR device HAL state by calling the function
-          HAL_NOR_GetState() 
+          HAL_NOR_GetState()
     [..]
      (@) This driver is a set of generic APIs which handle standard NOR flash operations.
-         If a NOR flash device contains different operations and/or implementations, 
+         If a NOR flash device contains different operations and/or implementations,
          it should be implemented separately.
 
      *** NOR HAL driver macros list ***
-     ============================================= 
+     =============================================
      [..]
        Below the list of most used macros in NOR HAL driver.
-       
+
       (+) NOR_WRITE : NOR memory write data to specified address
 
     *** Callback registration ***
@@ -55,25 +66,25 @@
       The compilation define  USE_HAL_NOR_REGISTER_CALLBACKS when set to 1
       allows the user to configure dynamically the driver callbacks.
 
-      Use Functions @ref HAL_NOR_RegisterCallback() to register a user callback,
+      Use Functions HAL_NOR_RegisterCallback() to register a user callback,
       it allows to register following callbacks:
         (+) MspInitCallback    : NOR MspInit.
         (+) MspDeInitCallback  : NOR MspDeInit.
       This function takes as parameters the HAL peripheral handle, the Callback ID
       and a pointer to the user callback function.
 
-      Use function @ref HAL_NOR_UnRegisterCallback() to reset a callback to the default
+      Use function HAL_NOR_UnRegisterCallback() to reset a callback to the default
       weak (surcharged) function. It allows to reset following callbacks:
         (+) MspInitCallback    : NOR MspInit.
         (+) MspDeInitCallback  : NOR MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
-      By default, after the @ref HAL_NOR_Init and if the state is HAL_NOR_STATE_RESET
+      By default, after the HAL_NOR_Init and if the state is HAL_NOR_STATE_RESET
       all callbacks are reset to the corresponding legacy weak (surcharged) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the @ref HAL_NOR_Init
-      and @ref  HAL_NOR_DeInit only when these callbacks are null (not registered beforehand).
-      If not, MspInit or MspDeInit are not null, the @ref HAL_NOR_Init and @ref HAL_NOR_DeInit
+      reset to the legacy weak (surcharged) functions in the HAL_NOR_Init
+      and  HAL_NOR_DeInit only when these callbacks are null (not registered beforehand).
+      If not, MspInit or MspDeInit are not null, the HAL_NOR_Init and HAL_NOR_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
       Callbacks can be registered/unregistered in READY state only.
@@ -81,8 +92,8 @@
       in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
       during the Init/DeInit.
       In that case first register the MspInit/MspDeInit user callbacks
-      using @ref HAL_NOR_RegisterCallback before calling @ref HAL_NOR_DeInit
-      or @ref HAL_NOR_Init function.
+      using HAL_NOR_RegisterCallback before calling HAL_NOR_DeInit
+      or HAL_NOR_Init function.
 
       When The compilation define USE_HAL_NOR_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
@@ -90,35 +101,26 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
-  */ 
+  */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
 
+
 /** @addtogroup STM32F7xx_HAL_Driver
   * @{
   */
 
+#ifdef HAL_NOR_MODULE_ENABLED
+
 /** @defgroup NOR NOR
   * @brief NOR driver modules
   * @{
   */
-#ifdef HAL_NOR_MODULE_ENABLED
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
-      
+
 /** @defgroup NOR_Private_Defines NOR Private Defines
   * @{
   */
@@ -148,14 +150,40 @@
 #define NOR_CMD_DATA_BUFFER_AND_PROG_CONFIRM  (uint8_t)0x29
 #define NOR_CMD_DATA_BLOCK_ERASE              (uint8_t)0x30
 
+#define NOR_CMD_READ_ARRAY                    (uint16_t)0x00FF
+#define NOR_CMD_WORD_PROGRAM                  (uint16_t)0x0040
+#define NOR_CMD_BUFFERED_PROGRAM              (uint16_t)0x00E8
+#define NOR_CMD_CONFIRM                       (uint16_t)0x00D0
+#define NOR_CMD_BLOCK_ERASE                   (uint16_t)0x0020
+#define NOR_CMD_BLOCK_UNLOCK                  (uint16_t)0x0060
+#define NOR_CMD_READ_STATUS_REG               (uint16_t)0x0070
+#define NOR_CMD_CLEAR_STATUS_REG              (uint16_t)0x0050
+
 /* Mask on NOR STATUS REGISTER */
+#define NOR_MASK_STATUS_DQ4                   (uint16_t)0x0010
 #define NOR_MASK_STATUS_DQ5                   (uint16_t)0x0020
 #define NOR_MASK_STATUS_DQ6                   (uint16_t)0x0040
+#define NOR_MASK_STATUS_DQ7                   (uint16_t)0x0080
+
+/* Address of the primary command set */
+#define NOR_ADDRESS_COMMAND_SET               (uint16_t)0x0013
+
+/* Command set code assignment (defined in JEDEC JEP137B version may 2004) */
+#define NOR_INTEL_SHARP_EXT_COMMAND_SET       (uint16_t)0x0001 /* Supported in this driver */
+#define NOR_AMD_FUJITSU_COMMAND_SET           (uint16_t)0x0002 /* Supported in this driver */
+#define NOR_INTEL_STANDARD_COMMAND_SET        (uint16_t)0x0003 /* Not Supported in this driver */
+#define NOR_AMD_FUJITSU_EXT_COMMAND_SET       (uint16_t)0x0004 /* Not Supported in this driver */
+#define NOR_WINDBOND_STANDARD_COMMAND_SET     (uint16_t)0x0006 /* Not Supported in this driver */
+#define NOR_MITSUBISHI_STANDARD_COMMAND_SET   (uint16_t)0x0100 /* Not Supported in this driver */
+#define NOR_MITSUBISHI_EXT_COMMAND_SET        (uint16_t)0x0101 /* Not Supported in this driver */
+#define NOR_PAGE_WRITE_COMMAND_SET            (uint16_t)0x0102 /* Not Supported in this driver */
+#define NOR_INTEL_PERFORMANCE_COMMAND_SET     (uint16_t)0x0200 /* Not Supported in this driver */
+#define NOR_INTEL_DATA_COMMAND_SET            (uint16_t)0x0210 /* Not Supported in this driver */
 
 /**
   * @}
   */
-      
+
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /** @defgroup NOR_Private_Variables NOR Private Variables
@@ -174,44 +202,47 @@
   * @{
   */
 
-/** @defgroup NOR_Exported_Functions_Group1 Initialization and de-initialization functions 
-  * @brief    Initialization and Configuration functions 
+/** @defgroup NOR_Exported_Functions_Group1 Initialization and de-initialization functions
+  * @brief    Initialization and Configuration functions
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
            ##### NOR Initialization and de_initialization functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to initialize/de-initialize
     the NOR memory
-  
+
 @endverbatim
   * @{
   */
-    
+
 /**
   * @brief  Perform the NOR memory Initialization sequence
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
   *                the configuration information for NOR module.
-  * @param  Timing pointer to NOR control timing structure 
-  * @param  ExtTiming pointer to NOR extended mode timing structure    
+  * @param  Timing pointer to NOR control timing structure
+  * @param  ExtTiming pointer to NOR extended mode timing structure
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming)
+HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing,
+                               FMC_NORSRAM_TimingTypeDef *ExtTiming)
 {
+  uint32_t deviceaddress;
+
   /* Check the NOR handle parameter */
-  if(hnor == NULL)
+  if (hnor == NULL)
   {
-     return HAL_ERROR;
+    return HAL_ERROR;
   }
-  
-  if(hnor->State == HAL_NOR_STATE_RESET)
+
+  if (hnor->State == HAL_NOR_STATE_RESET)
   {
     /* Allocate lock resource and initialize it */
     hnor->Lock = HAL_UNLOCKED;
 
 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
-    if(hnor->MspInitCallback == NULL)
+    if (hnor->MspInitCallback == NULL)
     {
       hnor->MspInitCallback = HAL_NOR_MspInit;
     }
@@ -223,15 +254,15 @@
     HAL_NOR_MspInit(hnor);
 #endif /* (USE_HAL_NOR_REGISTER_CALLBACKS) */
   }
-  
+
   /* Initialize NOR control Interface */
-  FMC_NORSRAM_Init(hnor->Instance, &(hnor->Init));
+  (void)FMC_NORSRAM_Init(hnor->Instance, &(hnor->Init));
 
   /* Initialize NOR timing Interface */
-  FMC_NORSRAM_Timing_Init(hnor->Instance, Timing, hnor->Init.NSBank); 
+  (void)FMC_NORSRAM_Timing_Init(hnor->Instance, Timing, hnor->Init.NSBank);
 
   /* Initialize NOR extended mode timing Interface */
-  FMC_NORSRAM_Extended_Timing_Init(hnor->Extended, ExtTiming, hnor->Init.NSBank, hnor->Init.ExtendedMode);
+  (void)FMC_NORSRAM_Extended_Timing_Init(hnor->Extended, ExtTiming, hnor->Init.NSBank, hnor->Init.ExtendedMode);
 
   /* Enable the NORSRAM device */
   __FMC_NORSRAM_ENABLE(hnor->Instance, hnor->Init.NSBank);
@@ -246,10 +277,32 @@
     uwNORMemoryDataWidth = NOR_MEMORY_16B;
   }
 
-  /* Check the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY; 
-  
-  return HAL_OK;
+  /* Initialize the NOR controller state */
+  hnor->State = HAL_NOR_STATE_READY;
+
+  /* Select the NOR device address */
+  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+  {
+    deviceaddress = NOR_MEMORY_ADRESS1;
+  }
+  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+  {
+    deviceaddress = NOR_MEMORY_ADRESS2;
+  }
+  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+  {
+    deviceaddress = NOR_MEMORY_ADRESS3;
+  }
+  else /* FMC_NORSRAM_BANK4 */
+  {
+    deviceaddress = NOR_MEMORY_ADRESS4;
+  }
+
+  /* Get the value of the command set */
+  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_CFI), NOR_CMD_DATA_CFI);
+  hnor->CommandSet = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_ADDRESS_COMMAND_SET);
+
+  return HAL_NOR_ReturnToReadMode(hnor);
 }
 
 /**
@@ -258,10 +311,10 @@
   *                the configuration information for NOR module.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor)  
+HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor)
 {
 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
-  if(hnor->MspDeInitCallback == NULL)
+  if (hnor->MspDeInitCallback == NULL)
   {
     hnor->MspDeInitCallback = HAL_NOR_MspDeInit;
   }
@@ -274,9 +327,9 @@
 #endif /* (USE_HAL_NOR_REGISTER_CALLBACKS) */
 
   /* Configure the NOR registers with their reset values */
-  FMC_NORSRAM_DeInit(hnor->Instance, hnor->Extended, hnor->Init.NSBank);
-  
-  /* Update the NOR controller state */
+  (void)FMC_NORSRAM_DeInit(hnor->Instance, hnor->Extended, hnor->Init.NSBank);
+
+  /* Reset the NOR controller state */
   hnor->State = HAL_NOR_STATE_RESET;
 
   /* Release Lock */
@@ -295,10 +348,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hnor);
-  
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_NOR_MspInit could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -311,10 +364,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hnor);
-  
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_NOR_MspDeInit could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -329,30 +382,30 @@
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hnor);
   UNUSED(Timeout);
-  
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_NOR_MspWait could be implemented in the user file
-   */ 
+   */
 }
-  
+
 /**
   * @}
   */
 
-/** @defgroup NOR_Exported_Functions_Group2 Input and Output functions 
-  * @brief    Input Output and memory control functions 
+/** @defgroup NOR_Exported_Functions_Group2 Input and Output functions
+  * @brief    Input Output and memory control functions
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
                 ##### NOR Input and Output functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to use and control the NOR memory
-  
+
 @endverbatim
   * @{
   */
-  
+
 /**
   * @brief  Read NOR flash IDs
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
@@ -362,56 +415,83 @@
   */
 HAL_StatusTypeDef HAL_NOR_Read_ID(NOR_HandleTypeDef *hnor, NOR_IDTypeDef *pNOR_ID)
 {
-  uint32_t deviceaddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
-  /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
-  {
-     return HAL_BUSY;
-  }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS1;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS2;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  }  
-    
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;
-  
-  /* Send read ID command */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_AUTO_SELECT);
+  uint32_t deviceaddress;
+  HAL_NOR_StateTypeDef state;
+  HAL_StatusTypeDef status = HAL_OK;
 
-  /* Read the NOR IDs */
-  pNOR_ID->Manufacturer_Code = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, MC_ADDRESS);
-  pNOR_ID->Device_Code1      = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, DEVICE_CODE1_ADDR);
-  pNOR_ID->Device_Code2      = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, DEVICE_CODE2_ADDR);
-  pNOR_ID->Device_Code3      = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, DEVICE_CODE3_ADDR);
-  
   /* Check the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);   
-  
-  return HAL_OK;
+  state = hnor->State;
+  if (state == HAL_NOR_STATE_BUSY)
+  {
+    return HAL_BUSY;
+  }
+  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnor);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
+
+    /* Send read ID command */
+    if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_AUTO_SELECT);
+    }
+    else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
+    {
+      NOR_WRITE(deviceaddress, NOR_CMD_DATA_AUTO_SELECT);
+    }
+    else
+    {
+      /* Primary command set not supported by the driver */
+      status = HAL_ERROR;
+    }
+
+    if (status != HAL_ERROR)
+    {
+      /* Read the NOR IDs */
+      pNOR_ID->Manufacturer_Code = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, MC_ADDRESS);
+      pNOR_ID->Device_Code1      = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth,
+                                                                     DEVICE_CODE1_ADDR);
+      pNOR_ID->Device_Code2      = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth,
+                                                                     DEVICE_CODE2_ADDR);
+      pNOR_ID->Device_Code3      = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth,
+                                                                     DEVICE_CODE3_ADDR);
+    }
+
+    /* Check the NOR controller state */
+    hnor->State = state;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return status;
 }
 
 /**
@@ -422,484 +502,665 @@
   */
 HAL_StatusTypeDef HAL_NOR_ReturnToReadMode(NOR_HandleTypeDef *hnor)
 {
-  uint32_t deviceaddress = 0;  
-  
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
-  /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
-  {
-     return HAL_BUSY;
-  }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS1;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS2;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  }  
-  
-  NOR_WRITE(deviceaddress, NOR_CMD_DATA_READ_RESET);
+  uint32_t deviceaddress;
+  HAL_NOR_StateTypeDef state;
+  HAL_StatusTypeDef status = HAL_OK;
 
   /* Check the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);   
-  
-  return HAL_OK;
+  state = hnor->State;
+  if (state == HAL_NOR_STATE_BUSY)
+  {
+    return HAL_BUSY;
+  }
+  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnor);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
+
+    if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+    {
+      NOR_WRITE(deviceaddress, NOR_CMD_DATA_READ_RESET);
+    }
+    else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
+    {
+      NOR_WRITE(deviceaddress, NOR_CMD_READ_ARRAY);
+    }
+    else
+    {
+      /* Primary command set not supported by the driver */
+      status = HAL_ERROR;
+    }
+
+    /* Check the NOR controller state */
+    hnor->State = state;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return status;
 }
 
 /**
-  * @brief  Read data from NOR memory 
+  * @brief  Read data from NOR memory
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
   *                the configuration information for NOR module.
   * @param  pAddress pointer to Device address
-  * @param  pData  pointer to read data  
+  * @param  pData  pointer to read data
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_NOR_Read(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData)
 {
-  uint32_t deviceaddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
-  /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
-  {
-     return HAL_BUSY;
-  }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS1;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS2;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  } 
-    
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;
-  
-  /* Send read data command */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST); 
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);  
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_READ_RESET);
+  uint32_t deviceaddress;
+  HAL_NOR_StateTypeDef state;
+  HAL_StatusTypeDef status = HAL_OK;
 
-  /* Read the data */
-  *pData = *(__IO uint32_t *)(uint32_t)pAddress;
-  
   /* Check the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);
-  
-  return HAL_OK;  
+  state = hnor->State;
+  if (state == HAL_NOR_STATE_BUSY)
+  {
+    return HAL_BUSY;
+  }
+  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnor);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
+
+    /* Send read data command */
+    if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_READ_RESET);
+    }
+    else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
+    {
+      NOR_WRITE(pAddress, NOR_CMD_READ_ARRAY);
+    }
+    else
+    {
+      /* Primary command set not supported by the driver */
+      status = HAL_ERROR;
+    }
+
+    if (status != HAL_ERROR)
+    {
+      /* Read the data */
+      *pData = (uint16_t)(*(__IO uint32_t *)pAddress);
+    }
+
+    /* Check the NOR controller state */
+    hnor->State = state;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return status;
 }
 
 /**
-  * @brief  Program data to NOR memory 
+  * @brief  Program data to NOR memory
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
   *                the configuration information for NOR module.
   * @param  pAddress Device address
-  * @param  pData  pointer to the data to write   
+  * @param  pData  pointer to the data to write
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_NOR_Program(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData)
 {
-  uint32_t deviceaddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
-  /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
-  {
-     return HAL_BUSY;
-  }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS1;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS2;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  } 
-    
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;
-  
-  /* Send program data command */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_PROGRAM);
+  uint32_t deviceaddress;
+  HAL_StatusTypeDef status = HAL_OK;
 
-  /* Write the data */
-  NOR_WRITE(pAddress, *pData);
-  
   /* Check the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);
-  
-  return HAL_OK;  
+  if (hnor->State == HAL_NOR_STATE_BUSY)
+  {
+    return HAL_BUSY;
+  }
+  else if (hnor->State == HAL_NOR_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnor);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
+
+    /* Send program data command */
+    if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_PROGRAM);
+    }
+    else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
+    {
+      NOR_WRITE(pAddress, NOR_CMD_WORD_PROGRAM);
+    }
+    else
+    {
+      /* Primary command set not supported by the driver */
+      status = HAL_ERROR;
+    }
+
+    if (status != HAL_ERROR)
+    {
+      /* Write the data */
+      NOR_WRITE(pAddress, *pData);
+    }
+
+    /* Check the NOR controller state */
+    hnor->State = HAL_NOR_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return status;
 }
 
 /**
   * @brief  Reads a half-word buffer from the NOR memory.
   * @param  hnor pointer to the NOR handle
   * @param  uwAddress NOR memory internal address to read from.
-  * @param  pData pointer to the buffer that receives the data read from the 
+  * @param  pData pointer to the buffer that receives the data read from the
   *         NOR memory.
   * @param  uwBufferSize  number of Half word to read.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize)
+HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
+                                     uint32_t uwBufferSize)
 {
-  uint32_t deviceaddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
+  uint32_t deviceaddress;
+  uint32_t size = uwBufferSize;
+  uint32_t address = uwAddress;
+  uint16_t *data = pData;
+  HAL_NOR_StateTypeDef state;
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
+  state = hnor->State;
+  if (state == HAL_NOR_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
   {
-    deviceaddress = NOR_MEMORY_ADRESS1;
+    /* Process Locked */
+    __HAL_LOCK(hnor);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
+
+    /* Send read data command */
+    if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_READ_RESET);
+    }
+    else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
+    {
+      NOR_WRITE(deviceaddress, NOR_CMD_READ_ARRAY);
+    }
+    else
+    {
+      /* Primary command set not supported by the driver */
+      status = HAL_ERROR;
+    }
+
+    if (status != HAL_ERROR)
+    {
+      /* Read buffer */
+      while (size > 0U)
+      {
+        *data = *(__IO uint16_t *)address;
+        data++;
+        address += 2U;
+        size--;
+      }
+    }
+
+    /* Check the NOR controller state */
+    hnor->State = state;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
   }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+  else
   {
-    deviceaddress = NOR_MEMORY_ADRESS2;
+    return HAL_ERROR;
   }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  }  
-    
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;
-  
-  /* Send read data command */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST); 
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);  
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_READ_RESET);
-  
-  /* Read buffer */
-  while( uwBufferSize > 0) 
-  {
-    *pData++ = *(__IO uint16_t *)uwAddress;
-    uwAddress += 2;
-    uwBufferSize--;
-  } 
-  
-  /* Check the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);
-  
-  return HAL_OK;  
+
+  return status;
 }
 
 /**
-  * @brief  Writes a half-word buffer to the NOR memory. This function must be used 
-            only with S29GL128P NOR memory. 
+  * @brief  Writes a half-word buffer to the NOR memory. This function must be used
+            only with S29GL128P NOR memory.
   * @param  hnor pointer to the NOR handle
-  * @param  uwAddress NOR memory internal start write address 
-  * @param  pData pointer to source data buffer. 
+  * @param  uwAddress NOR memory internal start write address
+  * @param  pData pointer to source data buffer.
   * @param  uwBufferSize Size of the buffer to write
   * @retval HAL status
-  */ 
-HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize)
+  */
+HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData,
+                                        uint32_t uwBufferSize)
 {
-  uint16_t * p_currentaddress = (uint16_t *)NULL;
-  uint16_t * p_endaddress = (uint16_t *)NULL;
-  uint32_t lastloadedaddress = 0, deviceaddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
+  uint16_t *p_currentaddress;
+  const uint16_t *p_endaddress;
+  uint16_t *data = pData;
+  uint32_t deviceaddress;
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
+  if (hnor->State == HAL_NOR_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+  else if (hnor->State == HAL_NOR_STATE_READY)
   {
-    deviceaddress = NOR_MEMORY_ADRESS1;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS2;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  }  
-    
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;
-  
-  /* Initialize variables */
-  p_currentaddress  = (uint16_t*)((uint32_t)(uwAddress));
-  p_endaddress      = p_currentaddress + (uwBufferSize-1);
-  lastloadedaddress = (uint32_t)(uwAddress);
+    /* Process Locked */
+    __HAL_LOCK(hnor);
 
-  /* Issue unlock command sequence */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND); 
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
 
-  /* Write Buffer Load Command */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, uwAddress), NOR_CMD_DATA_BUFFER_AND_PROG); 
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, uwAddress), (uwBufferSize - 1)); 
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
 
-  /* Load Data into NOR Buffer */
-  while(p_currentaddress <= p_endaddress)
+    /* Initialize variables */
+    p_currentaddress  = (uint16_t *)(deviceaddress + uwAddress);
+    p_endaddress      = (uint16_t *)(deviceaddress + uwAddress + (2U * (uwBufferSize - 1U)));
+
+    if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+    {
+      /* Issue unlock command sequence */
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+
+      /* Write Buffer Load Command */
+      NOR_WRITE((deviceaddress + uwAddress), NOR_CMD_DATA_BUFFER_AND_PROG);
+      NOR_WRITE((deviceaddress + uwAddress), (uint16_t)(uwBufferSize - 1U));
+    }
+    else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
+    {
+      /* Write Buffer Load Command */
+      NOR_WRITE((deviceaddress + uwAddress), NOR_CMD_BUFFERED_PROGRAM);
+      NOR_WRITE((deviceaddress + uwAddress), (uint16_t)(uwBufferSize - 1U));
+    }
+    else
+    {
+      /* Primary command set not supported by the driver */
+      status = HAL_ERROR;
+    }
+
+    if (status != HAL_ERROR)
+    {
+      /* Load Data into NOR Buffer */
+      while (p_currentaddress <= p_endaddress)
+      {
+        NOR_WRITE(p_currentaddress, *data);
+
+        data++;
+        p_currentaddress ++;
+      }
+
+      if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+      {
+        NOR_WRITE((deviceaddress + uwAddress), NOR_CMD_DATA_BUFFER_AND_PROG_CONFIRM);
+      }
+      else /* => hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET */
+      {
+        NOR_WRITE((deviceaddress + uwAddress), NOR_CMD_CONFIRM);
+      }
+    }
+
+    /* Check the NOR controller state */
+    hnor->State = HAL_NOR_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
   {
-    /* Store last loaded address & data value (for polling) */
-     lastloadedaddress = (uint32_t)p_currentaddress;
- 
-    NOR_WRITE(p_currentaddress, *pData++);
-    
-    p_currentaddress ++; 
+    return HAL_ERROR;
   }
 
-  NOR_WRITE((uint32_t)(lastloadedaddress), NOR_CMD_DATA_BUFFER_AND_PROG_CONFIRM);
-  
-  /* Check the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);
-  
-  return HAL_OK; 
-  
+  return status;
+
 }
 
 /**
-  * @brief  Erase the specified block of the NOR memory 
+  * @brief  Erase the specified block of the NOR memory
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
   *                the configuration information for NOR module.
-  * @param  BlockAddress  Block to erase address 
+  * @param  BlockAddress  Block to erase address
   * @param  Address Device address
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_NOR_Erase_Block(NOR_HandleTypeDef *hnor, uint32_t BlockAddress, uint32_t Address)
 {
-  uint32_t deviceaddress = 0;
+  uint32_t deviceaddress;
+  HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
   /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
+  if (hnor->State == HAL_NOR_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+  else if (hnor->State == HAL_NOR_STATE_READY)
   {
-    deviceaddress = NOR_MEMORY_ADRESS1;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS2;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  }
-    
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;
-  
-  /* Send block erase command sequence */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH), NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH), NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
-  NOR_WRITE((uint32_t)(BlockAddress + Address), NOR_CMD_DATA_BLOCK_ERASE);
+    /* Process Locked */
+    __HAL_LOCK(hnor);
 
-  /* Check the NOR memory status and update the controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-    
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);
-  
-  return HAL_OK;
- 
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
+
+    /* Send block erase command sequence */
+    if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
+                NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH),
+                NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH),
+                NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
+      NOR_WRITE((uint32_t)(BlockAddress + Address), NOR_CMD_DATA_BLOCK_ERASE);
+    }
+    else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
+    {
+      NOR_WRITE((BlockAddress + Address), NOR_CMD_BLOCK_UNLOCK);
+      NOR_WRITE((BlockAddress + Address), NOR_CMD_CONFIRM);
+      NOR_WRITE((BlockAddress + Address), NOR_CMD_BLOCK_ERASE);
+      NOR_WRITE((BlockAddress + Address), NOR_CMD_CONFIRM);
+    }
+    else
+    {
+      /* Primary command set not supported by the driver */
+      status = HAL_ERROR;
+    }
+
+    /* Check the NOR memory status and update the controller state */
+    hnor->State = HAL_NOR_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return status;
+
 }
 
 /**
   * @brief  Erase the entire NOR chip.
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
   *                the configuration information for NOR module.
-  * @param  Address  Device address  
+  * @param  Address  Device address
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_NOR_Erase_Chip(NOR_HandleTypeDef *hnor, uint32_t Address)
 {
-  uint32_t deviceaddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
+  uint32_t deviceaddress;
+  HAL_StatusTypeDef status = HAL_OK;
+  UNUSED(Address);
+
   /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
+  if (hnor->State == HAL_NOR_STATE_BUSY)
   {
-     return HAL_BUSY;
+    return HAL_BUSY;
   }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+  else if (hnor->State == HAL_NOR_STATE_READY)
   {
-    deviceaddress = NOR_MEMORY_ADRESS1;
+    /* Process Locked */
+    __HAL_LOCK(hnor);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
+
+    /* Send NOR chip erase command sequence */
+    if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
+                NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH),
+                NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH),
+                NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SIXTH), NOR_CMD_DATA_CHIP_ERASE);
+    }
+    else
+    {
+      /* Primary command set not supported by the driver */
+      status = HAL_ERROR;
+    }
+
+    /* Check the NOR memory status and update the controller state */
+    hnor->State = HAL_NOR_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
   }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+  else
   {
-    deviceaddress = NOR_MEMORY_ADRESS2;
+    return HAL_ERROR;
   }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  }
-    
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;  
-    
-  /* Send NOR chip erase command sequence */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH), NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH), NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);  
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SIXTH), NOR_CMD_DATA_CHIP_ERASE);
-  
-  /* Check the NOR memory status and update the controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-    
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);
-  
-  return HAL_OK;  
+
+  return status;
 }
 
 /**
   * @brief  Read NOR flash CFI IDs
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
   *                the configuration information for NOR module.
-  * @param  pNOR_CFI  pointer to NOR CFI IDs structure  
+  * @param  pNOR_CFI  pointer to NOR CFI IDs structure
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_NOR_Read_CFI(NOR_HandleTypeDef *hnor, NOR_CFITypeDef *pNOR_CFI)
 {
-  uint32_t deviceaddress = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hnor);
-  
-  /* Check the NOR controller state */
-  if(hnor->State == HAL_NOR_STATE_BUSY)
-  {
-     return HAL_BUSY;
-  }
-  
-  /* Select the NOR device address */
-  if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS1;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS2;
-  }
-  else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
-  {
-    deviceaddress = NOR_MEMORY_ADRESS3;
-  }
-  else /* FMC_NORSRAM_BANK4 */
-  {
-    deviceaddress = NOR_MEMORY_ADRESS4;
-  }  
-    
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;
-  
-  /* Send read CFI query command */
-  NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_CFI), NOR_CMD_DATA_CFI);
-
-  /* read the NOR CFI information */
-  pNOR_CFI->CFI_1 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI1_ADDRESS);
-  pNOR_CFI->CFI_2 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI2_ADDRESS);
-  pNOR_CFI->CFI_3 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI3_ADDRESS);
-  pNOR_CFI->CFI_4 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI4_ADDRESS);
+  uint32_t deviceaddress;
+  HAL_NOR_StateTypeDef state;
 
   /* Check the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor);
-  
+  state = hnor->State;
+  if (state == HAL_NOR_STATE_BUSY)
+  {
+    return HAL_BUSY;
+  }
+  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnor);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Select the NOR device address */
+    if (hnor->Init.NSBank == FMC_NORSRAM_BANK1)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS1;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK2)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS2;
+    }
+    else if (hnor->Init.NSBank == FMC_NORSRAM_BANK3)
+    {
+      deviceaddress = NOR_MEMORY_ADRESS3;
+    }
+    else /* FMC_NORSRAM_BANK4 */
+    {
+      deviceaddress = NOR_MEMORY_ADRESS4;
+    }
+
+    /* Send read CFI query command */
+    NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_CFI), NOR_CMD_DATA_CFI);
+
+    /* read the NOR CFI information */
+    pNOR_CFI->CFI_1 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI1_ADDRESS);
+    pNOR_CFI->CFI_2 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI2_ADDRESS);
+    pNOR_CFI->CFI_3 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI3_ADDRESS);
+    pNOR_CFI->CFI_4 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI4_ADDRESS);
+
+    /* Check the NOR controller state */
+    hnor->State = state;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
   return HAL_OK;
 }
 
@@ -915,12 +1176,13 @@
   * @param pCallback : pointer to the Callback function
   * @retval status
   */
-HAL_StatusTypeDef HAL_NOR_RegisterCallback (NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId, pNOR_CallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_NOR_RegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId,
+                                           pNOR_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
   HAL_NOR_StateTypeDef state;
 
-  if(pCallback == NULL)
+  if (pCallback == NULL)
   {
     return HAL_ERROR;
   }
@@ -929,20 +1191,20 @@
   __HAL_LOCK(hnor);
 
   state = hnor->State;
-  if((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_RESET) || (state == HAL_NOR_STATE_PROTECTED))
+  if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_RESET) || (state == HAL_NOR_STATE_PROTECTED))
   {
     switch (CallbackId)
     {
-    case HAL_NOR_MSP_INIT_CB_ID :
-      hnor->MspInitCallback = pCallback;
-      break;
-    case HAL_NOR_MSP_DEINIT_CB_ID :
-      hnor->MspDeInitCallback = pCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_NOR_MSP_INIT_CB_ID :
+        hnor->MspInitCallback = pCallback;
+        break;
+      case HAL_NOR_MSP_DEINIT_CB_ID :
+        hnor->MspDeInitCallback = pCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -966,7 +1228,7 @@
   *          @arg @ref HAL_NOR_MSP_DEINIT_CB_ID     NOR MspDeInit callback ID
   * @retval status
   */
-HAL_StatusTypeDef HAL_NOR_UnRegisterCallback (NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId)
+HAL_StatusTypeDef HAL_NOR_UnRegisterCallback(NOR_HandleTypeDef *hnor, HAL_NOR_CallbackIDTypeDef CallbackId)
 {
   HAL_StatusTypeDef status = HAL_OK;
   HAL_NOR_StateTypeDef state;
@@ -975,20 +1237,20 @@
   __HAL_LOCK(hnor);
 
   state = hnor->State;
-  if((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_RESET) || (state == HAL_NOR_STATE_PROTECTED))
+  if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_RESET) || (state == HAL_NOR_STATE_PROTECTED))
   {
     switch (CallbackId)
     {
-    case HAL_NOR_MSP_INIT_CB_ID :
-      hnor->MspInitCallback = HAL_NOR_MspInit;
-      break;
-    case HAL_NOR_MSP_DEINIT_CB_ID :
-      hnor->MspDeInitCallback = HAL_NOR_MspDeInit;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_NOR_MSP_INIT_CB_ID :
+        hnor->MspInitCallback = HAL_NOR_MspInit;
+        break;
+      case HAL_NOR_MSP_DEINIT_CB_ID :
+        hnor->MspDeInitCallback = HAL_NOR_MspDeInit;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -1002,14 +1264,15 @@
   return status;
 }
 #endif /* (USE_HAL_NOR_REGISTER_CALLBACKS) */
+
 /**
   * @}
   */
-  
+
 /** @defgroup NOR_Exported_Functions_Group3 NOR Control functions
- *  @brief   management functions 
- *
-@verbatim   
+  *  @brief   management functions
+  *
+@verbatim
   ==============================================================================
                         ##### NOR Control functions #####
   ==============================================================================
@@ -1020,7 +1283,7 @@
 @endverbatim
   * @{
   */
-    
+
 /**
   * @brief  Enables dynamically NOR write operation.
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
@@ -1029,19 +1292,30 @@
   */
 HAL_StatusTypeDef HAL_NOR_WriteOperation_Enable(NOR_HandleTypeDef *hnor)
 {
-  /* Process Locked */
-  __HAL_LOCK(hnor);
+  /* Check the NOR controller state */
+  if (hnor->State == HAL_NOR_STATE_PROTECTED)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnor);
 
-  /* Enable write operation */
-  FMC_NORSRAM_WriteOperation_Enable(hnor->Instance, hnor->Init.NSBank); 
-  
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor); 
-  
-  return HAL_OK;  
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Enable write operation */
+    (void)FMC_NORSRAM_WriteOperation_Enable(hnor->Instance, hnor->Init.NSBank);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
@@ -1052,43 +1326,51 @@
   */
 HAL_StatusTypeDef HAL_NOR_WriteOperation_Disable(NOR_HandleTypeDef *hnor)
 {
-  /* Process Locked */
-  __HAL_LOCK(hnor);
+  /* Check the NOR controller state */
+  if (hnor->State == HAL_NOR_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hnor);
 
-  /* Update the SRAM controller state */
-  hnor->State = HAL_NOR_STATE_BUSY;
-    
-  /* Disable write operation */
-  FMC_NORSRAM_WriteOperation_Disable(hnor->Instance, hnor->Init.NSBank); 
-  
-  /* Update the NOR controller state */
-  hnor->State = HAL_NOR_STATE_PROTECTED;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hnor); 
-  
-  return HAL_OK;  
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_BUSY;
+
+    /* Disable write operation */
+    (void)FMC_NORSRAM_WriteOperation_Disable(hnor->Instance, hnor->Init.NSBank);
+
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_PROTECTED;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hnor);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
   * @}
-  */  
-  
-/** @defgroup NOR_Exported_Functions_Group4 NOR State functions 
- *  @brief   Peripheral State functions 
- *
-@verbatim   
+  */
+
+/** @defgroup NOR_Exported_Functions_Group4 NOR State functions
+  *  @brief   Peripheral State functions
+  *
+@verbatim
   ==============================================================================
                       ##### NOR State functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
-    This subsection permits to get in run-time the status of the NOR controller 
+    This subsection permits to get in run-time the status of the NOR controller
     and the data flow.
 
 @endverbatim
   * @{
   */
-  
+
 /**
   * @brief  return the NOR controller state
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
@@ -1103,63 +1385,103 @@
 /**
   * @brief  Returns the NOR operation status.
   * @param  hnor pointer to a NOR_HandleTypeDef structure that contains
-  *                the configuration information for NOR module.   
+  *                the configuration information for NOR module.
   * @param  Address Device address
   * @param  Timeout NOR programming Timeout
-  * @retval NOR_Status: The returned value can be: HAL_NOR_STATUS_SUCCESS, HAL_NOR_STATUS_ERROR
+  * @retval NOR_Status The returned value can be: HAL_NOR_STATUS_SUCCESS, HAL_NOR_STATUS_ERROR
   *         or HAL_NOR_STATUS_TIMEOUT
   */
 HAL_NOR_StatusTypeDef HAL_NOR_GetStatus(NOR_HandleTypeDef *hnor, uint32_t Address, uint32_t Timeout)
-{ 
+{
   HAL_NOR_StatusTypeDef status = HAL_NOR_STATUS_ONGOING;
-  uint16_t tmpSR1 = 0, tmpSR2 = 0;
-  uint32_t tickstart = 0;
+  uint16_t tmpsr1;
+  uint16_t tmpsr2;
+  uint32_t tickstart;
 
   /* Poll on NOR memory Ready/Busy signal ------------------------------------*/
   HAL_NOR_MspWait(hnor, Timeout);
-  
+
   /* Get the NOR memory operation status -------------------------------------*/
-  
+
   /* Get tick */
   tickstart = HAL_GetTick();
-  while((status != HAL_NOR_STATUS_SUCCESS ) && (status != HAL_NOR_STATUS_TIMEOUT))
+
+  if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
   {
-    /* Check for the Timeout */
-    if(Timeout != HAL_MAX_DELAY)
+    while ((status != HAL_NOR_STATUS_SUCCESS) && (status != HAL_NOR_STATUS_TIMEOUT))
     {
-      if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
+      /* Check for the Timeout */
+      if (Timeout != HAL_MAX_DELAY)
       {
-        status = HAL_NOR_STATUS_TIMEOUT; 
-      } 
-    } 
+        if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
+        {
+          status = HAL_NOR_STATUS_TIMEOUT;
+        }
+      }
 
-    /* Read NOR status register (DQ6 and DQ5) */
-    tmpSR1 = *(__IO uint16_t *)Address;
-    tmpSR2 = *(__IO uint16_t *)Address;
+      /* Read NOR status register (DQ6 and DQ5) */
+      tmpsr1 = *(__IO uint16_t *)Address;
+      tmpsr2 = *(__IO uint16_t *)Address;
 
-    /* If DQ6 did not toggle between the two reads then return HAL_NOR_STATUS_SUCCESS  */
-    if((tmpSR1 & NOR_MASK_STATUS_DQ6) == (tmpSR2 & NOR_MASK_STATUS_DQ6)) 
-    {
-      return HAL_NOR_STATUS_SUCCESS ;
-    }
-    
-    if((tmpSR1 & NOR_MASK_STATUS_DQ5) == NOR_MASK_STATUS_DQ5)
-    {
-      status = HAL_NOR_STATUS_ONGOING;
-    }
-    
-    tmpSR1 = *(__IO uint16_t *)Address;
-    tmpSR2 = *(__IO uint16_t *)Address;
+      /* If DQ6 did not toggle between the two reads then return HAL_NOR_STATUS_SUCCESS  */
+      if ((tmpsr1 & NOR_MASK_STATUS_DQ6) == (tmpsr2 & NOR_MASK_STATUS_DQ6))
+      {
+        return HAL_NOR_STATUS_SUCCESS ;
+      }
 
-    /* If DQ6 did not toggle between the two reads then return HAL_NOR_STATUS_SUCCESS  */
-    if((tmpSR1 & NOR_MASK_STATUS_DQ6) == (tmpSR2 & NOR_MASK_STATUS_DQ6)) 
-    {
-      return HAL_NOR_STATUS_SUCCESS;
+      if ((tmpsr1 & NOR_MASK_STATUS_DQ5) == NOR_MASK_STATUS_DQ5)
+      {
+        status = HAL_NOR_STATUS_ONGOING;
+      }
+
+      tmpsr1 = *(__IO uint16_t *)Address;
+      tmpsr2 = *(__IO uint16_t *)Address;
+
+      /* If DQ6 did not toggle between the two reads then return HAL_NOR_STATUS_SUCCESS  */
+      if ((tmpsr1 & NOR_MASK_STATUS_DQ6) == (tmpsr2 & NOR_MASK_STATUS_DQ6))
+      {
+        return HAL_NOR_STATUS_SUCCESS;
+      }
+      if ((tmpsr1 & NOR_MASK_STATUS_DQ5) == NOR_MASK_STATUS_DQ5)
+      {
+        return HAL_NOR_STATUS_ERROR;
+      }
     }
-    if((tmpSR1 & NOR_MASK_STATUS_DQ5) == NOR_MASK_STATUS_DQ5)
+  }
+  else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
+  {
+    do
     {
-      return HAL_NOR_STATUS_ERROR;
-    } 
+      NOR_WRITE(Address, NOR_CMD_READ_STATUS_REG);
+      tmpsr2 = *(__IO uint16_t *)(Address);
+
+      /* Check for the Timeout */
+      if (Timeout != HAL_MAX_DELAY)
+      {
+        if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
+        {
+          return HAL_NOR_STATUS_TIMEOUT;
+        }
+      }
+    } while ((tmpsr2 & NOR_MASK_STATUS_DQ7) == 0U);
+
+    NOR_WRITE(Address, NOR_CMD_READ_STATUS_REG);
+    tmpsr1 = *(__IO uint16_t *)(Address);
+    if ((tmpsr1  & (NOR_MASK_STATUS_DQ5 | NOR_MASK_STATUS_DQ4)) != 0U)
+    {
+      /* Clear the Status Register  */
+      NOR_WRITE(Address, NOR_CMD_READ_STATUS_REG);
+      status = HAL_NOR_STATUS_ERROR;
+    }
+    else
+    {
+      status = HAL_NOR_STATUS_SUCCESS;
+    }
+  }
+  else
+  {
+    /* Primary command set not supported by the driver */
+    status = HAL_NOR_STATUS_ERROR;
   }
 
   /* Return the operation status */
@@ -1173,13 +1495,14 @@
 /**
   * @}
   */
+
+/**
+  * @}
+  */
+
 #endif /* HAL_NOR_MODULE_ENABLED */
-/**
-  * @}
-  */
 
 /**
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_pcd.c b/Src/stm32f7xx_hal_pcd.c
index c71fd4c..15fe113 100644
--- a/Src/stm32f7xx_hal_pcd.c
+++ b/Src/stm32f7xx_hal_pcd.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### How to use this driver #####
@@ -41,17 +52,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -222,7 +222,7 @@
 
   hpcd->USB_Address = 0U;
   hpcd->State = HAL_PCD_STATE_READY;
-  
+
   /* Activate LPM */
   if (hpcd->Init.lpm_enable == 1U)
   {
@@ -719,7 +719,8 @@
 
 /**
   * @brief  Unregister the USB PCD Iso OUT incomplete Callback
-  *         USB PCD Iso OUT incomplete Callback is redirected to the weak HAL_PCD_ISOOUTIncompleteCallback() predefined callback
+  *         USB PCD Iso OUT incomplete Callback is redirected
+  *         to the weak HAL_PCD_ISOOUTIncompleteCallback() predefined callback
   * @param  hpcd PCD handle
   * @retval HAL status
   */
@@ -793,7 +794,8 @@
 
 /**
   * @brief  Unregister the USB PCD Iso IN incomplete Callback
-  *         USB PCD Iso IN incomplete Callback is redirected to the weak HAL_PCD_ISOINIncompleteCallback() predefined callback
+  *         USB PCD Iso IN incomplete Callback is redirected
+  *         to the weak HAL_PCD_ISOINIncompleteCallback() predefined callback
   * @param  hpcd PCD handle
   * @retval HAL status
   */
@@ -959,9 +961,13 @@
 {
   USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t i, ep_intr, epint, epnum;
-  uint32_t fifoemptymsk, temp;
   USB_OTG_EPTypeDef *ep;
+  uint32_t i;
+  uint32_t ep_intr;
+  uint32_t epint;
+  uint32_t epnum;
+  uint32_t fifoemptymsk;
+  uint32_t temp;
 
   /* ensure that we are in device mode */
   if (USB_GetMode(hpcd->Instance) == USB_OTG_MODE_DEVICE)
@@ -1007,6 +1013,7 @@
       {
         /* ... */
       }
+
       USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
     }
 
@@ -1200,7 +1207,6 @@
       {
         USBx_INEP(i)->DIEPINT = 0xFB7FU;
         USBx_INEP(i)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL;
-        USBx_INEP(i)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK;
         USBx_OUTEP(i)->DOEPINT = 0xFB7FU;
         USBx_OUTEP(i)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL;
         USBx_OUTEP(i)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK;
@@ -1909,6 +1915,33 @@
 }
 
 /**
+  * @brief  Set the USB Device high speed test mode.
+  * @param  hpcd PCD handle
+  * @param  address test mode
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_PCD_SetTestMode(PCD_HandleTypeDef *hpcd, uint8_t testmode)
+{
+  USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
+  uint32_t USBx_BASE = (uint32_t)USBx;
+
+  switch (testmode)
+  {
+    case TEST_J:
+    case TEST_K:
+    case TEST_SE0_NAK:
+    case TEST_PACKET:
+    case TEST_FORCE_EN:
+      USBx_DEVICE->DCTL |= testmode << 4;
+      break;
+
+    default:
+      break;
+  }
+
+  return HAL_OK;
+}
+/**
   * @}
   */
 
@@ -2135,5 +2168,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_pcd_ex.c b/Src/stm32f7xx_hal_pcd_ex.c
index f5ed461..2aa9d96 100644
--- a/Src/stm32f7xx_hal_pcd_ex.c
+++ b/Src/stm32f7xx_hal_pcd_ex.c
@@ -10,13 +10,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -203,5 +202,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_pwr.c b/Src/stm32f7xx_hal_pwr.c
index 4ed81b5..8e1313a 100644
--- a/Src/stm32f7xx_hal_pwr.c
+++ b/Src/stm32f7xx_hal_pwr.c
@@ -11,16 +11,15 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
@@ -596,4 +595,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_pwr_ex.c b/Src/stm32f7xx_hal_pwr_ex.c
index af8f870..3e3a016 100644
--- a/Src/stm32f7xx_hal_pwr_ex.c
+++ b/Src/stm32f7xx_hal_pwr_ex.c
@@ -10,16 +10,15 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
@@ -551,4 +550,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_qspi.c b/Src/stm32f7xx_hal_qspi.c
index be14334..fa9a55a 100644
--- a/Src/stm32f7xx_hal_qspi.c
+++ b/Src/stm32f7xx_hal_qspi.c
@@ -14,6 +14,17 @@
   *           + Errors management and abort functionality
   *
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                         ##### How to use this driver #####
@@ -133,7 +144,7 @@
       The compilation define  USE_HAL_QSPI_REGISTER_CALLBACKS when set to 1
       allows the user to configure dynamically the driver callbacks.
 
-      Use Functions @ref HAL_QSPI_RegisterCallback() to register a user callback,
+      Use Functions HAL_QSPI_RegisterCallback() to register a user callback,
       it allows to register following callbacks:
         (+) ErrorCallback : callback when error occurs.
         (+) AbortCpltCallback : callback when abort is completed.
@@ -150,7 +161,7 @@
       This function takes as parameters the HAL peripheral handle, the Callback ID
       and a pointer to the user callback function.
 
-      Use function @ref HAL_QSPI_UnRegisterCallback() to reset a callback to the default
+      Use function HAL_QSPI_UnRegisterCallback() to reset a callback to the default
       weak (surcharged) function. It allows to reset following callbacks:
         (+) ErrorCallback : callback when error occurs.
         (+) AbortCpltCallback : callback when abort is completed.
@@ -166,12 +177,12 @@
         (+) MspDeInitCallback  : QSPI MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
-      By default, after the @ref HAL_QSPI_Init and if the state is HAL_QSPI_STATE_RESET
+      By default, after the HAL_QSPI_Init and if the state is HAL_QSPI_STATE_RESET
       all callbacks are reset to the corresponding legacy weak (surcharged) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the @ref HAL_QSPI_Init
-      and @ref  HAL_QSPI_DeInit only when these callbacks are null (not registered beforehand).
-      If not, MspInit or MspDeInit are not null, the @ref HAL_QSPI_Init and @ref HAL_QSPI_DeInit
+      reset to the legacy weak (surcharged) functions in the HAL_QSPI_Init
+      and  HAL_QSPI_DeInit only when these callbacks are null (not registered beforehand).
+      If not, MspInit or MspDeInit are not null, the HAL_QSPI_Init and HAL_QSPI_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
       Callbacks can be registered/unregistered in READY state only.
@@ -179,8 +190,8 @@
       in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
       during the Init/DeInit.
       In that case first register the MspInit/MspDeInit user callbacks
-      using @ref HAL_QSPI_RegisterCallback before calling @ref HAL_QSPI_DeInit
-      or @ref HAL_QSPI_Init function.
+      using HAL_QSPI_RegisterCallback before calling HAL_QSPI_DeInit
+      or HAL_QSPI_Init function.
 
       When The compilation define USE_HAL_QSPI_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
@@ -194,17 +205,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                       opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -258,6 +258,7 @@
 static void QSPI_DMAError(DMA_HandleTypeDef *hdma);
 static void QSPI_DMAAbortCplt(DMA_HandleTypeDef *hdma);
 static HAL_StatusTypeDef QSPI_WaitFlagStateUntilTimeout(QSPI_HandleTypeDef *hqspi, uint32_t Flag, FlagStatus State, uint32_t Tickstart, uint32_t Timeout);
+static HAL_StatusTypeDef QSPI_WaitFlagStateUntilTimeout_CPUCycle(QSPI_HandleTypeDef *hqspi, uint32_t Flag, FlagStatus State, uint32_t Timeout);
 static void QSPI_Config(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t FunctionalMode);
 
 /* Exported functions --------------------------------------------------------*/
@@ -730,7 +731,7 @@
 
         /* Change state of QSPI */
         hqspi->State = HAL_QSPI_STATE_READY;
-        
+
         /* Error callback */
 #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1)
         hqspi->ErrorCallback(hqspi);
@@ -873,7 +874,6 @@
 HAL_StatusTypeDef HAL_QSPI_Command_IT(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd)
 {
   HAL_StatusTypeDef status;
-  uint32_t tickstart = HAL_GetTick();
 
   /* Check the parameters */
   assert_param(IS_QSPI_INSTRUCTION_MODE(cmd->InstructionMode));
@@ -912,7 +912,7 @@
     hqspi->State = HAL_QSPI_STATE_BUSY;
 
     /* Wait till BUSY flag reset */
-    status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_BUSY, RESET, tickstart, hqspi->Timeout);
+    status = QSPI_WaitFlagStateUntilTimeout_CPUCycle(hqspi, QSPI_FLAG_BUSY, RESET, hqspi->Timeout);	
 
     if (status == HAL_OK)
     {
@@ -1369,10 +1369,10 @@
         {
           /* Process unlocked */
           __HAL_UNLOCK(hqspi);
-          
+
           /* Enable the QSPI transfer error Interrupt */
           __HAL_QSPI_ENABLE_IT(hqspi, QSPI_IT_TE);
-          
+
           /* Enable the DMA transfer by setting the DMAEN bit in the QSPI CR register */
           SET_BIT(hqspi->Instance->CR, QUADSPI_CR_DMAEN);
         }
@@ -1517,10 +1517,10 @@
 
           /* Process unlocked */
           __HAL_UNLOCK(hqspi);
-          
+
           /* Enable the QSPI transfer error Interrupt */
           __HAL_QSPI_ENABLE_IT(hqspi, QSPI_IT_TE);
-          
+
           /* Enable the DMA transfer by setting the DMAEN bit in the QSPI CR register */
           SET_BIT(hqspi->Instance->CR, QUADSPI_CR_DMAEN);
         }
@@ -1667,7 +1667,6 @@
 HAL_StatusTypeDef HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg)
 {
   HAL_StatusTypeDef status;
-  uint32_t tickstart = HAL_GetTick();
 
   /* Check the parameters */
   assert_param(IS_QSPI_INSTRUCTION_MODE(cmd->InstructionMode));
@@ -1711,7 +1710,7 @@
     hqspi->State = HAL_QSPI_STATE_BUSY_AUTO_POLLING;
 
     /* Wait till BUSY flag reset */
-    status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_BUSY, RESET, tickstart, hqspi->Timeout);
+    status = QSPI_WaitFlagStateUntilTimeout_CPUCycle(hqspi, QSPI_FLAG_BUSY, RESET, hqspi->Timeout);	
 
     if (status == HAL_OK)
     {
@@ -2351,7 +2350,7 @@
       {
         /* Change state of QSPI */
         hqspi->State = HAL_QSPI_STATE_READY;
-        
+
         /* Abort Complete callback */
 #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1)
         hqspi->AbortCpltCallback(hqspi);
@@ -2631,6 +2630,31 @@
 }
 
 /**
+  * @brief  Wait for a flag state until timeout using CPU cycle.
+  * @param  hqspi : QSPI handle
+  * @param  Flag : Flag checked
+  * @param  State : Value of the flag expected
+  * @param  Timeout : Duration of the timeout
+  * @retval HAL status
+  */
+static HAL_StatusTypeDef QSPI_WaitFlagStateUntilTimeout_CPUCycle(QSPI_HandleTypeDef *hqspi, uint32_t Flag, FlagStatus State, uint32_t Timeout)
+{ 
+  __IO uint32_t count = Timeout * (SystemCoreClock / 16U / 1000U);
+   do
+   {
+     if (count-- == 0U)
+     {
+       hqspi->State     = HAL_QSPI_STATE_ERROR;
+       hqspi->ErrorCode |= HAL_QSPI_ERROR_TIMEOUT;
+       return HAL_TIMEOUT;
+     }
+   }
+   while ((__HAL_QSPI_GET_FLAG(hqspi, Flag)) != State);
+   
+   return HAL_OK;   
+}
+
+/**
   * @brief  Configure the communication registers.
   * @param  hqspi : QSPI handle
   * @param  cmd : structure that contains the command configuration information
@@ -2797,6 +2821,4 @@
   * @}
   */
 
-#endif /* defined(QUADSPI) || defined(QUADSPI1) || defined(QUADSPI2) */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+#endif /* defined(QUADSPI) */
diff --git a/Src/stm32f7xx_hal_rcc.c b/Src/stm32f7xx_hal_rcc.c
index ab8bb29..1a6de8d 100644
--- a/Src/stm32f7xx_hal_rcc.c
+++ b/Src/stm32f7xx_hal_rcc.c
@@ -54,14 +54,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 
@@ -1239,4 +1237,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_rcc_ex.c b/Src/stm32f7xx_hal_rcc_ex.c
index 87ae701..b09fb43 100644
--- a/Src/stm32f7xx_hal_rcc_ex.c
+++ b/Src/stm32f7xx_hal_rcc_ex.c
@@ -10,14 +10,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 
@@ -1773,4 +1771,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_rng.c b/Src/stm32f7xx_hal_rng.c
index 7094088..8095f72 100644
--- a/Src/stm32f7xx_hal_rng.c
+++ b/Src/stm32f7xx_hal_rng.c
@@ -9,6 +9,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                      ##### How to use this driver #####
@@ -31,8 +42,8 @@
     allows the user to configure dynamically the driver callbacks.
 
     [..]
-    Use Function @ref HAL_RNG_RegisterCallback() to register a user callback.
-    Function @ref HAL_RNG_RegisterCallback() allows to register following callbacks:
+    Use Function HAL_RNG_RegisterCallback() to register a user callback.
+    Function HAL_RNG_RegisterCallback() allows to register following callbacks:
     (+) ErrorCallback             : RNG Error Callback.
     (+) MspInitCallback           : RNG MspInit.
     (+) MspDeInitCallback         : RNG MspDeInit.
@@ -40,9 +51,9 @@
     and a pointer to the user callback function.
 
     [..]
-    Use function @ref HAL_RNG_UnRegisterCallback() to reset a callback to the default
+    Use function HAL_RNG_UnRegisterCallback() to reset a callback to the default
     weak (surcharged) function.
-    @ref HAL_RNG_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+    HAL_RNG_UnRegisterCallback() takes as parameters the HAL peripheral handle,
     and the Callback ID.
     This function allows to reset following callbacks:
     (+) ErrorCallback             : RNG Error Callback.
@@ -51,16 +62,16 @@
 
     [..]
     For specific callback ReadyDataCallback, use dedicated register callbacks:
-    respectively @ref HAL_RNG_RegisterReadyDataCallback() , @ref HAL_RNG_UnRegisterReadyDataCallback().
+    respectively HAL_RNG_RegisterReadyDataCallback() , HAL_RNG_UnRegisterReadyDataCallback().
 
     [..]
-    By default, after the @ref HAL_RNG_Init() and when the state is HAL_RNG_STATE_RESET
+    By default, after the HAL_RNG_Init() and when the state is HAL_RNG_STATE_RESET
     all callbacks are set to the corresponding weak (surcharged) functions:
-    example @ref HAL_RNG_ErrorCallback().
+    example HAL_RNG_ErrorCallback().
     Exception done for MspInit and MspDeInit functions that are respectively
-    reset to the legacy weak (surcharged) functions in the @ref HAL_RNG_Init()
-    and @ref HAL_RNG_DeInit() only when these callbacks are null (not registered beforehand).
-    If not, MspInit or MspDeInit are not null, the @ref HAL_RNG_Init() and @ref HAL_RNG_DeInit()
+    reset to the legacy weak (surcharged) functions in the HAL_RNG_Init()
+    and HAL_RNG_DeInit() only when these callbacks are null (not registered beforehand).
+    If not, MspInit or MspDeInit are not null, the HAL_RNG_Init() and HAL_RNG_DeInit()
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
 
     [..]
@@ -69,8 +80,8 @@
     in HAL_RNG_STATE_READY or HAL_RNG_STATE_RESET state, thus registered (user)
     MspInit/DeInit callbacks can be used during the Init/DeInit.
     In that case first register the MspInit/MspDeInit user callbacks
-    using @ref HAL_RNG_RegisterCallback() before calling @ref HAL_RNG_DeInit()
-    or @ref HAL_RNG_Init() function.
+    using HAL_RNG_RegisterCallback() before calling HAL_RNG_DeInit()
+    or HAL_RNG_Init() function.
 
     [..]
     When The compilation define USE_HAL_RNG_REGISTER_CALLBACKS is set to 0 or
@@ -79,17 +90,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -129,8 +129,8 @@
   */
 
 /** @addtogroup RNG_Exported_Functions_Group1
- *  @brief   Initialization and configuration functions
- *
+  *  @brief   Initialization and configuration functions
+  *
 @verbatim
  ===============================================================================
           ##### Initialization and configuration functions #####
@@ -296,7 +296,8 @@
   * @param  pCallback pointer to the Callback function
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RNG_RegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID, pRNG_CallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_RNG_RegisterCallback(RNG_HandleTypeDef *hrng, HAL_RNG_CallbackIDTypeDef CallbackID,
+                                           pRNG_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
@@ -313,44 +314,44 @@
   {
     switch (CallbackID)
     {
-    case HAL_RNG_ERROR_CB_ID :
-      hrng->ErrorCallback = pCallback;
-      break;
+      case HAL_RNG_ERROR_CB_ID :
+        hrng->ErrorCallback = pCallback;
+        break;
 
-    case HAL_RNG_MSPINIT_CB_ID :
-      hrng->MspInitCallback = pCallback;
-      break;
+      case HAL_RNG_MSPINIT_CB_ID :
+        hrng->MspInitCallback = pCallback;
+        break;
 
-    case HAL_RNG_MSPDEINIT_CB_ID :
-      hrng->MspDeInitCallback = pCallback;
-      break;
+      case HAL_RNG_MSPDEINIT_CB_ID :
+        hrng->MspDeInitCallback = pCallback;
+        break;
 
-    default :
-      /* Update the error code */
-      hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
-     /* Return error status */
-      status =  HAL_ERROR;
-      break;
+      default :
+        /* Update the error code */
+        hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
+        /* Return error status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else if (HAL_RNG_STATE_RESET == hrng->State)
   {
     switch (CallbackID)
     {
-    case HAL_RNG_MSPINIT_CB_ID :
-      hrng->MspInitCallback = pCallback;
-      break;
+      case HAL_RNG_MSPINIT_CB_ID :
+        hrng->MspInitCallback = pCallback;
+        break;
 
-    case HAL_RNG_MSPDEINIT_CB_ID :
-      hrng->MspDeInitCallback = pCallback;
-      break;
+      case HAL_RNG_MSPDEINIT_CB_ID :
+        hrng->MspDeInitCallback = pCallback;
+        break;
 
-    default :
-      /* Update the error code */
-      hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
-     /* Return error status */
-      status =  HAL_ERROR;
-      break;
+      default :
+        /* Update the error code */
+        hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
+        /* Return error status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -388,44 +389,44 @@
   {
     switch (CallbackID)
     {
-    case HAL_RNG_ERROR_CB_ID :
-      hrng->ErrorCallback = HAL_RNG_ErrorCallback;          /* Legacy weak ErrorCallback  */
-      break;
+      case HAL_RNG_ERROR_CB_ID :
+        hrng->ErrorCallback = HAL_RNG_ErrorCallback;          /* Legacy weak ErrorCallback  */
+        break;
 
-    case HAL_RNG_MSPINIT_CB_ID :
-      hrng->MspInitCallback = HAL_RNG_MspInit;              /* Legacy weak MspInit  */
-      break;
+      case HAL_RNG_MSPINIT_CB_ID :
+        hrng->MspInitCallback = HAL_RNG_MspInit;              /* Legacy weak MspInit  */
+        break;
 
-    case HAL_RNG_MSPDEINIT_CB_ID :
-      hrng->MspDeInitCallback = HAL_RNG_MspDeInit;          /* Legacy weak MspDeInit  */
-      break;
+      case HAL_RNG_MSPDEINIT_CB_ID :
+        hrng->MspDeInitCallback = HAL_RNG_MspDeInit;          /* Legacy weak MspDeInit  */
+        break;
 
-    default :
-      /* Update the error code */
-      hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
-     /* Return error status */
-      status =  HAL_ERROR;
-      break;
+      default :
+        /* Update the error code */
+        hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
+        /* Return error status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else if (HAL_RNG_STATE_RESET == hrng->State)
   {
     switch (CallbackID)
     {
-    case HAL_RNG_MSPINIT_CB_ID :
-      hrng->MspInitCallback = HAL_RNG_MspInit;              /* Legacy weak MspInit  */
-      break;
+      case HAL_RNG_MSPINIT_CB_ID :
+        hrng->MspInitCallback = HAL_RNG_MspInit;              /* Legacy weak MspInit  */
+        break;
 
-    case HAL_RNG_MSPDEINIT_CB_ID :
-      hrng->MspDeInitCallback = HAL_RNG_MspDeInit;          /* Legacy weak MspInit  */
-      break;
+      case HAL_RNG_MSPDEINIT_CB_ID :
+        hrng->MspDeInitCallback = HAL_RNG_MspDeInit;          /* Legacy weak MspInit  */
+        break;
 
-    default :
-      /* Update the error code */
-      hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
-     /* Return error status */
-      status =  HAL_ERROR;
-      break;
+      default :
+        /* Update the error code */
+        hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
+        /* Return error status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -515,8 +516,8 @@
   */
 
 /** @addtogroup RNG_Exported_Functions_Group2
- *  @brief   Peripheral Control functions
- *
+  *  @brief   Peripheral Control functions
+  *
 @verbatim
  ===============================================================================
                       ##### Peripheral Control functions #####
@@ -533,11 +534,11 @@
 /**
   * @brief  Generates a 32-bit random number.
   * @note   This function checks value of RNG_FLAG_DRDY flag to know if valid
-  *         random number is available in the DR register (RNG_FLAG_DRDY flag set 
+  *         random number is available in the DR register (RNG_FLAG_DRDY flag set
   *         whenever a random number is available through the RNG_DR register).
-  *         After transitioning from 0 to 1 (random number available), 
-  *         RNG_FLAG_DRDY flag remains high until output buffer becomes empty after reading 
-  *         four words from the RNG_DR register, i.e. further function calls 
+  *         After transitioning from 0 to 1 (random number available),
+  *         RNG_FLAG_DRDY flag remains high until output buffer becomes empty after reading
+  *         four words from the RNG_DR register, i.e. further function calls
   *         will immediately return a new u32 random number (additional words are
   *         available and can be read by the application, till RNG_FLAG_DRDY flag remains high).
   * @note   When no more random number data is available in DR register, RNG_FLAG_DRDY
@@ -570,11 +571,15 @@
     {
       if ((HAL_GetTick() - tickstart) > RNG_TIMEOUT_VALUE)
       {
-        hrng->State = HAL_RNG_STATE_READY;
-        hrng->ErrorCode = HAL_RNG_ERROR_TIMEOUT;
-        /* Process Unlocked */
-        __HAL_UNLOCK(hrng);
-        return HAL_ERROR;
+        /* New check to avoid false timeout detection in case of preemption */
+        if (__HAL_RNG_GET_FLAG(hrng, RNG_FLAG_DRDY) == RESET)
+        {
+          hrng->State = HAL_RNG_STATE_READY;
+          hrng->ErrorCode = HAL_RNG_ERROR_TIMEOUT;
+          /* Process Unlocked */
+          __HAL_UNLOCK(hrng);
+          return HAL_ERROR;
+        }
       }
     }
 
@@ -639,7 +644,7 @@
   */
 uint32_t HAL_RNG_GetRandomNumber(RNG_HandleTypeDef *hrng)
 {
-  if(HAL_RNG_GenerateRandomNumber(hrng, &(hrng->RandomNumber)) == HAL_OK)
+  if (HAL_RNG_GenerateRandomNumber(hrng, &(hrng->RandomNumber)) == HAL_OK)
   {
     return hrng->RandomNumber;
   }
@@ -734,6 +739,8 @@
 
     /* Clear the clock error flag */
     __HAL_RNG_CLEAR_IT(hrng, RNG_IT_CEI | RNG_IT_SEI);
+
+    return;
   }
 
   /* Check RNG data ready interrupt occurred */
@@ -779,7 +786,7 @@
   * @note   When RNG_FLAG_DRDY flag value is set, first random number has been read
   *         from DR register in IRQ Handler and is provided as callback parameter.
   *         Depending on valid data available in the conditioning output buffer,
-  *         additional words can be read by the application from DR register till 
+  *         additional words can be read by the application from DR register till
   *         DRDY bit remains high.
   * @param  hrng pointer to a RNG_HandleTypeDef structure that contains
   *                the configuration information for RNG.
@@ -816,8 +823,8 @@
 
 
 /** @addtogroup RNG_Exported_Functions_Group3
- *  @brief   Peripheral State functions
- *
+  *  @brief   Peripheral State functions
+  *
 @verbatim
  ===============================================================================
                       ##### Peripheral State functions #####
@@ -845,7 +852,7 @@
   * @brief  Return the RNG handle error code.
   * @param  hrng: pointer to a RNG_HandleTypeDef structure.
   * @retval RNG Error Code
-*/
+  */
 uint32_t HAL_RNG_GetError(RNG_HandleTypeDef *hrng)
 {
   /* Return RNG Error Code */
@@ -871,4 +878,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_rtc.c b/Src/stm32f7xx_hal_rtc.c
index f4ce9e0..14dbddc 100644
--- a/Src/stm32f7xx_hal_rtc.c
+++ b/Src/stm32f7xx_hal_rtc.c
@@ -11,6 +11,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
               ##### Backup Domain Operating Condition #####
@@ -108,9 +119,9 @@
 
   The compilation define  USE_HAL_RTC_REGISTER_CALLBACKS when set to 1
   allows the user to configure dynamically the driver callbacks.
-  Use Function @ref HAL_RTC_RegisterCallback() to register an interrupt callback.
+  Use Function HAL_RTC_RegisterCallback() to register an interrupt callback.
 
-  Function @ref HAL_RTC_RegisterCallback() allows to register following callbacks:
+  Function HAL_RTC_RegisterCallback() allows to register following callbacks:
     (+) AlarmAEventCallback          : RTC Alarm A Event callback.
     (+) AlarmBEventCallback          : RTC Alarm B Event callback.
     (+) TimeStampEventCallback       : RTC TimeStamp Event callback.
@@ -123,9 +134,9 @@
   This function takes as parameters the HAL peripheral handle, the Callback ID
   and a pointer to the user callback function.
 
-  Use function @ref HAL_RTC_UnRegisterCallback() to reset a callback to the default
+  Use function HAL_RTC_UnRegisterCallback() to reset a callback to the default
   weak function.
-  @ref HAL_RTC_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+  HAL_RTC_UnRegisterCallback() takes as parameters the HAL peripheral handle,
   and the Callback ID.
   This function allows to reset following callbacks:
     (+) AlarmAEventCallback          : RTC Alarm A Event callback.
@@ -138,13 +149,13 @@
     (+) MspInitCallback              : RTC MspInit callback.
     (+) MspDeInitCallback            : RTC MspDeInit callback.
 
-  By default, after the @ref HAL_RTC_Init() and when the state is HAL_RTC_STATE_RESET,
+  By default, after the HAL_RTC_Init() and when the state is HAL_RTC_STATE_RESET,
   all callbacks are set to the corresponding weak functions :
-  examples @ref AlarmAEventCallback(), @ref WakeUpTimerEventCallback().
+  examples AlarmAEventCallback(), WakeUpTimerEventCallback().
   Exception done for MspInit and MspDeInit callbacks that are reset to the legacy weak function
-  in the @ref HAL_RTC_Init()/@ref HAL_RTC_DeInit() only when these callbacks are null
+  in the HAL_RTC_Init()/HAL_RTC_DeInit() only when these callbacks are null
   (not registered beforehand).
-  If not, MspInit or MspDeInit are not null, @ref HAL_RTC_Init()/@ref HAL_RTC_DeInit()
+  If not, MspInit or MspDeInit are not null, HAL_RTC_Init()/HAL_RTC_DeInit()
   keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
   Callbacks can be registered/unregistered in HAL_RTC_STATE_READY state only.
@@ -152,25 +163,13 @@
   in HAL_RTC_STATE_READY or HAL_RTC_STATE_RESET state,
   thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
   In that case first register the MspInit/MspDeInit user callbacks
-  using @ref HAL_RTC_RegisterCallback() before calling @ref HAL_RTC_DeInit()
-  or @ref HAL_RTC_Init() function.
+  using HAL_RTC_RegisterCallback() before calling HAL_RTC_DeInit()
+  or HAL_RTC_Init() function.
 
   When The compilation define USE_HAL_RTC_REGISTER_CALLBACKS is set to 0 or
   not defined, the callback registration feature is not available and all callbacks
   are set to the corresponding weak functions.
    @endverbatim
-
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
   ******************************************************************************
   */
 
@@ -1785,9 +1784,8 @@
   */
 void HAL_RTC_DST_Add1Hour(RTC_HandleTypeDef *hrtc)
 {
-  UNUSED(hrtc);
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-  SET_BIT(RTC->CR, RTC_CR_ADD1H);
+  SET_BIT(hrtc->Instance->CR, RTC_CR_ADD1H);
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 }
 
@@ -1799,9 +1797,8 @@
   */
 void HAL_RTC_DST_Sub1Hour(RTC_HandleTypeDef *hrtc)
 {
-  UNUSED(hrtc);
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-  SET_BIT(RTC->CR, RTC_CR_SUB1H);
+  SET_BIT(hrtc->Instance->CR, RTC_CR_SUB1H);
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 }
 
@@ -1813,9 +1810,8 @@
   */
 void HAL_RTC_DST_SetStoreOperation(RTC_HandleTypeDef *hrtc)
 {
-  UNUSED(hrtc);
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-  SET_BIT(RTC->CR, RTC_CR_BKP);
+  SET_BIT(hrtc->Instance->CR, RTC_CR_BKP);
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 }
 
@@ -1826,9 +1822,8 @@
   */
 void HAL_RTC_DST_ClearStoreOperation(RTC_HandleTypeDef *hrtc)
 {
-  UNUSED(hrtc);
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-  CLEAR_BIT(RTC->CR, RTC_CR_BKP);
+  CLEAR_BIT(hrtc->Instance->CR, RTC_CR_BKP);
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 }
 
@@ -1839,8 +1834,7 @@
   */
 uint32_t HAL_RTC_DST_ReadStoreOperation(RTC_HandleTypeDef *hrtc)
 {
-  UNUSED(hrtc);
-  return READ_BIT(RTC->CR, RTC_CR_BKP);
+  return READ_BIT(hrtc->Instance->CR, RTC_CR_BKP);
 }
 
 /**
@@ -1925,4 +1919,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_rtc_ex.c b/Src/stm32f7xx_hal_rtc_ex.c
index 9359280..9213fab 100644
--- a/Src/stm32f7xx_hal_rtc_ex.c
+++ b/Src/stm32f7xx_hal_rtc_ex.c
@@ -11,6 +11,17 @@
   *           + Extension Control functions
   *           + Extension RTC features functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                   ##### How to use this driver #####
@@ -66,17 +77,6 @@
 
    @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -1872,4 +1872,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_sai.c b/Src/stm32f7xx_hal_sai.c
index a0ec9a5..263856a 100644
--- a/Src/stm32f7xx_hal_sai.c
+++ b/Src/stm32f7xx_hal_sai.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ==============================================================================
                   ##### How to use this driver #####
@@ -190,18 +201,6 @@
     and weak (surcharged) callbacks are used.
 
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -2557,4 +2556,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_sai_ex.c b/Src/stm32f7xx_hal_sai_ex.c
index f9eb862..19f75b4 100644
--- a/Src/stm32f7xx_hal_sai_ex.c
+++ b/Src/stm32f7xx_hal_sai_ex.c
@@ -10,13 +10,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -31,4 +30,3 @@
 /* Private functions ---------------------------------------------------------*/
 
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_sd.c b/Src/stm32f7xx_hal_sd.c
index 4a3744f..0472367 100644
--- a/Src/stm32f7xx_hal_sd.c
+++ b/Src/stm32f7xx_hal_sd.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -199,7 +210,7 @@
     The compilation define USE_HAL_SD_REGISTER_CALLBACKS when set to 1
     allows the user to configure dynamically the driver callbacks.
 
-    Use Functions @ref HAL_SD_RegisterCallback() to register a user callback,
+    Use Functions HAL_SD_RegisterCallback() to register a user callback,
     it allows to register following callbacks:
       (+) TxCpltCallback : callback when a transmission transfer is completed.
       (+) RxCpltCallback : callback when a reception transfer is completed.
@@ -210,7 +221,7 @@
     This function takes as parameters the HAL peripheral handle, the Callback ID
     and a pointer to the user callback function.
 
-    Use function @ref HAL_SD_UnRegisterCallback() to reset a callback to the default
+    Use function HAL_SD_UnRegisterCallback() to reset a callback to the default
     weak (surcharged) function. It allows to reset following callbacks:
       (+) TxCpltCallback : callback when a transmission transfer is completed.
       (+) RxCpltCallback : callback when a reception transfer is completed.
@@ -220,12 +231,12 @@
       (+) MspDeInitCallback  : SD MspDeInit.
     This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
-    By default, after the @ref HAL_SD_Init and if the state is HAL_SD_STATE_RESET
+    By default, after the HAL_SD_Init and if the state is HAL_SD_STATE_RESET
     all callbacks are reset to the corresponding legacy weak (surcharged) functions.
     Exception done for MspInit and MspDeInit callbacks that are respectively
-    reset to the legacy weak (surcharged) functions in the @ref HAL_SD_Init
-    and @ref  HAL_SD_DeInit only when these callbacks are null (not registered beforehand).
-    If not, MspInit or MspDeInit are not null, the @ref HAL_SD_Init and @ref HAL_SD_DeInit
+    reset to the legacy weak (surcharged) functions in the HAL_SD_Init
+    and  HAL_SD_DeInit only when these callbacks are null (not registered beforehand).
+    If not, MspInit or MspDeInit are not null, the HAL_SD_Init and HAL_SD_DeInit
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
     Callbacks can be registered/unregistered in READY state only.
@@ -233,8 +244,8 @@
     in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
     during the Init/DeInit.
     In that case first register the MspInit/MspDeInit user callbacks
-    using @ref HAL_SD_RegisterCallback before calling @ref HAL_SD_DeInit
-    or @ref HAL_SD_Init function.
+    using HAL_SD_RegisterCallback before calling HAL_SD_DeInit
+    or HAL_SD_Init function.
 
     When The compilation define USE_HAL_SD_REGISTER_CALLBACKS is set to 0 or
     not defined, the callback registering feature is not available
@@ -242,17 +253,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                       opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -430,6 +430,9 @@
   /* Enable SDMMC Clock */
   __HAL_SD_ENABLE(hsd);
 
+  /* Required power up waiting time before starting the SD initialization  sequence */
+  HAL_Delay(2);
+
   /* Identify card operating voltage */
   errorstate = SD_PowerON(hsd);
   if(errorstate != HAL_SD_ERROR_NONE)
@@ -3219,5 +3222,3 @@
   */
 
 #endif /* SDMMC1 */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_sdram.c b/Src/stm32f7xx_hal_sdram.c
index d2a8408..8836381 100644
--- a/Src/stm32f7xx_hal_sdram.c
+++ b/Src/stm32f7xx_hal_sdram.c
@@ -3,57 +3,68 @@
   * @file    stm32f7xx_hal_sdram.c
   * @author  MCD Application Team
   * @brief   SDRAM HAL module driver.
-  *          This file provides a generic firmware to drive SDRAM memories mounted 
+  *          This file provides a generic firmware to drive SDRAM memories mounted
   *          as external device.
-  *         
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                        ##### How to use this driver #####
-  ============================================================================== 
+  ==============================================================================
   [..]
-    This driver is a generic layered driver which contains a set of APIs used to 
-    control SDRAM memories. It uses the FMC layer functions to interface 
-    with SDRAM devices.  
+    This driver is a generic layered driver which contains a set of APIs used to
+    control SDRAM memories. It uses the FMC layer functions to interface
+    with SDRAM devices.
     The following sequence should be followed to configure the FMC to interface
-    with SDRAM memories: 
-      
+    with SDRAM memories:
+
    (#) Declare a SDRAM_HandleTypeDef handle structure, for example:
-          SDRAM_HandleTypeDef  hdsram 
-          
-       (++) Fill the SDRAM_HandleTypeDef handle "Init" field with the allowed 
+          SDRAM_HandleTypeDef  hsdram
+
+       (++) Fill the SDRAM_HandleTypeDef handle "Init" field with the allowed
             values of the structure member.
-            
-       (++) Fill the SDRAM_HandleTypeDef handle "Instance" field with a predefined 
-            base register instance for NOR or SDRAM device 
-             
+
+       (++) Fill the SDRAM_HandleTypeDef handle "Instance" field with a predefined
+            base register instance for NOR or SDRAM device
+
    (#) Declare a FMC_SDRAM_TimingTypeDef structure; for example:
           FMC_SDRAM_TimingTypeDef  Timing;
       and fill its fields with the allowed values of the structure member.
-      
+
    (#) Initialize the SDRAM Controller by calling the function HAL_SDRAM_Init(). This function
        performs the following sequence:
-          
+
        (##) MSP hardware layer configuration using the function HAL_SDRAM_MspInit()
-       (##) Control register configuration using the FMC SDRAM interface function 
+       (##) Control register configuration using the FMC SDRAM interface function
             FMC_SDRAM_Init()
-       (##) Timing register configuration using the FMC SDRAM interface function 
+       (##) Timing register configuration using the FMC SDRAM interface function
             FMC_SDRAM_Timing_Init()
        (##) Program the SDRAM external device by applying its initialization sequence
             according to the device plugged in your hardware. This step is mandatory
-            for accessing the SDRAM device.   
+            for accessing the SDRAM device.
 
-   (#) At this stage you can perform read/write accesses from/to the memory connected 
+   (#) At this stage you can perform read/write accesses from/to the memory connected
        to the SDRAM Bank. You can perform either polling or DMA transfer using the
        following APIs:
        (++) HAL_SDRAM_Read()/HAL_SDRAM_Write() for polling read/write access
        (++) HAL_SDRAM_Read_DMA()/HAL_SDRAM_Write_DMA() for DMA read/write transfer
-       
+
    (#) You can also control the SDRAM device by calling the control APIs HAL_SDRAM_WriteOperation_Enable()/
-       HAL_SDRAM_WriteOperation_Disable() to respectively enable/disable the SDRAM write operation or 
+       HAL_SDRAM_WriteOperation_Disable() to respectively enable/disable the SDRAM write operation or
        the function HAL_SDRAM_SendCommand() to send a specified command to the SDRAM
-       device. The command to be sent must be configured with the FMC_SDRAM_CommandTypeDef 
-       structure.   
-       
+       device. The command to be sent must be configured with the FMC_SDRAM_CommandTypeDef
+       structure.
+
    (#) You can continuously monitor the SDRAM device HAL state by calling the function
        HAL_SDRAM_GetState()
 
@@ -63,25 +74,25 @@
       The compilation define  USE_HAL_SDRAM_REGISTER_CALLBACKS when set to 1
       allows the user to configure dynamically the driver callbacks.
 
-      Use Functions @ref HAL_SDRAM_RegisterCallback() to register a user callback,
+      Use Functions HAL_SDRAM_RegisterCallback() to register a user callback,
       it allows to register following callbacks:
         (+) MspInitCallback    : SDRAM MspInit.
         (+) MspDeInitCallback  : SDRAM MspDeInit.
       This function takes as parameters the HAL peripheral handle, the Callback ID
       and a pointer to the user callback function.
 
-      Use function @ref HAL_SDRAM_UnRegisterCallback() to reset a callback to the default
+      Use function HAL_SDRAM_UnRegisterCallback() to reset a callback to the default
       weak (surcharged) function. It allows to reset following callbacks:
         (+) MspInitCallback    : SDRAM MspInit.
         (+) MspDeInitCallback  : SDRAM MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
-      By default, after the @ref HAL_SDRAM_Init and if the state is HAL_SDRAM_STATE_RESET
+      By default, after the HAL_SDRAM_Init and if the state is HAL_SDRAM_STATE_RESET
       all callbacks are reset to the corresponding legacy weak (surcharged) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the @ref HAL_SDRAM_Init
-      and @ref  HAL_SDRAM_DeInit only when these callbacks are null (not registered beforehand).
-      If not, MspInit or MspDeInit are not null, the @ref HAL_SDRAM_Init and @ref HAL_SDRAM_DeInit
+      reset to the legacy weak (surcharged) functions in the HAL_SDRAM_Init
+      and  HAL_SDRAM_DeInit only when these callbacks are null (not registered beforehand).
+      If not, MspInit or MspDeInit are not null, the HAL_SDRAM_Init and HAL_SDRAM_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
       Callbacks can be registered/unregistered in READY state only.
@@ -89,8 +100,8 @@
       in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
       during the Init/DeInit.
       In that case first register the MspInit/MspDeInit user callbacks
-      using @ref HAL_SDRAM_RegisterCallback before calling @ref HAL_SDRAM_DeInit
-      or @ref HAL_SDRAM_Init function.
+      using HAL_SDRAM_RegisterCallback before calling HAL_SDRAM_DeInit
+      or HAL_SDRAM_Init function.
 
       When The compilation define USE_HAL_SDRAM_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
@@ -98,78 +109,73 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
-  */ 
+  */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
 
+
 /** @addtogroup STM32F7xx_HAL_Driver
   * @{
   */
 
+#ifdef HAL_SDRAM_MODULE_ENABLED
+
 /** @defgroup SDRAM SDRAM
   * @brief SDRAM driver modules
   * @{
   */
-#ifdef HAL_SDRAM_MODULE_ENABLED
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/    
+/* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+static void SDRAM_DMACplt(DMA_HandleTypeDef *hdma);
+static void SDRAM_DMACpltProt(DMA_HandleTypeDef *hdma);
+static void SDRAM_DMAError(DMA_HandleTypeDef *hdma);
+
 /* Exported functions --------------------------------------------------------*/
 /** @defgroup SDRAM_Exported_Functions SDRAM Exported Functions
   * @{
   */
 
-/** @defgroup SDRAM_Exported_Functions_Group1 Initialization and de-initialization functions 
-  * @brief    Initialization and Configuration functions 
+/** @defgroup SDRAM_Exported_Functions_Group1 Initialization and de-initialization functions
+  * @brief    Initialization and Configuration functions
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
            ##### SDRAM Initialization and de_initialization functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to initialize/de-initialize
     the SDRAM memory
-  
+
 @endverbatim
   * @{
   */
-    
+
 /**
   * @brief  Performs the SDRAM device initialization sequence.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
-  * @param  Timing Pointer to SDRAM control timing structure 
+  * @param  Timing Pointer to SDRAM control timing structure
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_SDRAM_Init(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_TimingTypeDef *Timing)
-{   
+{
   /* Check the SDRAM handle parameter */
-  if(hsdram == NULL)
+  if (hsdram == NULL)
   {
     return HAL_ERROR;
   }
-  
-  if(hsdram->State == HAL_SDRAM_STATE_RESET)
-  {  
+
+  if (hsdram->State == HAL_SDRAM_STATE_RESET)
+  {
     /* Allocate lock resource and initialize it */
     hsdram->Lock = HAL_UNLOCKED;
 #if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
-    if(hsdram->MspInitCallback == NULL)
+    if (hsdram->MspInitCallback == NULL)
     {
       hsdram->MspInitCallback = HAL_SDRAM_MspInit;
     }
@@ -182,21 +188,20 @@
 #else
     /* Initialize the low level hardware (MSP) */
     HAL_SDRAM_MspInit(hsdram);
-#endif
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
   }
-  
+
   /* Initialize the SDRAM controller state */
   hsdram->State = HAL_SDRAM_STATE_BUSY;
-  
+
   /* Initialize SDRAM control Interface */
-  FMC_SDRAM_Init(hsdram->Instance, &(hsdram->Init));
-  
+  (void)FMC_SDRAM_Init(hsdram->Instance, &(hsdram->Init));
+
   /* Initialize SDRAM timing Interface */
-  FMC_SDRAM_Timing_Init(hsdram->Instance, Timing, hsdram->Init.SDBank); 
-  
+  (void)FMC_SDRAM_Timing_Init(hsdram->Instance, Timing, hsdram->Init.SDBank);
   /* Update the SDRAM controller state */
   hsdram->State = HAL_SDRAM_STATE_READY;
-  
+
   return HAL_OK;
 }
 
@@ -209,7 +214,7 @@
 HAL_StatusTypeDef HAL_SDRAM_DeInit(SDRAM_HandleTypeDef *hsdram)
 {
 #if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
-  if(hsdram->MspDeInitCallback == NULL)
+  if (hsdram->MspDeInitCallback == NULL)
   {
     hsdram->MspDeInitCallback = HAL_SDRAM_MspDeInit;
   }
@@ -219,10 +224,10 @@
 #else
   /* Initialize the low level hardware (MSP) */
   HAL_SDRAM_MspDeInit(hsdram);
-#endif
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
 
   /* Configure the SDRAM registers with their reset values */
-  FMC_SDRAM_DeInit(hsdram->Instance, hsdram->Init.SDBank);
+  (void)FMC_SDRAM_DeInit(hsdram->Instance, hsdram->Init.SDBank);
 
   /* Reset the SDRAM controller state */
   hsdram->State = HAL_SDRAM_STATE_RESET;
@@ -243,10 +248,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hsdram);
- 
+
   /* NOTE: This function Should not be modified, when the callback is needed,
             the HAL_SDRAM_MspInit could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -259,10 +264,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hsdram);
- 
+
   /* NOTE: This function Should not be modified, when the callback is needed,
             the HAL_SDRAM_MspDeInit could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -270,18 +275,18 @@
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @retval HAL status
-*/
+  */
 void HAL_SDRAM_IRQHandler(SDRAM_HandleTypeDef *hsdram)
 {
   /* Check SDRAM interrupt Rising edge flag */
-  if(__FMC_SDRAM_GET_FLAG(hsdram->Instance, FMC_SDRAM_FLAG_REFRESH_IT))
+  if (__FMC_SDRAM_GET_FLAG(hsdram->Instance, FMC_SDRAM_FLAG_REFRESH_IT))
   {
     /* SDRAM refresh error interrupt callback */
 #if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
     hsdram->RefreshErrorCallback(hsdram);
 #else
     HAL_SDRAM_RefreshErrorCallback(hsdram);
-#endif
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
 
     /* Clear SDRAM refresh error interrupt pending bit */
     __FMC_SDRAM_CLEAR_FLAG(hsdram->Instance, FMC_SDRAM_FLAG_REFRESH_ERROR);
@@ -291,17 +296,17 @@
 /**
   * @brief  SDRAM Refresh error callback.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
-  *                the configuration information for SDRAM module. 
+  *                the configuration information for SDRAM module.
   * @retval None
   */
 __weak void HAL_SDRAM_RefreshErrorCallback(SDRAM_HandleTypeDef *hsdram)
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hsdram);
- 
+
   /* NOTE: This function Should not be modified, when the callback is needed,
             the HAL_SDRAM_RefreshErrorCallback could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -314,10 +319,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hdma);
- 
+
   /* NOTE: This function Should not be modified, when the callback is needed,
             the HAL_SDRAM_DMA_XferCpltCallback could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -329,26 +334,26 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hdma);
- 
+
   /* NOTE: This function Should not be modified, when the callback is needed,
             the HAL_SDRAM_DMA_XferErrorCallback could be implemented in the user file
-   */ 
+   */
 }
 
 /**
   * @}
   */
 
-/** @defgroup SDRAM_Exported_Functions_Group2 Input and Output functions 
-  * @brief    Input Output and memory control functions 
+/** @defgroup SDRAM_Exported_Functions_Group2 Input and Output functions
+  * @brief    Input Output and memory control functions
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
                     ##### SDRAM Input and Output functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to use and control the SDRAM memory
-  
+
 @endverbatim
   * @{
   */
@@ -358,291 +363,377 @@
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @param  pAddress Pointer to read start address
-  * @param  pDstBuffer Pointer to destination buffer  
+  * @param  pDstBuffer Pointer to destination buffer
   * @param  BufferSize Size of the buffer to read from memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SDRAM_Read_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pDstBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SDRAM_Read_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pDstBuffer,
+                                    uint32_t BufferSize)
 {
+  uint32_t size;
   __IO uint8_t *pSdramAddress = (uint8_t *)pAddress;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsdram);
-  
+  uint8_t *pdestbuff = pDstBuffer;
+  HAL_SDRAM_StateTypeDef state = hsdram->State;
+
   /* Check the SDRAM controller state */
-  if(hsdram->State == HAL_SDRAM_STATE_BUSY)
+  if (state == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  else if(hsdram->State == HAL_SDRAM_STATE_PRECHARGED)
+  else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
-    return  HAL_ERROR; 
-  }  
-  
-  /* Read data from source */
-  for(; BufferSize != 0; BufferSize--)
-  {
-    *pDstBuffer = *(__IO uint8_t *)pSdramAddress;  
-    pDstBuffer++;
-    pSdramAddress++;
-  }
-  
-  /* Process Unlocked */
-  __HAL_UNLOCK(hsdram);
-  
-  return HAL_OK; 
-}
+    /* Process Locked */
+    __HAL_LOCK(hsdram);
 
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Read data from source */
+    for (size = BufferSize; size != 0U; size--)
+    {
+      *pdestbuff = *(__IO uint8_t *)pSdramAddress;
+      pdestbuff++;
+      pSdramAddress++;
+    }
+
+    /* Update the SDRAM controller state */
+    hsdram->State = state;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hsdram);
+  }
+  else
+  {
+    return  HAL_ERROR;
+  }
+
+  return HAL_OK;
+}
 
 /**
   * @brief  Writes 8-bit data buffer to SDRAM memory.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @param  pAddress Pointer to write start address
-  * @param  pSrcBuffer Pointer to source buffer to write  
+  * @param  pSrcBuffer Pointer to source buffer to write
   * @param  BufferSize Size of the buffer to write to memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SDRAM_Write_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pSrcBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SDRAM_Write_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pSrcBuffer,
+                                     uint32_t BufferSize)
 {
+  uint32_t size;
   __IO uint8_t *pSdramAddress = (uint8_t *)pAddress;
-  uint32_t tmp = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsdram);
-  
+  uint8_t *psrcbuff = pSrcBuffer;
+
   /* Check the SDRAM controller state */
-  tmp = hsdram->State;
-  
-  if(tmp == HAL_SDRAM_STATE_BUSY)
+  if (hsdram->State == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  else if((tmp == HAL_SDRAM_STATE_PRECHARGED) || (tmp == HAL_SDRAM_STATE_WRITE_PROTECTED))
+  else if (hsdram->State == HAL_SDRAM_STATE_READY)
   {
-    return  HAL_ERROR; 
+    /* Process Locked */
+    __HAL_LOCK(hsdram);
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Write data to memory */
+    for (size = BufferSize; size != 0U; size--)
+    {
+      *(__IO uint8_t *)pSdramAddress = *psrcbuff;
+      psrcbuff++;
+      pSdramAddress++;
+    }
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_READY;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hsdram);
   }
-  
-  /* Write data to memory */
-  for(; BufferSize != 0; BufferSize--)
+  else
   {
-    *(__IO uint8_t *)pSdramAddress = *pSrcBuffer;
-    pSrcBuffer++;
-    pSdramAddress++;
+    return  HAL_ERROR;
   }
-  
-  /* Process Unlocked */
-  __HAL_UNLOCK(hsdram);    
-  
-  return HAL_OK;   
+
+  return HAL_OK;
 }
 
-
 /**
-  * @brief  Reads 16-bit data buffer from the SDRAM memory. 
+  * @brief  Reads 16-bit data buffer from the SDRAM memory.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @param  pAddress Pointer to read start address
-  * @param  pDstBuffer Pointer to destination buffer  
+  * @param  pDstBuffer Pointer to destination buffer
   * @param  BufferSize Size of the buffer to read from memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SDRAM_Read_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pDstBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SDRAM_Read_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pDstBuffer,
+                                     uint32_t BufferSize)
 {
-  __IO uint16_t *pSdramAddress = (uint16_t *)pAddress;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsdram);
-  
+  uint32_t size;
+  __IO uint32_t *pSdramAddress = pAddress;
+  uint16_t *pdestbuff = pDstBuffer;
+  HAL_SDRAM_StateTypeDef state = hsdram->State;
+
   /* Check the SDRAM controller state */
-  if(hsdram->State == HAL_SDRAM_STATE_BUSY)
+  if (state == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  else if(hsdram->State == HAL_SDRAM_STATE_PRECHARGED)
+  else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
-    return  HAL_ERROR; 
-  }  
-  
-  /* Read data from source */
-  for(; BufferSize != 0; BufferSize--)
-  {
-    *pDstBuffer = *(__IO uint16_t *)pSdramAddress;  
-    pDstBuffer++;
-    pSdramAddress++;               
+    /* Process Locked */
+    __HAL_LOCK(hsdram);
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Read data from memory */
+    for (size = BufferSize; size >= 2U ; size -= 2U)
+    {
+      *pdestbuff = (uint16_t)((*pSdramAddress) & 0x0000FFFFU);
+      pdestbuff++;
+      *pdestbuff = (uint16_t)(((*pSdramAddress) & 0xFFFF0000U) >> 16U);
+      pdestbuff++;
+      pSdramAddress++;
+    }
+
+    /* Read last 16-bits if size is not 32-bits multiple */
+    if ((BufferSize % 2U) != 0U)
+    {
+      *pdestbuff = (uint16_t)((*pSdramAddress) & 0x0000FFFFU);
+    }
+
+    /* Update the SDRAM controller state */
+    hsdram->State = state;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hsdram);
   }
-  
-  /* Process Unlocked */
-  __HAL_UNLOCK(hsdram);       
-  
-  return HAL_OK; 
+  else
+  {
+    return  HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
-  * @brief  Writes 16-bit data buffer to SDRAM memory. 
+  * @brief  Writes 16-bit data buffer to SDRAM memory.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @param  pAddress Pointer to write start address
-  * @param  pSrcBuffer Pointer to source buffer to write  
+  * @param  pSrcBuffer Pointer to source buffer to write
   * @param  BufferSize Size of the buffer to write to memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SDRAM_Write_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pSrcBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SDRAM_Write_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pSrcBuffer,
+                                      uint32_t BufferSize)
 {
-  __IO uint16_t *pSdramAddress = (uint16_t *)pAddress;
-  uint32_t tmp = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsdram);
-  
+  uint32_t size;
+  __IO uint32_t *psdramaddress = pAddress;
+  uint16_t *psrcbuff = pSrcBuffer;
+
   /* Check the SDRAM controller state */
-  tmp = hsdram->State;
-  
-  if(tmp == HAL_SDRAM_STATE_BUSY)
+  if (hsdram->State == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  else if((tmp == HAL_SDRAM_STATE_PRECHARGED) || (tmp == HAL_SDRAM_STATE_WRITE_PROTECTED))
+  else if (hsdram->State == HAL_SDRAM_STATE_READY)
   {
-    return  HAL_ERROR; 
+    /* Process Locked */
+    __HAL_LOCK(hsdram);
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Write data to memory */
+    for (size = BufferSize; size >= 2U ; size -= 2U)
+    {
+      *psdramaddress = (uint32_t)(*psrcbuff);
+      psrcbuff++;
+      *psdramaddress |= ((uint32_t)(*psrcbuff) << 16U);
+      psrcbuff++;
+      psdramaddress++;
+    }
+
+    /* Write last 16-bits if size is not 32-bits multiple */
+    if ((BufferSize % 2U) != 0U)
+    {
+      *psdramaddress = ((uint32_t)(*psrcbuff) & 0x0000FFFFU) | ((*psdramaddress) & 0xFFFF0000U);
+    }
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_READY;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hsdram);
   }
-  
-  /* Write data to memory */
-  for(; BufferSize != 0; BufferSize--)
+  else
   {
-    *(__IO uint16_t *)pSdramAddress = *pSrcBuffer;
-    pSrcBuffer++;
-    pSdramAddress++;            
+    return  HAL_ERROR;
   }
-  
-  /* Process Unlocked */
-  __HAL_UNLOCK(hsdram);    
-  
-  return HAL_OK;   
+
+  return HAL_OK;
 }
 
 /**
-  * @brief  Reads 32-bit data buffer from the SDRAM memory. 
+  * @brief  Reads 32-bit data buffer from the SDRAM memory.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @param  pAddress Pointer to read start address
-  * @param  pDstBuffer Pointer to destination buffer  
+  * @param  pDstBuffer Pointer to destination buffer
   * @param  BufferSize Size of the buffer to read from memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SDRAM_Read_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SDRAM_Read_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer,
+                                     uint32_t BufferSize)
 {
+  uint32_t size;
   __IO uint32_t *pSdramAddress = (uint32_t *)pAddress;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsdram);
-  
+  uint32_t *pdestbuff = pDstBuffer;
+  HAL_SDRAM_StateTypeDef state = hsdram->State;
+
   /* Check the SDRAM controller state */
-  if(hsdram->State == HAL_SDRAM_STATE_BUSY)
+  if (state == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  else if(hsdram->State == HAL_SDRAM_STATE_PRECHARGED)
+  else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
-    return  HAL_ERROR; 
-  }  
-  
-  /* Read data from source */
-  for(; BufferSize != 0; BufferSize--)
-  {
-    *pDstBuffer = *(__IO uint32_t *)pSdramAddress;  
-    pDstBuffer++;
-    pSdramAddress++;               
+    /* Process Locked */
+    __HAL_LOCK(hsdram);
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Read data from source */
+    for (size = BufferSize; size != 0U; size--)
+    {
+      *pdestbuff = *(__IO uint32_t *)pSdramAddress;
+      pdestbuff++;
+      pSdramAddress++;
+    }
+
+    /* Update the SDRAM controller state */
+    hsdram->State = state;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hsdram);
   }
-  
-  /* Process Unlocked */
-  __HAL_UNLOCK(hsdram);       
-  
-  return HAL_OK; 
+  else
+  {
+    return  HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
-  * @brief  Writes 32-bit data buffer to SDRAM memory. 
+  * @brief  Writes 32-bit data buffer to SDRAM memory.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @param  pAddress Pointer to write start address
-  * @param  pSrcBuffer Pointer to source buffer to write  
+  * @param  pSrcBuffer Pointer to source buffer to write
   * @param  BufferSize Size of the buffer to write to memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SDRAM_Write_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SDRAM_Write_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer,
+                                      uint32_t BufferSize)
 {
-  __IO uint32_t *pSdramAddress = (uint32_t *)pAddress;
-  uint32_t tmp = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsdram);
-  
+  uint32_t size;
+  __IO uint32_t *pSdramAddress = pAddress;
+  uint32_t *psrcbuff = pSrcBuffer;
+
   /* Check the SDRAM controller state */
-  tmp = hsdram->State;
-  
-  if(tmp == HAL_SDRAM_STATE_BUSY)
+  if (hsdram->State == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  else if((tmp == HAL_SDRAM_STATE_PRECHARGED) || (tmp == HAL_SDRAM_STATE_WRITE_PROTECTED))
+  else if (hsdram->State == HAL_SDRAM_STATE_READY)
   {
-    return  HAL_ERROR; 
+    /* Process Locked */
+    __HAL_LOCK(hsdram);
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Write data to memory */
+    for (size = BufferSize; size != 0U; size--)
+    {
+      *pSdramAddress = *psrcbuff;
+      psrcbuff++;
+      pSdramAddress++;
+    }
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_READY;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hsdram);
   }
-  
-  /* Write data to memory */
-  for(; BufferSize != 0; BufferSize--)
+  else
   {
-    *(__IO uint32_t *)pSdramAddress = *pSrcBuffer;
-    pSrcBuffer++;
-    pSdramAddress++;          
+    return  HAL_ERROR;
   }
-  
-  /* Process Unlocked */
-  __HAL_UNLOCK(hsdram);    
-  
-  return HAL_OK;  
+
+  return HAL_OK;
 }
 
 /**
-  * @brief  Reads a Words data from the SDRAM memory using DMA transfer. 
+  * @brief  Reads a Words data from the SDRAM memory using DMA transfer.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @param  pAddress Pointer to read start address
-  * @param  pDstBuffer Pointer to destination buffer  
+  * @param  pDstBuffer Pointer to destination buffer
   * @param  BufferSize Size of the buffer to read from memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SDRAM_Read_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SDRAM_Read_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer,
+                                     uint32_t BufferSize)
 {
-  uint32_t tmp = 0;
-    
-  /* Process Locked */
-  __HAL_LOCK(hsdram);
-  
-  /* Check the SDRAM controller state */  
-  tmp = hsdram->State;
-  
-  if(tmp == HAL_SDRAM_STATE_BUSY)
+  HAL_StatusTypeDef status;
+  HAL_SDRAM_StateTypeDef state = hsdram->State;
+
+  /* Check the SDRAM controller state */
+  if (state == HAL_SDRAM_STATE_BUSY)
   {
-    return HAL_BUSY;
+    status = HAL_BUSY;
   }
-  else if(tmp == HAL_SDRAM_STATE_PRECHARGED)
+  else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
-    return  HAL_ERROR; 
-  }  
-  
-  /* Configure DMA user callbacks */
-  hsdram->hdma->XferCpltCallback  = HAL_SDRAM_DMA_XferCpltCallback;
-  hsdram->hdma->XferErrorCallback = HAL_SDRAM_DMA_XferErrorCallback;
-  
-  /* Enable the DMA Stream */
-  HAL_DMA_Start_IT(hsdram->hdma, (uint32_t)pAddress, (uint32_t)pDstBuffer, (uint32_t)BufferSize);
-  
-  /* Process Unlocked */
-  __HAL_UNLOCK(hsdram);  
-  
-  return HAL_OK; 
+    /* Process Locked */
+    __HAL_LOCK(hsdram);
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Configure DMA user callbacks */
+    if (state == HAL_SDRAM_STATE_READY)
+    {
+      hsdram->hdma->XferCpltCallback = SDRAM_DMACplt;
+    }
+    else
+    {
+      hsdram->hdma->XferCpltCallback = SDRAM_DMACpltProt;
+    }
+    hsdram->hdma->XferErrorCallback = SDRAM_DMAError;
+
+    /* Enable the DMA Stream */
+    status = HAL_DMA_Start_IT(hsdram->hdma, (uint32_t)pAddress, (uint32_t)pDstBuffer, (uint32_t)BufferSize);
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hsdram);
+  }
+  else
+  {
+    status = HAL_ERROR;
+  }
+
+  return status;
 }
 
 /**
@@ -650,41 +741,46 @@
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
   * @param  pAddress Pointer to write start address
-  * @param  pSrcBuffer Pointer to source buffer to write  
+  * @param  pSrcBuffer Pointer to source buffer to write
   * @param  BufferSize Size of the buffer to write to memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SDRAM_Write_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SDRAM_Write_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer,
+                                      uint32_t BufferSize)
 {
-  uint32_t tmp = 0;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsdram);
-  
-  /* Check the SDRAM controller state */  
-  tmp = hsdram->State;
-  
-  if(tmp == HAL_SDRAM_STATE_BUSY)
+  HAL_StatusTypeDef status;
+
+  /* Check the SDRAM controller state */
+  if (hsdram->State == HAL_SDRAM_STATE_BUSY)
   {
-    return HAL_BUSY;
+    status = HAL_BUSY;
   }
-  else if((tmp == HAL_SDRAM_STATE_PRECHARGED) || (tmp == HAL_SDRAM_STATE_WRITE_PROTECTED))
+  else if (hsdram->State == HAL_SDRAM_STATE_READY)
   {
-    return  HAL_ERROR; 
-  }  
-  
-  /* Configure DMA user callbacks */
-  hsdram->hdma->XferCpltCallback  = HAL_SDRAM_DMA_XferCpltCallback;
-  hsdram->hdma->XferErrorCallback = HAL_SDRAM_DMA_XferErrorCallback;
-  
-  /* Enable the DMA Stream */
-  HAL_DMA_Start_IT(hsdram->hdma, (uint32_t)pSrcBuffer, (uint32_t)pAddress, (uint32_t)BufferSize);
-  
-  /* Process Unlocked */
-  __HAL_UNLOCK(hsdram);
-  
-  return HAL_OK;
+    /* Process Locked */
+    __HAL_LOCK(hsdram);
+
+    /* Update the SDRAM controller state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Configure DMA user callbacks */
+    hsdram->hdma->XferCpltCallback = SDRAM_DMACplt;
+    hsdram->hdma->XferErrorCallback = SDRAM_DMAError;
+
+    /* Enable the DMA Stream */
+    status = HAL_DMA_Start_IT(hsdram->hdma, (uint32_t)pSrcBuffer, (uint32_t)pAddress, (uint32_t)BufferSize);
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hsdram);
+  }
+  else
+  {
+    status = HAL_ERROR;
+  }
+
+  return status;
 }
+
 #if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
 /**
   * @brief  Register a User SDRAM Callback
@@ -698,53 +794,54 @@
   * @param pCallback : pointer to the Callback function
   * @retval status
   */
-HAL_StatusTypeDef HAL_SDRAM_RegisterCallback (SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId, pSDRAM_CallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_SDRAM_RegisterCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId,
+                                             pSDRAM_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
   HAL_SDRAM_StateTypeDef state;
-  
-  if(pCallback == NULL)
+
+  if (pCallback == NULL)
   {
     return HAL_ERROR;
   }
 
   /* Process locked */
   __HAL_LOCK(hsdram);
-  
+
   state = hsdram->State;
-  if((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
+  if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
     switch (CallbackId)
     {
-    case HAL_SDRAM_MSP_INIT_CB_ID :
-      hsdram->MspInitCallback = pCallback;
-      break;
-    case HAL_SDRAM_MSP_DEINIT_CB_ID :
-      hsdram->MspDeInitCallback = pCallback;
-      break;
-    case HAL_SDRAM_REFRESH_ERR_CB_ID :
-      hsdram->RefreshErrorCallback = pCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SDRAM_MSP_INIT_CB_ID :
+        hsdram->MspInitCallback = pCallback;
+        break;
+      case HAL_SDRAM_MSP_DEINIT_CB_ID :
+        hsdram->MspDeInitCallback = pCallback;
+        break;
+      case HAL_SDRAM_REFRESH_ERR_CB_ID :
+        hsdram->RefreshErrorCallback = pCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
-  else if(hsdram->State == HAL_SDRAM_STATE_RESET)
+  else if (hsdram->State == HAL_SDRAM_STATE_RESET)
   {
     switch (CallbackId)
     {
-    case HAL_SDRAM_MSP_INIT_CB_ID :
-      hsdram->MspInitCallback = pCallback;
-      break;
-    case HAL_SDRAM_MSP_DEINIT_CB_ID :
-      hsdram->MspDeInitCallback = pCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SDRAM_MSP_INIT_CB_ID :
+        hsdram->MspInitCallback = pCallback;
+        break;
+      case HAL_SDRAM_MSP_DEINIT_CB_ID :
+        hsdram->MspDeInitCallback = pCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -757,6 +854,7 @@
   __HAL_UNLOCK(hsdram);
   return status;
 }
+
 /**
   * @brief  Unregister a User SDRAM Callback
   *         SDRAM Callback is redirected to the weak (surcharged) predefined callback
@@ -770,54 +868,54 @@
   *          @arg @ref HAL_SDRAM_DMA_XFER_ERR_CB_ID   SDRAM DMA Xfer Error callback ID
   * @retval status
   */
-HAL_StatusTypeDef HAL_SDRAM_UnRegisterCallback (SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId)
+HAL_StatusTypeDef HAL_SDRAM_UnRegisterCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId)
 {
   HAL_StatusTypeDef status = HAL_OK;
   HAL_SDRAM_StateTypeDef state;
-  
+
   /* Process locked */
   __HAL_LOCK(hsdram);
 
   state = hsdram->State;
-  if((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
+  if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
     switch (CallbackId)
     {
-    case HAL_SDRAM_MSP_INIT_CB_ID :
-      hsdram->MspInitCallback = HAL_SDRAM_MspInit;
-      break;
-    case HAL_SDRAM_MSP_DEINIT_CB_ID :
-      hsdram->MspDeInitCallback = HAL_SDRAM_MspDeInit;
-      break;
-    case HAL_SDRAM_REFRESH_ERR_CB_ID :
-      hsdram->RefreshErrorCallback = HAL_SDRAM_RefreshErrorCallback;
-      break;
-    case HAL_SDRAM_DMA_XFER_CPLT_CB_ID :
-      hsdram->DmaXferCpltCallback = HAL_SDRAM_DMA_XferCpltCallback;
-      break;
-    case HAL_SDRAM_DMA_XFER_ERR_CB_ID :
-      hsdram->DmaXferErrorCallback = HAL_SDRAM_DMA_XferErrorCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SDRAM_MSP_INIT_CB_ID :
+        hsdram->MspInitCallback = HAL_SDRAM_MspInit;
+        break;
+      case HAL_SDRAM_MSP_DEINIT_CB_ID :
+        hsdram->MspDeInitCallback = HAL_SDRAM_MspDeInit;
+        break;
+      case HAL_SDRAM_REFRESH_ERR_CB_ID :
+        hsdram->RefreshErrorCallback = HAL_SDRAM_RefreshErrorCallback;
+        break;
+      case HAL_SDRAM_DMA_XFER_CPLT_CB_ID :
+        hsdram->DmaXferCpltCallback = HAL_SDRAM_DMA_XferCpltCallback;
+        break;
+      case HAL_SDRAM_DMA_XFER_ERR_CB_ID :
+        hsdram->DmaXferErrorCallback = HAL_SDRAM_DMA_XferErrorCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
-  else if(hsdram->State == HAL_SDRAM_STATE_RESET)
+  else if (hsdram->State == HAL_SDRAM_STATE_RESET)
   {
     switch (CallbackId)
     {
-    case HAL_SDRAM_MSP_INIT_CB_ID :
-      hsdram->MspInitCallback = HAL_SDRAM_MspInit;
-      break;
-    case HAL_SDRAM_MSP_DEINIT_CB_ID :
-      hsdram->MspDeInitCallback = HAL_SDRAM_MspDeInit;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SDRAM_MSP_INIT_CB_ID :
+        hsdram->MspInitCallback = HAL_SDRAM_MspInit;
+        break;
+      case HAL_SDRAM_MSP_DEINIT_CB_ID :
+        hsdram->MspDeInitCallback = HAL_SDRAM_MspDeInit;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -842,12 +940,13 @@
   * @param pCallback : pointer to the Callback function
   * @retval status
   */
-HAL_StatusTypeDef HAL_SDRAM_RegisterDmaCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId, pSDRAM_DmaCallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_SDRAM_RegisterDmaCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId,
+                                                pSDRAM_DmaCallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
   HAL_SDRAM_StateTypeDef state;
-  
-  if(pCallback == NULL)
+
+  if (pCallback == NULL)
   {
     return HAL_ERROR;
   }
@@ -856,20 +955,20 @@
   __HAL_LOCK(hsdram);
 
   state = hsdram->State;
-  if((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
+  if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
     switch (CallbackId)
     {
-    case HAL_SDRAM_DMA_XFER_CPLT_CB_ID :
-      hsdram->DmaXferCpltCallback = pCallback;
-      break;
-    case HAL_SDRAM_DMA_XFER_ERR_CB_ID :
-      hsdram->DmaXferErrorCallback = pCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SDRAM_DMA_XFER_CPLT_CB_ID :
+        hsdram->DmaXferCpltCallback = pCallback;
+        break;
+      case HAL_SDRAM_DMA_XFER_ERR_CB_ID :
+        hsdram->DmaXferErrorCallback = pCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -882,19 +981,19 @@
   __HAL_UNLOCK(hsdram);
   return status;
 }
-#endif
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
 
 /**
   * @}
   */
-  
-/** @defgroup SDRAM_Exported_Functions_Group3 Control functions 
- *  @brief   management functions 
- *
-@verbatim   
+
+/** @defgroup SDRAM_Exported_Functions_Group3 Control functions
+  *  @brief   management functions
+  *
+@verbatim
   ==============================================================================
                          ##### SDRAM Control functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
     This subsection provides a set of functions allowing to control dynamically
     the SDRAM interface.
@@ -910,23 +1009,29 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_SDRAM_WriteProtection_Enable(SDRAM_HandleTypeDef *hsdram)
-{ 
-  /* Check the SDRAM controller state */ 
-  if(hsdram->State == HAL_SDRAM_STATE_BUSY)
+{
+  /* Check the SDRAM controller state */
+  if (hsdram->State == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_BUSY;
-  
-  /* Enable write protection */
-  FMC_SDRAM_WriteProtection_Enable(hsdram->Instance, hsdram->Init.SDBank);
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_WRITE_PROTECTED;
-  
-  return HAL_OK;  
+  else if (hsdram->State == HAL_SDRAM_STATE_READY)
+  {
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Enable write protection */
+    (void)FMC_SDRAM_WriteProtection_Enable(hsdram->Instance, hsdram->Init.SDBank);
+
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_WRITE_PROTECTED;
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
@@ -937,21 +1042,29 @@
   */
 HAL_StatusTypeDef HAL_SDRAM_WriteProtection_Disable(SDRAM_HandleTypeDef *hsdram)
 {
+  HAL_SDRAM_StateTypeDef state = hsdram->State;
+
   /* Check the SDRAM controller state */
-  if(hsdram->State == HAL_SDRAM_STATE_BUSY)
+  if (state == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_BUSY;
-  
-  /* Disable write protection */
-  FMC_SDRAM_WriteProtection_Disable(hsdram->Instance, hsdram->Init.SDBank);
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_READY;
-  
+  else if (state == HAL_SDRAM_STATE_WRITE_PROTECTED)
+  {
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Disable write protection */
+    (void)FMC_SDRAM_WriteProtection_Disable(hsdram->Instance, hsdram->Init.SDBank);
+
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_READY;
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
   return HAL_OK;
 }
 
@@ -962,85 +1075,106 @@
   * @param  Command SDRAM command structure
   * @param  Timeout Timeout duration
   * @retval HAL status
-  */  
-HAL_StatusTypeDef HAL_SDRAM_SendCommand(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout)
+  */
+HAL_StatusTypeDef HAL_SDRAM_SendCommand(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_CommandTypeDef *Command,
+                                        uint32_t Timeout)
 {
+  HAL_SDRAM_StateTypeDef state = hsdram->State;
+
   /* Check the SDRAM controller state */
-  if(hsdram->State == HAL_SDRAM_STATE_BUSY)
+  if (state == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
   }
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_BUSY;
-  
-  /* Send SDRAM command */
-  FMC_SDRAM_SendCommand(hsdram->Instance, Command, Timeout);
-  
-  /* Update the SDRAM controller state state */
-  if(Command->CommandMode == FMC_SDRAM_CMD_PALL)
+  else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_PRECHARGED))
   {
-    hsdram->State = HAL_SDRAM_STATE_PRECHARGED;
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Send SDRAM command */
+    (void)FMC_SDRAM_SendCommand(hsdram->Instance, Command, Timeout);
+
+    /* Update the SDRAM controller state state */
+    if (Command->CommandMode == FMC_SDRAM_CMD_PALL)
+    {
+      hsdram->State = HAL_SDRAM_STATE_PRECHARGED;
+    }
+    else
+    {
+      hsdram->State = HAL_SDRAM_STATE_READY;
+    }
   }
   else
   {
-    hsdram->State = HAL_SDRAM_STATE_READY;
+    return HAL_ERROR;
   }
-  
-  return HAL_OK;  
+
+  return HAL_OK;
 }
 
 /**
   * @brief  Programs the SDRAM Memory Refresh rate.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
-  *                the configuration information for SDRAM module.  
-  * @param  RefreshRate The SDRAM refresh rate value       
+  *                the configuration information for SDRAM module.
+  * @param  RefreshRate The SDRAM refresh rate value
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_SDRAM_ProgramRefreshRate(SDRAM_HandleTypeDef *hsdram, uint32_t RefreshRate)
 {
   /* Check the SDRAM controller state */
-  if(hsdram->State == HAL_SDRAM_STATE_BUSY)
+  if (hsdram->State == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
-  } 
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_BUSY;
-  
-  /* Program the refresh rate */
-  FMC_SDRAM_ProgramRefreshRate(hsdram->Instance ,RefreshRate);
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_READY;
-  
-  return HAL_OK;   
+  }
+  else if (hsdram->State == HAL_SDRAM_STATE_READY)
+  {
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Program the refresh rate */
+    (void)FMC_SDRAM_ProgramRefreshRate(hsdram->Instance, RefreshRate);
+
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_READY;
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
   * @brief  Sets the Number of consecutive SDRAM Memory auto Refresh commands.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
-  *                the configuration information for SDRAM module.  
-  * @param  AutoRefreshNumber The SDRAM auto Refresh number       
+  *                the configuration information for SDRAM module.
+  * @param  AutoRefreshNumber The SDRAM auto Refresh number
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_SDRAM_SetAutoRefreshNumber(SDRAM_HandleTypeDef *hsdram, uint32_t AutoRefreshNumber)
 {
   /* Check the SDRAM controller state */
-  if(hsdram->State == HAL_SDRAM_STATE_BUSY)
+  if (hsdram->State == HAL_SDRAM_STATE_BUSY)
   {
     return HAL_BUSY;
-  } 
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_BUSY;
-  
-  /* Set the Auto-Refresh number */
-  FMC_SDRAM_SetAutoRefreshNumber(hsdram->Instance ,AutoRefreshNumber);
-  
-  /* Update the SDRAM state */
-  hsdram->State = HAL_SDRAM_STATE_READY;
-  
+  }
+  else if (hsdram->State == HAL_SDRAM_STATE_READY)
+  {
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_BUSY;
+
+    /* Set the Auto-Refresh number */
+    (void)FMC_SDRAM_SetAutoRefreshNumber(hsdram->Instance, AutoRefreshNumber);
+
+    /* Update the SDRAM state */
+    hsdram->State = HAL_SDRAM_STATE_READY;
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
   return HAL_OK;
 }
 
@@ -1048,27 +1182,27 @@
   * @brief  Returns the SDRAM memory current mode.
   * @param  hsdram pointer to a SDRAM_HandleTypeDef structure that contains
   *                the configuration information for SDRAM module.
-  * @retval The SDRAM memory mode.        
+  * @retval The SDRAM memory mode.
   */
 uint32_t HAL_SDRAM_GetModeStatus(SDRAM_HandleTypeDef *hsdram)
 {
   /* Return the SDRAM memory current mode */
-  return(FMC_SDRAM_GetModeStatus(hsdram->Instance, hsdram->Init.SDBank));
+  return (FMC_SDRAM_GetModeStatus(hsdram->Instance, hsdram->Init.SDBank));
 }
 
 /**
   * @}
   */
-  
-/** @defgroup SDRAM_Exported_Functions_Group4 State functions 
- *  @brief   Peripheral State functions 
- *
-@verbatim   
+
+/** @defgroup SDRAM_Exported_Functions_Group4 State functions
+  *  @brief   Peripheral State functions
+  *
+@verbatim
   ==============================================================================
                       ##### SDRAM State functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
-    This subsection permits to get in run-time the status of the SDRAM controller 
+    This subsection permits to get in run-time the status of the SDRAM controller
     and the data flow.
 
 @endverbatim
@@ -1088,18 +1222,85 @@
 
 /**
   * @}
-  */    
+  */
 
 /**
   * @}
   */
+
+/**
+  * @brief  DMA SDRAM process complete callback.
+  * @param  hdma : DMA handle
+  * @retval None
+  */
+static void SDRAM_DMACplt(DMA_HandleTypeDef *hdma)
+{
+  SDRAM_HandleTypeDef *hsdram = (SDRAM_HandleTypeDef *)(hdma->Parent);
+
+  /* Disable the DMA channel */
+  __HAL_DMA_DISABLE(hdma);
+
+  /* Update the SDRAM controller state */
+  hsdram->State = HAL_SDRAM_STATE_READY;
+
+#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
+  hsdram->DmaXferCpltCallback(hdma);
+#else
+  HAL_SDRAM_DMA_XferCpltCallback(hdma);
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
+}
+
+/**
+  * @brief  DMA SRAM process complete callback.
+  * @param  hdma : DMA handle
+  * @retval None
+  */
+static void SDRAM_DMACpltProt(DMA_HandleTypeDef *hdma)
+{
+  SDRAM_HandleTypeDef *hsdram = (SDRAM_HandleTypeDef *)(hdma->Parent);
+
+  /* Disable the DMA channel */
+  __HAL_DMA_DISABLE(hdma);
+
+  /* Update the SDRAM controller state */
+  hsdram->State = HAL_SDRAM_STATE_WRITE_PROTECTED;
+
+#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
+  hsdram->DmaXferCpltCallback(hdma);
+#else
+  HAL_SDRAM_DMA_XferCpltCallback(hdma);
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
+}
+
+/**
+  * @brief  DMA SDRAM error callback.
+  * @param  hdma : DMA handle
+  * @retval None
+  */
+static void SDRAM_DMAError(DMA_HandleTypeDef *hdma)
+{
+  SDRAM_HandleTypeDef *hsdram = (SDRAM_HandleTypeDef *)(hdma->Parent);
+
+  /* Disable the DMA channel */
+  __HAL_DMA_DISABLE(hdma);
+
+  /* Update the SDRAM controller state */
+  hsdram->State = HAL_SDRAM_STATE_ERROR;
+
+#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
+  hsdram->DmaXferErrorCallback(hdma);
+#else
+  HAL_SDRAM_DMA_XferErrorCallback(hdma);
+#endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */
+}
+
+/**
+  * @}
+  */
+
 #endif /* HAL_SDRAM_MODULE_ENABLED */
-/**
-  * @}
-  */
 
 /**
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_smartcard.c b/Src/stm32f7xx_hal_smartcard.c
index 704c236..2cd00bb 100644
--- a/Src/stm32f7xx_hal_smartcard.c
+++ b/Src/stm32f7xx_hal_smartcard.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State and Error functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -163,17 +174,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -780,11 +780,11 @@
   * @param  Timeout  Timeout duration.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size,
+HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size,
                                          uint32_t Timeout)
 {
   uint32_t tickstart;
-  uint8_t  *ptmpdata = pData;
+  const uint8_t  *ptmpdata = pData;
 
   /* Check that a Tx process is not already ongoing */
   if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY)
@@ -943,7 +943,7 @@
   * @param  Size amount of data to be sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
+HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size)
 {
   /* Check that a Tx process is not already ongoing */
   if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY)
@@ -1062,7 +1062,7 @@
   * @param  Size amount of data to be sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
+HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size)
 {
   /* Check that a Tx process is not already ongoing */
   if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY)
@@ -2296,21 +2296,21 @@
   {
     case SMARTCARD_CLOCKSOURCE_PCLK1:
       pclk = HAL_RCC_GetPCLK1Freq();
-      tmpreg = (uint16_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
+      tmpreg = (uint32_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
       break;
     case SMARTCARD_CLOCKSOURCE_PCLK2:
       pclk = HAL_RCC_GetPCLK2Freq();
-      tmpreg = (uint16_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
+      tmpreg = (uint32_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
       break;
     case SMARTCARD_CLOCKSOURCE_HSI:
-      tmpreg = (uint16_t)((HSI_VALUE + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
+      tmpreg = (uint32_t)((HSI_VALUE + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
       break;
     case SMARTCARD_CLOCKSOURCE_SYSCLK:
       pclk = HAL_RCC_GetSysClockFreq();
-      tmpreg = (uint16_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
+      tmpreg = (uint32_t)((pclk + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
       break;
     case SMARTCARD_CLOCKSOURCE_LSE:
-      tmpreg = (uint16_t)((LSE_VALUE + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
+      tmpreg = (uint32_t)((LSE_VALUE + (hsmartcard->Init.BaudRate / 2U)) / hsmartcard->Init.BaudRate);
       break;
     default:
       ret = HAL_ERROR;
@@ -2320,7 +2320,7 @@
   /* USARTDIV must be greater than or equal to 0d16 */
   if ((tmpreg >= USART_BRR_MIN) && (tmpreg <= USART_BRR_MAX))
   {
-    hsmartcard->Instance->BRR = tmpreg;
+    hsmartcard->Instance->BRR = (uint16_t)tmpreg;
   }
   else
   {
@@ -2437,11 +2437,12 @@
 }
 
 /**
-  * @brief  Handle SMARTCARD Communication Timeout.
+  * @brief  Handle SMARTCARD Communication Timeout. It waits
+  *         until a flag is no longer in the specified status.
   * @param  hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains
   *                   the configuration information for the specified SMARTCARD module.
   * @param  Flag Specifies the SMARTCARD flag to check.
-  * @param  Status The new Flag status (SET or RESET).
+  * @param  Status The actual Flag status (SET or RESET).
   * @param  Tickstart Tick start value
   * @param  Timeout Timeout duration.
   * @retval HAL status
@@ -2923,4 +2924,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_smartcard_ex.c b/Src/stm32f7xx_hal_smartcard_ex.c
index c919c03..cd9f28c 100644
--- a/Src/stm32f7xx_hal_smartcard_ex.c
+++ b/Src/stm32f7xx_hal_smartcard_ex.c
@@ -8,6 +8,17 @@
   *           + Initialization and de-initialization functions
   *           + Peripheral Control functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   =============================================================================
                ##### SMARTCARD peripheral extended features  #####
@@ -20,17 +31,6 @@
         auto-retry counter,...) in the hsmartcard AdvancedInit structure.
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -195,4 +195,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_smbus.c b/Src/stm32f7xx_hal_smbus.c
index 0da63dc..7db7a3d 100644
--- a/Src/stm32f7xx_hal_smbus.c
+++ b/Src/stm32f7xx_hal_smbus.c
@@ -10,6 +10,17 @@
   *           + IO operation functions
   *           + Peripheral State and Errors functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -20,7 +31,7 @@
     (#) Declare a SMBUS_HandleTypeDef handle structure, for example:
         SMBUS_HandleTypeDef  hsmbus;
 
-    (#)Initialize the SMBUS low level resources by implementing the @ref HAL_SMBUS_MspInit() API:
+    (#)Initialize the SMBUS low level resources by implementing the HAL_SMBUS_MspInit() API:
         (##) Enable the SMBUSx interface clock
         (##) SMBUS pins configuration
             (+++) Enable the clock for the SMBUS GPIOs
@@ -33,69 +44,75 @@
         Dual Addressing mode, Own Address2, Own Address2 Mask, General call, Nostretch mode,
         Peripheral mode and Packet Error Check mode in the hsmbus Init structure.
 
-    (#) Initialize the SMBUS registers by calling the @ref HAL_SMBUS_Init() API:
+    (#) Initialize the SMBUS registers by calling the HAL_SMBUS_Init() API:
         (++) These API's configures also the low level Hardware GPIO, CLOCK, CORTEX...etc)
-             by calling the customized @ref HAL_SMBUS_MspInit(&hsmbus) API.
+             by calling the customized HAL_SMBUS_MspInit(&hsmbus) API.
 
-    (#) To check if target device is ready for communication, use the function @ref HAL_SMBUS_IsDeviceReady()
+    (#) To check if target device is ready for communication, use the function HAL_SMBUS_IsDeviceReady()
 
     (#) For SMBUS IO operations, only one mode of operations is available within this driver
 
     *** Interrupt mode IO operation ***
     ===================================
     [..]
-      (+) Transmit in master/host SMBUS mode an amount of data in non-blocking mode using @ref HAL_SMBUS_Master_Transmit_IT()
-      (++) At transmission end of transfer @ref HAL_SMBUS_MasterTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_SMBUS_MasterTxCpltCallback()
-      (+) Receive in master/host SMBUS mode an amount of data in non-blocking mode using @ref HAL_SMBUS_Master_Receive_IT()
-      (++) At reception end of transfer @ref HAL_SMBUS_MasterRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_SMBUS_MasterRxCpltCallback()
-      (+) Abort a master/host SMBUS process communication with Interrupt using @ref HAL_SMBUS_Master_Abort_IT()
+      (+) Transmit in master/host SMBUS mode an amount of data in non-blocking mode
+          using HAL_SMBUS_Master_Transmit_IT()
+      (++) At transmission end of transfer HAL_SMBUS_MasterTxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_SMBUS_MasterTxCpltCallback()
+      (+) Receive in master/host SMBUS mode an amount of data in non-blocking mode
+          using HAL_SMBUS_Master_Receive_IT()
+      (++) At reception end of transfer HAL_SMBUS_MasterRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_SMBUS_MasterRxCpltCallback()
+      (+) Abort a master/host SMBUS process communication with Interrupt using HAL_SMBUS_Master_Abort_IT()
       (++) The associated previous transfer callback is called at the end of abort process
-      (++) mean @ref HAL_SMBUS_MasterTxCpltCallback() in case of previous state was master transmit
-      (++) mean @ref HAL_SMBUS_MasterRxCpltCallback() in case of previous state was master receive
+      (++) mean HAL_SMBUS_MasterTxCpltCallback() in case of previous state was master transmit
+      (++) mean HAL_SMBUS_MasterRxCpltCallback() in case of previous state was master receive
       (+) Enable/disable the Address listen mode in slave/device or host/slave SMBUS mode
-           using @ref HAL_SMBUS_EnableListen_IT() @ref HAL_SMBUS_DisableListen_IT()
-      (++) When address slave/device SMBUS match, @ref HAL_SMBUS_AddrCallback() is executed and user can
-           add his own code to check the Address Match Code and the transmission direction request by master/host (Write/Read).
-      (++) At Listen mode end @ref HAL_SMBUS_ListenCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_SMBUS_ListenCpltCallback()
-      (+) Transmit in slave/device SMBUS mode an amount of data in non-blocking mode using @ref HAL_SMBUS_Slave_Transmit_IT()
-      (++) At transmission end of transfer @ref HAL_SMBUS_SlaveTxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_SMBUS_SlaveTxCpltCallback()
-      (+) Receive in slave/device SMBUS mode an amount of data in non-blocking mode using @ref HAL_SMBUS_Slave_Receive_IT()
-      (++) At reception end of transfer @ref HAL_SMBUS_SlaveRxCpltCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_SMBUS_SlaveRxCpltCallback()
-      (+) Enable/Disable the SMBUS alert mode using @ref HAL_SMBUS_EnableAlert_IT() @ref HAL_SMBUS_DisableAlert_IT()
-      (++) When SMBUS Alert is generated @ref HAL_SMBUS_ErrorCallback() is executed and user can
-           add his own code by customization of function pointer @ref HAL_SMBUS_ErrorCallback()
-           to check the Alert Error Code using function @ref HAL_SMBUS_GetError()
-      (+) Get HAL state machine or error values using @ref HAL_SMBUS_GetState() or @ref HAL_SMBUS_GetError()
-      (+) In case of transfer Error, @ref HAL_SMBUS_ErrorCallback() function is executed and user can
-           add his own code by customization of function pointer @ref HAL_SMBUS_ErrorCallback()
-           to check the Error Code using function @ref HAL_SMBUS_GetError()
+           using HAL_SMBUS_EnableListen_IT() HAL_SMBUS_DisableListen_IT()
+      (++) When address slave/device SMBUS match, HAL_SMBUS_AddrCallback() is executed and users can
+           add their own code to check the Address Match Code and the transmission direction
+           request by master/host (Write/Read).
+      (++) At Listen mode end HAL_SMBUS_ListenCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_SMBUS_ListenCpltCallback()
+      (+) Transmit in slave/device SMBUS mode an amount of data in non-blocking mode
+          using HAL_SMBUS_Slave_Transmit_IT()
+      (++) At transmission end of transfer HAL_SMBUS_SlaveTxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_SMBUS_SlaveTxCpltCallback()
+      (+) Receive in slave/device SMBUS mode an amount of data in non-blocking mode
+          using HAL_SMBUS_Slave_Receive_IT()
+      (++) At reception end of transfer HAL_SMBUS_SlaveRxCpltCallback() is executed and users can
+           add their own code by customization of function pointer HAL_SMBUS_SlaveRxCpltCallback()
+      (+) Enable/Disable the SMBUS alert mode using
+          HAL_SMBUS_EnableAlert_IT() or HAL_SMBUS_DisableAlert_IT()
+      (++) When SMBUS Alert is generated HAL_SMBUS_ErrorCallback() is executed and users can
+           add their own code by customization of function pointer HAL_SMBUS_ErrorCallback()
+           to check the Alert Error Code using function HAL_SMBUS_GetError()
+      (+) Get HAL state machine or error values using HAL_SMBUS_GetState() or HAL_SMBUS_GetError()
+      (+) In case of transfer Error, HAL_SMBUS_ErrorCallback() function is executed and users can
+           add their own code by customization of function pointer HAL_SMBUS_ErrorCallback()
+           to check the Error Code using function HAL_SMBUS_GetError()
 
      *** SMBUS HAL driver macros list ***
      ==================================
      [..]
        Below the list of most used macros in SMBUS HAL driver.
 
-      (+) @ref __HAL_SMBUS_ENABLE:      Enable the SMBUS peripheral
-      (+) @ref __HAL_SMBUS_DISABLE:     Disable the SMBUS peripheral
-      (+) @ref __HAL_SMBUS_GET_FLAG:    Check whether the specified SMBUS flag is set or not
-      (+) @ref __HAL_SMBUS_CLEAR_FLAG:  Clear the specified SMBUS pending flag
-      (+) @ref __HAL_SMBUS_ENABLE_IT:   Enable the specified SMBUS interrupt
-      (+) @ref __HAL_SMBUS_DISABLE_IT:  Disable the specified SMBUS interrupt
+      (+) __HAL_SMBUS_ENABLE:      Enable the SMBUS peripheral
+      (+) __HAL_SMBUS_DISABLE:     Disable the SMBUS peripheral
+      (+) __HAL_SMBUS_GET_FLAG:    Check whether the specified SMBUS flag is set or not
+      (+) __HAL_SMBUS_CLEAR_FLAG:  Clear the specified SMBUS pending flag
+      (+) __HAL_SMBUS_ENABLE_IT:   Enable the specified SMBUS interrupt
+      (+) __HAL_SMBUS_DISABLE_IT:  Disable the specified SMBUS interrupt
 
      *** Callback registration ***
      =============================================
     [..]
      The compilation flag USE_HAL_SMBUS_REGISTER_CALLBACKS when set to 1
      allows the user to configure dynamically the driver callbacks.
-     Use Functions @ref HAL_SMBUS_RegisterCallback() or @ref HAL_SMBUS_RegisterAddrCallback()
+     Use Functions HAL_SMBUS_RegisterCallback() or HAL_SMBUS_RegisterAddrCallback()
      to register an interrupt callback.
     [..]
-     Function @ref HAL_SMBUS_RegisterCallback() allows to register following callbacks:
+     Function HAL_SMBUS_RegisterCallback() allows to register following callbacks:
        (+) MasterTxCpltCallback : callback for Master transmission end of transfer.
        (+) MasterRxCpltCallback : callback for Master reception end of transfer.
        (+) SlaveTxCpltCallback  : callback for Slave transmission end of transfer.
@@ -107,11 +124,11 @@
      This function takes as parameters the HAL peripheral handle, the Callback ID
      and a pointer to the user callback function.
     [..]
-     For specific callback AddrCallback use dedicated register callbacks : @ref HAL_SMBUS_RegisterAddrCallback.
+     For specific callback AddrCallback use dedicated register callbacks : HAL_SMBUS_RegisterAddrCallback.
     [..]
-     Use function @ref HAL_SMBUS_UnRegisterCallback to reset a callback to the default
+     Use function HAL_SMBUS_UnRegisterCallback to reset a callback to the default
      weak function.
-     @ref HAL_SMBUS_UnRegisterCallback takes as parameters the HAL peripheral handle,
+     HAL_SMBUS_UnRegisterCallback takes as parameters the HAL peripheral handle,
      and the Callback ID.
      This function allows to reset following callbacks:
        (+) MasterTxCpltCallback : callback for Master transmission end of transfer.
@@ -123,24 +140,24 @@
        (+) MspInitCallback      : callback for Msp Init.
        (+) MspDeInitCallback    : callback for Msp DeInit.
     [..]
-     For callback AddrCallback use dedicated register callbacks : @ref HAL_SMBUS_UnRegisterAddrCallback.
+     For callback AddrCallback use dedicated register callbacks : HAL_SMBUS_UnRegisterAddrCallback.
     [..]
-     By default, after the @ref HAL_SMBUS_Init() and when the state is @ref HAL_I2C_STATE_RESET
+     By default, after the HAL_SMBUS_Init() and when the state is HAL_I2C_STATE_RESET
      all callbacks are set to the corresponding weak functions:
-     examples @ref HAL_SMBUS_MasterTxCpltCallback(), @ref HAL_SMBUS_MasterRxCpltCallback().
+     examples HAL_SMBUS_MasterTxCpltCallback(), HAL_SMBUS_MasterRxCpltCallback().
      Exception done for MspInit and MspDeInit functions that are
-     reset to the legacy weak functions in the @ref HAL_SMBUS_Init()/ @ref HAL_SMBUS_DeInit() only when
+     reset to the legacy weak functions in the HAL_SMBUS_Init()/ HAL_SMBUS_DeInit() only when
      these callbacks are null (not registered beforehand).
-     If MspInit or MspDeInit are not null, the @ref HAL_SMBUS_Init()/ @ref HAL_SMBUS_DeInit()
+     If MspInit or MspDeInit are not null, the HAL_SMBUS_Init()/ HAL_SMBUS_DeInit()
      keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
     [..]
-     Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.
+     Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only.
      Exception done MspInit/MspDeInit functions that can be registered/unregistered
-     in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,
+     in HAL_I2C_STATE_READY or HAL_I2C_STATE_RESET state,
      thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit.
      Then, the user first registers the MspInit/MspDeInit user callbacks
-     using @ref HAL_SMBUS_RegisterCallback() before calling @ref HAL_SMBUS_DeInit()
-     or @ref HAL_SMBUS_Init() function.
+     using HAL_SMBUS_RegisterCallback() before calling HAL_SMBUS_DeInit()
+     or HAL_SMBUS_Init() function.
     [..]
      When the compilation flag USE_HAL_SMBUS_REGISTER_CALLBACKS is set to 0 or
      not defined, the callback registration feature is not available and all callbacks
@@ -150,18 +167,6 @@
        (@) You can refer to the SMBUS HAL driver header file for more useful macros
 
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -203,20 +208,28 @@
 /** @addtogroup SMBUS_Private_Functions SMBUS Private Functions
   * @{
   */
-static HAL_StatusTypeDef SMBUS_WaitOnFlagUntilTimeout(SMBUS_HandleTypeDef *hsmbus, uint32_t Flag, FlagStatus Status,
-                                                      uint32_t Timeout);
+/* Private functions to handle flags during polling transfer */
+static HAL_StatusTypeDef SMBUS_WaitOnFlagUntilTimeout(SMBUS_HandleTypeDef *hsmbus, uint32_t Flag,
+                                                      FlagStatus Status, uint32_t Timeout);
 
-static void SMBUS_Enable_IRQ(SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest);
-static void SMBUS_Disable_IRQ(SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest);
+/* Private functions for SMBUS transfer IRQ handler */
 static HAL_StatusTypeDef SMBUS_Master_ISR(SMBUS_HandleTypeDef *hsmbus, uint32_t StatusFlags);
 static HAL_StatusTypeDef SMBUS_Slave_ISR(SMBUS_HandleTypeDef *hsmbus, uint32_t StatusFlags);
-
-static void SMBUS_ConvertOtherXferOptions(SMBUS_HandleTypeDef *hsmbus);
-
 static void SMBUS_ITErrorHandler(SMBUS_HandleTypeDef *hsmbus);
 
-static void SMBUS_TransferConfig(SMBUS_HandleTypeDef *hsmbus,  uint16_t DevAddress, uint8_t Size, uint32_t Mode,
-                                 uint32_t Request);
+/* Private functions to centralize the enable/disable of Interrupts */
+static void SMBUS_Enable_IRQ(SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest);
+static void SMBUS_Disable_IRQ(SMBUS_HandleTypeDef *hsmbus, uint32_t InterruptRequest);
+
+/* Private function to flush TXDR register */
+static void SMBUS_Flush_TXDR(SMBUS_HandleTypeDef *hsmbus);
+
+/* Private function to handle start, restart or stop a transfer */
+static void SMBUS_TransferConfig(SMBUS_HandleTypeDef *hsmbus,  uint16_t DevAddress, uint8_t Size,
+                                 uint32_t Mode, uint32_t Request);
+
+/* Private function to Convert Specific options */
+static void SMBUS_ConvertOtherXferOptions(SMBUS_HandleTypeDef *hsmbus);
 /**
   * @}
   */
@@ -364,15 +377,20 @@
 
   /*---------------------------- SMBUSx OAR2 Configuration -----------------------*/
   /* Configure SMBUSx: Dual mode and Own Address2 */
-  hsmbus->Instance->OAR2 = (hsmbus->Init.DualAddressMode | hsmbus->Init.OwnAddress2 | (hsmbus->Init.OwnAddress2Masks << 8U));
+  hsmbus->Instance->OAR2 = (hsmbus->Init.DualAddressMode | hsmbus->Init.OwnAddress2 | \
+                            (hsmbus->Init.OwnAddress2Masks << 8U));
 
   /*---------------------------- SMBUSx CR1 Configuration ------------------------*/
   /* Configure SMBUSx: Generalcall and NoStretch mode */
-  hsmbus->Instance->CR1 = (hsmbus->Init.GeneralCallMode | hsmbus->Init.NoStretchMode | hsmbus->Init.PacketErrorCheckMode | hsmbus->Init.PeripheralMode | hsmbus->Init.AnalogFilter);
+  hsmbus->Instance->CR1 = (hsmbus->Init.GeneralCallMode | hsmbus->Init.NoStretchMode | \
+                           hsmbus->Init.PacketErrorCheckMode | hsmbus->Init.PeripheralMode | \
+                           hsmbus->Init.AnalogFilter);
 
-  /* Enable Slave Byte Control only in case of Packet Error Check is enabled and SMBUS Peripheral is set in Slave mode */
-  if ((hsmbus->Init.PacketErrorCheckMode == SMBUS_PEC_ENABLE)
-      && ((hsmbus->Init.PeripheralMode == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE) || (hsmbus->Init.PeripheralMode == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)))
+  /* Enable Slave Byte Control only in case of Packet Error Check is enabled
+     and SMBUS Peripheral is set in Slave mode */
+  if ((hsmbus->Init.PacketErrorCheckMode == SMBUS_PEC_ENABLE) && \
+      ((hsmbus->Init.PeripheralMode == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE) || \
+       (hsmbus->Init.PeripheralMode == SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE_ARP)))
   {
     hsmbus->Instance->CR1 |= I2C_CR1_SBC;
   }
@@ -581,7 +599,8 @@
   * @param  pCallback pointer to the Callback function
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SMBUS_RegisterCallback(SMBUS_HandleTypeDef *hsmbus, HAL_SMBUS_CallbackIDTypeDef CallbackID,
+HAL_StatusTypeDef HAL_SMBUS_RegisterCallback(SMBUS_HandleTypeDef *hsmbus,
+                                             HAL_SMBUS_CallbackIDTypeDef CallbackID,
                                              pSMBUS_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
@@ -695,7 +714,8 @@
   *          @arg @ref HAL_SMBUS_MSPDEINIT_CB_ID MspDeInit callback ID
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SMBUS_UnRegisterCallback(SMBUS_HandleTypeDef *hsmbus, HAL_SMBUS_CallbackIDTypeDef CallbackID)
+HAL_StatusTypeDef HAL_SMBUS_UnRegisterCallback(SMBUS_HandleTypeDef *hsmbus,
+                                               HAL_SMBUS_CallbackIDTypeDef CallbackID)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
@@ -790,7 +810,8 @@
   * @param  pCallback pointer to the Address Match Callback function
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SMBUS_RegisterAddrCallback(SMBUS_HandleTypeDef *hsmbus, pSMBUS_AddrCallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_SMBUS_RegisterAddrCallback(SMBUS_HandleTypeDef *hsmbus,
+                                                 pSMBUS_AddrCallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
@@ -914,8 +935,8 @@
   * @param  XferOptions Options of Transfer, value of @ref SMBUS_XferOptions_definition
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SMBUS_Master_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress, uint8_t *pData,
-                                               uint16_t Size, uint32_t XferOptions)
+HAL_StatusTypeDef HAL_SMBUS_Master_Transmit_IT(SMBUS_HandleTypeDef *hsmbus, uint16_t DevAddress,
+                                               uint8_t *pData, uint16_t Size, uint32_t XferOptions)
 {
   uint32_t tmp;
 
@@ -955,7 +976,8 @@
     if ((hsmbus->XferSize < hsmbus->XferCount) && (hsmbus->XferSize == MAX_NBYTE_SIZE))
     {
       SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize,
-                           SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), SMBUS_GENERATE_START_WRITE);
+                           SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE),
+                           SMBUS_GENERATE_START_WRITE);
     }
     else
     {
@@ -965,9 +987,11 @@
       /* Store current volatile XferOptions, misra rule */
       tmp = hsmbus->XferOptions;
 
-      if ((hsmbus->PreviousState == HAL_SMBUS_STATE_MASTER_BUSY_TX) && (IS_SMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(tmp) == 0))
+      if ((hsmbus->PreviousState == HAL_SMBUS_STATE_MASTER_BUSY_TX) && \
+          (IS_SMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(tmp) == 0))
       {
-        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, SMBUS_NO_STARTSTOP);
+        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions,
+                             SMBUS_NO_STARTSTOP);
       }
       /* Else transfer direction change, so generate Restart with new transfer direction */
       else
@@ -976,7 +1000,9 @@
         SMBUS_ConvertOtherXferOptions(hsmbus);
 
         /* Handle Transfer */
-        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, SMBUS_GENERATE_START_WRITE);
+        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize,
+                             hsmbus->XferOptions,
+                             SMBUS_GENERATE_START_WRITE);
       }
 
       /* If PEC mode is enable, size to transmit manage by SW part should be Size-1 byte, corresponding to PEC byte */
@@ -1057,7 +1083,8 @@
     if ((hsmbus->XferSize < hsmbus->XferCount) && (hsmbus->XferSize == MAX_NBYTE_SIZE))
     {
       SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize,
-                           SMBUS_RELOAD_MODE  | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), SMBUS_GENERATE_START_READ);
+                           SMBUS_RELOAD_MODE  | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE),
+                           SMBUS_GENERATE_START_READ);
     }
     else
     {
@@ -1067,9 +1094,11 @@
       /* Store current volatile XferOptions, Misra rule */
       tmp = hsmbus->XferOptions;
 
-      if ((hsmbus->PreviousState == HAL_SMBUS_STATE_MASTER_BUSY_RX) && (IS_SMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(tmp) == 0))
+      if ((hsmbus->PreviousState == HAL_SMBUS_STATE_MASTER_BUSY_RX) && \
+          (IS_SMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(tmp) == 0))
       {
-        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, SMBUS_NO_STARTSTOP);
+        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions,
+                             SMBUS_NO_STARTSTOP);
       }
       /* Else transfer direction change, so generate Restart with new transfer direction */
       else
@@ -1078,7 +1107,9 @@
         SMBUS_ConvertOtherXferOptions(hsmbus);
 
         /* Handle Transfer */
-        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, SMBUS_GENERATE_START_READ);
+        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize,
+                             hsmbus->XferOptions,
+                             SMBUS_GENERATE_START_READ);
       }
     }
 
@@ -1222,12 +1253,14 @@
     if ((hsmbus->XferSize < hsmbus->XferCount) && (hsmbus->XferSize == MAX_NBYTE_SIZE))
     {
       SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize,
-                           SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), SMBUS_NO_STARTSTOP);
+                           SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE),
+                           SMBUS_NO_STARTSTOP);
     }
     else
     {
       /* Set NBYTE to transmit */
-      SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, SMBUS_NO_STARTSTOP);
+      SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions,
+                           SMBUS_NO_STARTSTOP);
 
       /* If PEC mode is enable, size to transmit should be Size-1 byte, corresponding to PEC byte */
       /* PEC byte is automatically sent by HW block, no need to manage it in Transmit process */
@@ -1313,7 +1346,8 @@
     /* This RELOAD bit will be reset for last BYTE to be receive in SMBUS_Slave_ISR */
     if (((SMBUS_GET_PEC_MODE(hsmbus) != 0UL) && (hsmbus->XferSize == 2U)) || (hsmbus->XferSize == 1U))
     {
-      SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, SMBUS_NO_STARTSTOP);
+      SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions,
+                           SMBUS_NO_STARTSTOP);
     }
     else
     {
@@ -1576,7 +1610,8 @@
   uint32_t tmpcr1value = READ_REG(hsmbus->Instance->CR1);
 
   /* SMBUS in mode Transmitter ---------------------------------------------------*/
-  if ((SMBUS_CHECK_IT_SOURCE(tmpcr1value, (SMBUS_IT_TCI | SMBUS_IT_STOPI | SMBUS_IT_NACKI | SMBUS_IT_TXI)) != RESET) &&
+  if ((SMBUS_CHECK_IT_SOURCE(tmpcr1value, (SMBUS_IT_TCI | SMBUS_IT_STOPI |
+                                           SMBUS_IT_NACKI | SMBUS_IT_TXI)) != RESET) &&
       ((SMBUS_CHECK_FLAG(tmpisrvalue, SMBUS_FLAG_TXIS) != RESET) ||
        (SMBUS_CHECK_FLAG(tmpisrvalue, SMBUS_FLAG_TCR) != RESET) ||
        (SMBUS_CHECK_FLAG(tmpisrvalue, SMBUS_FLAG_TC) != RESET) ||
@@ -1600,7 +1635,8 @@
   }
 
   /* SMBUS in mode Receiver ----------------------------------------------------*/
-  if ((SMBUS_CHECK_IT_SOURCE(tmpcr1value, (SMBUS_IT_TCI | SMBUS_IT_STOPI | SMBUS_IT_NACKI | SMBUS_IT_RXI)) != RESET) &&
+  if ((SMBUS_CHECK_IT_SOURCE(tmpcr1value, (SMBUS_IT_TCI | SMBUS_IT_STOPI |
+                                           SMBUS_IT_NACKI | SMBUS_IT_RXI)) != RESET) &&
       ((SMBUS_CHECK_FLAG(tmpisrvalue, SMBUS_FLAG_RXNE) != RESET) ||
        (SMBUS_CHECK_FLAG(tmpisrvalue, SMBUS_FLAG_TCR) != RESET) ||
        (SMBUS_CHECK_FLAG(tmpisrvalue, SMBUS_FLAG_TC) != RESET) ||
@@ -1720,7 +1756,8 @@
   * @param  AddrMatchCode Address Match Code
   * @retval None
   */
-__weak void HAL_SMBUS_AddrCallback(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection, uint16_t AddrMatchCode)
+__weak void HAL_SMBUS_AddrCallback(SMBUS_HandleTypeDef *hsmbus, uint8_t TransferDirection,
+                                   uint16_t AddrMatchCode)
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hsmbus);
@@ -1842,6 +1879,9 @@
     /* No need to generate STOP, it is automatically done */
     hsmbus->ErrorCode |= HAL_SMBUS_ERROR_ACKF;
 
+    /* Flush TX register */
+    SMBUS_Flush_TXDR(hsmbus);
+
     /* Process Unlocked */
     __HAL_UNLOCK(hsmbus);
 
@@ -1967,13 +2007,15 @@
       if (hsmbus->XferCount > MAX_NBYTE_SIZE)
       {
         SMBUS_TransferConfig(hsmbus, DevAddress, MAX_NBYTE_SIZE,
-                             (SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE)), SMBUS_NO_STARTSTOP);
+                             (SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE)),
+                             SMBUS_NO_STARTSTOP);
         hsmbus->XferSize = MAX_NBYTE_SIZE;
       }
       else
       {
         hsmbus->XferSize = hsmbus->XferCount;
-        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, SMBUS_NO_STARTSTOP);
+        SMBUS_TransferConfig(hsmbus, DevAddress, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions,
+                             SMBUS_NO_STARTSTOP);
         /* If PEC mode is enable, size to transmit should be Size-1 byte, corresponding to PEC byte */
         /* PEC byte is automatically sent by HW block, no need to manage it in Transmit process */
         if (SMBUS_GET_PEC_MODE(hsmbus) != 0UL)
@@ -2130,6 +2172,9 @@
       /* Clear NACK Flag */
       __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_AF);
 
+      /* Flush TX register */
+      SMBUS_Flush_TXDR(hsmbus);
+
       /* Process Unlocked */
       __HAL_UNLOCK(hsmbus);
     }
@@ -2151,6 +2196,9 @@
       /* Set ErrorCode corresponding to a Non-Acknowledge */
       hsmbus->ErrorCode |= HAL_SMBUS_ERROR_ACKF;
 
+      /* Flush TX register */
+      SMBUS_Flush_TXDR(hsmbus);
+
       /* Process Unlocked */
       __HAL_UNLOCK(hsmbus);
 
@@ -2225,7 +2273,9 @@
       else
       {
         /* Set Reload for next Bytes */
-        SMBUS_TransferConfig(hsmbus, 0, 1, SMBUS_RELOAD_MODE  | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE), SMBUS_NO_STARTSTOP);
+        SMBUS_TransferConfig(hsmbus, 0, 1,
+                             SMBUS_RELOAD_MODE  | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE),
+                             SMBUS_NO_STARTSTOP);
 
         /* Ack last Byte Read */
         hsmbus->Instance->CR2 &= ~I2C_CR2_NACK;
@@ -2237,14 +2287,16 @@
       {
         if (hsmbus->XferCount > MAX_NBYTE_SIZE)
         {
-          SMBUS_TransferConfig(hsmbus, 0, MAX_NBYTE_SIZE, (SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE)),
+          SMBUS_TransferConfig(hsmbus, 0, MAX_NBYTE_SIZE,
+                               (SMBUS_RELOAD_MODE | (hsmbus->XferOptions & SMBUS_SENDPEC_MODE)),
                                SMBUS_NO_STARTSTOP);
           hsmbus->XferSize = MAX_NBYTE_SIZE;
         }
         else
         {
           hsmbus->XferSize = hsmbus->XferCount;
-          SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions, SMBUS_NO_STARTSTOP);
+          SMBUS_TransferConfig(hsmbus, 0, (uint8_t)hsmbus->XferSize, hsmbus->XferOptions,
+                               SMBUS_NO_STARTSTOP);
           /* If PEC mode is enable, size to transmit should be Size-1 byte, corresponding to PEC byte */
           /* PEC byte is automatically sent by HW block, no need to manage it in Transmit process */
           if (SMBUS_GET_PEC_MODE(hsmbus) != 0UL)
@@ -2489,7 +2541,8 @@
   uint32_t tmperror;
 
   /* SMBUS Bus error interrupt occurred ------------------------------------*/
-  if (((itflags & SMBUS_FLAG_BERR) == SMBUS_FLAG_BERR) && ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
+  if (((itflags & SMBUS_FLAG_BERR) == SMBUS_FLAG_BERR) && \
+      ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
   {
     hsmbus->ErrorCode |= HAL_SMBUS_ERROR_BERR;
 
@@ -2498,7 +2551,8 @@
   }
 
   /* SMBUS Over-Run/Under-Run interrupt occurred ----------------------------------------*/
-  if (((itflags & SMBUS_FLAG_OVR) == SMBUS_FLAG_OVR) && ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
+  if (((itflags & SMBUS_FLAG_OVR) == SMBUS_FLAG_OVR) && \
+      ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
   {
     hsmbus->ErrorCode |= HAL_SMBUS_ERROR_OVR;
 
@@ -2507,7 +2561,8 @@
   }
 
   /* SMBUS Arbitration Loss error interrupt occurred ------------------------------------*/
-  if (((itflags & SMBUS_FLAG_ARLO) == SMBUS_FLAG_ARLO) && ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
+  if (((itflags & SMBUS_FLAG_ARLO) == SMBUS_FLAG_ARLO) && \
+      ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
   {
     hsmbus->ErrorCode |= HAL_SMBUS_ERROR_ARLO;
 
@@ -2516,7 +2571,8 @@
   }
 
   /* SMBUS Timeout error interrupt occurred ---------------------------------------------*/
-  if (((itflags & SMBUS_FLAG_TIMEOUT) == SMBUS_FLAG_TIMEOUT) && ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
+  if (((itflags & SMBUS_FLAG_TIMEOUT) == SMBUS_FLAG_TIMEOUT) && \
+      ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
   {
     hsmbus->ErrorCode |= HAL_SMBUS_ERROR_BUSTIMEOUT;
 
@@ -2525,7 +2581,8 @@
   }
 
   /* SMBUS Alert error interrupt occurred -----------------------------------------------*/
-  if (((itflags & SMBUS_FLAG_ALERT) == SMBUS_FLAG_ALERT) && ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
+  if (((itflags & SMBUS_FLAG_ALERT) == SMBUS_FLAG_ALERT) && \
+      ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
   {
     hsmbus->ErrorCode |= HAL_SMBUS_ERROR_ALERT;
 
@@ -2534,7 +2591,8 @@
   }
 
   /* SMBUS Packet Error Check error interrupt occurred ----------------------------------*/
-  if (((itflags & SMBUS_FLAG_PECERR) == SMBUS_FLAG_PECERR) && ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
+  if (((itflags & SMBUS_FLAG_PECERR) == SMBUS_FLAG_PECERR) && \
+      ((itsources & SMBUS_IT_ERRI) == SMBUS_IT_ERRI))
   {
     hsmbus->ErrorCode |= HAL_SMBUS_ERROR_PECERR;
 
@@ -2542,7 +2600,10 @@
     __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_PECERR);
   }
 
-  /* Store current volatile hsmbus->State, misra rule */
+  /* Flush TX register */
+  SMBUS_Flush_TXDR(hsmbus);
+
+  /* Store current volatile hsmbus->ErrorCode, misra rule */
   tmperror = hsmbus->ErrorCode;
 
   /* Call the Error Callback in case of Error detected */
@@ -2582,8 +2643,8 @@
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
-static HAL_StatusTypeDef SMBUS_WaitOnFlagUntilTimeout(SMBUS_HandleTypeDef *hsmbus, uint32_t Flag, FlagStatus Status,
-                                                      uint32_t Timeout)
+static HAL_StatusTypeDef SMBUS_WaitOnFlagUntilTimeout(SMBUS_HandleTypeDef *hsmbus, uint32_t Flag,
+                                                      FlagStatus Status, uint32_t Timeout)
 {
   uint32_t tickstart = HAL_GetTick();
 
@@ -2613,6 +2674,27 @@
 }
 
 /**
+  * @brief  SMBUS Tx data register flush process.
+  * @param  hsmbus SMBUS handle.
+  * @retval None
+  */
+static void SMBUS_Flush_TXDR(SMBUS_HandleTypeDef *hsmbus)
+{
+  /* If a pending TXIS flag is set */
+  /* Write a dummy data in TXDR to clear it */
+  if (__HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_TXIS) != RESET)
+  {
+    hsmbus->Instance->TXDR = 0x00U;
+  }
+
+  /* Flush TX register if not empty */
+  if (__HAL_SMBUS_GET_FLAG(hsmbus, SMBUS_FLAG_TXE) == RESET)
+  {
+    __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_TXE);
+  }
+}
+
+/**
   * @brief  Handle SMBUSx communication when starting transfer or during transfer (TC or TCR flag are set).
   * @param  hsmbus SMBUS handle.
   * @param  DevAddress specifies the slave address to be programmed.
@@ -2632,8 +2714,8 @@
   *     @arg @ref SMBUS_GENERATE_START_WRITE Generate Restart for write request.
   * @retval None
   */
-static void SMBUS_TransferConfig(SMBUS_HandleTypeDef *hsmbus,  uint16_t DevAddress, uint8_t Size, uint32_t Mode,
-                                 uint32_t Request)
+static void SMBUS_TransferConfig(SMBUS_HandleTypeDef *hsmbus,  uint16_t DevAddress, uint8_t Size,
+                                 uint32_t Mode, uint32_t Request)
 {
   /* Check the parameters */
   assert_param(IS_SMBUS_ALL_INSTANCE(hsmbus->Instance));
@@ -2644,9 +2726,10 @@
   MODIFY_REG(hsmbus->Instance->CR2,
              ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \
                (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31UL - I2C_CR2_RD_WRN_Pos))) | \
-               I2C_CR2_START | I2C_CR2_STOP  | I2C_CR2_PECBYTE)), \
+               I2C_CR2_START | I2C_CR2_STOP | I2C_CR2_PECBYTE)), \
              (uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \
-                        (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | (uint32_t)Mode | (uint32_t)Request));
+                        (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \
+                        (uint32_t)Mode | (uint32_t)Request));
 }
 
 /**
@@ -2703,5 +2786,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_spdifrx.c b/Src/stm32f7xx_hal_spdifrx.c
index 036a9d9..da382f6 100644
--- a/Src/stm32f7xx_hal_spdifrx.c
+++ b/Src/stm32f7xx_hal_spdifrx.c
@@ -8,6 +8,18 @@
   *           + Data transfers functions
   *           + DMA transfers management
   *           + Interrupts and flags management
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                   ##### How to use this driver #####
@@ -142,18 +154,6 @@
   are set to the corresponding weak functions.
 
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -1619,5 +1619,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_spi.c b/Src/stm32f7xx_hal_spi.c
index 684621c..7bed703 100644
--- a/Src/stm32f7xx_hal_spi.c
+++ b/Src/stm32f7xx_hal_spi.c
@@ -9,7 +9,17 @@
   *           + IO operation functions
   *           + Peripheral Control functions
   *           + Peripheral State functions
+  ******************************************************************************
+  * @attention
   *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -184,18 +194,6 @@
             (#) RX processes are HAL_SPI_Receive(), HAL_SPI_Receive_IT() and HAL_SPI_Receive_DMA()
             (#) TX processes are HAL_SPI_Transmit(), HAL_SPI_Transmit_IT() and HAL_SPI_Transmit_DMA()
 
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -217,6 +215,7 @@
   * @{
   */
 #define SPI_DEFAULT_TIMEOUT 100U
+#define SPI_BSY_FLAG_WORKAROUND_TIMEOUT 1000U /*!< Timeout 1000 µs             */
 /**
   * @}
   */
@@ -1009,6 +1008,8 @@
 {
 #if (USE_SPI_CRC != 0U)
   __IO uint32_t tmpreg = 0U;
+  __IO uint8_t  *ptmpreg8;
+  __IO uint8_t  tmpreg8 = 0;
 #endif /* USE_SPI_CRC */
   uint32_t tickstart;
   HAL_StatusTypeDef errorcode = HAL_OK;
@@ -1182,10 +1183,12 @@
     }
     else
     {
+      /* Initialize the 8bit temporary pointer */
+      ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR;
       /* Read 8bit CRC */
-      tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+      tmpreg8 = *ptmpreg8;
       /* To avoid GCC warning */
-      UNUSED(tmpreg);
+      UNUSED(tmpreg8);
 
       if ((hspi->Init.DataSize == SPI_DATASIZE_8BIT) && (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT))
       {
@@ -1197,9 +1200,9 @@
           goto error;
         }
         /* Read 8bit CRC again in case of 16bit CRC in 8bit Data mode */
-        tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+        tmpreg8 = *ptmpreg8;
         /* To avoid GCC warning */
-        UNUSED(tmpreg);
+        UNUSED(tmpreg8);
       }
     }
   }
@@ -1244,17 +1247,17 @@
 HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size,
                                           uint32_t Timeout)
 {
-#if (USE_SPI_CRC != 0U)
-  __IO uint32_t tmpreg = 0U;
-#endif /* USE_SPI_CRC */
   uint16_t             initial_TxXferCount;
   uint16_t             initial_RxXferCount;
   uint32_t             tmp_mode;
   HAL_SPI_StateTypeDef tmp_state;
   uint32_t             tickstart;
 #if (USE_SPI_CRC != 0U)
+  __IO uint32_t tmpreg = 0U;
   uint32_t             spi_cr1;
   uint32_t             spi_cr2;
+  __IO uint8_t  *ptmpreg8;
+  __IO uint8_t  tmpreg8 = 0;
 #endif /* USE_SPI_CRC */
 
   /* Variable used to alternate Rx and Tx during transfer */
@@ -1494,10 +1497,12 @@
     }
     else
     {
+      /* Initialize the 8bit temporary pointer */
+      ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR;
       /* Read 8bit CRC */
-      tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+      tmpreg8 = *ptmpreg8;
       /* To avoid GCC warning */
-      UNUSED(tmpreg);
+      UNUSED(tmpreg8);
 
       if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)
       {
@@ -1509,9 +1514,9 @@
           goto error;
         }
         /* Read 8bit CRC again in case of 16bit CRC in 8bit Data mode */
-        tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+        tmpreg8 = *ptmpreg8;
         /* To avoid GCC warning */
-        UNUSED(tmpreg);
+        UNUSED(tmpreg8);
       }
     }
   }
@@ -3068,6 +3073,8 @@
   uint32_t tickstart;
 #if (USE_SPI_CRC != 0U)
   __IO uint32_t tmpreg = 0U;
+  __IO uint8_t  *ptmpreg8;
+  __IO uint8_t  tmpreg8 = 0;
 #endif /* USE_SPI_CRC */
 
   /* Init tickstart for timeout management*/
@@ -3099,10 +3106,12 @@
       }
       else
       {
+        /* Initialize the 8bit temporary pointer */
+        ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR;
         /* Read 8bit CRC */
-        tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+        tmpreg8 = *ptmpreg8;
         /* To avoid GCC warning */
-        UNUSED(tmpreg);
+        UNUSED(tmpreg8);
 
         if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)
         {
@@ -3112,9 +3121,9 @@
             SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC);
           }
           /* Read 8bit CRC again in case of 16bit CRC in 8bit Data mode */
-          tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+          tmpreg8 = *ptmpreg8;
           /* To avoid GCC warning */
-          UNUSED(tmpreg);
+          UNUSED(tmpreg8);
         }
       }
     }
@@ -3181,6 +3190,8 @@
   uint32_t tickstart;
 #if (USE_SPI_CRC != 0U)
   __IO uint32_t tmpreg = 0U;
+  __IO uint8_t  *ptmpreg8;
+  __IO uint8_t  tmpreg8 = 0;
 #endif /* USE_SPI_CRC */
 
   /* Init tickstart for timeout management*/
@@ -3204,10 +3215,12 @@
           /* Error on the CRC reception */
           SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC);
         }
-        /* Read CRC to Flush DR and RXNE flag */
-        tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+        /* Initialize the 8bit temporary pointer */
+        ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR;
+        /* Read 8bit CRC */
+        tmpreg8 = *ptmpreg8;
         /* To avoid GCC warning */
-        UNUSED(tmpreg);
+        UNUSED(tmpreg8);
       }
       else
       {
@@ -3554,12 +3567,15 @@
   */
 static void SPI_2linesRxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi)
 {
-  __IO uint32_t tmpreg = 0U;
+  __IO uint8_t  *ptmpreg8;
+  __IO uint8_t  tmpreg8 = 0;
 
+  /* Initialize the 8bit temporary pointer */
+  ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR;
   /* Read 8bit CRC to flush Data Register */
-  tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+  tmpreg8 = *ptmpreg8;
   /* To avoid GCC warning */
-  UNUSED(tmpreg);
+  UNUSED(tmpreg8);
 
   hspi->CRCSize--;
 
@@ -3671,7 +3687,7 @@
   /* Read 16bit CRC to flush Data Register */
   tmpreg = READ_REG(hspi->Instance->DR);
   /* To avoid GCC warning */
-  UNUSED(tmpreg);  
+  UNUSED(tmpreg);
 
   /* Disable RXNE interrupt */
   __HAL_SPI_DISABLE_IT(hspi, SPI_IT_RXNE);
@@ -3726,12 +3742,15 @@
   */
 static void SPI_RxISR_8BITCRC(struct __SPI_HandleTypeDef *hspi)
 {
-  __IO uint32_t tmpreg = 0U;
+  __IO uint8_t  *ptmpreg8;
+  __IO uint8_t  tmpreg8 = 0;
 
+  /* Initialize the 8bit temporary pointer */
+  ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR;
   /* Read 8bit CRC to flush Data Register */
-  tmpreg = READ_REG(*(__IO uint8_t *)&hspi->Instance->DR);
+  tmpreg8 = *ptmpreg8;
   /* To avoid GCC warning */
-  UNUSED(tmpreg);
+  UNUSED(tmpreg8);
 
   hspi->CRCSize--;
 
@@ -3940,7 +3959,7 @@
         return HAL_TIMEOUT;
       }
       /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */
-      if(count == 0U)
+      if (count == 0U)
       {
         tmp_timeout = 0U;
       }
@@ -3964,15 +3983,19 @@
 static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint32_t State,
                                                        uint32_t Timeout, uint32_t Tickstart)
 {
-  __IO uint32_t tmpreg;
   __IO uint32_t count;
   uint32_t tmp_timeout;
   uint32_t tmp_tickstart;
+  __IO uint8_t  *ptmpreg8;
+  __IO uint8_t  tmpreg8 = 0;
 
   /* Adjust Timeout value  in case of end of transfer */
   tmp_timeout = Timeout - (HAL_GetTick() - Tickstart);
   tmp_tickstart = HAL_GetTick();
 
+  /* Initialize the 8bit temporary pointer */
+  ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR;
+
   /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */
   count = tmp_timeout * ((SystemCoreClock * 35U) >> 20U);
 
@@ -3981,9 +4004,9 @@
     if ((Fifo == SPI_SR_FRLVL) && (State == SPI_FRLVL_EMPTY))
     {
       /* Flush Data Register by a blank read */
-      tmpreg = READ_REG(*((__IO uint8_t *)&hspi->Instance->DR));
+      tmpreg8 = *ptmpreg8;
       /* To avoid GCC warning */
-      UNUSED(tmpreg);
+      UNUSED(tmpreg8);
     }
 
     if (Timeout != HAL_MAX_DELAY)
@@ -4018,10 +4041,10 @@
         return HAL_TIMEOUT;
       }
       /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */
-      if(count == 0U)
+      if (count == 0U)
       {
         tmp_timeout = 0U;
-      }      
+      }
       count--;
     }
   }
@@ -4046,11 +4069,34 @@
     __HAL_SPI_DISABLE(hspi);
   }
 
-  /* Control the BSY flag */
-  if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK)
+  /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */
+  if (hspi->Init.Mode == SPI_MODE_MASTER)
   {
-    SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG);
-    return HAL_TIMEOUT;
+    /* Control the BSY flag */
+    if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK)
+    {
+      SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG);
+      return HAL_TIMEOUT;
+    }
+  }
+  else /* SPI_MODE_SLAVE */
+  {
+    /* Timeout in µs */
+    __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U);
+
+    /* Wait BSY flag during 1 Byte time transfer in case of Rx transfer
+    * If Timeout is reached, the transfer is considered as finish.
+    * User have to calculate the timeout value to fit with the time of 1 byte transfer.
+    * This time is directly link with the SPI clock from Master device.
+    */
+    do
+    {
+      if (count == 0U)
+      {
+        break;
+      }
+      count--;
+    } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET);
   }
 
   if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE)
@@ -4082,12 +4128,35 @@
     return HAL_TIMEOUT;
   }
 
-  /* Control the BSY flag */
-  if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK)
+  /* Timeout in µs */
+  __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U);
+  /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */
+  if (hspi->Init.Mode == SPI_MODE_MASTER)
   {
-    SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG);
-    return HAL_TIMEOUT;
+    /* Control the BSY flag */
+    if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK)
+    {
+      SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG);
+      return HAL_TIMEOUT;
+    }
   }
+  else
+  {
+    /* Wait BSY flag during 1 Byte time transfer in case of Full-Duplex and Tx transfer
+    * If Timeout is reached, the transfer is considered as finish.
+    * User have to calculate the timeout value to fit with the time of 1 byte transfer.
+    * This time is directly link with the SPI clock from Master device.
+    */
+    do
+    {
+      if (count == 0U)
+      {
+        break;
+      }
+      count--;
+    } while (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_BSY) != RESET);
+  }
+
 
   /* Control if the RX fifo is empty */
   if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HAL_OK)
@@ -4412,4 +4481,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_spi_ex.c b/Src/stm32f7xx_hal_spi_ex.c
index d34cb45..e6fcfb5 100644
--- a/Src/stm32f7xx_hal_spi_ex.c
+++ b/Src/stm32f7xx_hal_spi_ex.c
@@ -10,13 +10,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -111,5 +110,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_sram.c b/Src/stm32f7xx_hal_sram.c
index aec73af..c87dc26 100644
--- a/Src/stm32f7xx_hal_sram.c
+++ b/Src/stm32f7xx_hal_sram.c
@@ -3,58 +3,69 @@
   * @file    stm32f7xx_hal_sram.c
   * @author  MCD Application Team
   * @brief   SRAM HAL module driver.
-  *          This file provides a generic firmware to drive SRAM memories  
+  *          This file provides a generic firmware to drive SRAM memories
   *          mounted as external device.
-  *         
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                           ##### How to use this driver #####
-  ==============================================================================  
+  ==============================================================================
   [..]
-    This driver is a generic layered driver which contains a set of APIs used to 
-    control SRAM memories. It uses the FMC layer functions to interface 
-    with SRAM devices.  
+    This driver is a generic layered driver which contains a set of APIs used to
+    control SRAM memories. It uses the FMC layer functions to interface
+    with SRAM devices.
     The following sequence should be followed to configure the FMC to interface
-    with SRAM/PSRAM memories: 
-      
+    with SRAM/PSRAM memories:
+
    (#) Declare a SRAM_HandleTypeDef handle structure, for example:
-          SRAM_HandleTypeDef  hsram; and: 
-          
-       (++) Fill the SRAM_HandleTypeDef handle "Init" field with the allowed 
+          SRAM_HandleTypeDef  hsram; and:
+
+       (++) Fill the SRAM_HandleTypeDef handle "Init" field with the allowed
             values of the structure member.
-            
-       (++) Fill the SRAM_HandleTypeDef handle "Instance" field with a predefined 
-            base register instance for NOR or SRAM device 
-                         
+
+       (++) Fill the SRAM_HandleTypeDef handle "Instance" field with a predefined
+            base register instance for NOR or SRAM device
+
        (++) Fill the SRAM_HandleTypeDef handle "Extended" field with a predefined
-            base register instance for NOR or SRAM extended mode 
-             
-   (#) Declare two FMC_NORSRAM_TimingTypeDef structures, for both normal and extended 
+            base register instance for NOR or SRAM extended mode
+
+   (#) Declare two FMC_NORSRAM_TimingTypeDef structures, for both normal and extended
        mode timings; for example:
           FMC_NORSRAM_TimingTypeDef  Timing and FMC_NORSRAM_TimingTypeDef  ExTiming;
       and fill its fields with the allowed values of the structure member.
-      
+
    (#) Initialize the SRAM Controller by calling the function HAL_SRAM_Init(). This function
        performs the following sequence:
-          
-       (##) MSP hardware layer configuration using the function HAL_SRAM_MspInit()
-       (##) Control register configuration using the FMC NORSRAM interface function 
-            FMC_NORSRAM_Init()
-       (##) Timing register configuration using the FMC NORSRAM interface function 
-            FMC_NORSRAM_Timing_Init()
-       (##) Extended mode Timing register configuration using the FMC NORSRAM interface function 
-            FMC_NORSRAM_Extended_Timing_Init()
-       (##) Enable the SRAM device using the macro __FMC_NORSRAM_ENABLE()    
 
-   (#) At this stage you can perform read/write accesses from/to the memory connected 
+       (##) MSP hardware layer configuration using the function HAL_SRAM_MspInit()
+       (##) Control register configuration using the FMC NORSRAM interface function
+            FMC_NORSRAM_Init()
+       (##) Timing register configuration using the FMC NORSRAM interface function
+            FMC_NORSRAM_Timing_Init()
+       (##) Extended mode Timing register configuration using the FMC NORSRAM interface function
+            FMC_NORSRAM_Extended_Timing_Init()
+       (##) Enable the SRAM device using the macro __FMC_NORSRAM_ENABLE()
+
+   (#) At this stage you can perform read/write accesses from/to the memory connected
        to the NOR/SRAM Bank. You can perform either polling or DMA transfer using the
        following APIs:
        (++) HAL_SRAM_Read()/HAL_SRAM_Write() for polling read/write access
        (++) HAL_SRAM_Read_DMA()/HAL_SRAM_Write_DMA() for DMA read/write transfer
-       
+
    (#) You can also control the SRAM device by calling the control APIs HAL_SRAM_WriteOperation_Enable()/
-       HAL_SRAM_WriteOperation_Disable() to respectively enable/disable the SRAM write operation  
-       
+       HAL_SRAM_WriteOperation_Disable() to respectively enable/disable the SRAM write operation
+
    (#) You can continuously monitor the SRAM device HAL state by calling the function
        HAL_SRAM_GetState()
 
@@ -64,25 +75,25 @@
       The compilation define  USE_HAL_SRAM_REGISTER_CALLBACKS when set to 1
       allows the user to configure dynamically the driver callbacks.
 
-      Use Functions @ref HAL_SRAM_RegisterCallback() to register a user callback,
+      Use Functions HAL_SRAM_RegisterCallback() to register a user callback,
       it allows to register following callbacks:
         (+) MspInitCallback    : SRAM MspInit.
         (+) MspDeInitCallback  : SRAM MspDeInit.
       This function takes as parameters the HAL peripheral handle, the Callback ID
       and a pointer to the user callback function.
 
-      Use function @ref HAL_SRAM_UnRegisterCallback() to reset a callback to the default
+      Use function HAL_SRAM_UnRegisterCallback() to reset a callback to the default
       weak (surcharged) function. It allows to reset following callbacks:
         (+) MspInitCallback    : SRAM MspInit.
         (+) MspDeInitCallback  : SRAM MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
-      By default, after the @ref HAL_SRAM_Init and if the state is HAL_SRAM_STATE_RESET
+      By default, after the HAL_SRAM_Init and if the state is HAL_SRAM_STATE_RESET
       all callbacks are reset to the corresponding legacy weak (surcharged) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the @ref HAL_SRAM_Init
-      and @ref  HAL_SRAM_DeInit only when these callbacks are null (not registered beforehand).
-      If not, MspInit or MspDeInit are not null, the @ref HAL_SRAM_Init and @ref HAL_SRAM_DeInit
+      reset to the legacy weak (surcharged) functions in the HAL_SRAM_Init
+      and  HAL_SRAM_DeInit only when these callbacks are null (not registered beforehand).
+      If not, MspInit or MspDeInit are not null, the HAL_SRAM_Init and HAL_SRAM_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
 
       Callbacks can be registered/unregistered in READY state only.
@@ -90,8 +101,8 @@
       in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used
       during the Init/DeInit.
       In that case first register the MspInit/MspDeInit user callbacks
-      using @ref HAL_SRAM_RegisterCallback before calling @ref HAL_SRAM_DeInit
-      or @ref HAL_SRAM_Init function.
+      using HAL_SRAM_RegisterCallback before calling HAL_SRAM_DeInit
+      or HAL_SRAM_Init function.
 
       When The compilation define USE_HAL_SRAM_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
@@ -99,36 +110,32 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
-  */ 
+  */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
 
+
 /** @addtogroup STM32F7xx_HAL_Driver
   * @{
   */
 
-/** @defgroup SRAM SRAM 
+#ifdef HAL_SRAM_MODULE_ENABLED
+
+/** @defgroup SRAM SRAM
   * @brief SRAM driver modules
   * @{
   */
-#ifdef HAL_SRAM_MODULE_ENABLED
+
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/    
+/* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
+static void SRAM_DMACplt(DMA_HandleTypeDef *hdma);
+static void SRAM_DMACpltProt(DMA_HandleTypeDef *hdma);
+static void SRAM_DMAError(DMA_HandleTypeDef *hdma);
+
 /* Exported functions --------------------------------------------------------*/
 
 /** @defgroup SRAM_Exported_Functions SRAM Exported Functions
@@ -138,13 +145,13 @@
 /** @defgroup SRAM_Exported_Functions_Group1 Initialization and de-initialization functions
   * @brief    Initialization and Configuration functions.
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
            ##### SRAM Initialization and de_initialization functions #####
   ==============================================================================
     [..]  This section provides functions allowing to initialize/de-initialize
           the SRAM memory
-  
+
 @endverbatim
   * @{
   */
@@ -153,25 +160,26 @@
   * @brief  Performs the SRAM device initialization sequence
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
-  * @param  Timing Pointer to SRAM control timing structure 
-  * @param  ExtTiming Pointer to SRAM extended mode timing structure  
+  * @param  Timing Pointer to SRAM control timing structure
+  * @param  ExtTiming Pointer to SRAM extended mode timing structure
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming)
-{ 
+HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing,
+                                FMC_NORSRAM_TimingTypeDef *ExtTiming)
+{
   /* Check the SRAM handle parameter */
-  if(hsram == NULL)
+  if (hsram == NULL)
   {
-     return HAL_ERROR;
+    return HAL_ERROR;
   }
-  
-  if(hsram->State == HAL_SRAM_STATE_RESET)
-  {  
+
+  if (hsram->State == HAL_SRAM_STATE_RESET)
+  {
     /* Allocate lock resource and initialize it */
     hsram->Lock = HAL_UNLOCKED;
 
 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
-    if(hsram->MspInitCallback == NULL)
+    if (hsram->MspInitCallback == NULL)
     {
       hsram->MspInitCallback = HAL_SRAM_MspInit;
     }
@@ -183,21 +191,25 @@
 #else
     /* Initialize the low level hardware (MSP) */
     HAL_SRAM_MspInit(hsram);
-#endif
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */
   }
-  
+
   /* Initialize SRAM control Interface */
-  FMC_NORSRAM_Init(hsram->Instance, &(hsram->Init));
+  (void)FMC_NORSRAM_Init(hsram->Instance, &(hsram->Init));
 
   /* Initialize SRAM timing Interface */
-  FMC_NORSRAM_Timing_Init(hsram->Instance, Timing, hsram->Init.NSBank); 
+  (void)FMC_NORSRAM_Timing_Init(hsram->Instance, Timing, hsram->Init.NSBank);
 
   /* Initialize SRAM extended mode timing Interface */
-  FMC_NORSRAM_Extended_Timing_Init(hsram->Extended, ExtTiming, hsram->Init.NSBank,  hsram->Init.ExtendedMode);  
-  
+  (void)FMC_NORSRAM_Extended_Timing_Init(hsram->Extended, ExtTiming, hsram->Init.NSBank,
+                                         hsram->Init.ExtendedMode);
+
   /* Enable the NORSRAM device */
-  __FMC_NORSRAM_ENABLE(hsram->Instance, hsram->Init.NSBank); 
-  
+  __FMC_NORSRAM_ENABLE(hsram->Instance, hsram->Init.NSBank);
+
+  /* Initialize the SRAM controller state */
+  hsram->State = HAL_SRAM_STATE_READY;
+
   return HAL_OK;
 }
 
@@ -210,7 +222,7 @@
 HAL_StatusTypeDef HAL_SRAM_DeInit(SRAM_HandleTypeDef *hsram)
 {
 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
-  if(hsram->MspDeInitCallback == NULL)
+  if (hsram->MspDeInitCallback == NULL)
   {
     hsram->MspDeInitCallback = HAL_SRAM_MspDeInit;
   }
@@ -220,13 +232,14 @@
 #else
   /* De-Initialize the low level hardware (MSP) */
   HAL_SRAM_MspDeInit(hsram);
-#endif
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */
 
   /* Configure the SRAM registers with their reset values */
-  FMC_NORSRAM_DeInit(hsram->Instance, hsram->Extended, hsram->Init.NSBank);
+  (void)FMC_NORSRAM_DeInit(hsram->Instance, hsram->Extended, hsram->Init.NSBank);
 
+  /* Reset the SRAM controller state */
   hsram->State = HAL_SRAM_STATE_RESET;
-  
+
   /* Release Lock */
   __HAL_UNLOCK(hsram);
 
@@ -243,10 +256,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hsram);
- 
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_SRAM_MspInit could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -259,10 +272,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hsram);
- 
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_SRAM_MspDeInit could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -275,10 +288,10 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hdma);
- 
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_SRAM_DMA_XferCpltCallback could be implemented in the user file
-   */ 
+   */
 }
 
 /**
@@ -291,258 +304,337 @@
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hdma);
- 
+
   /* NOTE : This function Should not be modified, when the callback is needed,
             the HAL_SRAM_DMA_XferErrorCallback could be implemented in the user file
-   */ 
+   */
 }
 
 /**
   * @}
   */
 
-/** @defgroup SRAM_Exported_Functions_Group2 Input Output and memory control functions 
-  * @brief    Input Output and memory control functions 
+/** @defgroup SRAM_Exported_Functions_Group2 Input Output and memory control functions
+  * @brief    Input Output and memory control functions
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
                   ##### SRAM Input and Output functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to use and control the SRAM memory
-  
+
 @endverbatim
   * @{
   */
 
 /**
-  * @brief  Reads 8-bit buffer from SRAM memory. 
+  * @brief  Reads 8-bit buffer from SRAM memory.
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
   * @param  pAddress Pointer to read start address
-  * @param  pDstBuffer Pointer to destination buffer  
+  * @param  pDstBuffer Pointer to destination buffer
   * @param  BufferSize Size of the buffer to read from memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Read_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pDstBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SRAM_Read_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pDstBuffer,
+                                   uint32_t BufferSize)
 {
-  __IO uint8_t * psramaddress = (uint8_t *)pAddress;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsram);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY;  
-  
-  /* Read data from memory */
-  for(; BufferSize != 0; BufferSize--)
-  {
-    *pDstBuffer = *(__IO uint8_t *)psramaddress;
-    pDstBuffer++;
-    psramaddress++;
-  }
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY;    
+  uint32_t size;
+  __IO uint8_t *psramaddress = (uint8_t *)pAddress;
+  uint8_t *pdestbuff = pDstBuffer;
+  HAL_SRAM_StateTypeDef state = hsram->State;
 
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram); 
-    
-  return HAL_OK;   
+  /* Check the SRAM controller state */
+  if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
+  {
+    /* Process Locked */
+    __HAL_LOCK(hsram);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Read data from memory */
+    for (size = BufferSize; size != 0U; size--)
+    {
+      *pdestbuff = *psramaddress;
+      pdestbuff++;
+      psramaddress++;
+    }
+
+    /* Update the SRAM controller state */
+    hsram->State = state;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
-  * @brief  Writes 8-bit buffer to SRAM memory. 
+  * @brief  Writes 8-bit buffer to SRAM memory.
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
   * @param  pAddress Pointer to write start address
-  * @param  pSrcBuffer Pointer to source buffer to write  
+  * @param  pSrcBuffer Pointer to source buffer to write
   * @param  BufferSize Size of the buffer to write to memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Write_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pSrcBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SRAM_Write_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pSrcBuffer,
+                                    uint32_t BufferSize)
 {
-  __IO uint8_t * psramaddress = (uint8_t *)pAddress;
-  
+  uint32_t size;
+  __IO uint8_t *psramaddress = (uint8_t *)pAddress;
+  uint8_t *psrcbuff = pSrcBuffer;
+
   /* Check the SRAM controller state */
-  if(hsram->State == HAL_SRAM_STATE_PROTECTED)
+  if (hsram->State == HAL_SRAM_STATE_READY)
   {
-    return  HAL_ERROR; 
+    /* Process Locked */
+    __HAL_LOCK(hsram);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Write data to memory */
+    for (size = BufferSize; size != 0U; size--)
+    {
+      *psramaddress = *psrcbuff;
+      psrcbuff++;
+      psramaddress++;
+    }
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
   }
-  
-  /* Process Locked */
-  __HAL_LOCK(hsram);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY; 
-
-  /* Write data to memory */
-  for(; BufferSize != 0; BufferSize--)
+  else
   {
-    *(__IO uint8_t *)psramaddress = *pSrcBuffer; 
-    pSrcBuffer++;
-    psramaddress++;    
-  }    
+    return HAL_ERROR;
+  }
 
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY; 
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram);
-    
-  return HAL_OK;   
+  return HAL_OK;
 }
 
 /**
-  * @brief  Reads 16-bit buffer from SRAM memory. 
+  * @brief  Reads 16-bit buffer from SRAM memory.
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
   * @param  pAddress Pointer to read start address
-  * @param  pDstBuffer Pointer to destination buffer  
+  * @param  pDstBuffer Pointer to destination buffer
   * @param  BufferSize Size of the buffer to read from memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Read_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pDstBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SRAM_Read_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pDstBuffer,
+                                    uint32_t BufferSize)
 {
-  __IO uint16_t * psramaddress = (uint16_t *)pAddress;
-  
-  /* Process Locked */
-  __HAL_LOCK(hsram);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY;  
-  
-  /* Read data from memory */
-  for(; BufferSize != 0; BufferSize--)
-  {
-    *pDstBuffer = *(__IO uint16_t *)psramaddress;
-    pDstBuffer++;
-    psramaddress++;
-  }
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY;    
+  uint32_t size;
+  __IO uint32_t *psramaddress = pAddress;
+  uint16_t *pdestbuff = pDstBuffer;
+  uint8_t limit;
+  HAL_SRAM_StateTypeDef state = hsram->State;
 
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram); 
-    
-  return HAL_OK;  
+  /* Check the SRAM controller state */
+  if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
+  {
+    /* Process Locked */
+    __HAL_LOCK(hsram);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Check if the size is a 32-bits multiple */
+    limit = (((BufferSize % 2U) != 0U) ? 1U : 0U);
+
+    /* Read data from memory */
+    for (size = BufferSize; size != limit; size -= 2U)
+    {
+      *pdestbuff = (uint16_t)((*psramaddress) & 0x0000FFFFU);
+      pdestbuff++;
+      *pdestbuff = (uint16_t)(((*psramaddress) & 0xFFFF0000U) >> 16U);
+      pdestbuff++;
+      psramaddress++;
+    }
+
+    /* Read last 16-bits if size is not 32-bits multiple */
+    if (limit != 0U)
+    {
+      *pdestbuff = (uint16_t)((*psramaddress) & 0x0000FFFFU);
+    }
+
+    /* Update the SRAM controller state */
+    hsram->State = state;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
-  * @brief  Writes 16-bit buffer to SRAM memory. 
+  * @brief  Writes 16-bit buffer to SRAM memory.
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
   * @param  pAddress Pointer to write start address
-  * @param  pSrcBuffer Pointer to source buffer to write  
+  * @param  pSrcBuffer Pointer to source buffer to write
   * @param  BufferSize Size of the buffer to write to memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Write_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pSrcBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SRAM_Write_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pSrcBuffer,
+                                     uint32_t BufferSize)
 {
-  __IO uint16_t * psramaddress = (uint16_t *)pAddress; 
-  
+  uint32_t size;
+  __IO uint32_t *psramaddress = pAddress;
+  uint16_t *psrcbuff = pSrcBuffer;
+  uint8_t limit;
+
   /* Check the SRAM controller state */
-  if(hsram->State == HAL_SRAM_STATE_PROTECTED)
+  if (hsram->State == HAL_SRAM_STATE_READY)
   {
-    return  HAL_ERROR; 
+    /* Process Locked */
+    __HAL_LOCK(hsram);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Check if the size is a 32-bits multiple */
+    limit = (((BufferSize % 2U) != 0U) ? 1U : 0U);
+
+    /* Write data to memory */
+    for (size = BufferSize; size != limit; size -= 2U)
+    {
+      *psramaddress = (uint32_t)(*psrcbuff);
+      psrcbuff++;
+      *psramaddress |= ((uint32_t)(*psrcbuff) << 16U);
+      psrcbuff++;
+      psramaddress++;
+    }
+
+    /* Write last 16-bits if size is not 32-bits multiple */
+    if (limit != 0U)
+    {
+      *psramaddress = ((uint32_t)(*psrcbuff) & 0x0000FFFFU) | ((*psramaddress) & 0xFFFF0000U);
+    }
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
   }
-  
-  /* Process Locked */
-  __HAL_LOCK(hsram);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY; 
-
-  /* Write data to memory */
-  for(; BufferSize != 0; BufferSize--)
+  else
   {
-    *(__IO uint16_t *)psramaddress = *pSrcBuffer; 
-    pSrcBuffer++;
-    psramaddress++;    
-  }    
+    return HAL_ERROR;
+  }
 
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY; 
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram);
-    
-  return HAL_OK;  
+  return HAL_OK;
 }
 
 /**
-  * @brief  Reads 32-bit buffer from SRAM memory. 
+  * @brief  Reads 32-bit buffer from SRAM memory.
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
   * @param  pAddress Pointer to read start address
-  * @param  pDstBuffer Pointer to destination buffer  
+  * @param  pDstBuffer Pointer to destination buffer
   * @param  BufferSize Size of the buffer to read from memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Read_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SRAM_Read_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer,
+                                    uint32_t BufferSize)
 {
-  /* Process Locked */
-  __HAL_LOCK(hsram);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY;  
-  
-  /* Read data from memory */
-  for(; BufferSize != 0; BufferSize--)
-  {
-    *pDstBuffer = *(__IO uint32_t *)pAddress;
-    pDstBuffer++;
-    pAddress++;
-  }
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY;    
+  uint32_t size;
+  __IO uint32_t *psramaddress = pAddress;
+  uint32_t *pdestbuff = pDstBuffer;
+  HAL_SRAM_StateTypeDef state = hsram->State;
 
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram); 
-    
-  return HAL_OK;  
+  /* Check the SRAM controller state */
+  if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
+  {
+    /* Process Locked */
+    __HAL_LOCK(hsram);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Read data from memory */
+    for (size = BufferSize; size != 0U; size--)
+    {
+      *pdestbuff = *psramaddress;
+      pdestbuff++;
+      psramaddress++;
+    }
+
+    /* Update the SRAM controller state */
+    hsram->State = state;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
-  * @brief  Writes 32-bit buffer to SRAM memory. 
+  * @brief  Writes 32-bit buffer to SRAM memory.
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
   * @param  pAddress Pointer to write start address
-  * @param  pSrcBuffer Pointer to source buffer to write  
+  * @param  pSrcBuffer Pointer to source buffer to write
   * @param  BufferSize Size of the buffer to write to memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Write_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SRAM_Write_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer,
+                                     uint32_t BufferSize)
 {
+  uint32_t size;
+  __IO uint32_t *psramaddress = pAddress;
+  uint32_t *psrcbuff = pSrcBuffer;
+
   /* Check the SRAM controller state */
-  if(hsram->State == HAL_SRAM_STATE_PROTECTED)
+  if (hsram->State == HAL_SRAM_STATE_READY)
   {
-    return  HAL_ERROR; 
+    /* Process Locked */
+    __HAL_LOCK(hsram);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Write data to memory */
+    for (size = BufferSize; size != 0U; size--)
+    {
+      *psramaddress = *psrcbuff;
+      psrcbuff++;
+      psramaddress++;
+    }
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
   }
-  
-  /* Process Locked */
-  __HAL_LOCK(hsram);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY; 
-
-  /* Write data to memory */
-  for(; BufferSize != 0; BufferSize--)
+  else
   {
-    *(__IO uint32_t *)pAddress = *pSrcBuffer; 
-    pSrcBuffer++;
-    pAddress++;    
-  }    
+    return HAL_ERROR;
+  }
 
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY; 
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram);
-    
-  return HAL_OK;   
+  return HAL_OK;
 }
 
 /**
@@ -550,32 +642,48 @@
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
   * @param  pAddress Pointer to read start address
-  * @param  pDstBuffer Pointer to destination buffer  
+  * @param  pDstBuffer Pointer to destination buffer
   * @param  BufferSize Size of the buffer to read from memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Read_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SRAM_Read_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer,
+                                    uint32_t BufferSize)
 {
-  /* Process Locked */
-  __HAL_LOCK(hsram);  
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY;   
-  
-  /* Configure DMA user callbacks */
-  hsram->hdma->XferCpltCallback  = HAL_SRAM_DMA_XferCpltCallback;
-  hsram->hdma->XferErrorCallback = HAL_SRAM_DMA_XferErrorCallback;
+  HAL_StatusTypeDef status;
+  HAL_SRAM_StateTypeDef state = hsram->State;
 
-  /* Enable the DMA Stream */
-  HAL_DMA_Start_IT(hsram->hdma, (uint32_t)pAddress, (uint32_t)pDstBuffer, (uint32_t)BufferSize);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY; 
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram);  
-  
-  return HAL_OK; 
+  /* Check the SRAM controller state */
+  if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
+  {
+    /* Process Locked */
+    __HAL_LOCK(hsram);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Configure DMA user callbacks */
+    if (state == HAL_SRAM_STATE_READY)
+    {
+      hsram->hdma->XferCpltCallback = SRAM_DMACplt;
+    }
+    else
+    {
+      hsram->hdma->XferCpltCallback = SRAM_DMACpltProt;
+    }
+    hsram->hdma->XferErrorCallback = SRAM_DMAError;
+
+    /* Enable the DMA Stream */
+    status = HAL_DMA_Start_IT(hsram->hdma, (uint32_t)pAddress, (uint32_t)pDstBuffer, (uint32_t)BufferSize);
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
+  }
+  else
+  {
+    status = HAL_ERROR;
+  }
+
+  return status;
 }
 
 /**
@@ -583,38 +691,40 @@
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
   *                the configuration information for SRAM module.
   * @param  pAddress Pointer to write start address
-  * @param  pSrcBuffer Pointer to source buffer to write  
+  * @param  pSrcBuffer Pointer to source buffer to write
   * @param  BufferSize Size of the buffer to write to memory
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SRAM_Write_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize)
+HAL_StatusTypeDef HAL_SRAM_Write_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer,
+                                     uint32_t BufferSize)
 {
-  /* Check the SRAM controller state */
-  if(hsram->State == HAL_SRAM_STATE_PROTECTED)
-  {
-    return  HAL_ERROR; 
-  }
-  
-  /* Process Locked */
-  __HAL_LOCK(hsram);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY; 
-  
-  /* Configure DMA user callbacks */
-  hsram->hdma->XferCpltCallback  = HAL_SRAM_DMA_XferCpltCallback;
-  hsram->hdma->XferErrorCallback = HAL_SRAM_DMA_XferErrorCallback;
+  HAL_StatusTypeDef status;
 
-  /* Enable the DMA Stream */
-  HAL_DMA_Start_IT(hsram->hdma, (uint32_t)pSrcBuffer, (uint32_t)pAddress, (uint32_t)BufferSize);
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY;  
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram);  
-  
-  return HAL_OK;
+  /* Check the SRAM controller state */
+  if (hsram->State == HAL_SRAM_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hsram);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Configure DMA user callbacks */
+    hsram->hdma->XferCpltCallback = SRAM_DMACplt;
+    hsram->hdma->XferErrorCallback = SRAM_DMAError;
+
+    /* Enable the DMA Stream */
+    status = HAL_DMA_Start_IT(hsram->hdma, (uint32_t)pSrcBuffer, (uint32_t)pAddress, (uint32_t)BufferSize);
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
+  }
+  else
+  {
+    status = HAL_ERROR;
+  }
+
+  return status;
 }
 
 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
@@ -629,12 +739,13 @@
   * @param pCallback : pointer to the Callback function
   * @retval status
   */
-HAL_StatusTypeDef HAL_SRAM_RegisterCallback (SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, pSRAM_CallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_SRAM_RegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId,
+                                            pSRAM_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
   HAL_SRAM_StateTypeDef state;
 
-  if(pCallback == NULL)
+  if (pCallback == NULL)
   {
     return HAL_ERROR;
   }
@@ -643,20 +754,20 @@
   __HAL_LOCK(hsram);
 
   state = hsram->State;
-  if((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_RESET) || (state == HAL_SRAM_STATE_PROTECTED))
+  if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_RESET) || (state == HAL_SRAM_STATE_PROTECTED))
   {
     switch (CallbackId)
     {
-    case HAL_SRAM_MSP_INIT_CB_ID :
-      hsram->MspInitCallback = pCallback;
-      break;
-    case HAL_SRAM_MSP_DEINIT_CB_ID :
-      hsram->MspDeInitCallback = pCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SRAM_MSP_INIT_CB_ID :
+        hsram->MspInitCallback = pCallback;
+        break;
+      case HAL_SRAM_MSP_DEINIT_CB_ID :
+        hsram->MspDeInitCallback = pCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -682,7 +793,7 @@
   *          @arg @ref HAL_SRAM_DMA_XFER_ERR_CB_ID   SRAM DMA Xfer Error callback ID
   * @retval status
   */
-HAL_StatusTypeDef HAL_SRAM_UnRegisterCallback (SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId)
+HAL_StatusTypeDef HAL_SRAM_UnRegisterCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId)
 {
   HAL_StatusTypeDef status = HAL_OK;
   HAL_SRAM_StateTypeDef state;
@@ -691,42 +802,42 @@
   __HAL_LOCK(hsram);
 
   state = hsram->State;
-  if((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
+  if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
   {
     switch (CallbackId)
     {
-    case HAL_SRAM_MSP_INIT_CB_ID :
-      hsram->MspInitCallback = HAL_SRAM_MspInit;
-      break;
-    case HAL_SRAM_MSP_DEINIT_CB_ID :
-      hsram->MspDeInitCallback = HAL_SRAM_MspDeInit;
-      break;
-    case HAL_SRAM_DMA_XFER_CPLT_CB_ID :
-      hsram->DmaXferCpltCallback = HAL_SRAM_DMA_XferCpltCallback;
-      break;
-    case HAL_SRAM_DMA_XFER_ERR_CB_ID :
-      hsram->DmaXferErrorCallback = HAL_SRAM_DMA_XferErrorCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SRAM_MSP_INIT_CB_ID :
+        hsram->MspInitCallback = HAL_SRAM_MspInit;
+        break;
+      case HAL_SRAM_MSP_DEINIT_CB_ID :
+        hsram->MspDeInitCallback = HAL_SRAM_MspDeInit;
+        break;
+      case HAL_SRAM_DMA_XFER_CPLT_CB_ID :
+        hsram->DmaXferCpltCallback = HAL_SRAM_DMA_XferCpltCallback;
+        break;
+      case HAL_SRAM_DMA_XFER_ERR_CB_ID :
+        hsram->DmaXferErrorCallback = HAL_SRAM_DMA_XferErrorCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
-  else if(state == HAL_SRAM_STATE_RESET)
+  else if (state == HAL_SRAM_STATE_RESET)
   {
     switch (CallbackId)
     {
-    case HAL_SRAM_MSP_INIT_CB_ID :
-      hsram->MspInitCallback = HAL_SRAM_MspInit;
-      break;
-    case HAL_SRAM_MSP_DEINIT_CB_ID :
-      hsram->MspDeInitCallback = HAL_SRAM_MspDeInit;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SRAM_MSP_INIT_CB_ID :
+        hsram->MspInitCallback = HAL_SRAM_MspInit;
+        break;
+      case HAL_SRAM_MSP_DEINIT_CB_ID :
+        hsram->MspDeInitCallback = HAL_SRAM_MspDeInit;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -751,12 +862,13 @@
   * @param pCallback : pointer to the Callback function
   * @retval status
   */
-HAL_StatusTypeDef HAL_SRAM_RegisterDmaCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId, pSRAM_DmaCallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_SRAM_RegisterDmaCallback(SRAM_HandleTypeDef *hsram, HAL_SRAM_CallbackIDTypeDef CallbackId,
+                                               pSRAM_DmaCallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
   HAL_SRAM_StateTypeDef state;
 
-  if(pCallback == NULL)
+  if (pCallback == NULL)
   {
     return HAL_ERROR;
   }
@@ -765,20 +877,20 @@
   __HAL_LOCK(hsram);
 
   state = hsram->State;
-  if((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
+  if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
   {
     switch (CallbackId)
     {
-    case HAL_SRAM_DMA_XFER_CPLT_CB_ID :
-      hsram->DmaXferCpltCallback = pCallback;
-      break;
-    case HAL_SRAM_DMA_XFER_ERR_CB_ID :
-      hsram->DmaXferErrorCallback = pCallback;
-      break;
-    default :
-      /* update return status */
-      status =  HAL_ERROR;
-      break;
+      case HAL_SRAM_DMA_XFER_CPLT_CB_ID :
+        hsram->DmaXferCpltCallback = pCallback;
+        break;
+      case HAL_SRAM_DMA_XFER_ERR_CB_ID :
+        hsram->DmaXferErrorCallback = pCallback;
+        break;
+      default :
+        /* update return status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -791,18 +903,19 @@
   __HAL_UNLOCK(hsram);
   return status;
 }
-#endif
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */
+
 /**
   * @}
   */
-  
-/** @defgroup SRAM_Exported_Functions_Group3 Control functions 
- *  @brief   Control functions 
- *
-@verbatim   
+
+/** @defgroup SRAM_Exported_Functions_Group3 Control functions
+  *  @brief   Control functions
+  *
+@verbatim
   ==============================================================================
                         ##### SRAM Control functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
     This subsection provides a set of functions allowing to control dynamically
     the SRAM interface.
@@ -810,7 +923,7 @@
 @endverbatim
   * @{
   */
-    
+
 /**
   * @brief  Enables dynamically SRAM write operation.
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
@@ -819,19 +932,30 @@
   */
 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Enable(SRAM_HandleTypeDef *hsram)
 {
-  /* Process Locked */
-  __HAL_LOCK(hsram);
+  /* Check the SRAM controller state */
+  if (hsram->State == HAL_SRAM_STATE_PROTECTED)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hsram);
 
-  /* Enable write operation */
-  FMC_NORSRAM_WriteOperation_Enable(hsram->Instance, hsram->Init.NSBank); 
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_READY;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram); 
-  
-  return HAL_OK;  
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Enable write operation */
+    (void)FMC_NORSRAM_WriteOperation_Enable(hsram->Instance, hsram->Init.NSBank);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_READY;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
@@ -842,43 +966,51 @@
   */
 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Disable(SRAM_HandleTypeDef *hsram)
 {
-  /* Process Locked */
-  __HAL_LOCK(hsram);
+  /* Check the SRAM controller state */
+  if (hsram->State == HAL_SRAM_STATE_READY)
+  {
+    /* Process Locked */
+    __HAL_LOCK(hsram);
 
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_BUSY;
-    
-  /* Disable write operation */
-  FMC_NORSRAM_WriteOperation_Disable(hsram->Instance, hsram->Init.NSBank); 
-  
-  /* Update the SRAM controller state */
-  hsram->State = HAL_SRAM_STATE_PROTECTED;
-  
-  /* Process unlocked */
-  __HAL_UNLOCK(hsram); 
-  
-  return HAL_OK;  
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_BUSY;
+
+    /* Disable write operation */
+    (void)FMC_NORSRAM_WriteOperation_Disable(hsram->Instance, hsram->Init.NSBank);
+
+    /* Update the SRAM controller state */
+    hsram->State = HAL_SRAM_STATE_PROTECTED;
+
+    /* Process unlocked */
+    __HAL_UNLOCK(hsram);
+  }
+  else
+  {
+    return HAL_ERROR;
+  }
+
+  return HAL_OK;
 }
 
 /**
   * @}
   */
 
-/** @defgroup SRAM_Exported_Functions_Group4 Peripheral State functions 
- *  @brief   Peripheral State functions 
- *
-@verbatim   
+/** @defgroup SRAM_Exported_Functions_Group4 Peripheral State functions
+  *  @brief   Peripheral State functions
+  *
+@verbatim
   ==============================================================================
                       ##### SRAM State functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
-    This subsection permits to get in run-time the status of the SRAM controller 
+    This subsection permits to get in run-time the status of the SRAM controller
     and the data flow.
 
 @endverbatim
   * @{
   */
-  
+
 /**
   * @brief  Returns the SRAM controller state
   * @param  hsram pointer to a SRAM_HandleTypeDef structure that contains
@@ -897,13 +1029,80 @@
 /**
   * @}
   */
+
+/**
+  * @brief  DMA SRAM process complete callback.
+  * @param  hdma : DMA handle
+  * @retval None
+  */
+static void SRAM_DMACplt(DMA_HandleTypeDef *hdma)
+{
+  SRAM_HandleTypeDef *hsram = (SRAM_HandleTypeDef *)(hdma->Parent);
+
+  /* Disable the DMA channel */
+  __HAL_DMA_DISABLE(hdma);
+
+  /* Update the SRAM controller state */
+  hsram->State = HAL_SRAM_STATE_READY;
+
+#if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
+  hsram->DmaXferCpltCallback(hdma);
+#else
+  HAL_SRAM_DMA_XferCpltCallback(hdma);
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */
+}
+
+/**
+  * @brief  DMA SRAM process complete callback.
+  * @param  hdma : DMA handle
+  * @retval None
+  */
+static void SRAM_DMACpltProt(DMA_HandleTypeDef *hdma)
+{
+  SRAM_HandleTypeDef *hsram = (SRAM_HandleTypeDef *)(hdma->Parent);
+
+  /* Disable the DMA channel */
+  __HAL_DMA_DISABLE(hdma);
+
+  /* Update the SRAM controller state */
+  hsram->State = HAL_SRAM_STATE_PROTECTED;
+
+#if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
+  hsram->DmaXferCpltCallback(hdma);
+#else
+  HAL_SRAM_DMA_XferCpltCallback(hdma);
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */
+}
+
+/**
+  * @brief  DMA SRAM error callback.
+  * @param  hdma : DMA handle
+  * @retval None
+  */
+static void SRAM_DMAError(DMA_HandleTypeDef *hdma)
+{
+  SRAM_HandleTypeDef *hsram = (SRAM_HandleTypeDef *)(hdma->Parent);
+
+  /* Disable the DMA channel */
+  __HAL_DMA_DISABLE(hdma);
+
+  /* Update the SRAM controller state */
+  hsram->State = HAL_SRAM_STATE_ERROR;
+
+#if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
+  hsram->DmaXferErrorCallback(hdma);
+#else
+  HAL_SRAM_DMA_XferErrorCallback(hdma);
+#endif /* USE_HAL_SRAM_REGISTER_CALLBACKS */
+}
+
+/**
+  * @}
+  */
+
 #endif /* HAL_SRAM_MODULE_ENABLED */
-/**
-  * @}
-  */
 
 /**
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_tim.c b/Src/stm32f7xx_hal_tim.c
index 2496dd6..d0fbb1e 100644
--- a/Src/stm32f7xx_hal_tim.c
+++ b/Src/stm32f7xx_hal_tim.c
@@ -29,6 +29,17 @@
   *           + Commutation Event configuration with Interruption and DMA
   *           + TIM OCRef clear configuration
   *           + TIM External Clock configuration
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                       ##### TIMER Generic features #####
@@ -103,14 +114,14 @@
   allows the user to configure dynamically the driver callbacks.
 
   [..]
-  Use Function @ref HAL_TIM_RegisterCallback() to register a callback.
-  @ref HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,
+  Use Function HAL_TIM_RegisterCallback() to register a callback.
+  HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,
   the Callback ID and a pointer to the user callback function.
 
   [..]
-  Use function @ref HAL_TIM_UnRegisterCallback() to reset a callback to the default
+  Use function HAL_TIM_UnRegisterCallback() to reset a callback to the default
   weak function.
-  @ref HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
+  HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
   and the Callback ID.
 
   [..]
@@ -147,7 +158,7 @@
   [..]
 By default, after the Init and when the state is HAL_TIM_STATE_RESET
 all interrupt callbacks are set to the corresponding weak functions:
-  examples @ref HAL_TIM_TriggerCallback(), @ref HAL_TIM_ErrorCallback().
+  examples HAL_TIM_TriggerCallback(), HAL_TIM_ErrorCallback().
 
   [..]
   Exception done for MspInit and MspDeInit functions that are reset to the legacy weak
@@ -161,7 +172,7 @@
     in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,
     thus registered(user) MspInit / DeInit callbacks can be used during the Init / DeInit.
   In that case first register the MspInit/MspDeInit user callbacks
-      using @ref HAL_TIM_RegisterCallback() before calling DeInit or Init function.
+      using HAL_TIM_RegisterCallback() before calling DeInit or Init function.
 
   [..]
       When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or
@@ -170,17 +181,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -561,7 +561,8 @@
   htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ;
 
   /* Enable the DMA stream */
-  if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR, Length) != HAL_OK)
+  if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR,
+                       Length) != HAL_OK)
   {
     /* Return error status */
     return HAL_ERROR;
@@ -881,6 +882,7 @@
   */
 HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
 
   /* Check the parameters */
@@ -926,34 +928,38 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Enable the Output compare channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
-
-  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  if (status == HAL_OK)
   {
-    /* Enable the main output */
-    __HAL_TIM_MOE_ENABLE(htim);
-  }
+    /* Enable the Output compare channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
 
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
-  {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+    {
+      /* Enable the main output */
+      __HAL_TIM_MOE_ENABLE(htim);
+    }
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -969,6 +975,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
 
@@ -1003,26 +1011,30 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the Output compare channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
-
-  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  if (status == HAL_OK)
   {
-    /* Disable the Main Output */
-    __HAL_TIM_MOE_DISABLE(htim);
+    /* Disable the Output compare channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+    {
+      /* Disable the Main Output */
+      __HAL_TIM_MOE_DISABLE(htim);
+    }
+
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
+
+    /* Set the TIM channel state */
+    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
   }
 
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
-
-  /* Set the TIM channel state */
-  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
-
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1040,6 +1052,7 @@
   */
 HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
 
   /* Check the parameters */
@@ -1078,7 +1091,8 @@
       htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1099,7 +1113,8 @@
       htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1120,7 +1135,8 @@
       htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1140,7 +1156,8 @@
       htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1151,34 +1168,38 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Enable the Output compare channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
-
-  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  if (status == HAL_OK)
   {
-    /* Enable the main output */
-    __HAL_TIM_MOE_ENABLE(htim);
-  }
+    /* Enable the Output compare channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
 
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
-  {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+    {
+      /* Enable the main output */
+      __HAL_TIM_MOE_ENABLE(htim);
+    }
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1194,6 +1215,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
 
@@ -1232,26 +1255,30 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the Output compare channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
-
-  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  if (status == HAL_OK)
   {
-    /* Disable the Main Output */
-    __HAL_TIM_MOE_DISABLE(htim);
+    /* Disable the Output compare channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+    {
+      /* Disable the Main Output */
+      __HAL_TIM_MOE_DISABLE(htim);
+    }
+
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
+
+    /* Set the TIM channel state */
+    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
   }
 
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
-
-  /* Set the TIM channel state */
-  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
-
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1522,7 +1549,9 @@
   */
 HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
 
@@ -1566,34 +1595,38 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Enable the Capture compare channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
-
-  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  if (status == HAL_OK)
   {
-    /* Enable the main output */
-    __HAL_TIM_MOE_ENABLE(htim);
-  }
+    /* Enable the Capture compare channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
 
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
-  {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+    {
+      /* Enable the main output */
+      __HAL_TIM_MOE_ENABLE(htim);
+    }
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1609,6 +1642,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
 
@@ -1643,26 +1678,30 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the Capture compare channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
-
-  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  if (status == HAL_OK)
   {
-    /* Disable the Main Output */
-    __HAL_TIM_MOE_DISABLE(htim);
+    /* Disable the Capture compare channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+    {
+      /* Disable the Main Output */
+      __HAL_TIM_MOE_DISABLE(htim);
+    }
+
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
+
+    /* Set the TIM channel state */
+    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
   }
 
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
-
-  /* Set the TIM channel state */
-  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
-
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1680,6 +1719,7 @@
   */
 HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
 
   /* Check the parameters */
@@ -1718,7 +1758,8 @@
       htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1739,7 +1780,8 @@
       htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1759,7 +1801,8 @@
       htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1779,7 +1822,8 @@
       htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1790,34 +1834,38 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Enable the Capture compare channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
-
-  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  if (status == HAL_OK)
   {
-    /* Enable the main output */
-    __HAL_TIM_MOE_ENABLE(htim);
-  }
+    /* Enable the Capture compare channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
 
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
-  {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+    {
+      /* Enable the main output */
+      __HAL_TIM_MOE_ENABLE(htim);
+    }
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1833,6 +1881,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
 
@@ -1871,26 +1921,30 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the Capture compare channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
-
-  if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+  if (status == HAL_OK)
   {
-    /* Disable the Main Output */
-    __HAL_TIM_MOE_DISABLE(htim);
+    /* Disable the Capture compare channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+
+    if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
+    {
+      /* Disable the Main Output */
+      __HAL_TIM_MOE_DISABLE(htim);
+    }
+
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
+
+    /* Set the TIM channel state */
+    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
   }
 
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
-
-  /* Set the TIM channel state */
-  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
-
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -2150,7 +2204,9 @@
   */
 HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
+
   HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel);
   HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel);
 
@@ -2199,27 +2255,32 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
-  /* Enable the Input Capture channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
 
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+  if (status == HAL_OK)
   {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    /* Enable the Input Capture channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -2235,6 +2296,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
 
@@ -2269,21 +2332,25 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the Input Capture channel */
-  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
+  if (status == HAL_OK)
+  {
+    /* Disable the Input Capture channel */
+    TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE);
 
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
 
-  /* Set the TIM channel state */
-  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
-  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+    /* Set the TIM channel state */
+    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -2301,7 +2368,9 @@
   */
 HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
+
   HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel);
   HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel);
 
@@ -2336,20 +2405,6 @@
   /* Enable the Input Capture channel */
   TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);
 
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
-  {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
-    {
-      __HAL_TIM_ENABLE(htim);
-    }
-  }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
-
   switch (Channel)
   {
     case TIM_CHANNEL_1:
@@ -2362,7 +2417,8 @@
       htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -2382,7 +2438,8 @@
       htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -2402,7 +2459,8 @@
       htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -2422,7 +2480,8 @@
       htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -2433,11 +2492,26 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
+  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+  {
+    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    {
+      __HAL_TIM_ENABLE(htim);
+    }
+  }
+  else
+  {
+    __HAL_TIM_ENABLE(htim);
+  }
+
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -2453,6 +2527,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
   assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
@@ -2495,18 +2571,22 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
+  if (status == HAL_OK)
+  {
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
 
-  /* Set the TIM channel state */
-  TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
-  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+    /* Set the TIM channel state */
+    TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 /**
   * @}
@@ -2692,8 +2772,8 @@
   * @brief  Starts the TIM One Pulse signal generation.
   * @note Though OutputChannel parameter is deprecated and ignored by the function
   *        it has been kept to avoid HAL_TIM API compatibility break.
-  * @note The pulse output channel is determined when calling 
-  *       @ref HAL_TIM_OnePulse_ConfigChannel(). 
+  * @note The pulse output channel is determined when calling
+  *       @ref HAL_TIM_OnePulse_ConfigChannel().
   * @param  htim TIM One Pulse handle
   * @param  OutputChannel See note above
   * @retval HAL status
@@ -2749,8 +2829,8 @@
   * @brief  Stops the TIM One Pulse signal generation.
   * @note Though OutputChannel parameter is deprecated and ignored by the function
   *        it has been kept to avoid HAL_TIM API compatibility break.
-  * @note The pulse output channel is determined when calling 
-  *       @ref HAL_TIM_OnePulse_ConfigChannel(). 
+  * @note The pulse output channel is determined when calling
+  *       @ref HAL_TIM_OnePulse_ConfigChannel().
   * @param  htim TIM One Pulse handle
   * @param  OutputChannel See note above
   * @retval HAL status
@@ -2792,8 +2872,8 @@
   * @brief  Starts the TIM One Pulse signal generation in interrupt mode.
   * @note Though OutputChannel parameter is deprecated and ignored by the function
   *        it has been kept to avoid HAL_TIM API compatibility break.
-  * @note The pulse output channel is determined when calling 
-  *       @ref HAL_TIM_OnePulse_ConfigChannel(). 
+  * @note The pulse output channel is determined when calling
+  *       @ref HAL_TIM_OnePulse_ConfigChannel().
   * @param  htim TIM One Pulse handle
   * @param  OutputChannel See note above
   * @retval HAL status
@@ -2855,8 +2935,8 @@
   * @brief  Stops the TIM One Pulse signal generation in interrupt mode.
   * @note Though OutputChannel parameter is deprecated and ignored by the function
   *        it has been kept to avoid HAL_TIM API compatibility break.
-  * @note The pulse output channel is determined when calling 
-  *       @ref HAL_TIM_OnePulse_ConfigChannel(). 
+  * @note The pulse output channel is determined when calling
+  *       @ref HAL_TIM_OnePulse_ConfigChannel().
   * @param  htim TIM One Pulse handle
   * @param  OutputChannel See note above
   * @retval HAL status
@@ -3559,7 +3639,8 @@
       htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -3567,11 +3648,12 @@
       /* Enable the TIM Input Capture DMA request */
       __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
 
+      /* Enable the Capture compare channel */
+      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+
       /* Enable the Peripheral */
       __HAL_TIM_ENABLE(htim);
 
-      /* Enable the Capture compare channel */
-      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
       break;
     }
 
@@ -3584,7 +3666,8 @@
       /* Set the DMA error callback */
       htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError;
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -3592,15 +3675,16 @@
       /* Enable the TIM Input Capture  DMA request */
       __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
 
+      /* Enable the Capture compare channel */
+      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+
       /* Enable the Peripheral */
       __HAL_TIM_ENABLE(htim);
 
-      /* Enable the Capture compare channel */
-      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
       break;
     }
 
-    case TIM_CHANNEL_ALL:
+    default:
     {
       /* Set the DMA capture callbacks */
       htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt;
@@ -3610,7 +3694,8 @@
       htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -3624,27 +3709,27 @@
       htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
       }
-      /* Enable the Peripheral */
-      __HAL_TIM_ENABLE(htim);
-
-      /* Enable the Capture compare channel */
-      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
-      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
 
       /* Enable the TIM Input Capture  DMA request */
       __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1);
       /* Enable the TIM Input Capture  DMA request */
       __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2);
+
+      /* Enable the Capture compare channel */
+      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
+      TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE);
+
+      /* Enable the Peripheral */
+      __HAL_TIM_ENABLE(htim);
+
       break;
     }
-
-    default:
-      break;
   }
 
   /* Return function status */
@@ -3972,6 +4057,8 @@
                                            TIM_OC_InitTypeDef *sConfig,
                                            uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CHANNELS(Channel));
   assert_param(IS_TIM_OC_MODE(sConfig->OCMode));
@@ -4043,12 +4130,13 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
   __HAL_UNLOCK(htim);
 
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -4066,6 +4154,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
   assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity));
@@ -4122,7 +4212,7 @@
     /* Set the IC3PSC value */
     htim->Instance->CCMR2 |= sConfig->ICPrescaler;
   }
-  else
+  else if (Channel == TIM_CHANNEL_4)
   {
     /* TI4 Configuration */
     assert_param(IS_TIM_CC4_INSTANCE(htim->Instance));
@@ -4138,10 +4228,14 @@
     /* Set the IC4PSC value */
     htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8U);
   }
+  else
+  {
+    status = HAL_ERROR;
+  }
 
   __HAL_UNLOCK(htim);
 
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -4163,6 +4257,8 @@
                                             TIM_OC_InitTypeDef *sConfig,
                                             uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CHANNELS(Channel));
   assert_param(IS_TIM_PWM_MODE(sConfig->OCMode));
@@ -4277,12 +4373,13 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
   __HAL_UNLOCK(htim);
 
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -4307,6 +4404,7 @@
 HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim,  TIM_OnePulse_InitTypeDef *sConfig,
                                                  uint32_t OutputChannel,  uint32_t InputChannel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   TIM_OC_InitTypeDef temp1;
 
   /* Check the parameters */
@@ -4337,6 +4435,7 @@
         TIM_OC1_SetConfig(htim->Instance, &temp1);
         break;
       }
+
       case TIM_CHANNEL_2:
       {
         assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
@@ -4344,60 +4443,67 @@
         TIM_OC2_SetConfig(htim->Instance, &temp1);
         break;
       }
+
       default:
+        status = HAL_ERROR;
         break;
     }
 
-    switch (InputChannel)
+    if (status == HAL_OK)
     {
-      case TIM_CHANNEL_1:
+      switch (InputChannel)
       {
-        assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
+        case TIM_CHANNEL_1:
+        {
+          assert_param(IS_TIM_CC1_INSTANCE(htim->Instance));
 
-        TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity,
-                          sConfig->ICSelection, sConfig->ICFilter);
+          TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity,
+                            sConfig->ICSelection, sConfig->ICFilter);
 
-        /* Reset the IC1PSC Bits */
-        htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
+          /* Reset the IC1PSC Bits */
+          htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC;
 
-        /* Select the Trigger source */
-        htim->Instance->SMCR &= ~TIM_SMCR_TS;
-        htim->Instance->SMCR |= TIM_TS_TI1FP1;
+          /* Select the Trigger source */
+          htim->Instance->SMCR &= ~TIM_SMCR_TS;
+          htim->Instance->SMCR |= TIM_TS_TI1FP1;
 
-        /* Select the Slave Mode */
-        htim->Instance->SMCR &= ~TIM_SMCR_SMS;
-        htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;
-        break;
+          /* Select the Slave Mode */
+          htim->Instance->SMCR &= ~TIM_SMCR_SMS;
+          htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;
+          break;
+        }
+
+        case TIM_CHANNEL_2:
+        {
+          assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+
+          TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity,
+                            sConfig->ICSelection, sConfig->ICFilter);
+
+          /* Reset the IC2PSC Bits */
+          htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;
+
+          /* Select the Trigger source */
+          htim->Instance->SMCR &= ~TIM_SMCR_TS;
+          htim->Instance->SMCR |= TIM_TS_TI2FP2;
+
+          /* Select the Slave Mode */
+          htim->Instance->SMCR &= ~TIM_SMCR_SMS;
+          htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;
+          break;
+        }
+
+        default:
+          status = HAL_ERROR;
+          break;
       }
-      case TIM_CHANNEL_2:
-      {
-        assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
-
-        TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity,
-                          sConfig->ICSelection, sConfig->ICFilter);
-
-        /* Reset the IC2PSC Bits */
-        htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC;
-
-        /* Select the Trigger source */
-        htim->Instance->SMCR &= ~TIM_SMCR_TS;
-        htim->Instance->SMCR |= TIM_TS_TI2FP2;
-
-        /* Select the Slave Mode */
-        htim->Instance->SMCR &= ~TIM_SMCR_SMS;
-        htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER;
-        break;
-      }
-
-      default:
-        break;
     }
 
     htim->State = HAL_TIM_STATE_READY;
 
     __HAL_UNLOCK(htim);
 
-    return HAL_OK;
+    return status;
   }
   else
   {
@@ -4429,9 +4535,9 @@
   *            @arg TIM_DMABASE_CCR4
   *            @arg TIM_DMABASE_BDTR
   *            @arg TIM_DMABASE_OR
-  *            @arg TIM_DMABASE_CCMR3 
-  *            @arg TIM_DMABASE_CCR5 
-  *            @arg TIM_DMABASE_CCR6 
+  *            @arg TIM_DMABASE_CCMR3
+  *            @arg TIM_DMABASE_CCR5
+  *            @arg TIM_DMABASE_CCR6
   *            @arg TIM_DMABASE_AF1  (*)
   *            @arg TIM_DMABASE_AF2  (*)
   *         (*) value not defined in all devices
@@ -4453,8 +4559,14 @@
 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
                                               uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t  BurstLength)
 {
-  return HAL_TIM_DMABurst_MultiWriteStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength,
-                                          ((BurstLength) >> 8U) + 1U);
+  HAL_StatusTypeDef status;
+
+  status = HAL_TIM_DMABurst_MultiWriteStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength,
+                                            ((BurstLength) >> 8U) + 1U);
+
+
+
+  return status;
 }
 
 /**
@@ -4481,9 +4593,9 @@
   *            @arg TIM_DMABASE_CCR4
   *            @arg TIM_DMABASE_BDTR
   *            @arg TIM_DMABASE_OR
-  *            @arg TIM_DMABASE_CCMR3 
-  *            @arg TIM_DMABASE_CCR5 
-  *            @arg TIM_DMABASE_CCR6 
+  *            @arg TIM_DMABASE_CCMR3
+  *            @arg TIM_DMABASE_CCR5
+  *            @arg TIM_DMABASE_CCR6
   *            @arg TIM_DMABASE_AF1  (*)
   *            @arg TIM_DMABASE_AF2  (*)
   *         (*) value not defined in all devices
@@ -4507,6 +4619,8 @@
                                                    uint32_t BurstRequestSrc, uint32_t *BurstBuffer,
                                                    uint32_t  BurstLength,  uint32_t  DataLength)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
   assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));
@@ -4533,6 +4647,7 @@
   {
     /* nothing to do */
   }
+
   switch (BurstRequestSrc)
   {
     case TIM_DMA_UPDATE:
@@ -4546,7 +4661,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer,
-                         (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
+                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4564,7 +4679,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer,
-                         (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
+                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4582,7 +4697,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer,
-                         (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
+                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4600,7 +4715,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer,
-                         (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
+                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4618,7 +4733,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer,
-                         (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
+                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4636,7 +4751,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer,
-                         (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
+                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4654,7 +4769,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer,
-                         (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
+                           (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4662,16 +4777,20 @@
       break;
     }
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Configure the DMA Burst Mode */
-  htim->Instance->DCR = (BurstBaseAddress | BurstLength);
-  /* Enable the TIM DMA Request */
-  __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);
+  if (status == HAL_OK)
+  {
+    /* Configure the DMA Burst Mode */
+    htim->Instance->DCR = (BurstBaseAddress | BurstLength);
+    /* Enable the TIM DMA Request */
+    __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);
+  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -4682,6 +4801,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
 
@@ -4724,17 +4845,21 @@
       break;
     }
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the TIM Update DMA request */
-  __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);
+  if (status == HAL_OK)
+  {
+    /* Disable the TIM Update DMA request */
+    __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);
 
-  /* Change the DMA burst operation state */
-  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;
+    /* Change the DMA burst operation state */
+    htim->DMABurstState = HAL_DMA_BURST_STATE_READY;
+  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -4761,9 +4886,9 @@
   *            @arg TIM_DMABASE_CCR4
   *            @arg TIM_DMABASE_BDTR
   *            @arg TIM_DMABASE_OR
-  *            @arg TIM_DMABASE_CCMR3 
-  *            @arg TIM_DMABASE_CCR5 
-  *            @arg TIM_DMABASE_CCR6 
+  *            @arg TIM_DMABASE_CCMR3
+  *            @arg TIM_DMABASE_CCR5
+  *            @arg TIM_DMABASE_CCR6
   *            @arg TIM_DMABASE_AF1  (*)
   *            @arg TIM_DMABASE_AF2  (*)
   *         (*) value not defined in all devices
@@ -4785,8 +4910,13 @@
 HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
                                              uint32_t BurstRequestSrc, uint32_t  *BurstBuffer, uint32_t  BurstLength)
 {
-  return HAL_TIM_DMABurst_MultiReadStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength,
-                                         ((BurstLength) >> 8U) + 1U);
+  HAL_StatusTypeDef status;
+
+  status = HAL_TIM_DMABurst_MultiReadStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength,
+                                           ((BurstLength) >> 8U) + 1U);
+
+
+  return status;
 }
 
 /**
@@ -4813,9 +4943,9 @@
   *            @arg TIM_DMABASE_CCR4
   *            @arg TIM_DMABASE_BDTR
   *            @arg TIM_DMABASE_OR
-  *            @arg TIM_DMABASE_CCMR3 
-  *            @arg TIM_DMABASE_CCR5 
-  *            @arg TIM_DMABASE_CCR6 
+  *            @arg TIM_DMABASE_CCMR3
+  *            @arg TIM_DMABASE_CCR5
+  *            @arg TIM_DMABASE_CCR6
   *            @arg TIM_DMABASE_AF1  (*)
   *            @arg TIM_DMABASE_AF2  (*)
   *         (*) value not defined in all devices
@@ -4839,6 +4969,8 @@
                                                   uint32_t BurstRequestSrc, uint32_t  *BurstBuffer,
                                                   uint32_t  BurstLength, uint32_t  DataLength)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
   assert_param(IS_TIM_DMA_BASE(BurstBaseAddress));
@@ -4878,7 +5010,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,
-                         DataLength) != HAL_OK)
+                           DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4896,7 +5028,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,
-                         DataLength) != HAL_OK)
+                           DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4914,7 +5046,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,
-                         DataLength) != HAL_OK)
+                           DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4932,7 +5064,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,
-                         DataLength) != HAL_OK)
+                           DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4950,7 +5082,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,
-                         DataLength) != HAL_OK)
+                           DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4968,7 +5100,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,
-                         DataLength) != HAL_OK)
+                           DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4986,7 +5118,7 @@
 
       /* Enable the DMA stream */
       if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer,
-                         DataLength) != HAL_OK)
+                           DataLength) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -4994,17 +5126,21 @@
       break;
     }
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Configure the DMA Burst Mode */
-  htim->Instance->DCR = (BurstBaseAddress | BurstLength);
+  if (status == HAL_OK)
+  {
+    /* Configure the DMA Burst Mode */
+    htim->Instance->DCR = (BurstBaseAddress | BurstLength);
 
-  /* Enable the TIM DMA Request */
-  __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);
+    /* Enable the TIM DMA Request */
+    __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc);
+  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -5015,6 +5151,8 @@
   */
 HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
 
@@ -5057,17 +5195,21 @@
       break;
     }
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the TIM Update DMA request */
-  __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);
+  if (status == HAL_OK)
+  {
+    /* Disable the TIM Update DMA request */
+    __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc);
 
-  /* Change the DMA burst operation state */
-  htim->DMABurstState = HAL_DMA_BURST_STATE_READY;
+    /* Change the DMA burst operation state */
+    htim->DMABurstState = HAL_DMA_BURST_STATE_READY;
+  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -5134,6 +5276,8 @@
                                            TIM_ClearInputConfigTypeDef *sClearInputConfig,
                                            uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance));
   assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource));
@@ -5175,104 +5319,108 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  switch (Channel)
+  if (status == HAL_OK)
   {
-    case TIM_CHANNEL_1:
+    switch (Channel)
     {
-      if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
+      case TIM_CHANNEL_1:
       {
-        /* Enable the OCREF clear feature for Channel 1 */
-        SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE);
+        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
+        {
+          /* Enable the OCREF clear feature for Channel 1 */
+          SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE);
+        }
+        else
+        {
+          /* Disable the OCREF clear feature for Channel 1 */
+          CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE);
+        }
+        break;
       }
-      else
+      case TIM_CHANNEL_2:
       {
-        /* Disable the OCREF clear feature for Channel 1 */
-        CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE);
+        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
+        {
+          /* Enable the OCREF clear feature for Channel 2 */
+          SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE);
+        }
+        else
+        {
+          /* Disable the OCREF clear feature for Channel 2 */
+          CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE);
+        }
+        break;
       }
-      break;
+      case TIM_CHANNEL_3:
+      {
+        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
+        {
+          /* Enable the OCREF clear feature for Channel 3 */
+          SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE);
+        }
+        else
+        {
+          /* Disable the OCREF clear feature for Channel 3 */
+          CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE);
+        }
+        break;
+      }
+      case TIM_CHANNEL_4:
+      {
+        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
+        {
+          /* Enable the OCREF clear feature for Channel 4 */
+          SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE);
+        }
+        else
+        {
+          /* Disable the OCREF clear feature for Channel 4 */
+          CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE);
+        }
+        break;
+      }
+      case TIM_CHANNEL_5:
+      {
+        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
+        {
+          /* Enable the OCREF clear feature for Channel 5 */
+          SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE);
+        }
+        else
+        {
+          /* Disable the OCREF clear feature for Channel 5 */
+          CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE);
+        }
+        break;
+      }
+      case TIM_CHANNEL_6:
+      {
+        if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
+        {
+          /* Enable the OCREF clear feature for Channel 6 */
+          SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE);
+        }
+        else
+        {
+          /* Disable the OCREF clear feature for Channel 6 */
+          CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE);
+        }
+        break;
+      }
+      default:
+        break;
     }
-    case TIM_CHANNEL_2:
-    {
-      if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
-      {
-        /* Enable the OCREF clear feature for Channel 2 */
-        SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE);
-      }
-      else
-      {
-        /* Disable the OCREF clear feature for Channel 2 */
-        CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE);
-      }
-      break;
-    }
-    case TIM_CHANNEL_3:
-    {
-      if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
-      {
-        /* Enable the OCREF clear feature for Channel 3 */
-        SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE);
-      }
-      else
-      {
-        /* Disable the OCREF clear feature for Channel 3 */
-        CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE);
-      }
-      break;
-    }
-    case TIM_CHANNEL_4:
-    {
-      if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
-      {
-        /* Enable the OCREF clear feature for Channel 4 */
-        SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE);
-      }
-      else
-      {
-        /* Disable the OCREF clear feature for Channel 4 */
-        CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE);
-      }
-      break;
-    }
-    case TIM_CHANNEL_5:
-    {
-      if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
-      {
-        /* Enable the OCREF clear feature for Channel 5 */
-        SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE);
-      }
-      else
-      {
-        /* Disable the OCREF clear feature for Channel 5 */
-        CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE);
-      }
-      break;
-    }
-    case TIM_CHANNEL_6:
-    {
-      if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE)
-      {
-        /* Enable the OCREF clear feature for Channel 6 */
-        SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE);
-      }
-      else
-      {
-        /* Disable the OCREF clear feature for Channel 6 */
-        CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE);
-      }
-      break;
-    }
-    default:
-      break;
   }
 
   htim->State = HAL_TIM_STATE_READY;
 
   __HAL_UNLOCK(htim);
 
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -5284,6 +5432,7 @@
   */
 HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
 
   /* Process Locked */
@@ -5404,22 +5553,23 @@
     case TIM_CLOCKSOURCE_ITR1:
     case TIM_CLOCKSOURCE_ITR2:
     case TIM_CLOCKSOURCE_ITR3:
-      {
-        /* Check whether or not the timer instance supports internal trigger input */
-        assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance));
+    {
+      /* Check whether or not the timer instance supports internal trigger input */
+      assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance));
 
-        TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource);
-        break;
-      }
+      TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource);
+      break;
+    }
 
     default:
+      status = HAL_ERROR;
       break;
   }
   htim->State = HAL_TIM_STATE_READY;
 
   __HAL_UNLOCK(htim);
 
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -5945,7 +6095,7 @@
 
       default :
         /* Return error status */
-        status =  HAL_ERROR;
+        status = HAL_ERROR;
         break;
     }
   }
@@ -6011,14 +6161,14 @@
 
       default :
         /* Return error status */
-        status =  HAL_ERROR;
+        status = HAL_ERROR;
         break;
     }
   }
   else
   {
     /* Return error status */
-    status =  HAL_ERROR;
+    status = HAL_ERROR;
   }
 
   /* Release Lock */
@@ -6075,120 +6225,148 @@
     switch (CallbackID)
     {
       case HAL_TIM_BASE_MSPINIT_CB_ID :
-        htim->Base_MspInitCallback              = HAL_TIM_Base_MspInit;                      /* Legacy weak Base MspInit Callback */
+        /* Legacy weak Base MspInit Callback */
+        htim->Base_MspInitCallback              = HAL_TIM_Base_MspInit;
         break;
 
       case HAL_TIM_BASE_MSPDEINIT_CB_ID :
-        htim->Base_MspDeInitCallback            = HAL_TIM_Base_MspDeInit;                    /* Legacy weak Base Msp DeInit Callback */
+        /* Legacy weak Base Msp DeInit Callback */
+        htim->Base_MspDeInitCallback            = HAL_TIM_Base_MspDeInit;
         break;
 
       case HAL_TIM_IC_MSPINIT_CB_ID :
-        htim->IC_MspInitCallback                = HAL_TIM_IC_MspInit;                        /* Legacy weak IC Msp Init Callback */
+        /* Legacy weak IC Msp Init Callback */
+        htim->IC_MspInitCallback                = HAL_TIM_IC_MspInit;
         break;
 
       case HAL_TIM_IC_MSPDEINIT_CB_ID :
-        htim->IC_MspDeInitCallback              = HAL_TIM_IC_MspDeInit;                      /* Legacy weak IC Msp DeInit Callback */
+        /* Legacy weak IC Msp DeInit Callback */
+        htim->IC_MspDeInitCallback              = HAL_TIM_IC_MspDeInit;
         break;
 
       case HAL_TIM_OC_MSPINIT_CB_ID :
-        htim->OC_MspInitCallback                = HAL_TIM_OC_MspInit;                        /* Legacy weak OC Msp Init Callback */
+        /* Legacy weak OC Msp Init Callback */
+        htim->OC_MspInitCallback                = HAL_TIM_OC_MspInit;
         break;
 
       case HAL_TIM_OC_MSPDEINIT_CB_ID :
-        htim->OC_MspDeInitCallback              = HAL_TIM_OC_MspDeInit;                      /* Legacy weak OC Msp DeInit Callback */
+        /* Legacy weak OC Msp DeInit Callback */
+        htim->OC_MspDeInitCallback              = HAL_TIM_OC_MspDeInit;
         break;
 
       case HAL_TIM_PWM_MSPINIT_CB_ID :
-        htim->PWM_MspInitCallback               = HAL_TIM_PWM_MspInit;                       /* Legacy weak PWM Msp Init Callback */
+        /* Legacy weak PWM Msp Init Callback */
+        htim->PWM_MspInitCallback               = HAL_TIM_PWM_MspInit;
         break;
 
       case HAL_TIM_PWM_MSPDEINIT_CB_ID :
-        htim->PWM_MspDeInitCallback             = HAL_TIM_PWM_MspDeInit;                     /* Legacy weak PWM Msp DeInit Callback */
+        /* Legacy weak PWM Msp DeInit Callback */
+        htim->PWM_MspDeInitCallback             = HAL_TIM_PWM_MspDeInit;
         break;
 
       case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :
-        htim->OnePulse_MspInitCallback          = HAL_TIM_OnePulse_MspInit;                  /* Legacy weak One Pulse Msp Init Callback */
+        /* Legacy weak One Pulse Msp Init Callback */
+        htim->OnePulse_MspInitCallback          = HAL_TIM_OnePulse_MspInit;
         break;
 
       case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :
-        htim->OnePulse_MspDeInitCallback        = HAL_TIM_OnePulse_MspDeInit;                /* Legacy weak One Pulse Msp DeInit Callback */
+        /* Legacy weak One Pulse Msp DeInit Callback */
+        htim->OnePulse_MspDeInitCallback        = HAL_TIM_OnePulse_MspDeInit;
         break;
 
       case HAL_TIM_ENCODER_MSPINIT_CB_ID :
-        htim->Encoder_MspInitCallback           = HAL_TIM_Encoder_MspInit;                   /* Legacy weak Encoder Msp Init Callback */
+        /* Legacy weak Encoder Msp Init Callback */
+        htim->Encoder_MspInitCallback           = HAL_TIM_Encoder_MspInit;
         break;
 
       case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :
-        htim->Encoder_MspDeInitCallback         = HAL_TIM_Encoder_MspDeInit;                 /* Legacy weak Encoder Msp DeInit Callback */
+        /* Legacy weak Encoder Msp DeInit Callback */
+        htim->Encoder_MspDeInitCallback         = HAL_TIM_Encoder_MspDeInit;
         break;
 
       case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :
-        htim->HallSensor_MspInitCallback        = HAL_TIMEx_HallSensor_MspInit;              /* Legacy weak Hall Sensor Msp Init Callback */
+        /* Legacy weak Hall Sensor Msp Init Callback */
+        htim->HallSensor_MspInitCallback        = HAL_TIMEx_HallSensor_MspInit;
         break;
 
       case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :
-        htim->HallSensor_MspDeInitCallback      = HAL_TIMEx_HallSensor_MspDeInit;            /* Legacy weak Hall Sensor Msp DeInit Callback */
+        /* Legacy weak Hall Sensor Msp DeInit Callback */
+        htim->HallSensor_MspDeInitCallback      = HAL_TIMEx_HallSensor_MspDeInit;
         break;
 
       case HAL_TIM_PERIOD_ELAPSED_CB_ID :
-        htim->PeriodElapsedCallback             = HAL_TIM_PeriodElapsedCallback;             /* Legacy weak Period Elapsed Callback */
+        /* Legacy weak Period Elapsed Callback */
+        htim->PeriodElapsedCallback             = HAL_TIM_PeriodElapsedCallback;
         break;
 
       case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID :
-        htim->PeriodElapsedHalfCpltCallback     = HAL_TIM_PeriodElapsedHalfCpltCallback;     /* Legacy weak Period Elapsed half complete Callback */
+        /* Legacy weak Period Elapsed half complete Callback */
+        htim->PeriodElapsedHalfCpltCallback     = HAL_TIM_PeriodElapsedHalfCpltCallback;
         break;
 
       case HAL_TIM_TRIGGER_CB_ID :
-        htim->TriggerCallback                   = HAL_TIM_TriggerCallback;                   /* Legacy weak Trigger Callback */
+        /* Legacy weak Trigger Callback */
+        htim->TriggerCallback                   = HAL_TIM_TriggerCallback;
         break;
 
       case HAL_TIM_TRIGGER_HALF_CB_ID :
-        htim->TriggerHalfCpltCallback           = HAL_TIM_TriggerHalfCpltCallback;           /* Legacy weak Trigger half complete Callback */
+        /* Legacy weak Trigger half complete Callback */
+        htim->TriggerHalfCpltCallback           = HAL_TIM_TriggerHalfCpltCallback;
         break;
 
       case HAL_TIM_IC_CAPTURE_CB_ID :
-        htim->IC_CaptureCallback                = HAL_TIM_IC_CaptureCallback;                /* Legacy weak IC Capture Callback */
+        /* Legacy weak IC Capture Callback */
+        htim->IC_CaptureCallback                = HAL_TIM_IC_CaptureCallback;
         break;
 
       case HAL_TIM_IC_CAPTURE_HALF_CB_ID :
-        htim->IC_CaptureHalfCpltCallback        = HAL_TIM_IC_CaptureHalfCpltCallback;        /* Legacy weak IC Capture half complete Callback */
+        /* Legacy weak IC Capture half complete Callback */
+        htim->IC_CaptureHalfCpltCallback        = HAL_TIM_IC_CaptureHalfCpltCallback;
         break;
 
       case HAL_TIM_OC_DELAY_ELAPSED_CB_ID :
-        htim->OC_DelayElapsedCallback           = HAL_TIM_OC_DelayElapsedCallback;           /* Legacy weak OC Delay Elapsed Callback */
+        /* Legacy weak OC Delay Elapsed Callback */
+        htim->OC_DelayElapsedCallback           = HAL_TIM_OC_DelayElapsedCallback;
         break;
 
       case HAL_TIM_PWM_PULSE_FINISHED_CB_ID :
-        htim->PWM_PulseFinishedCallback         = HAL_TIM_PWM_PulseFinishedCallback;         /* Legacy weak PWM Pulse Finished Callback */
+        /* Legacy weak PWM Pulse Finished Callback */
+        htim->PWM_PulseFinishedCallback         = HAL_TIM_PWM_PulseFinishedCallback;
         break;
 
       case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID :
-        htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; /* Legacy weak PWM Pulse Finished half complete Callback */
+        /* Legacy weak PWM Pulse Finished half complete Callback */
+        htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback;
         break;
 
       case HAL_TIM_ERROR_CB_ID :
-        htim->ErrorCallback                     = HAL_TIM_ErrorCallback;                     /* Legacy weak Error Callback */
+        /* Legacy weak Error Callback */
+        htim->ErrorCallback                     = HAL_TIM_ErrorCallback;
         break;
 
       case HAL_TIM_COMMUTATION_CB_ID :
-        htim->CommutationCallback               = HAL_TIMEx_CommutCallback;                  /* Legacy weak Commutation Callback */
+        /* Legacy weak Commutation Callback */
+        htim->CommutationCallback               = HAL_TIMEx_CommutCallback;
         break;
 
       case HAL_TIM_COMMUTATION_HALF_CB_ID :
-        htim->CommutationHalfCpltCallback       = HAL_TIMEx_CommutHalfCpltCallback;          /* Legacy weak Commutation half complete Callback */
+        /* Legacy weak Commutation half complete Callback */
+        htim->CommutationHalfCpltCallback       = HAL_TIMEx_CommutHalfCpltCallback;
         break;
 
       case HAL_TIM_BREAK_CB_ID :
-        htim->BreakCallback                     = HAL_TIMEx_BreakCallback;                   /* Legacy weak Break Callback */
+        /* Legacy weak Break Callback */
+        htim->BreakCallback                     = HAL_TIMEx_BreakCallback;
         break;
 
       case HAL_TIM_BREAK2_CB_ID :
-        htim->Break2Callback                    = HAL_TIMEx_Break2Callback;                  /* Legacy weak Break2 Callback */
+        /* Legacy weak Break2 Callback */
+        htim->Break2Callback                    = HAL_TIMEx_Break2Callback;
         break;
 
       default :
         /* Return error status */
-        status =  HAL_ERROR;
+        status = HAL_ERROR;
         break;
     }
   }
@@ -6197,71 +6375,85 @@
     switch (CallbackID)
     {
       case HAL_TIM_BASE_MSPINIT_CB_ID :
-        htim->Base_MspInitCallback         = HAL_TIM_Base_MspInit;              /* Legacy weak Base MspInit Callback */
+        /* Legacy weak Base MspInit Callback */
+        htim->Base_MspInitCallback         = HAL_TIM_Base_MspInit;
         break;
 
       case HAL_TIM_BASE_MSPDEINIT_CB_ID :
-        htim->Base_MspDeInitCallback       = HAL_TIM_Base_MspDeInit;            /* Legacy weak Base Msp DeInit Callback */
+        /* Legacy weak Base Msp DeInit Callback */
+        htim->Base_MspDeInitCallback       = HAL_TIM_Base_MspDeInit;
         break;
 
       case HAL_TIM_IC_MSPINIT_CB_ID :
-        htim->IC_MspInitCallback           = HAL_TIM_IC_MspInit;                /* Legacy weak IC Msp Init Callback */
+        /* Legacy weak IC Msp Init Callback */
+        htim->IC_MspInitCallback           = HAL_TIM_IC_MspInit;
         break;
 
       case HAL_TIM_IC_MSPDEINIT_CB_ID :
-        htim->IC_MspDeInitCallback         = HAL_TIM_IC_MspDeInit;              /* Legacy weak IC Msp DeInit Callback */
+        /* Legacy weak IC Msp DeInit Callback */
+        htim->IC_MspDeInitCallback         = HAL_TIM_IC_MspDeInit;
         break;
 
       case HAL_TIM_OC_MSPINIT_CB_ID :
-        htim->OC_MspInitCallback           = HAL_TIM_OC_MspInit;                /* Legacy weak OC Msp Init Callback */
+        /* Legacy weak OC Msp Init Callback */
+        htim->OC_MspInitCallback           = HAL_TIM_OC_MspInit;
         break;
 
       case HAL_TIM_OC_MSPDEINIT_CB_ID :
-        htim->OC_MspDeInitCallback         = HAL_TIM_OC_MspDeInit;              /* Legacy weak OC Msp DeInit Callback */
+        /* Legacy weak OC Msp DeInit Callback */
+        htim->OC_MspDeInitCallback         = HAL_TIM_OC_MspDeInit;
         break;
 
       case HAL_TIM_PWM_MSPINIT_CB_ID :
-        htim->PWM_MspInitCallback          = HAL_TIM_PWM_MspInit;               /* Legacy weak PWM Msp Init Callback */
+        /* Legacy weak PWM Msp Init Callback */
+        htim->PWM_MspInitCallback          = HAL_TIM_PWM_MspInit;
         break;
 
       case HAL_TIM_PWM_MSPDEINIT_CB_ID :
-        htim->PWM_MspDeInitCallback        = HAL_TIM_PWM_MspDeInit;             /* Legacy weak PWM Msp DeInit Callback */
+        /* Legacy weak PWM Msp DeInit Callback */
+        htim->PWM_MspDeInitCallback        = HAL_TIM_PWM_MspDeInit;
         break;
 
       case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID :
-        htim->OnePulse_MspInitCallback     = HAL_TIM_OnePulse_MspInit;          /* Legacy weak One Pulse Msp Init Callback */
+        /* Legacy weak One Pulse Msp Init Callback */
+        htim->OnePulse_MspInitCallback     = HAL_TIM_OnePulse_MspInit;
         break;
 
       case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID :
-        htim->OnePulse_MspDeInitCallback   = HAL_TIM_OnePulse_MspDeInit;        /* Legacy weak One Pulse Msp DeInit Callback */
+        /* Legacy weak One Pulse Msp DeInit Callback */
+        htim->OnePulse_MspDeInitCallback   = HAL_TIM_OnePulse_MspDeInit;
         break;
 
       case HAL_TIM_ENCODER_MSPINIT_CB_ID :
-        htim->Encoder_MspInitCallback      = HAL_TIM_Encoder_MspInit;           /* Legacy weak Encoder Msp Init Callback */
+        /* Legacy weak Encoder Msp Init Callback */
+        htim->Encoder_MspInitCallback      = HAL_TIM_Encoder_MspInit;
         break;
 
       case HAL_TIM_ENCODER_MSPDEINIT_CB_ID :
-        htim->Encoder_MspDeInitCallback    = HAL_TIM_Encoder_MspDeInit;         /* Legacy weak Encoder Msp DeInit Callback */
+        /* Legacy weak Encoder Msp DeInit Callback */
+        htim->Encoder_MspDeInitCallback    = HAL_TIM_Encoder_MspDeInit;
         break;
 
       case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID :
-        htim->HallSensor_MspInitCallback   = HAL_TIMEx_HallSensor_MspInit;      /* Legacy weak Hall Sensor Msp Init Callback */
+        /* Legacy weak Hall Sensor Msp Init Callback */
+        htim->HallSensor_MspInitCallback   = HAL_TIMEx_HallSensor_MspInit;
         break;
 
       case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID :
-        htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit;    /* Legacy weak Hall Sensor Msp DeInit Callback */
+        /* Legacy weak Hall Sensor Msp DeInit Callback */
+        htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit;
         break;
 
       default :
         /* Return error status */
-        status =  HAL_ERROR;
+        status = HAL_ERROR;
         break;
     }
   }
   else
   {
     /* Return error status */
-    status =  HAL_ERROR;
+    status = HAL_ERROR;
   }
 
   /* Release Lock */
@@ -7176,6 +7368,7 @@
 static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
                                                   TIM_SlaveConfigTypeDef *sSlaveConfig)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
   uint32_t tmpccmr1;
   uint32_t tmpccer;
@@ -7272,16 +7465,18 @@
     case TIM_TS_ITR1:
     case TIM_TS_ITR2:
     case TIM_TS_ITR3:
-      {
-        /* Check the parameter */
-        assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
-        break;
-      }
+    {
+      /* Check the parameter */
+      assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
+      break;
+    }
 
     default:
+      status = HAL_ERROR;
       break;
   }
-  return HAL_OK;
+
+  return status;
 }
 
 /**
@@ -7657,20 +7852,20 @@
 void TIM_ResetCallback(TIM_HandleTypeDef *htim)
 {
   /* Reset the TIM callback to the legacy weak callbacks */
-  htim->PeriodElapsedCallback             = HAL_TIM_PeriodElapsedCallback;             /* Legacy weak PeriodElapsedCallback             */
-  htim->PeriodElapsedHalfCpltCallback     = HAL_TIM_PeriodElapsedHalfCpltCallback;     /* Legacy weak PeriodElapsedHalfCpltCallback     */
-  htim->TriggerCallback                   = HAL_TIM_TriggerCallback;                   /* Legacy weak TriggerCallback                   */
-  htim->TriggerHalfCpltCallback           = HAL_TIM_TriggerHalfCpltCallback;           /* Legacy weak TriggerHalfCpltCallback           */
-  htim->IC_CaptureCallback                = HAL_TIM_IC_CaptureCallback;                /* Legacy weak IC_CaptureCallback                */
-  htim->IC_CaptureHalfCpltCallback        = HAL_TIM_IC_CaptureHalfCpltCallback;        /* Legacy weak IC_CaptureHalfCpltCallback        */
-  htim->OC_DelayElapsedCallback           = HAL_TIM_OC_DelayElapsedCallback;           /* Legacy weak OC_DelayElapsedCallback           */
-  htim->PWM_PulseFinishedCallback         = HAL_TIM_PWM_PulseFinishedCallback;         /* Legacy weak PWM_PulseFinishedCallback         */
-  htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; /* Legacy weak PWM_PulseFinishedHalfCpltCallback */
-  htim->ErrorCallback                     = HAL_TIM_ErrorCallback;                     /* Legacy weak ErrorCallback                     */
-  htim->CommutationCallback               = HAL_TIMEx_CommutCallback;                  /* Legacy weak CommutationCallback               */
-  htim->CommutationHalfCpltCallback       = HAL_TIMEx_CommutHalfCpltCallback;          /* Legacy weak CommutationHalfCpltCallback       */
-  htim->BreakCallback                     = HAL_TIMEx_BreakCallback;                   /* Legacy weak BreakCallback                     */
-  htim->Break2Callback                    = HAL_TIMEx_Break2Callback;                  /* Legacy weak Break2Callback                    */
+  htim->PeriodElapsedCallback             = HAL_TIM_PeriodElapsedCallback;
+  htim->PeriodElapsedHalfCpltCallback     = HAL_TIM_PeriodElapsedHalfCpltCallback;
+  htim->TriggerCallback                   = HAL_TIM_TriggerCallback;
+  htim->TriggerHalfCpltCallback           = HAL_TIM_TriggerHalfCpltCallback;
+  htim->IC_CaptureCallback                = HAL_TIM_IC_CaptureCallback;
+  htim->IC_CaptureHalfCpltCallback        = HAL_TIM_IC_CaptureHalfCpltCallback;
+  htim->OC_DelayElapsedCallback           = HAL_TIM_OC_DelayElapsedCallback;
+  htim->PWM_PulseFinishedCallback         = HAL_TIM_PWM_PulseFinishedCallback;
+  htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback;
+  htim->ErrorCallback                     = HAL_TIM_ErrorCallback;
+  htim->CommutationCallback               = HAL_TIMEx_CommutCallback;
+  htim->CommutationHalfCpltCallback       = HAL_TIMEx_CommutHalfCpltCallback;
+  htim->BreakCallback                     = HAL_TIMEx_BreakCallback;
+  htim->Break2Callback                    = HAL_TIMEx_Break2Callback;
 }
 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
 
@@ -7686,4 +7881,3 @@
 /**
   * @}
   */
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_tim_ex.c b/Src/stm32f7xx_hal_tim_ex.c
index a5ae918..2135af6 100644
--- a/Src/stm32f7xx_hal_tim_ex.c
+++ b/Src/stm32f7xx_hal_tim_ex.c
@@ -11,6 +11,17 @@
   *           + Time Master and Slave synchronization configuration
   *           + Time Output Compare/PWM Channel Configuration (for channels 5 and 6)
   *           + Timer remapping capabilities configuration
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                       ##### TIMER Extended features #####
@@ -55,24 +66,16 @@
                the commutation event).
 
      (#) Activate the TIM peripheral using one of the start functions:
-           (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(), HAL_TIMEx_OCN_Start_IT()
-           (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(), HAL_TIMEx_PWMN_Start_IT()
+           (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(),
+                HAL_TIMEx_OCN_Start_IT()
+           (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(),
+                HAL_TIMEx_PWMN_Start_IT()
            (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePulseN_Start_IT()
-           (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(), HAL_TIMEx_HallSensor_Start_IT().
+           (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(),
+                HAL_TIMEx_HallSensor_Start_IT().
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -336,7 +339,8 @@
   TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY);
 
   /* Enable the Input Capture channel 1
-  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,
+  TIM_CHANNEL_2 and TIM_CHANNEL_3) */
   TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
 
   /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
@@ -368,7 +372,8 @@
   assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
 
   /* Disable the Input Capture channels 1, 2 and 3
-    (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,
+  TIM_CHANNEL_2 and TIM_CHANNEL_3) */
   TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
 
   /* Disable the Peripheral */
@@ -419,7 +424,8 @@
   __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1);
 
   /* Enable the Input Capture channel 1
-    (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,
+  TIM_CHANNEL_2 and TIM_CHANNEL_3) */
   TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
 
   /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
@@ -451,7 +457,8 @@
   assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
 
   /* Disable the Input Capture channel 1
-    (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,
+  TIM_CHANNEL_2 and TIM_CHANNEL_3) */
   TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
 
   /* Disable the capture compare Interrupts event */
@@ -511,7 +518,8 @@
   }
 
   /* Enable the Input Capture channel 1
-    (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,
+  TIM_CHANNEL_2 and TIM_CHANNEL_3) */
   TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);
 
   /* Set the DMA Input Capture 1 Callbacks */
@@ -558,7 +566,8 @@
   assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
 
   /* Disable the Input Capture channel 1
-    (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, TIM_CHANNEL_2 and TIM_CHANNEL_3) */
+  (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1,
+  TIM_CHANNEL_2 and TIM_CHANNEL_3) */
   TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE);
 
 
@@ -698,6 +707,7 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
 
   /* Check the parameters */
@@ -737,34 +747,38 @@
 
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Enable the TIM Break interrupt */
-  __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
-
-  /* Enable the Capture compare channel N */
-  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
-
-  /* Enable the Main Output */
-  __HAL_TIM_MOE_ENABLE(htim);
-
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+  if (status == HAL_OK)
   {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    /* Enable the TIM Break interrupt */
+    __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
+
+    /* Enable the Capture compare channel N */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+    /* Enable the Main Output */
+    __HAL_TIM_MOE_ENABLE(htim);
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -780,7 +794,9 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpccer;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
 
@@ -808,30 +824,34 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the Capture compare channel N */
-  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
-
-  /* Disable the TIM Break interrupt (only if no more channel is active) */
-  tmpccer = htim->Instance->CCER;
-  if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)
+  if (status == HAL_OK)
   {
-    __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
+    /* Disable the Capture compare channel N */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+
+    /* Disable the TIM Break interrupt (only if no more channel is active) */
+    tmpccer = htim->Instance->CCER;
+    if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)
+    {
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
+    }
+
+    /* Disable the Main Output */
+    __HAL_TIM_MOE_DISABLE(htim);
+
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
+
+    /* Set the TIM complementary channel state */
+    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
   }
 
-  /* Disable the Main Output */
-  __HAL_TIM_MOE_DISABLE(htim);
-
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
-
-  /* Set the TIM complementary channel state */
-  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
-
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -849,6 +869,7 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
 
   /* Check the parameters */
@@ -887,7 +908,8 @@
       htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -907,7 +929,8 @@
       htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -927,7 +950,8 @@
       htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -938,31 +962,35 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Enable the Capture compare channel N */
-  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
-
-  /* Enable the Main Output */
-  __HAL_TIM_MOE_ENABLE(htim);
-
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+  if (status == HAL_OK)
   {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    /* Enable the Capture compare channel N */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+    /* Enable the Main Output */
+    __HAL_TIM_MOE_ENABLE(htim);
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -978,6 +1006,8 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
 
@@ -1008,23 +1038,27 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the Capture compare channel N */
-  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+  if (status == HAL_OK)
+  {
+    /* Disable the Capture compare channel N */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
 
-  /* Disable the Main Output */
-  __HAL_TIM_MOE_DISABLE(htim);
+    /* Disable the Main Output */
+    __HAL_TIM_MOE_DISABLE(htim);
 
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
 
-  /* Set the TIM complementary channel state */
-  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+    /* Set the TIM complementary channel state */
+    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1155,6 +1189,7 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
 
   /* Check the parameters */
@@ -1193,34 +1228,38 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Enable the TIM Break interrupt */
-  __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
-
-  /* Enable the complementary PWM output  */
-  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
-
-  /* Enable the Main Output */
-  __HAL_TIM_MOE_ENABLE(htim);
-
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+  if (status == HAL_OK)
   {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    /* Enable the TIM Break interrupt */
+    __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK);
+
+    /* Enable the complementary PWM output  */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+    /* Enable the Main Output */
+    __HAL_TIM_MOE_ENABLE(htim);
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1236,6 +1275,7 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpccer;
 
   /* Check the parameters */
@@ -1265,30 +1305,34 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the complementary PWM output  */
-  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
-
-  /* Disable the TIM Break interrupt (only if no more channel is active) */
-  tmpccer = htim->Instance->CCER;
-  if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)
+  if (status == HAL_OK)
   {
-    __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
+    /* Disable the complementary PWM output  */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+
+    /* Disable the TIM Break interrupt (only if no more channel is active) */
+    tmpccer = htim->Instance->CCER;
+    if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)
+    {
+      __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
+    }
+
+    /* Disable the Main Output */
+    __HAL_TIM_MOE_DISABLE(htim);
+
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
+
+    /* Set the TIM complementary channel state */
+    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
   }
 
-  /* Disable the Main Output */
-  __HAL_TIM_MOE_DISABLE(htim);
-
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
-
-  /* Set the TIM complementary channel state */
-  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
-
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1306,6 +1350,7 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpsmcr;
 
   /* Check the parameters */
@@ -1344,7 +1389,8 @@
       htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1364,7 +1410,8 @@
       htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1384,7 +1431,8 @@
       htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ;
 
       /* Enable the DMA stream */
-      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, Length) != HAL_OK)
+      if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3,
+                           Length) != HAL_OK)
       {
         /* Return error status */
         return HAL_ERROR;
@@ -1395,31 +1443,35 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Enable the complementary PWM output  */
-  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
-
-  /* Enable the Main Output */
-  __HAL_TIM_MOE_ENABLE(htim);
-
-  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
-  if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+  if (status == HAL_OK)
   {
-    tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
-    if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+    /* Enable the complementary PWM output  */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE);
+
+    /* Enable the Main Output */
+    __HAL_TIM_MOE_ENABLE(htim);
+
+    /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+    if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
+    {
+      tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+      if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+      {
+        __HAL_TIM_ENABLE(htim);
+      }
+    }
+    else
     {
       __HAL_TIM_ENABLE(htim);
     }
   }
-  else
-  {
-    __HAL_TIM_ENABLE(htim);
-  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1435,6 +1487,8 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
+
   /* Check the parameters */
   assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
 
@@ -1465,23 +1519,27 @@
     }
 
     default:
+      status = HAL_ERROR;
       break;
   }
 
-  /* Disable the complementary PWM output */
-  TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
+  if (status == HAL_OK)
+  {
+    /* Disable the complementary PWM output */
+    TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE);
 
-  /* Disable the Main Output */
-  __HAL_TIM_MOE_DISABLE(htim);
+    /* Disable the Main Output */
+    __HAL_TIM_MOE_DISABLE(htim);
 
-  /* Disable the Peripheral */
-  __HAL_TIM_DISABLE(htim);
+    /* Disable the Peripheral */
+    __HAL_TIM_DISABLE(htim);
 
-  /* Set the TIM complementary channel state */
-  TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+    /* Set the TIM complementary channel state */
+    TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY);
+  }
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1509,8 +1567,8 @@
 /**
   * @brief  Starts the TIM One Pulse signal generation on the complementary
   *         output.
-  * @note OutputChannel must match the pulse output channel chosen when calling 
-  *       @ref HAL_TIM_OnePulse_ConfigChannel(). 
+  * @note OutputChannel must match the pulse output channel chosen when calling
+  *       @ref HAL_TIM_OnePulse_ConfigChannel().
   * @param  htim TIM One Pulse handle
   * @param  OutputChannel pulse output channel to enable
   *          This parameter can be one of the following values:
@@ -1530,7 +1588,7 @@
   assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
 
   /* Check the TIM channels state */
-   if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)
+  if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)
       || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)
       || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)
       || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))
@@ -1558,8 +1616,8 @@
 /**
   * @brief  Stops the TIM One Pulse signal generation on the complementary
   *         output.
-  * @note OutputChannel must match the pulse output channel chosen when calling 
-  *       @ref HAL_TIM_OnePulse_ConfigChannel(). 
+  * @note OutputChannel must match the pulse output channel chosen when calling
+  *       @ref HAL_TIM_OnePulse_ConfigChannel().
   * @param  htim TIM One Pulse handle
   * @param  OutputChannel pulse output channel to disable
   *          This parameter can be one of the following values:
@@ -1597,8 +1655,8 @@
 /**
   * @brief  Starts the TIM One Pulse signal generation in interrupt mode on the
   *         complementary channel.
-  * @note OutputChannel must match the pulse output channel chosen when calling 
-  *       @ref HAL_TIM_OnePulse_ConfigChannel(). 
+  * @note OutputChannel must match the pulse output channel chosen when calling
+  *       @ref HAL_TIM_OnePulse_ConfigChannel().
   * @param  htim TIM One Pulse handle
   * @param  OutputChannel pulse output channel to enable
   *          This parameter can be one of the following values:
@@ -1618,7 +1676,7 @@
   assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel));
 
   /* Check the TIM channels state */
-   if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)
+  if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY)
       || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)
       || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)
       || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY))
@@ -1652,8 +1710,8 @@
 /**
   * @brief  Stops the TIM One Pulse signal generation in interrupt mode on the
   *         complementary channel.
-  * @note OutputChannel must match the pulse output channel chosen when calling 
-  *       @ref HAL_TIM_OnePulse_ConfigChannel(). 
+  * @note OutputChannel must match the pulse output channel chosen when calling
+  *       @ref HAL_TIM_OnePulse_ConfigChannel().
   * @param  htim TIM One Pulse handle
   * @param  OutputChannel pulse output channel to disable
   *          This parameter can be one of the following values:
@@ -2046,6 +2104,7 @@
                                              TIMEx_BreakInputConfigTypeDef *sBreakInputConfig)
 
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmporx;
   uint32_t bkin_enable_mask;
   uint32_t bkin_polarity_mask;
@@ -2074,20 +2133,21 @@
     case TIM_BREAKINPUTSOURCE_BKIN:
     {
       bkin_enable_mask = TIM1_AF1_BKINE;
-      bkin_enable_bitpos = 0;
+      bkin_enable_bitpos = TIM1_AF1_BKINE_Pos;
       bkin_polarity_mask = TIM1_AF1_BKINP;
-      bkin_polarity_bitpos = 9;
+      bkin_polarity_bitpos = TIM1_AF1_BKINP_Pos;
       break;
     }
-
+#if defined(DFSDM1_Channel0)
     case TIM_BREAKINPUTSOURCE_DFSDM1:
     {
       bkin_enable_mask = TIM1_AF1_BKDF1BKE;
-      bkin_enable_bitpos = 8;
+      bkin_enable_bitpos = TIM1_AF1_BKDF1BKE_Pos;
       bkin_polarity_mask = 0U;
       bkin_polarity_bitpos = 0U;
       break;
     }
+#endif /* DFSDM1_Channel0 */
 
     default:
     {
@@ -2114,10 +2174,10 @@
 #if defined(DFSDM1_Channel0)
       if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1)
 #endif /* DFSDM1_Channel0 */
-        {
-          tmporx &= ~bkin_polarity_mask;
-          tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask;
-        }
+      {
+        tmporx &= ~bkin_polarity_mask;
+        tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask;
+      }
 
       /* Set TIMx_AF1 */
       htim->Instance->AF1 = tmporx;
@@ -2136,22 +2196,23 @@
 #if defined(DFSDM1_Channel0)
       if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1)
 #endif /* DFSDM1_Channel0 */
-        {
-          tmporx &= ~bkin_polarity_mask;
-          tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask;
-        }
+      {
+        tmporx &= ~bkin_polarity_mask;
+        tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask;
+      }
 
       /* Set TIMx_AF2 */
       htim->Instance->AF2 = tmporx;
       break;
     }
     default:
+      status = HAL_ERROR;
       break;
   }
 
   __HAL_UNLOCK(htim);
 
-  return HAL_OK;
+  return status;
 }
 #endif /*TIM_BREAK_INPUT_SUPPORT */
 
@@ -2178,12 +2239,13 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)
 {
-  __HAL_LOCK(htim);
 
   /* Check parameters */
   assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance));
   assert_param(IS_TIM_REMAP(Remap));
 
+  __HAL_LOCK(htim);
+
   /* Set the Timer remapping configuration */
   htim->Instance->OR = Remap;
 
@@ -2367,7 +2429,7 @@
   */
 
 /* Private functions ---------------------------------------------------------*/
-/** @defgroup TIMEx_Private_Functions TIMEx Private Functions
+/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions
   * @{
   */
 
@@ -2543,5 +2605,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_timebase_rtc_alarm_template.c b/Src/stm32f7xx_hal_timebase_rtc_alarm_template.c
index 5d06fa6..98a9cc8 100644
--- a/Src/stm32f7xx_hal_timebase_rtc_alarm_template.c
+++ b/Src/stm32f7xx_hal_timebase_rtc_alarm_template.c
@@ -9,7 +9,18 @@
   *           + Initializes the RTC peripheral to increment the seconds registers each 1ms
   *           + The alarm is configured to assert an interrupt when the RTC reaches 1ms 
   *           + HAL_IncTick is called at each Alarm event and the time is reset to 00:00:00
-  *           + HSE (default), LSE or LSI can be selected as RTC clock source  
+  *           + HSE (default), LSE or LSI can be selected as RTC clock source
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
  @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -30,17 +41,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -314,4 +314,4 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Src/stm32f7xx_hal_timebase_rtc_wakeup_template.c b/Src/stm32f7xx_hal_timebase_rtc_wakeup_template.c
index af4f896..f16231f 100644
--- a/Src/stm32f7xx_hal_timebase_rtc_wakeup_template.c
+++ b/Src/stm32f7xx_hal_timebase_rtc_wakeup_template.c
@@ -11,6 +11,17 @@
   *           + The wakeup feature is configured to assert an interrupt each 1ms 
   *           + HAL_IncTick is called inside the HAL_RTCEx_WakeUpTimerEventCallback
   *           + HSE (default), LSE or LSI can be selected as RTC clock source
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
  @verbatim
   ==============================================================================
                         ##### How to use this driver #####
@@ -31,17 +42,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -290,4 +290,4 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Src/stm32f7xx_hal_timebase_tim_template.c b/Src/stm32f7xx_hal_timebase_tim_template.c
index c282bd6..07531bd 100644
--- a/Src/stm32f7xx_hal_timebase_tim_template.c
+++ b/Src/stm32f7xx_hal_timebase_tim_template.c
@@ -8,17 +8,16 @@
   *          the TIM time base:
   *           + Initializes the TIM peripheral generate a Period elapsed Event each 1ms
   *           + HAL_IncTick is called inside HAL_TIM_PeriodElapsedCallback ie each 1ms
-  * 
+  *
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -174,4 +173,4 @@
   * @}
   */ 
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Src/stm32f7xx_hal_uart.c b/Src/stm32f7xx_hal_uart.c
index 5498ce7..75139d4 100644
--- a/Src/stm32f7xx_hal_uart.c
+++ b/Src/stm32f7xx_hal_uart.c
@@ -10,6 +10,17 @@
   *           + Peripheral Control functions
   *
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                         ##### How to use this driver #####
@@ -76,8 +87,8 @@
     allows the user to configure dynamically the driver callbacks.
 
     [..]
-    Use Function @ref HAL_UART_RegisterCallback() to register a user callback.
-    Function @ref HAL_UART_RegisterCallback() allows to register following callbacks:
+    Use Function HAL_UART_RegisterCallback() to register a user callback.
+    Function HAL_UART_RegisterCallback() allows to register following callbacks:
     (+) TxHalfCpltCallback        : Tx Half Complete Callback.
     (+) TxCpltCallback            : Tx Complete Callback.
     (+) RxHalfCpltCallback        : Rx Half Complete Callback.
@@ -93,9 +104,9 @@
     and a pointer to the user callback function.
 
     [..]
-    Use function @ref HAL_UART_UnRegisterCallback() to reset a callback to the default
+    Use function HAL_UART_UnRegisterCallback() to reset a callback to the default
     weak (surcharged) function.
-    @ref HAL_UART_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+    HAL_UART_UnRegisterCallback() takes as parameters the HAL peripheral handle,
     and the Callback ID.
     This function allows to reset following callbacks:
     (+) TxHalfCpltCallback        : Tx Half Complete Callback.
@@ -112,16 +123,16 @@
 
     [..]
     For specific callback RxEventCallback, use dedicated registration/reset functions:
-    respectively @ref HAL_UART_RegisterRxEventCallback() , @ref HAL_UART_UnRegisterRxEventCallback().
+    respectively HAL_UART_RegisterRxEventCallback() , HAL_UART_UnRegisterRxEventCallback().
 
     [..]
-    By default, after the @ref HAL_UART_Init() and when the state is HAL_UART_STATE_RESET
+    By default, after the HAL_UART_Init() and when the state is HAL_UART_STATE_RESET
     all callbacks are set to the corresponding weak (surcharged) functions:
-    examples @ref HAL_UART_TxCpltCallback(), @ref HAL_UART_RxHalfCpltCallback().
+    examples HAL_UART_TxCpltCallback(), HAL_UART_RxHalfCpltCallback().
     Exception done for MspInit and MspDeInit functions that are respectively
-    reset to the legacy weak (surcharged) functions in the @ref HAL_UART_Init()
-    and @ref HAL_UART_DeInit() only when these callbacks are null (not registered beforehand).
-    If not, MspInit or MspDeInit are not null, the @ref HAL_UART_Init() and @ref HAL_UART_DeInit()
+    reset to the legacy weak (surcharged) functions in the HAL_UART_Init()
+    and HAL_UART_DeInit() only when these callbacks are null (not registered beforehand).
+    If not, MspInit or MspDeInit are not null, the HAL_UART_Init() and HAL_UART_DeInit()
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
 
     [..]
@@ -130,8 +141,8 @@
     in HAL_UART_STATE_READY or HAL_UART_STATE_RESET state, thus registered (user)
     MspInit/DeInit callbacks can be used during the Init/DeInit.
     In that case first register the MspInit/MspDeInit user callbacks
-    using @ref HAL_UART_RegisterCallback() before calling @ref HAL_UART_DeInit()
-    or @ref HAL_UART_Init() function.
+    using HAL_UART_RegisterCallback() before calling HAL_UART_DeInit()
+    or HAL_UART_Init() function.
 
     [..]
     When The compilation define USE_HAL_UART_REGISTER_CALLBACKS is set to 0 or
@@ -141,17 +152,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -187,7 +187,6 @@
   */
 
 /* Private macros ------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
 /** @addtogroup UART_Private_Functions
   * @{
@@ -213,7 +212,8 @@
   * @}
   */
 
-
+/* Private variables ---------------------------------------------------------*/
+/* Exported Constants --------------------------------------------------------*/
 /* Exported functions --------------------------------------------------------*/
 
 /** @defgroup UART_Exported_Functions UART Exported Functions
@@ -1090,10 +1090,10 @@
   * @param Timeout Timeout duration.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
+HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
 {
-  uint8_t  *pdata8bits;
-  uint16_t *pdata16bits;
+  const uint8_t  *pdata8bits;
+  const uint16_t *pdata16bits;
   uint32_t tickstart;
 
   /* Check that a Tx process is not already ongoing */
@@ -1119,7 +1119,7 @@
     if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
     {
       pdata8bits  = NULL;
-      pdata16bits = (uint16_t *) pData;
+      pdata16bits = (const uint16_t *) pData;
     }
     else
     {
@@ -1261,7 +1261,7 @@
   * @param Size  Amount of data elements (u8 or u16) to be sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
+HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
 {
   /* Check that a Tx process is not already ongoing */
   if (huart->gState == HAL_UART_STATE_READY)
@@ -1294,7 +1294,7 @@
     __HAL_UNLOCK(huart);
 
     /* Enable the Transmit Data Register Empty interrupt */
-    SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
+    ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
 
     return HAL_OK;
   }
@@ -1333,7 +1333,7 @@
     if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U)
     {
       /* Enable the UART Receiver Timeout Interrupt */
-      SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE);
+      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE);
     }
 
     return (UART_Start_Receive_IT(huart, pData, Size));
@@ -1354,7 +1354,7 @@
   * @param Size  Amount of data elements (u8 or u16) to be sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
+HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
 {
   /* Check that a Tx process is not already ongoing */
   if (huart->gState == HAL_UART_STATE_READY)
@@ -1408,7 +1408,7 @@
 
     /* Enable the DMA transfer for transmit request by setting the DMAT bit
     in the UART CR3 register */
-    SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);
 
     return HAL_OK;
   }
@@ -1449,7 +1449,7 @@
     if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U)
     {
       /* Enable the UART Receiver Timeout Interrupt */
-      SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE);
+      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE);
     }
 
     return (UART_Start_Receive_DMA(huart, pData, Size));
@@ -1476,17 +1476,17 @@
       (gstate == HAL_UART_STATE_BUSY_TX))
   {
     /* Disable the UART DMA Tx request */
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
   }
   if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&
       (rxstate == HAL_UART_STATE_BUSY_RX))
   {
     /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */
-    CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
     /* Disable the UART DMA Rx request */
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
   }
 
   __HAL_UNLOCK(huart);
@@ -1506,7 +1506,7 @@
   if (huart->gState == HAL_UART_STATE_BUSY_TX)
   {
     /* Enable the UART DMA Tx request */
-    SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);
   }
   if (huart->RxState == HAL_UART_STATE_BUSY_RX)
   {
@@ -1514,11 +1514,14 @@
     __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);
 
     /* Re-enable PE and ERR (Frame error, noise error, overrun error) interrupts */
-    SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);
-    SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
+    if (huart->Init.Parity != UART_PARITY_NONE)
+    {    
+      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);
+    }
+    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
     /* Enable the UART DMA Rx request */
-    SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+    ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
   }
 
   __HAL_UNLOCK(huart);
@@ -1547,7 +1550,7 @@
   if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&
       (gstate == HAL_UART_STATE_BUSY_TX))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
 
     /* Abort the UART DMA Tx channel */
     if (huart->hdmatx != NULL)
@@ -1571,7 +1574,7 @@
   if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&
       (rxstate == HAL_UART_STATE_BUSY_RX))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
     /* Abort the UART DMA Rx channel */
     if (huart->hdmarx != NULL)
@@ -1609,19 +1612,20 @@
 HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
 {
   /* Disable TXEIE, TCIE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
-  CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
   /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */
   if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
   {
-    CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
+    ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
   }
 
-  /* Disable the UART DMA Tx request if enabled */
+  /* Abort the UART DMA Tx channel if enabled */
   if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    /* Disable the UART DMA Tx request if enabled */
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
 
     /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */
     if (huart->hdmatx != NULL)
@@ -1643,10 +1647,11 @@
     }
   }
 
-  /* Disable the UART DMA Rx request if enabled */
+  /* Abort the UART DMA Rx channel if enabled */
   if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+    /* Disable the UART DMA Rx request if enabled */
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
     /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */
     if (huart->hdmarx != NULL)
@@ -1704,12 +1709,13 @@
 HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)
 {
   /* Disable TXEIE and TCIE interrupts */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
 
-  /* Disable the UART DMA Tx request if enabled */
+  /* Abort the UART DMA Tx channel if enabled */
   if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    /* Disable the UART DMA Tx request if enabled */
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
 
     /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */
     if (huart->hdmatx != NULL)
@@ -1756,19 +1762,20 @@
 HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
 {
   /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
-  CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
   /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */
   if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
   {
-    CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
+    ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
   }
 
-  /* Disable the UART DMA Rx request if enabled */
+  /* Abort the UART DMA Rx channel if enabled */
   if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+    /* Disable the UART DMA Rx request if enabled */
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
     /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */
     if (huart->hdmarx != NULL)
@@ -1825,13 +1832,13 @@
   uint32_t abortcplt = 1U;
 
   /* Disable interrupts */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
-  CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
   /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */
   if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
   {
-    CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
+    ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
   }
 
   /* If DMA Tx and/or DMA Rx Handles are associated to UART Handle, DMA Abort complete callbacks should be initialised
@@ -1865,11 +1872,11 @@
     }
   }
 
-  /* Disable the UART DMA Tx request if enabled */
+  /* Abort the UART DMA Tx channel if enabled */
   if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))
   {
     /* Disable DMA Tx at UART level */
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
 
     /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */
     if (huart->hdmatx != NULL)
@@ -1889,10 +1896,11 @@
     }
   }
 
-  /* Disable the UART DMA Rx request if enabled */
+  /* Abort the UART DMA Rx channel if enabled */
   if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+    /* Disable the UART DMA Rx request if enabled */
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
     /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */
     if (huart->hdmarx != NULL)
@@ -1969,12 +1977,13 @@
 HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
 {
   /* Disable interrupts */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
 
-  /* Disable the UART DMA Tx request if enabled */
+  /* Abort the UART DMA Tx channel if enabled */
   if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    /* Disable the UART DMA Tx request if enabled */
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
 
     /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */
     if (huart->hdmatx != NULL)
@@ -2053,19 +2062,20 @@
 HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
 {
   /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
-  CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
   /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */
   if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
   {
-    CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
+    ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE));
   }
 
-  /* Disable the UART DMA Rx request if enabled */
+  /* Abort the UART DMA Rx channel if enabled */
   if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
   {
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+    /* Disable the UART DMA Rx request if enabled */
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
     /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */
     if (huart->hdmarx != NULL)
@@ -2241,10 +2251,11 @@
            Disable Rx Interrupts, and disable Rx DMA request, if ongoing */
         UART_EndRxTransfer(huart);
 
-        /* Disable the UART DMA Rx request if enabled */
+        /* Abort the UART DMA Rx channel if enabled */
         if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
         {
-          CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+          /* Disable the UART DMA Rx request if enabled */
+          ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
           /* Abort the UART DMA Rx channel */
           if (huart->hdmarx != NULL)
@@ -2329,18 +2340,18 @@
         if (huart->hdmarx->Init.Mode != DMA_CIRCULAR)
         {
           /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */
-          CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
-          CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+          ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
+          ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
           /* Disable the DMA transfer for the receiver request by resetting the DMAR bit
              in the UART CR3 register */
-          CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+          ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
           /* At end of Rx process, restore huart->RxState to Ready */
           huart->RxState = HAL_UART_STATE_READY;
           huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
 
-          CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+          ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
 
           /* Last bytes received, so no need as the abort is immediate */
           (void)HAL_DMA_Abort(huart->hdmarx);
@@ -2365,10 +2376,10 @@
           && (nb_rx_data > 0U))
       {
         /* Disable the UART Parity Error Interrupt and RXNE interrupts */
-        CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
+        ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
 
         /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
-        CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+        ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
         /* Rx process is completed, restore huart->RxState to Ready */
         huart->RxState = HAL_UART_STATE_READY;
@@ -2377,7 +2388,7 @@
         /* Clear RxISR function pointer */
         huart->RxISR = NULL;
 
-        CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+        ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
         /*Call registered Rx complete callback*/
         huart->RxEventCallback(huart, nb_rx_data);
@@ -2705,7 +2716,7 @@
   huart->gState = HAL_UART_STATE_BUSY;
 
   /* Enable USART mute mode by setting the MME bit in the CR1 register */
-  SET_BIT(huart->Instance->CR1, USART_CR1_MME);
+  ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_MME);
 
   huart->gState = HAL_UART_STATE_READY;
 
@@ -2725,7 +2736,7 @@
   huart->gState = HAL_UART_STATE_BUSY;
 
   /* Disable USART mute mode by clearing the MME bit in the CR1 register */
-  CLEAR_BIT(huart->Instance->CR1, USART_CR1_MME);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_MME);
 
   huart->gState = HAL_UART_STATE_READY;
 
@@ -2754,10 +2765,10 @@
   huart->gState = HAL_UART_STATE_BUSY;
 
   /* Clear TE and RE bits */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE));
 
   /* Enable the USART's transmit interface by setting the TE bit in the USART CR1 register */
-  SET_BIT(huart->Instance->CR1, USART_CR1_TE);
+  ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TE);
 
   huart->gState = HAL_UART_STATE_READY;
 
@@ -2777,10 +2788,10 @@
   huart->gState = HAL_UART_STATE_BUSY;
 
   /* Clear TE and RE bits */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE));
 
   /* Enable the USART's receive interface by setting the RE bit in the USART CR1 register */
-  SET_BIT(huart->Instance->CR1, USART_CR1_RE);
+  ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RE);
 
   huart->gState = HAL_UART_STATE_READY;
 
@@ -2982,7 +2993,7 @@
     /* USARTDIV must be greater than or equal to 0d16 */
     if (pclk != 0U)
     {
-      usartdiv = (uint16_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate));
+      usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate));
       if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
       {
         brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
@@ -3023,10 +3034,10 @@
     if (pclk != 0U)
     {
       /* USARTDIV must be greater than or equal to 0d16 */
-      usartdiv = (uint16_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate));
+      usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate));
       if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
       {
-        huart->Instance->BRR = usartdiv;
+        huart->Instance->BRR = (uint16_t)usartdiv;
       }
       else
       {
@@ -3167,10 +3178,11 @@
 }
 
 /**
-  * @brief  Handle UART Communication Timeout.
+  * @brief  This function handles UART Communication Timeout. It waits
+  *                  until a flag is no longer in the specified status.
   * @param huart     UART handle.
   * @param Flag      Specifies the UART flag to check
-  * @param Status    Flag status (SET or RESET)
+  * @param Status    The actual Flag status (SET or RESET)
   * @param Tickstart Tick start value
   * @param Timeout   Timeout duration
   * @retval HAL status
@@ -3188,8 +3200,8 @@
       {
         /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
            interrupts for the interrupt process */
-        CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
-        CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+        ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
+        ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
         huart->gState = HAL_UART_STATE_READY;
         huart->RxState = HAL_UART_STATE_READY;
@@ -3208,8 +3220,8 @@
 
           /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
              interrupts for the interrupt process */
-          CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
-          CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+          ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
+          ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
           huart->gState = HAL_UART_STATE_READY;
           huart->RxState = HAL_UART_STATE_READY;
@@ -3251,7 +3263,7 @@
   huart->RxState = HAL_UART_STATE_BUSY_RX;
 
   /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
-  SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
+  ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
   /* Set the Rx ISR function pointer according to the data word length */
   if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
@@ -3266,7 +3278,14 @@
   __HAL_UNLOCK(huart);
 
   /* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */
-  SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
+  if (huart->Init.Parity != UART_PARITY_NONE)
+  { 
+    ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
+  }
+  else
+  {
+    ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE);
+  }
   return HAL_OK;
 }
 
@@ -3311,8 +3330,8 @@
 
       __HAL_UNLOCK(huart);
 
-      /* Restore huart->gState to ready */
-      huart->gState = HAL_UART_STATE_READY;
+      /* Restore huart->RxState to ready */
+      huart->RxState = HAL_UART_STATE_READY;
 
       return HAL_ERROR;
     }
@@ -3320,14 +3339,17 @@
   __HAL_UNLOCK(huart);
 
   /* Enable the UART Parity Error Interrupt */
-  SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);
+  if (huart->Init.Parity != UART_PARITY_NONE)
+  {
+    ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);
+  }
 
   /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
-  SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
+  ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
   /* Enable the DMA transfer for the receiver request by setting the DMAR bit
   in the UART CR3 register */
-  SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+  ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
   return HAL_OK;
 }
@@ -3341,7 +3363,7 @@
 static void UART_EndTxTransfer(UART_HandleTypeDef *huart)
 {
   /* Disable TXEIE and TCIE interrupts */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
 
   /* At end of Tx process, restore huart->gState to Ready */
   huart->gState = HAL_UART_STATE_READY;
@@ -3356,13 +3378,13 @@
 static void UART_EndRxTransfer(UART_HandleTypeDef *huart)
 {
   /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
-  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
-  CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
+  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
   /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */
   if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
   {
-    CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
   }
 
   /* At end of Rx process, restore huart->RxState to Ready */
@@ -3390,10 +3412,10 @@
 
     /* Disable the DMA transfer for transmit request by resetting the DMAT bit
        in the UART CR3 register */
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
 
     /* Enable the UART Transmit Complete Interrupt */
-    SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
+    ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
   }
   /* DMA Circular mode */
   else
@@ -3441,12 +3463,12 @@
     huart->RxXferCount = 0U;
 
     /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */
-    CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
     /* Disable the DMA transfer for the receiver request by resetting the DMAR bit
        in the UART CR3 register */
-    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+    ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
 
     /* At end of Rx process, restore huart->RxState to Ready */
     huart->RxState = HAL_UART_STATE_READY;
@@ -3454,7 +3476,7 @@
     /* If Reception till IDLE event has been selected, Disable IDLE Interrupt */
     if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
     {
-      CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+      ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
     }
   }
 
@@ -3756,10 +3778,10 @@
     if (huart->TxXferCount == 0U)
     {
       /* Disable the UART Transmit Data Register Empty Interrupt */
-      CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
+      ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
 
       /* Enable the UART Transmit Complete Interrupt */
-      SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
+      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
     }
     else
     {
@@ -3779,7 +3801,7 @@
   */
 static void UART_TxISR_16BIT(UART_HandleTypeDef *huart)
 {
-  uint16_t *tmp;
+  const uint16_t *tmp;
 
   /* Check that a Tx process is ongoing */
   if (huart->gState == HAL_UART_STATE_BUSY_TX)
@@ -3787,14 +3809,14 @@
     if (huart->TxXferCount == 0U)
     {
       /* Disable the UART Transmit Data Register Empty Interrupt */
-      CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
+      ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
 
       /* Enable the UART Transmit Complete Interrupt */
-      SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
+      ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
     }
     else
     {
-      tmp = (uint16_t *) huart->pTxBuffPtr;
+      tmp = (const uint16_t *) huart->pTxBuffPtr;
       huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL);
       huart->pTxBuffPtr += 2U;
       huart->TxXferCount--;
@@ -3812,7 +3834,7 @@
 static void UART_EndTransmit_IT(UART_HandleTypeDef *huart)
 {
   /* Disable the UART Transmit Complete Interrupt */
-  CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE);
 
   /* Tx process is ended, restore huart->gState to Ready */
   huart->gState = HAL_UART_STATE_READY;
@@ -3850,10 +3872,10 @@
     if (huart->RxXferCount == 0U)
     {
       /* Disable the UART Parity Error Interrupt and RXNE interrupts */
-      CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
+      ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
 
       /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
-      CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+      ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
       /* Rx process is completed, restore huart->RxState to Ready */
       huart->RxState = HAL_UART_STATE_READY;
@@ -3865,9 +3887,17 @@
          If Reception till IDLE event has been selected : */
       if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
       {
-        /* Disable IDLE interrupt */
-        CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+        /* Set reception type to Standard */
+        huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
 
+        /* Disable IDLE interrupt */
+        ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+
+        if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET)
+        {
+          /* Clear IDLE Flag */
+          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);
+        }
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
         /*Call registered Rx Event callback*/
         huart->RxEventCallback(huart, huart->RxXferSize);
@@ -3887,7 +3917,6 @@
         HAL_UART_RxCpltCallback(huart);
 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
       }
-      huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
     }
   }
   else
@@ -3922,10 +3951,10 @@
     if (huart->RxXferCount == 0U)
     {
       /* Disable the UART Parity Error Interrupt and RXNE interrupt*/
-      CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
+      ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
 
       /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
-      CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+      ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
 
       /* Rx process is completed, restore huart->RxState to Ready */
       huart->RxState = HAL_UART_STATE_READY;
@@ -3937,9 +3966,17 @@
          If Reception till IDLE event has been selected : */
       if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
       {
-        /* Disable IDLE interrupt */
-        CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+        /* Set reception type to Standard */
+        huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
 
+        /* Disable IDLE interrupt */
+        ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+
+        if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET)
+        {
+          /* Clear IDLE Flag */
+          __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);
+        }
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
         /*Call registered Rx Event callback*/
         huart->RxEventCallback(huart, huart->RxXferSize);
@@ -3959,7 +3996,6 @@
         HAL_UART_RxCpltCallback(huart);
 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
       }
-      huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
     }
   }
   else
@@ -3983,4 +4019,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_uart_ex.c b/Src/stm32f7xx_hal_uart_ex.c
index 75654e6..d4229c1 100644
--- a/Src/stm32f7xx_hal_uart_ex.c
+++ b/Src/stm32f7xx_hal_uart_ex.c
@@ -9,6 +9,17 @@
   *           + Peripheral Control functions
   *
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                ##### UART peripheral extended features  #####
@@ -21,17 +32,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -303,7 +303,7 @@
   __HAL_LOCK(huart);
 
   /* Set UCESM bit */
-  SET_BIT(huart->Instance->CR3, USART_CR3_UCESM);
+  ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_UCESM);
 
   /* Process Unlocked */
   __HAL_UNLOCK(huart);
@@ -322,7 +322,7 @@
   __HAL_LOCK(huart);
 
   /* Clear UCESM bit */
-  CLEAR_BIT(huart->Instance->CR3, USART_CR3_UCESM);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_UCESM);
 
   /* Process Unlocked */
   __HAL_UNLOCK(huart);
@@ -446,7 +446,7 @@
   __HAL_LOCK(huart);
 
   /* Set UESM bit */
-  SET_BIT(huart->Instance->CR1, USART_CR1_UESM);
+  ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_UESM);
 
   /* Process Unlocked */
   __HAL_UNLOCK(huart);
@@ -465,7 +465,7 @@
   __HAL_LOCK(huart);
 
   /* Clear UESM bit */
-  CLEAR_BIT(huart->Instance->CR1, USART_CR1_UESM);
+  ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_UESM);
 
   /* Process Unlocked */
   __HAL_UNLOCK(huart);
@@ -641,7 +641,7 @@
       if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
       {
         __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);
-        SET_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+        ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
       }
       else
       {
@@ -703,7 +703,7 @@
       if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
       {
         __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF);
-        SET_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+        ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
       }
       else
       {
@@ -768,4 +768,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_usart.c b/Src/stm32f7xx_hal_usart.c
index 1fc591e..17ffe49 100644
--- a/Src/stm32f7xx_hal_usart.c
+++ b/Src/stm32f7xx_hal_usart.c
@@ -11,6 +11,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State and Error functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
  ===============================================================================
                         ##### How to use this driver #####
@@ -62,8 +73,8 @@
     allows the user to configure dynamically the driver callbacks.
 
     [..]
-    Use Function @ref HAL_USART_RegisterCallback() to register a user callback.
-    Function @ref HAL_USART_RegisterCallback() allows to register following callbacks:
+    Use Function HAL_USART_RegisterCallback() to register a user callback.
+    Function HAL_USART_RegisterCallback() allows to register following callbacks:
     (+) TxHalfCpltCallback        : Tx Half Complete Callback.
     (+) TxCpltCallback            : Tx Complete Callback.
     (+) RxHalfCpltCallback        : Rx Half Complete Callback.
@@ -77,9 +88,9 @@
     and a pointer to the user callback function.
 
     [..]
-    Use function @ref HAL_USART_UnRegisterCallback() to reset a callback to the default
+    Use function HAL_USART_UnRegisterCallback() to reset a callback to the default
     weak (surcharged) function.
-    @ref HAL_USART_UnRegisterCallback() takes as parameters the HAL peripheral handle,
+    HAL_USART_UnRegisterCallback() takes as parameters the HAL peripheral handle,
     and the Callback ID.
     This function allows to reset following callbacks:
     (+) TxHalfCpltCallback        : Tx Half Complete Callback.
@@ -93,13 +104,13 @@
     (+) MspDeInitCallback         : USART MspDeInit.
 
     [..]
-    By default, after the @ref HAL_USART_Init() and when the state is HAL_USART_STATE_RESET
+    By default, after the HAL_USART_Init() and when the state is HAL_USART_STATE_RESET
     all callbacks are set to the corresponding weak (surcharged) functions:
-    examples @ref HAL_USART_TxCpltCallback(), @ref HAL_USART_RxHalfCpltCallback().
+    examples HAL_USART_TxCpltCallback(), HAL_USART_RxHalfCpltCallback().
     Exception done for MspInit and MspDeInit functions that are respectively
-    reset to the legacy weak (surcharged) functions in the @ref HAL_USART_Init()
-    and @ref HAL_USART_DeInit() only when these callbacks are null (not registered beforehand).
-    If not, MspInit or MspDeInit are not null, the @ref HAL_USART_Init() and @ref HAL_USART_DeInit()
+    reset to the legacy weak (surcharged) functions in the HAL_USART_Init()
+    and HAL_USART_DeInit() only when these callbacks are null (not registered beforehand).
+    If not, MspInit or MspDeInit are not null, the HAL_USART_Init() and HAL_USART_DeInit()
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
 
     [..]
@@ -108,8 +119,8 @@
     in HAL_USART_STATE_READY or HAL_USART_STATE_RESET state, thus registered (user)
     MspInit/DeInit callbacks can be used during the Init/DeInit.
     In that case first register the MspInit/MspDeInit user callbacks
-    using @ref HAL_USART_RegisterCallback() before calling @ref HAL_USART_DeInit()
-    or @ref HAL_USART_Init() function.
+    using HAL_USART_RegisterCallback() before calling HAL_USART_DeInit()
+    or HAL_USART_Init() function.
 
     [..]
     When The compilation define USE_HAL_USART_REGISTER_CALLBACKS is set to 0 or
@@ -119,17 +130,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -717,10 +717,10 @@
   * @param  Timeout Timeout duration.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout)
+HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size, uint32_t Timeout)
 {
-  uint8_t  *ptxdata8bits;
-  uint16_t *ptxdata16bits;
+  const uint8_t  *ptxdata8bits;
+  const uint16_t *ptxdata16bits;
   uint32_t tickstart;
 
   if (husart->State == HAL_USART_STATE_READY)
@@ -746,7 +746,7 @@
     if ((husart->Init.WordLength == USART_WORDLENGTH_9B) && (husart->Init.Parity == USART_PARITY_NONE))
     {
       ptxdata8bits  = NULL;
-      ptxdata16bits = (uint16_t *) pTxData;
+      ptxdata16bits = (const uint16_t *) pTxData;
     }
     else
     {
@@ -919,13 +919,13 @@
   * @param  Timeout Timeout duration.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
+HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData,
                                             uint16_t Size, uint32_t Timeout)
 {
   uint8_t  *prxdata8bits;
   uint16_t *prxdata16bits;
-  uint8_t  *ptxdata8bits;
-  uint16_t *ptxdata16bits;
+  const uint8_t  *ptxdata8bits;
+  const uint16_t *ptxdata16bits;
   uint16_t uhMask;
   uint16_t rxdatacount;
   uint32_t tickstart;
@@ -960,7 +960,7 @@
     {
       prxdata8bits  = NULL;
       ptxdata8bits  = NULL;
-      ptxdata16bits = (uint16_t *) pTxData;
+      ptxdata16bits = (const uint16_t *) pTxData;
       prxdata16bits = (uint16_t *) pRxData;
     }
     else
@@ -1066,7 +1066,7 @@
   * @param  Size amount of data elements (u8 or u16) to be sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size)
+HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size)
 {
   if (husart->State == HAL_USART_STATE_READY)
   {
@@ -1170,7 +1170,14 @@
       __HAL_UNLOCK(husart);
 
       /* Enable the USART Parity Error and Data Register not empty Interrupts */
-      SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
+      if (husart->Init.Parity != USART_PARITY_NONE)
+      {  
+        SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
+      }
+      else
+      {
+        SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE);
+      }
     }
 
     {
@@ -1200,7 +1207,7 @@
   * @param  Size amount of data elements (u8 or u16) to be sent (same amount to be received).
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
+HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData,
                                                uint16_t Size)
 {
 
@@ -1246,7 +1253,14 @@
       SET_BIT(husart->Instance->CR3, USART_CR3_EIE);
 
       /* Enable the USART Parity Error and USART Data Register not empty Interrupts */
-      SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
+      if (husart->Init.Parity != USART_PARITY_NONE)
+      {  
+        SET_BIT(husart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
+      }
+      else
+      {
+        SET_BIT(husart->Instance->CR1, USART_CR1_RXNEIE);
+      }
 
       /* Enable the USART Transmit Data Register Empty Interrupt */
       SET_BIT(husart->Instance->CR1, USART_CR1_TXEIE);
@@ -1270,10 +1284,10 @@
   * @param  Size amount of data elements (u8 or u16) to be sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size)
+HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size)
 {
   HAL_StatusTypeDef status = HAL_OK;
-  uint32_t *tmp;
+  const uint32_t *tmp;
 
   if (husart->State == HAL_USART_STATE_READY)
   {
@@ -1304,8 +1318,8 @@
       husart->hdmatx->XferErrorCallback = USART_DMAError;
 
       /* Enable the USART transmit DMA channel */
-      tmp = (uint32_t *)&pTxData;
-      status = HAL_DMA_Start_IT(husart->hdmatx, *(uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, Size);
+      tmp = (const uint32_t *)&pTxData;
+      status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, Size);
     }
 
     if (status == HAL_OK)
@@ -1414,8 +1428,11 @@
       /* Process Unlocked */
       __HAL_UNLOCK(husart);
 
-      /* Enable the USART Parity Error Interrupt */
-      SET_BIT(husart->Instance->CR1, USART_CR1_PEIE);
+      if (husart->Init.Parity != USART_PARITY_NONE)
+      {
+        /* Enable the USART Parity Error Interrupt */
+        SET_BIT(husart->Instance->CR1, USART_CR1_PEIE);
+      }
 
       /* Enable the USART Error Interrupt: (Frame error, noise error, overrun error) */
       SET_BIT(husart->Instance->CR3, USART_CR3_EIE);
@@ -1470,11 +1487,11 @@
   * @param  Size amount of data elements (u8 or u16) to be received/sent.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
+HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData,
                                                 uint16_t Size)
 {
   HAL_StatusTypeDef status;
-  uint32_t *tmp;
+  const uint32_t *tmp;
 
   if (husart->State == HAL_USART_STATE_READY)
   {
@@ -1516,13 +1533,13 @@
 
       /* Enable the USART receive DMA channel */
       tmp = (uint32_t *)&pRxData;
-      status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(uint32_t *)tmp, Size);
+      status = HAL_DMA_Start_IT(husart->hdmarx, (uint32_t)&husart->Instance->RDR, *(const uint32_t *)tmp, Size);
 
       /* Enable the USART transmit DMA channel */
       if (status == HAL_OK)
       {
-        tmp = (uint32_t *)&pTxData;
-        status = HAL_DMA_Start_IT(husart->hdmatx, *(uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, Size);
+        tmp = (const uint32_t *)&pTxData;
+        status = HAL_DMA_Start_IT(husart->hdmatx, *(const uint32_t *)tmp, (uint32_t)&husart->Instance->TDR, Size);
       }
     }
     else
@@ -1535,8 +1552,11 @@
       /* Process Unlocked */
       __HAL_UNLOCK(husart);
 
-      /* Enable the USART Parity Error Interrupt */
-      SET_BIT(husart->Instance->CR1, USART_CR1_PEIE);
+      if (husart->Init.Parity != USART_PARITY_NONE)
+      {
+        /* Enable the USART Parity Error Interrupt */
+        SET_BIT(husart->Instance->CR1, USART_CR1_PEIE);
+      }
 
       /* Enable the USART Error Interrupt: (Frame error, noise error, overrun error) */
       SET_BIT(husart->Instance->CR3, USART_CR3_EIE);
@@ -1653,7 +1673,10 @@
     __HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_OREF);
 
     /* Re-enable PE and ERR (Frame error, noise error, overrun error) interrupts */
-    SET_BIT(husart->Instance->CR1, USART_CR1_PEIE);
+    if (husart->Init.Parity != USART_PARITY_NONE)
+    {    
+      SET_BIT(husart->Instance->CR1, USART_CR1_PEIE);
+    }
     SET_BIT(husart->Instance->CR3, USART_CR3_EIE);
 
     /* Enable the USART DMA Rx request  before the DMA Tx request */
@@ -1743,9 +1766,10 @@
   CLEAR_BIT(husart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
   CLEAR_BIT(husart->Instance->CR3, USART_CR3_EIE);
 
-  /* Disable the USART DMA Tx request if enabled */
+  /* Abort the USART DMA Tx channel if enabled */
   if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT))
   {
+    /* Disable the USART DMA Tx request if enabled */
     CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAT);
 
     /* Abort the USART DMA Tx channel : use blocking DMA Abort API (no callback) */
@@ -1768,9 +1792,10 @@
     }
   }
 
-  /* Disable the USART DMA Rx request if enabled */
+  /* Abort the USART DMA Rx channel if enabled */
   if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR))
   {
+    /* Disable the USART DMA Rx request if enabled */
     CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR);
 
     /* Abort the USART DMA Rx channel : use blocking DMA Abort API (no callback) */
@@ -1865,7 +1890,7 @@
     }
   }
 
-  /* Disable the USART DMA Tx request if enabled */
+  /* Abort the USART DMA Tx channel if enabled */
   if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAT))
   {
     /* Disable DMA Tx at USART level */
@@ -1889,9 +1914,10 @@
     }
   }
 
-  /* Disable the USART DMA Rx request if enabled */
+  /* Abort the USART DMA Rx channel if enabled */
   if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR))
   {
+    /* Disable the USART DMA Rx request if enabled */
     CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR);
 
     /* Abort the USART DMA Rx channel : use non blocking DMA Abort API (callback) */
@@ -2048,9 +2074,10 @@
            Disable Interrupts, and disable DMA requests, if ongoing */
         USART_EndTransfer(husart);
 
-        /* Disable the USART DMA Rx request if enabled */
+        /* Abort the USART DMA Rx channel if enabled */
         if (HAL_IS_BIT_SET(husart->Instance->CR3, USART_CR3_DMAR))
         {
+          /* Disable the USART DMA Rx request if enabled */
           CLEAR_BIT(husart->Instance->CR3, USART_CR3_DMAR | USART_CR3_DMAR);
 
           /* Abort the USART DMA Tx channel */
@@ -2628,10 +2655,11 @@
 
 
 /**
-  * @brief  Handle USART Communication Timeout.
+  * @brief  Handle USART Communication Timeout. It waits
+  *         until a flag is no longer in the specified status.
   * @param  husart USART handle.
   * @param  Flag Specifies the USART flag to check.
-  * @param  Status the Flag status (SET or RESET).
+  * @param  Status the actual Flag status (SET or RESET).
   * @param  Tickstart Tick start value
   * @param  Timeout timeout duration.
   * @retval HAL status
@@ -2848,7 +2876,7 @@
 static void USART_TxISR_16BIT(USART_HandleTypeDef *husart)
 {
   const HAL_USART_StateTypeDef state = husart->State;
-  uint16_t *tmp;
+  const uint16_t *tmp;
 
   if ((state == HAL_USART_STATE_BUSY_TX) ||
       (state == HAL_USART_STATE_BUSY_TX_RX))
@@ -2863,7 +2891,7 @@
     }
     else
     {
-      tmp = (uint16_t *) husart->pTxBuffPtr;
+      tmp = (const uint16_t *) husart->pTxBuffPtr;
       husart->Instance->TDR = (uint16_t)(*tmp & 0x01FFU);
       husart->pTxBuffPtr += 2U;
       husart->TxXferCount--;
@@ -3102,4 +3130,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_hal_wwdg.c b/Src/stm32f7xx_hal_wwdg.c
index 4f3a985..896f60c 100644
--- a/Src/stm32f7xx_hal_wwdg.c
+++ b/Src/stm32f7xx_hal_wwdg.c
@@ -7,6 +7,17 @@
   *          functionalities of the Window Watchdog (WWDG) peripheral:
   *           + Initialization and Configuration functions
   *           + IO operation functions
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                       ##### WWDG Specific features #####
@@ -40,7 +51,7 @@
         (++) max time (mS) = 1000 * (Counter - 0x40) / WWDG clock
     (+) Typical values:
         (++) Counter min (T[5;0] = 0x00) at 54MHz (PCLK1) with zero prescaler:
-             max timeout before reset: approximately 75.85µs
+             max timeout before reset: approximately 75.85us
         (++) Counter max (T[5;0] = 0x3F) at 54MHz (PCLK1) with prescaler
              dividing by 8:
              max timeout before reset: approximately 38.83ms
@@ -55,7 +66,7 @@
     (+) Enable WWDG APB1 clock using __HAL_RCC_WWDG_CLK_ENABLE().
     (+) Configure the WWDG prescaler, refresh window value, counter value and early
         interrupt status using HAL_WWDG_Init() function. This will automatically
-        enable WWDG and start its downcounter. Time reference can be taken from 
+        enable WWDG and start its downcounter. Time reference can be taken from
         function exit. Care must be taken to provide a counter value
         greater than 0x40 to prevent generation of immediate reset.
     (+) If the Early Wakeup Interrupt (EWI) feature is enabled, an interrupt is
@@ -112,17 +123,6 @@
 
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */
 
 /* Includes ------------------------------------------------------------------*/
@@ -418,5 +418,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_adc.c b/Src/stm32f7xx_ll_adc.c
index 2bcc2c9..2a8c420 100644
--- a/Src/stm32f7xx_ll_adc.c
+++ b/Src/stm32f7xx_ll_adc.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -510,6 +509,11 @@
                | ADC_SQR2_SQ9 | ADC_SQR2_SQ8 | ADC_SQR2_SQ7)
              );
     
+    /* Reset register SQR3 */
+    CLEAR_BIT(ADCx->SQR3,
+              (  ADC_SQR3_SQ6 | ADC_SQR3_SQ5 | ADC_SQR3_SQ4
+               | ADC_SQR3_SQ3 | ADC_SQR3_SQ2 | ADC_SQR3_SQ1)
+             );
     
     /* Reset register JSQR */
     CLEAR_BIT(ADCx->JSQR,
@@ -904,4 +908,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_crc.c b/Src/stm32f7xx_ll_crc.c
index d0b266b..ef3de9d 100644
--- a/Src/stm32f7xx_ll_crc.c
+++ b/Src/stm32f7xx_ll_crc.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -26,7 +25,7 @@
 #include "stm32_assert.h"
 #else
 #define assert_param(expr) ((void)0U)
-#endif
+#endif /* USE_FULL_ASSERT */
 
 /** @addtogroup STM32F7xx_LL_Driver
   * @{
@@ -102,6 +101,3 @@
   */
 
 #endif /* USE_FULL_LL_DRIVER */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/Src/stm32f7xx_ll_dac.c b/Src/stm32f7xx_ll_dac.c
index f3c8f5b..9fa9007 100644
--- a/Src/stm32f7xx_ll_dac.c
+++ b/Src/stm32f7xx_ll_dac.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -269,4 +268,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_dma.c b/Src/stm32f7xx_ll_dma.c
index 5e8c069..7b9e6a4 100644
--- a/Src/stm32f7xx_ll_dma.c
+++ b/Src/stm32f7xx_ll_dma.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -443,4 +442,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_dma2d.c b/Src/stm32f7xx_ll_dma2d.c
index 34b711c..30a0407 100644
--- a/Src/stm32f7xx_ll_dma2d.c
+++ b/Src/stm32f7xx_ll_dma2d.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -644,6 +643,3 @@
   */
 
 #endif /* USE_FULL_LL_DRIVER */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/Src/stm32f7xx_ll_exti.c b/Src/stm32f7xx_ll_exti.c
index 5663874..5da195d 100644
--- a/Src/stm32f7xx_ll_exti.c
+++ b/Src/stm32f7xx_ll_exti.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -211,4 +210,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_fmc.c b/Src/stm32f7xx_ll_fmc.c
index 680ccf4..2814f91 100644
--- a/Src/stm32f7xx_ll_fmc.c
+++ b/Src/stm32f7xx_ll_fmc.c
@@ -3,27 +3,38 @@
   * @file    stm32f7xx_ll_fmc.c
   * @author  MCD Application Team
   * @brief   FMC Low Layer HAL module driver.
-  *    
-  *          This file provides firmware functions to manage the following 
+  *
+  *          This file provides firmware functions to manage the following
   *          functionalities of the Flexible Memory Controller (FMC) peripheral memories:
   *           + Initialization/de-initialization functions
-  *           + Peripheral Control functions 
+  *           + Peripheral Control functions
   *           + Peripheral State functions
-  *         
+  *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                         ##### FMC peripheral features #####
   ==============================================================================
-  [..] The Flexible memory controller (FMC) includes three memory controllers:
+  [..] The Flexible memory controller (FMC) includes following memory controllers:
        (+) The NOR/PSRAM memory controller
-       (+) The NAND memory controller
-       (+) The Synchronous DRAM (SDRAM) controller 
-       
+     (+) The NAND memory controller
+       (+) The Synchronous DRAM (SDRAM) controller
+
   [..] The FMC functional block makes the interface with synchronous and asynchronous static
-       memories, SDRAM memories, and 16-bit PC memory cards. Its main purposes are:
+       memories and SDRAM memories. Its main purposes are:
        (+) to translate AHB transactions into the appropriate external device protocol
        (+) to meet the access time requirements of the external memory devices
-   
+
   [..] All external memories share the addresses, data and control signals with the controller.
        Each external device is accessed by means of a unique Chip Select. The FMC performs
        only one access at a time to an external device.
@@ -33,27 +44,15 @@
            (++) Read-only memory (ROM)
            (++) NOR Flash memory/OneNAND Flash memory
            (++) PSRAM (4 memory banks)
-           (++) 16-bit PC Card compatible devices
            (++) Two banks of NAND Flash memory with ECC hardware to check up to 8 Kbytes of
                 data
         (+) Interface with synchronous DRAM (SDRAM) memories
         (+) Independent Chip Select control for each memory bank
         (+) Independent configuration for each memory bank
-                    
+
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
-  */ 
+  */
 
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f7xx_hal.h"
@@ -61,16 +60,74 @@
 /** @addtogroup STM32F7xx_HAL_Driver
   * @{
   */
+#if defined(HAL_NOR_MODULE_ENABLED) || defined(HAL_SRAM_MODULE_ENABLED) || defined(HAL_NAND_MODULE_ENABLED) || defined(HAL_SDRAM_MODULE_ENABLED)
 
 /** @defgroup FMC_LL  FMC Low Layer
   * @brief FMC driver modules
   * @{
   */
 
-#if defined (HAL_SRAM_MODULE_ENABLED) || defined(HAL_NOR_MODULE_ENABLED) || defined(HAL_NAND_MODULE_ENABLED) || defined(HAL_SDRAM_MODULE_ENABLED)
-
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
+
+/** @defgroup FMC_LL_Private_Constants FMC Low Layer Private Constants
+  * @{
+  */
+
+/* ----------------------- FMC registers bit mask --------------------------- */
+
+/* --- BCR Register ---*/
+/* BCR register clear mask */
+
+/* --- BTR Register ---*/
+/* BTR register clear mask */
+#define BTR_CLEAR_MASK    ((uint32_t)(FMC_BTR1_ADDSET | FMC_BTR1_ADDHLD  |\
+                                      FMC_BTR1_DATAST | FMC_BTR1_BUSTURN |\
+                                      FMC_BTR1_CLKDIV | FMC_BTR1_DATLAT  |\
+                                      FMC_BTR1_ACCMOD))
+
+/* --- BWTR Register ---*/
+/* BWTR register clear mask */
+#define BWTR_CLEAR_MASK   ((uint32_t)(FMC_BWTR1_ADDSET | FMC_BWTR1_ADDHLD  |\
+                                      FMC_BWTR1_DATAST | FMC_BWTR1_BUSTURN |\
+                                      FMC_BWTR1_ACCMOD))
+
+/* --- PCR Register ---*/
+/* PCR register clear mask */
+#define PCR_CLEAR_MASK    ((uint32_t)(FMC_PCR_PWAITEN | FMC_PCR_PBKEN  | \
+                                      FMC_PCR_PTYP    | FMC_PCR_PWID   | \
+                                      FMC_PCR_ECCEN   | FMC_PCR_TCLR   | \
+                                      FMC_PCR_TAR     | FMC_PCR_ECCPS))
+/* --- PMEM Register ---*/
+/* PMEM register clear mask */
+#define PMEM_CLEAR_MASK   ((uint32_t)(FMC_PMEM_MEMSET3  | FMC_PMEM_MEMWAIT3 |\
+                                      FMC_PMEM_MEMHOLD3 | FMC_PMEM_MEMHIZ3))
+
+/* --- PATT Register ---*/
+/* PATT register clear mask */
+#define PATT_CLEAR_MASK   ((uint32_t)(FMC_PATT_ATTSET3  | FMC_PATT_ATTWAIT3 |\
+                                      FMC_PATT_ATTHOLD3 | FMC_PATT_ATTHIZ3))
+
+
+/* --- SDCR Register ---*/
+/* SDCR register clear mask */
+#define SDCR_CLEAR_MASK   ((uint32_t)(FMC_SDCR1_NC    | FMC_SDCR1_NR     | \
+                                      FMC_SDCR1_MWID  | FMC_SDCR1_NB     | \
+                                      FMC_SDCR1_CAS   | FMC_SDCR1_WP     | \
+                                      FMC_SDCR1_SDCLK | FMC_SDCR1_RBURST | \
+                                      FMC_SDCR1_RPIPE))
+
+/* --- SDTR Register ---*/
+/* SDTR register clear mask */
+#define SDTR_CLEAR_MASK   ((uint32_t)(FMC_SDTR1_TMRD  | FMC_SDTR1_TXSR   | \
+                                      FMC_SDTR1_TRAS  | FMC_SDTR1_TRC    | \
+                                      FMC_SDTR1_TWR   | FMC_SDTR1_TRP    | \
+                                      FMC_SDTR1_TRCD))
+
+/**
+  * @}
+  */
+
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
@@ -80,59 +137,62 @@
   * @{
   */
 
+
 /** @defgroup FMC_LL_Exported_Functions_NORSRAM FMC Low Layer NOR SRAM Exported Functions
-  * @brief  NORSRAM Controller functions 
+  * @brief  NORSRAM Controller functions
   *
-  @verbatim 
-  ==============================================================================   
+  @verbatim
+  ==============================================================================
                    ##### How to use NORSRAM device driver #####
   ==============================================================================
- 
-  [..] 
+
+  [..]
     This driver contains a set of APIs to interface with the FMC NORSRAM banks in order
     to run the NORSRAM external devices.
-      
-    (+) FMC NORSRAM bank reset using the function FMC_NORSRAM_DeInit() 
+
+    (+) FMC NORSRAM bank reset using the function FMC_NORSRAM_DeInit()
     (+) FMC NORSRAM bank control configuration using the function FMC_NORSRAM_Init()
     (+) FMC NORSRAM bank timing configuration using the function FMC_NORSRAM_Timing_Init()
-    (+) FMC NORSRAM bank extended timing configuration using the function 
+    (+) FMC NORSRAM bank extended timing configuration using the function
         FMC_NORSRAM_Extended_Timing_Init()
     (+) FMC NORSRAM bank enable/disable write operation using the functions
         FMC_NORSRAM_WriteOperation_Enable()/FMC_NORSRAM_WriteOperation_Disable()
-        
 
 @endverbatim
   * @{
   */
-       
+
 /** @defgroup FMC_LL_NORSRAM_Exported_Functions_Group1 Initialization and de-initialization functions
-  * @brief    Initialization and Configuration functions 
+  * @brief    Initialization and Configuration functions
   *
-  @verbatim    
+  @verbatim
   ==============================================================================
               ##### Initialization and de_initialization functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to:
     (+) Initialize and configure the FMC NORSRAM interface
-    (+) De-initialize the FMC NORSRAM interface 
-    (+) Configure the FMC clock and associated GPIOs    
- 
+    (+) De-initialize the FMC NORSRAM interface
+    (+) Configure the FMC clock and associated GPIOs
+
 @endverbatim
   * @{
   */
-  
+
 /**
   * @brief  Initialize the FMC_NORSRAM device according to the specified
   *         control parameters in the FMC_NORSRAM_InitTypeDef
   * @param  Device Pointer to NORSRAM device instance
-  * @param  Init Pointer to NORSRAM Initialization structure   
+  * @param  Init Pointer to NORSRAM Initialization structure
   * @retval HAL status
   */
-HAL_StatusTypeDef  FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_InitTypeDef* Init)
-{ 
-  uint32_t tmpr = 0;
-    
+HAL_StatusTypeDef  FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device,
+                                    FMC_NORSRAM_InitTypeDef *Init)
+{
+  uint32_t flashaccess;
+  uint32_t btcr_reg;
+  uint32_t mask;
+
   /* Check the parameters */
   assert_param(IS_FMC_NORSRAM_DEVICE(Device));
   assert_param(IS_FMC_NORSRAM_BANK(Init->NSBank));
@@ -147,106 +207,124 @@
   assert_param(IS_FMC_EXTENDED_MODE(Init->ExtendedMode));
   assert_param(IS_FMC_ASYNWAIT(Init->AsynchronousWait));
   assert_param(IS_FMC_WRITE_BURST(Init->WriteBurst));
-  assert_param(IS_FMC_CONTINOUS_CLOCK(Init->ContinuousClock)); 
+  assert_param(IS_FMC_CONTINOUS_CLOCK(Init->ContinuousClock));
   assert_param(IS_FMC_WRITE_FIFO(Init->WriteFifo));
   assert_param(IS_FMC_PAGESIZE(Init->PageSize));
 
-  /* Get the BTCR register value */
-  tmpr = Device->BTCR[Init->NSBank];
-  
-  /* Clear MBKEN, MUXEN, MTYP, MWID, FACCEN, BURSTEN, WAITPOL, WAITCFG, WREN,
-           WAITEN, EXTMOD, ASYNCWAIT, CBURSTRW and CCLKEN bits */
-  tmpr &= ((uint32_t)~(FMC_BCR1_MBKEN     | FMC_BCR1_MUXEN    | FMC_BCR1_MTYP     | \
-                       FMC_BCR1_MWID      | FMC_BCR1_FACCEN   | FMC_BCR1_BURSTEN  | \
-                       FMC_BCR1_WAITPOL   | FMC_BCR1_CPSIZE    | FMC_BCR1_WAITCFG  | \
-                       FMC_BCR1_WREN      | FMC_BCR1_WAITEN   | FMC_BCR1_EXTMOD   | \
-                       FMC_BCR1_ASYNCWAIT | FMC_BCR1_CBURSTRW | FMC_BCR1_CCLKEN | FMC_BCR1_WFDIS));
-  
+  /* Disable NORSRAM Device */
+  __FMC_NORSRAM_DISABLE(Device, Init->NSBank);
+
   /* Set NORSRAM device control parameters */
-  tmpr |= (uint32_t)(Init->DataAddressMux       |\
-                    Init->MemoryType           |\
-                    Init->MemoryDataWidth      |\
-                    Init->BurstAccessMode      |\
-                    Init->WaitSignalPolarity   |\
-                    Init->WaitSignalActive     |\
-                    Init->WriteOperation       |\
-                    Init->WaitSignal           |\
-                    Init->ExtendedMode         |\
-                    Init->AsynchronousWait     |\
-                    Init->WriteBurst           |\
-                    Init->ContinuousClock      |\
-                    Init->PageSize             |\
-                    Init->WriteFifo);
-                    
-  if(Init->MemoryType == FMC_MEMORY_TYPE_NOR)
+  if (Init->MemoryType == FMC_MEMORY_TYPE_NOR)
   {
-    tmpr |= (uint32_t)FMC_NORSRAM_FLASH_ACCESS_ENABLE;
+    flashaccess = FMC_NORSRAM_FLASH_ACCESS_ENABLE;
   }
-  
-  Device->BTCR[Init->NSBank] = tmpr;
+  else
+  {
+    flashaccess = FMC_NORSRAM_FLASH_ACCESS_DISABLE;
+  }
+
+  btcr_reg = (flashaccess                   | \
+              Init->DataAddressMux          | \
+              Init->MemoryType              | \
+              Init->MemoryDataWidth         | \
+              Init->BurstAccessMode         | \
+              Init->WaitSignalPolarity      | \
+              Init->WaitSignalActive        | \
+              Init->WriteOperation          | \
+              Init->WaitSignal              | \
+              Init->ExtendedMode            | \
+              Init->AsynchronousWait        | \
+              Init->WriteBurst);
+
+  btcr_reg |= Init->ContinuousClock;
+  btcr_reg |= Init->WriteFifo;
+  btcr_reg |= Init->PageSize;
+
+  mask = (FMC_BCR1_MBKEN                |
+          FMC_BCR1_MUXEN                |
+          FMC_BCR1_MTYP                 |
+          FMC_BCR1_MWID                 |
+          FMC_BCR1_FACCEN               |
+          FMC_BCR1_BURSTEN              |
+          FMC_BCR1_WAITPOL              |
+          FMC_BCR1_WAITCFG              |
+          FMC_BCR1_WREN                 |
+          FMC_BCR1_WAITEN               |
+          FMC_BCR1_EXTMOD               |
+          FMC_BCR1_ASYNCWAIT            |
+          FMC_BCR1_CBURSTRW);
+
+  mask |= FMC_BCR1_CCLKEN;
+  mask |= FMC_BCR1_WFDIS;
+  mask |= FMC_BCR1_CPSIZE;
+
+  MODIFY_REG(Device->BTCR[Init->NSBank], mask, btcr_reg);
 
   /* Configure synchronous mode when Continuous clock is enabled for bank2..4 */
-  if((Init->ContinuousClock == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC) && (Init->NSBank != FMC_NORSRAM_BANK1))
-  { 
-    Device->BTCR[FMC_NORSRAM_BANK1] |= (uint32_t)(Init->ContinuousClock);
-  }
-  if(Init->NSBank != FMC_NORSRAM_BANK1)
+  if ((Init->ContinuousClock == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC) && (Init->NSBank != FMC_NORSRAM_BANK1))
   {
-    Device->BTCR[FMC_NORSRAM_BANK1] |= (uint32_t)(Init->WriteFifo);              
+    MODIFY_REG(Device->BTCR[FMC_NORSRAM_BANK1], FMC_BCR1_CCLKEN, Init->ContinuousClock);
   }
-  
+
+  if (Init->NSBank != FMC_NORSRAM_BANK1)
+  {
+    /* Configure Write FIFO mode when Write Fifo is enabled for bank2..4 */
+    SET_BIT(Device->BTCR[FMC_NORSRAM_BANK1], (uint32_t)(Init->WriteFifo));
+  }
+
   return HAL_OK;
 }
 
-
 /**
-  * @brief  DeInitialize the FMC_NORSRAM peripheral 
+  * @brief  DeInitialize the FMC_NORSRAM peripheral
   * @param  Device Pointer to NORSRAM device instance
-  * @param  ExDevice Pointer to NORSRAM extended mode device instance  
-  * @param  Bank NORSRAM bank number  
+  * @param  ExDevice Pointer to NORSRAM extended mode device instance
+  * @param  Bank NORSRAM bank number
   * @retval HAL status
   */
-HAL_StatusTypeDef FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank)
+HAL_StatusTypeDef FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device,
+                                     FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank)
 {
   /* Check the parameters */
   assert_param(IS_FMC_NORSRAM_DEVICE(Device));
   assert_param(IS_FMC_NORSRAM_EXTENDED_DEVICE(ExDevice));
   assert_param(IS_FMC_NORSRAM_BANK(Bank));
-  
+
   /* Disable the FMC_NORSRAM device */
   __FMC_NORSRAM_DISABLE(Device, Bank);
-  
+
   /* De-initialize the FMC_NORSRAM device */
   /* FMC_NORSRAM_BANK1 */
-  if(Bank == FMC_NORSRAM_BANK1)
+  if (Bank == FMC_NORSRAM_BANK1)
   {
-    Device->BTCR[Bank] = 0x000030DB;    
+    Device->BTCR[Bank] = 0x000030DBU;
   }
   /* FMC_NORSRAM_BANK2, FMC_NORSRAM_BANK3 or FMC_NORSRAM_BANK4 */
   else
-  {   
-    Device->BTCR[Bank] = 0x000030D2; 
+  {
+    Device->BTCR[Bank] = 0x000030D2U;
   }
-  
-  Device->BTCR[Bank + 1] = 0x0FFFFFFF;
-  ExDevice->BWTR[Bank]   = 0x0FFFFFFF;
-   
+
+  Device->BTCR[Bank + 1U] = 0x0FFFFFFFU;
+  ExDevice->BWTR[Bank]   = 0x0FFFFFFFU;
+
   return HAL_OK;
 }
 
-
 /**
   * @brief  Initialize the FMC_NORSRAM Timing according to the specified
   *         parameters in the FMC_NORSRAM_TimingTypeDef
   * @param  Device Pointer to NORSRAM device instance
   * @param  Timing Pointer to NORSRAM Timing structure
-  * @param  Bank NORSRAM bank number  
+  * @param  Bank NORSRAM bank number
   * @retval HAL status
   */
-HAL_StatusTypeDef FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank)
+HAL_StatusTypeDef FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device,
+                                          FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank)
 {
-  uint32_t tmpr = 0;
-  
+  uint32_t tmpr;
+
   /* Check the parameters */
   assert_param(IS_FMC_NORSRAM_DEVICE(Device));
   assert_param(IS_FMC_ADDRESS_SETUP_TIME(Timing->AddressSetupTime));
@@ -257,36 +335,25 @@
   assert_param(IS_FMC_DATA_LATENCY(Timing->DataLatency));
   assert_param(IS_FMC_ACCESS_MODE(Timing->AccessMode));
   assert_param(IS_FMC_NORSRAM_BANK(Bank));
-  
-  /* Get the BTCR register value */
-  tmpr = Device->BTCR[Bank + 1];
 
-  /* Clear ADDSET, ADDHLD, DATAST, BUSTURN, CLKDIV, DATLAT and ACCMOD bits */
-  tmpr &= ((uint32_t)~(FMC_BTR1_ADDSET  | FMC_BTR1_ADDHLD | FMC_BTR1_DATAST | \
-                       FMC_BTR1_BUSTURN | FMC_BTR1_CLKDIV | FMC_BTR1_DATLAT | \
-                       FMC_BTR1_ACCMOD));
-  
-  /* Set FMC_NORSRAM device timing parameters */  
-  tmpr |= (uint32_t)(Timing->AddressSetupTime                  |\
-                   ((Timing->AddressHoldTime) << 4)          |\
-                   ((Timing->DataSetupTime) << 8)            |\
-                   ((Timing->BusTurnAroundDuration) << 16)   |\
-                   (((Timing->CLKDivision)-1) << 20)         |\
-                   (((Timing->DataLatency)-2) << 24)         |\
-                    (Timing->AccessMode)
-                    );
-  
-  Device->BTCR[Bank + 1] = tmpr;
-  
+  /* Set FMC_NORSRAM device timing parameters */
+  MODIFY_REG(Device->BTCR[Bank + 1U], BTR_CLEAR_MASK, (Timing->AddressSetupTime                                  |
+                                                       ((Timing->AddressHoldTime)        << FMC_BTR1_ADDHLD_Pos)  |
+                                                       ((Timing->DataSetupTime)          << FMC_BTR1_DATAST_Pos)  |
+                                                       ((Timing->BusTurnAroundDuration)  << FMC_BTR1_BUSTURN_Pos) |
+                                                       (((Timing->CLKDivision) - 1U)     << FMC_BTR1_CLKDIV_Pos)  |
+                                                       (((Timing->DataLatency) - 2U)     << FMC_BTR1_DATLAT_Pos)  |
+                                                       (Timing->AccessMode)));
+
   /* Configure Clock division value (in NORSRAM bank 1) when continuous clock is enabled */
-  if(HAL_IS_BIT_SET(Device->BTCR[FMC_NORSRAM_BANK1], FMC_BCR1_CCLKEN))
+  if (HAL_IS_BIT_SET(Device->BTCR[FMC_NORSRAM_BANK1], FMC_BCR1_CCLKEN))
   {
-    tmpr = (uint32_t)(Device->BTCR[FMC_NORSRAM_BANK1 + 1] & ~(((uint32_t)0x0F) << 20)); 
-    tmpr |= (uint32_t)(((Timing->CLKDivision)-1) << 20);
-    Device->BTCR[FMC_NORSRAM_BANK1 + 1] = tmpr;
-  }  
-  
-  return HAL_OK;   
+    tmpr = (uint32_t)(Device->BTCR[FMC_NORSRAM_BANK1 + 1U] & ~((0x0FU) << FMC_BTR1_CLKDIV_Pos));
+    tmpr |= (uint32_t)(((Timing->CLKDivision) - 1U) << FMC_BTR1_CLKDIV_Pos);
+    MODIFY_REG(Device->BTCR[FMC_NORSRAM_BANK1 + 1U], FMC_BTR1_CLKDIV, tmpr);
+  }
+
+  return HAL_OK;
 }
 
 /**
@@ -294,63 +361,57 @@
   *         parameters in the FMC_NORSRAM_TimingTypeDef
   * @param  Device Pointer to NORSRAM device instance
   * @param  Timing Pointer to NORSRAM Timing structure
-  * @param  Bank NORSRAM bank number  
+  * @param  Bank NORSRAM bank number
+  * @param  ExtendedMode FMC Extended Mode
+  *          This parameter can be one of the following values:
+  *            @arg FMC_EXTENDED_MODE_DISABLE
+  *            @arg FMC_EXTENDED_MODE_ENABLE
   * @retval HAL status
   */
-HAL_StatusTypeDef  FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode)
-{  
-  uint32_t tmpr = 0;
- 
+HAL_StatusTypeDef FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device,
+                                                   FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank,
+                                                   uint32_t ExtendedMode)
+{
   /* Check the parameters */
   assert_param(IS_FMC_EXTENDED_MODE(ExtendedMode));
-  
+
   /* Set NORSRAM device timing register for write configuration, if extended mode is used */
-  if(ExtendedMode == FMC_EXTENDED_MODE_ENABLE)
+  if (ExtendedMode == FMC_EXTENDED_MODE_ENABLE)
   {
     /* Check the parameters */
-    assert_param(IS_FMC_NORSRAM_EXTENDED_DEVICE(Device));  
+    assert_param(IS_FMC_NORSRAM_EXTENDED_DEVICE(Device));
     assert_param(IS_FMC_ADDRESS_SETUP_TIME(Timing->AddressSetupTime));
     assert_param(IS_FMC_ADDRESS_HOLD_TIME(Timing->AddressHoldTime));
     assert_param(IS_FMC_DATASETUP_TIME(Timing->DataSetupTime));
     assert_param(IS_FMC_TURNAROUND_TIME(Timing->BusTurnAroundDuration));
-    assert_param(IS_FMC_CLK_DIV(Timing->CLKDivision));
-    assert_param(IS_FMC_DATA_LATENCY(Timing->DataLatency));
     assert_param(IS_FMC_ACCESS_MODE(Timing->AccessMode));
-    assert_param(IS_FMC_NORSRAM_BANK(Bank));  
-    
-    /* Get the BWTR register value */
-    tmpr = Device->BWTR[Bank];
+    assert_param(IS_FMC_NORSRAM_BANK(Bank));
 
-    /* Clear ADDSET, ADDHLD, DATAST, BUSTURN, CLKDIV, DATLAT and ACCMOD bits */
-    tmpr &= ((uint32_t)~(FMC_BWTR1_ADDSET  | FMC_BWTR1_ADDHLD | FMC_BWTR1_DATAST | \
-                         FMC_BWTR1_BUSTURN | FMC_BWTR1_ACCMOD));
-    
-    tmpr |= (uint32_t)(Timing->AddressSetupTime                 |\
-                      ((Timing->AddressHoldTime) << 4)          |\
-                      ((Timing->DataSetupTime) << 8)            |\
-                      ((Timing->BusTurnAroundDuration) << 16)   |\
-                      (Timing->AccessMode));
-
-    Device->BWTR[Bank] = tmpr;
+    /* Set NORSRAM device timing register for write configuration, if extended mode is used */
+    MODIFY_REG(Device->BWTR[Bank], BWTR_CLEAR_MASK, (Timing->AddressSetupTime                                    |
+                                                     ((Timing->AddressHoldTime)        << FMC_BWTR1_ADDHLD_Pos)  |
+                                                     ((Timing->DataSetupTime)          << FMC_BWTR1_DATAST_Pos)  |
+                                                     Timing->AccessMode                                          |
+                                                     ((Timing->BusTurnAroundDuration)  << FMC_BWTR1_BUSTURN_Pos)));
   }
   else
   {
-    Device->BWTR[Bank] = 0x0FFFFFFF;
-  }   
-  
-  return HAL_OK;  
+    Device->BWTR[Bank] = 0x0FFFFFFFU;
+  }
+
+  return HAL_OK;
 }
 /**
   * @}
   */
 
 /** @addtogroup FMC_LL_NORSRAM_Private_Functions_Group2
- *  @brief   management functions 
- *
-@verbatim   
+  *  @brief   management functions
+  *
+@verbatim
   ==============================================================================
                       ##### FMC_NORSRAM Control functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
     This subsection provides a set of functions allowing to control dynamically
     the FMC NORSRAM interface.
@@ -362,7 +423,7 @@
 /**
   * @brief  Enables dynamically FMC_NORSRAM write operation.
   * @param  Device Pointer to NORSRAM device instance
-  * @param  Bank NORSRAM bank number   
+  * @param  Bank NORSRAM bank number
   * @retval HAL status
   */
 HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Enable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank)
@@ -370,29 +431,29 @@
   /* Check the parameters */
   assert_param(IS_FMC_NORSRAM_DEVICE(Device));
   assert_param(IS_FMC_NORSRAM_BANK(Bank));
-  
-  /* Enable write operation */
-  Device->BTCR[Bank] |= FMC_WRITE_OPERATION_ENABLE; 
 
-  return HAL_OK;  
+  /* Enable write operation */
+  SET_BIT(Device->BTCR[Bank], FMC_WRITE_OPERATION_ENABLE);
+
+  return HAL_OK;
 }
 
 /**
   * @brief  Disables dynamically FMC_NORSRAM write operation.
   * @param  Device Pointer to NORSRAM device instance
-  * @param  Bank NORSRAM bank number   
+  * @param  Bank NORSRAM bank number
   * @retval HAL status
   */
 HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Disable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank)
-{ 
+{
   /* Check the parameters */
   assert_param(IS_FMC_NORSRAM_DEVICE(Device));
   assert_param(IS_FMC_NORSRAM_BANK(Bank));
-    
-  /* Disable write operation */
-  Device->BTCR[Bank] &= ~FMC_WRITE_OPERATION_ENABLE; 
 
-  return HAL_OK;  
+  /* Disable write operation */
+  CLEAR_BIT(Device->BTCR[Bank], FMC_WRITE_OPERATION_ENABLE);
+
+  return HAL_OK;
 }
 
 /**
@@ -403,44 +464,45 @@
   * @}
   */
 
+
 /** @defgroup FMC_LL_Exported_Functions_NAND FMC Low Layer NAND Exported Functions
-  * @brief    NAND Controller functions 
+  * @brief    NAND Controller functions
   *
-  @verbatim 
+  @verbatim
   ==============================================================================
                     ##### How to use NAND device driver #####
   ==============================================================================
   [..]
     This driver contains a set of APIs to interface with the FMC NAND banks in order
     to run the NAND external devices.
-  
-    (+) FMC NAND bank reset using the function FMC_NAND_DeInit() 
+
+    (+) FMC NAND bank reset using the function FMC_NAND_DeInit()
     (+) FMC NAND bank control configuration using the function FMC_NAND_Init()
-    (+) FMC NAND bank common space timing configuration using the function 
+    (+) FMC NAND bank common space timing configuration using the function
         FMC_NAND_CommonSpace_Timing_Init()
-    (+) FMC NAND bank attribute space timing configuration using the function 
+    (+) FMC NAND bank attribute space timing configuration using the function
         FMC_NAND_AttributeSpace_Timing_Init()
     (+) FMC NAND bank enable/disable ECC correction feature using the functions
         FMC_NAND_ECC_Enable()/FMC_NAND_ECC_Disable()
-    (+) FMC NAND bank get ECC correction code using the function FMC_NAND_GetECC()    
+    (+) FMC NAND bank get ECC correction code using the function FMC_NAND_GetECC()
 
 @endverbatim
   * @{
   */
 
 /** @defgroup FMC_LL_NAND_Exported_Functions_Group1 Initialization and de-initialization functions
- *  @brief    Initialization and Configuration functions 
- *
-@verbatim    
+  *  @brief    Initialization and Configuration functions
+  *
+@verbatim
   ==============================================================================
               ##### Initialization and de_initialization functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to:
     (+) Initialize and configure the FMC NAND interface
-    (+) De-initialize the FMC NAND interface 
+    (+) De-initialize the FMC NAND interface
     (+) Configure the FMC clock and associated GPIOs
-        
+
 @endverbatim
   * @{
   */
@@ -454,8 +516,6 @@
   */
 HAL_StatusTypeDef FMC_NAND_Init(FMC_NAND_TypeDef *Device, FMC_NAND_InitTypeDef *Init)
 {
-  uint32_t tmpr  = 0; 
-    
   /* Check the parameters */
   assert_param(IS_FMC_NAND_DEVICE(Device));
   assert_param(IS_FMC_NAND_BANK(Init->NandBank));
@@ -464,29 +524,18 @@
   assert_param(IS_FMC_ECC_STATE(Init->EccComputation));
   assert_param(IS_FMC_ECCPAGE_SIZE(Init->ECCPageSize));
   assert_param(IS_FMC_TCLR_TIME(Init->TCLRSetupTime));
-  assert_param(IS_FMC_TAR_TIME(Init->TARSetupTime));   
+  assert_param(IS_FMC_TAR_TIME(Init->TARSetupTime));
 
-  /* Get the NAND bank 3 register value */
-  tmpr = Device->PCR;
+  /* NAND bank 3 registers configuration */
+  MODIFY_REG(Device->PCR, PCR_CLEAR_MASK, (Init->Waitfeature                            |
+                                           FMC_PCR_MEMORY_TYPE_NAND                     |
+                                           Init->MemoryDataWidth                        |
+                                           Init->EccComputation                         |
+                                           Init->ECCPageSize                            |
+                                           ((Init->TCLRSetupTime) << FMC_PCR_TCLR_Pos)  |
+                                           ((Init->TARSetupTime)  << FMC_PCR_TAR_Pos)));
 
-  /* Clear PWAITEN, PBKEN, PTYP, PWID, ECCEN, TCLR, TAR and ECCPS bits */
-  tmpr &= ((uint32_t)~(FMC_PCR_PWAITEN  | FMC_PCR_PBKEN | FMC_PCR_PTYP | \
-                       FMC_PCR_PWID | FMC_PCR_ECCEN | FMC_PCR_TCLR | \
-                       FMC_PCR_TAR | FMC_PCR_ECCPS));  
-  /* Set NAND device control parameters */
-  tmpr |= (uint32_t)(Init->Waitfeature                |\
-                      FMC_PCR_MEMORY_TYPE_NAND         |\
-                      Init->MemoryDataWidth            |\
-                      Init->EccComputation             |\
-                      Init->ECCPageSize                |\
-                      ((Init->TCLRSetupTime) << 9)     |\
-                      ((Init->TARSetupTime) << 13));   
-  
-    /* NAND bank 3 registers configuration */
-    Device->PCR  = tmpr;
-  
   return HAL_OK;
-
 }
 
 /**
@@ -494,13 +543,12 @@
   *         parameters in the FMC_NAND_PCC_TimingTypeDef
   * @param  Device Pointer to NAND device instance
   * @param  Timing Pointer to NAND timing structure
-  * @param  Bank NAND bank number   
+  * @param  Bank NAND bank number
   * @retval HAL status
   */
-HAL_StatusTypeDef FMC_NAND_CommonSpace_Timing_Init(FMC_NAND_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank)
+HAL_StatusTypeDef FMC_NAND_CommonSpace_Timing_Init(FMC_NAND_TypeDef *Device,
+                                                   FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank)
 {
-  uint32_t tmpr = 0;  
-  
   /* Check the parameters */
   assert_param(IS_FMC_NAND_DEVICE(Device));
   assert_param(IS_FMC_SETUP_TIME(Timing->SetupTime));
@@ -508,24 +556,17 @@
   assert_param(IS_FMC_HOLD_TIME(Timing->HoldSetupTime));
   assert_param(IS_FMC_HIZ_TIME(Timing->HiZSetupTime));
   assert_param(IS_FMC_NAND_BANK(Bank));
-  
-  /* Get the NAND bank 3 register value */
-  tmpr = Device->PMEM;
 
-  /* Clear MEMSETx, MEMWAITx, MEMHOLDx and MEMHIZx bits */
-  tmpr &= ((uint32_t)~(FMC_PMEM_MEMSET3  | FMC_PMEM_MEMWAIT3 | FMC_PMEM_MEMHOLD3 | \
-                       FMC_PMEM_MEMHIZ3)); 
-  /* Set FMC_NAND device timing parameters */
-  tmpr |= (uint32_t)(Timing->SetupTime                  |\
-                       ((Timing->WaitSetupTime) << 8)     |\
-                       ((Timing->HoldSetupTime) << 16)    |\
-                       ((Timing->HiZSetupTime) << 24)
-                       );
-                            
-    /* NAND bank 3 registers configuration */
-    Device->PMEM = tmpr;
-  
-  return HAL_OK;  
+  /* Prevent unused argument(s) compilation warning if no assert_param check */
+  UNUSED(Bank);
+
+  /* NAND bank 3 registers configuration */
+  MODIFY_REG(Device->PMEM, PMEM_CLEAR_MASK, (Timing->SetupTime                                 |
+                                             ((Timing->WaitSetupTime) << FMC_PMEM_MEMWAIT3_Pos) |
+                                             ((Timing->HoldSetupTime) << FMC_PMEM_MEMHOLD3_Pos) |
+                                             ((Timing->HiZSetupTime)  << FMC_PMEM_MEMHIZ3_Pos)));
+
+  return HAL_OK;
 }
 
 /**
@@ -533,60 +574,57 @@
   *         parameters in the FMC_NAND_PCC_TimingTypeDef
   * @param  Device Pointer to NAND device instance
   * @param  Timing Pointer to NAND timing structure
-  * @param  Bank NAND bank number 
+  * @param  Bank NAND bank number
   * @retval HAL status
   */
-HAL_StatusTypeDef FMC_NAND_AttributeSpace_Timing_Init(FMC_NAND_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank)
+HAL_StatusTypeDef FMC_NAND_AttributeSpace_Timing_Init(FMC_NAND_TypeDef *Device,
+                                                      FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank)
 {
-  uint32_t tmpr = 0;  
-  
-  /* Check the parameters */ 
-  assert_param(IS_FMC_NAND_DEVICE(Device)); 
+  /* Check the parameters */
+  assert_param(IS_FMC_NAND_DEVICE(Device));
   assert_param(IS_FMC_SETUP_TIME(Timing->SetupTime));
   assert_param(IS_FMC_WAIT_TIME(Timing->WaitSetupTime));
   assert_param(IS_FMC_HOLD_TIME(Timing->HoldSetupTime));
   assert_param(IS_FMC_HIZ_TIME(Timing->HiZSetupTime));
   assert_param(IS_FMC_NAND_BANK(Bank));
-  
-  /* Get the NAND bank 3 register value */
-  tmpr = Device->PATT;
 
-  /* Clear ATTSETx, ATTWAITx, ATTHOLDx and ATTHIZx bits */
-  tmpr &= ((uint32_t)~(FMC_PATT_ATTSET3  | FMC_PATT_ATTWAIT3 | FMC_PATT_ATTHOLD3 | \
-                       FMC_PATT_ATTHIZ3));
-  /* Set FMC_NAND device timing parameters */
-  tmpr |= (uint32_t)(Timing->SetupTime                  |\
-                   ((Timing->WaitSetupTime) << 8)     |\
-                   ((Timing->HoldSetupTime) << 16)    |\
-                   ((Timing->HiZSetupTime) << 24));
-                       
-    /* NAND bank 3 registers configuration */
-    Device->PATT = tmpr;
-  
+  /* Prevent unused argument(s) compilation warning if no assert_param check */
+  UNUSED(Bank);
+
+  /* NAND bank 3 registers configuration */
+  MODIFY_REG(Device->PATT, PATT_CLEAR_MASK, (Timing->SetupTime                                 |
+                                             ((Timing->WaitSetupTime) << FMC_PATT_ATTWAIT3_Pos) |
+                                             ((Timing->HoldSetupTime) << FMC_PATT_ATTHOLD3_Pos) |
+                                             ((Timing->HiZSetupTime)  << FMC_PATT_ATTHIZ3_Pos)));
+
   return HAL_OK;
 }
 
 /**
-  * @brief  DeInitializes the FMC_NAND device 
+  * @brief  DeInitializes the FMC_NAND device
   * @param  Device Pointer to NAND device instance
   * @param  Bank NAND bank number
   * @retval HAL status
   */
 HAL_StatusTypeDef FMC_NAND_DeInit(FMC_NAND_TypeDef *Device, uint32_t Bank)
 {
-  /* Check the parameters */ 
-  assert_param(IS_FMC_NAND_DEVICE(Device)); 
+  /* Check the parameters */
+  assert_param(IS_FMC_NAND_DEVICE(Device));
   assert_param(IS_FMC_NAND_BANK(Bank));
-      
+
   /* Disable the NAND Bank */
-  __FMC_NAND_DISABLE(Device);
- 
-    /* Set the FMC_NAND_BANK3 registers to their reset values */
-    Device->PCR  = 0x00000018U;
-    Device->SR   = 0x00000040U;
-    Device->PMEM = 0xFCFCFCFCU;
-    Device->PATT = 0xFCFCFCFCU; 
-  
+  __FMC_NAND_DISABLE(Device, Bank);
+
+  /* De-initialize the NAND Bank */
+  /* Prevent unused argument(s) compilation warning if no assert_param check */
+  UNUSED(Bank);
+
+  /* Set the FMC_NAND_BANK3 registers to their reset values */
+  WRITE_REG(Device->PCR,  0x00000018U);
+  WRITE_REG(Device->SR,   0x00000040U);
+  WRITE_REG(Device->PMEM, 0xFCFCFCFCU);
+  WRITE_REG(Device->PATT, 0xFCFCFCFCU);
+
   return HAL_OK;
 }
 
@@ -594,38 +632,41 @@
   * @}
   */
 
-/** @defgroup HAL_FMC_NAND_Group3 Control functions 
-  *  @brief   management functions 
+/** @defgroup HAL_FMC_NAND_Group2 Peripheral Control functions
+  *  @brief   management functions
   *
-@verbatim   
+@verbatim
   ==============================================================================
                        ##### FMC_NAND Control functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
     This subsection provides a set of functions allowing to control dynamically
     the FMC NAND interface.
 
 @endverbatim
   * @{
-  */ 
+  */
 
-    
+
 /**
   * @brief  Enables dynamically FMC_NAND ECC feature.
   * @param  Device Pointer to NAND device instance
   * @param  Bank NAND bank number
   * @retval HAL status
-  */    
+  */
 HAL_StatusTypeDef FMC_NAND_ECC_Enable(FMC_NAND_TypeDef *Device, uint32_t Bank)
 {
-  /* Check the parameters */ 
-  assert_param(IS_FMC_NAND_DEVICE(Device)); 
+  /* Check the parameters */
+  assert_param(IS_FMC_NAND_DEVICE(Device));
   assert_param(IS_FMC_NAND_BANK(Bank));
-    
+
   /* Enable ECC feature */
-    Device->PCR |= FMC_PCR_ECCEN;
-  
-  return HAL_OK;  
+  /* Prevent unused argument(s) compilation warning if no assert_param check */
+  UNUSED(Bank);
+
+  SET_BIT(Device->PCR, FMC_PCR_ECCEN);
+
+  return HAL_OK;
 }
 
 
@@ -634,17 +675,20 @@
   * @param  Device Pointer to NAND device instance
   * @param  Bank NAND bank number
   * @retval HAL status
-  */  
-HAL_StatusTypeDef FMC_NAND_ECC_Disable(FMC_NAND_TypeDef *Device, uint32_t Bank)  
-{  
-  /* Check the parameters */ 
-  assert_param(IS_FMC_NAND_DEVICE(Device)); 
+  */
+HAL_StatusTypeDef FMC_NAND_ECC_Disable(FMC_NAND_TypeDef *Device, uint32_t Bank)
+{
+  /* Check the parameters */
+  assert_param(IS_FMC_NAND_DEVICE(Device));
   assert_param(IS_FMC_NAND_BANK(Bank));
-    
-  /* Disable ECC feature */
-    Device->PCR &= ~FMC_PCR_ECCEN;
 
-  return HAL_OK;  
+  /* Disable ECC feature */
+  /* Prevent unused argument(s) compilation warning if no assert_param check */
+  UNUSED(Bank);
+
+  CLEAR_BIT(Device->PCR, FMC_PCR_ECCEN);
+
+  return HAL_OK;
 }
 
 /**
@@ -652,82 +696,84 @@
   * @param  Device Pointer to NAND device instance
   * @param  ECCval Pointer to ECC value
   * @param  Bank NAND bank number
-  * @param  Timeout Timeout wait value  
+  * @param  Timeout Timeout wait value
   * @retval HAL status
   */
-HAL_StatusTypeDef FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, uint32_t Timeout)
+HAL_StatusTypeDef FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank,
+                                  uint32_t Timeout)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart;
 
-  /* Check the parameters */ 
-  assert_param(IS_FMC_NAND_DEVICE(Device)); 
+  /* Check the parameters */
+  assert_param(IS_FMC_NAND_DEVICE(Device));
   assert_param(IS_FMC_NAND_BANK(Bank));
 
-  /* Get tick */ 
+  /* Get tick */
   tickstart = HAL_GetTick();
 
   /* Wait until FIFO is empty */
-  while(__FMC_NAND_GET_FLAG(Device, Bank, FMC_FLAG_FEMPT) == RESET)
+  while (__FMC_NAND_GET_FLAG(Device, Bank, FMC_FLAG_FEMPT) == RESET)
   {
     /* Check for the Timeout */
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
+      if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
       {
         return HAL_TIMEOUT;
       }
-    }  
+    }
   }
- 
+
+  /* Prevent unused argument(s) compilation warning if no assert_param check */
+  UNUSED(Bank);
+
   /* Get the ECCR register value */
   *ECCval = (uint32_t)Device->ECCR;
 
-  return HAL_OK;  
+  return HAL_OK;
 }
 
 /**
   * @}
   */
-  
-/**
-  * @}
-  */
+
+
 
 /** @defgroup FMC_LL_SDRAM
-  * @brief    SDRAM Controller functions 
+  * @brief    SDRAM Controller functions
   *
-  @verbatim 
+  @verbatim
   ==============================================================================
                      ##### How to use SDRAM device driver #####
   ==============================================================================
-  [..] 
+  [..]
     This driver contains a set of APIs to interface with the FMC SDRAM banks in order
     to run the SDRAM external devices.
-    
-    (+) FMC SDRAM bank reset using the function FMC_SDRAM_DeInit() 
+
+    (+) FMC SDRAM bank reset using the function FMC_SDRAM_DeInit()
     (+) FMC SDRAM bank control configuration using the function FMC_SDRAM_Init()
     (+) FMC SDRAM bank timing configuration using the function FMC_SDRAM_Timing_Init()
     (+) FMC SDRAM bank enable/disable write operation using the functions
-        FMC_SDRAM_WriteOperation_Enable()/FMC_SDRAM_WriteOperation_Disable()   
-    (+) FMC SDRAM bank send command using the function FMC_SDRAM_SendCommand()      
-       
+        FMC_SDRAM_WriteOperation_Enable()/FMC_SDRAM_WriteOperation_Disable()
+    (+) FMC SDRAM bank send command using the function FMC_SDRAM_SendCommand()
+
 @endverbatim
   * @{
   */
-         
+
 /** @addtogroup FMC_LL_SDRAM_Private_Functions_Group1
-  *  @brief    Initialization and Configuration functions 
+  *  @brief    Initialization and Configuration functions
   *
-@verbatim    
+@verbatim
   ==============================================================================
               ##### Initialization and de_initialization functions #####
   ==============================================================================
-  [..]  
+  [..]
     This section provides functions allowing to:
     (+) Initialize and configure the FMC SDRAM interface
-    (+) De-initialize the FMC SDRAM interface 
+    (+) De-initialize the FMC SDRAM interface
     (+) Configure the FMC clock and associated GPIOs
-        
+
 @endverbatim
   * @{
   */
@@ -736,14 +782,11 @@
   * @brief  Initializes the FMC_SDRAM device according to the specified
   *         control parameters in the FMC_SDRAM_InitTypeDef
   * @param  Device Pointer to SDRAM device instance
-  * @param  Init Pointer to SDRAM Initialization structure   
+  * @param  Init Pointer to SDRAM Initialization structure
   * @retval HAL status
   */
 HAL_StatusTypeDef FMC_SDRAM_Init(FMC_SDRAM_TypeDef *Device, FMC_SDRAM_InitTypeDef *Init)
 {
-  uint32_t tmpr1 = 0;
-  uint32_t tmpr2 = 0;
-    
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_SDRAM_BANK(Init->SDBank));
@@ -755,59 +798,43 @@
   assert_param(IS_FMC_WRITE_PROTECTION(Init->WriteProtection));
   assert_param(IS_FMC_SDCLOCK_PERIOD(Init->SDClockPeriod));
   assert_param(IS_FMC_READ_BURST(Init->ReadBurst));
-  assert_param(IS_FMC_READPIPE_DELAY(Init->ReadPipeDelay));   
+  assert_param(IS_FMC_READPIPE_DELAY(Init->ReadPipeDelay));
 
   /* Set SDRAM bank configuration parameters */
-  if (Init->SDBank != FMC_SDRAM_BANK2) 
+  if (Init->SDBank == FMC_SDRAM_BANK1)
   {
-    tmpr1 = Device->SDCR[FMC_SDRAM_BANK1];
-    
-    /* Clear NC, NR, MWID, NB, CAS, WP, SDCLK, RBURST, and RPIPE bits */
-    tmpr1 &= ((uint32_t)~(FMC_SDCR1_NC  | FMC_SDCR1_NR | FMC_SDCR1_MWID | \
-                          FMC_SDCR1_NB  | FMC_SDCR1_CAS | FMC_SDCR1_WP   | \
-                          FMC_SDCR1_SDCLK | FMC_SDCR1_RBURST | FMC_SDCR1_RPIPE));
-
-    tmpr1 |= (uint32_t)(Init->ColumnBitsNumber   |\
-                        Init->RowBitsNumber      |\
-                        Init->MemoryDataWidth    |\
-                        Init->InternalBankNumber |\
-                        Init->CASLatency         |\
-                        Init->WriteProtection    |\
-                        Init->SDClockPeriod      |\
-                        Init->ReadBurst          |\
-                        Init->ReadPipeDelay
-                        );                                      
-    Device->SDCR[FMC_SDRAM_BANK1] = tmpr1;
+    MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK1],
+               SDCR_CLEAR_MASK,
+               (Init->ColumnBitsNumber   |
+                Init->RowBitsNumber      |
+                Init->MemoryDataWidth    |
+                Init->InternalBankNumber |
+                Init->CASLatency         |
+                Init->WriteProtection    |
+                Init->SDClockPeriod      |
+                Init->ReadBurst          |
+                Init->ReadPipeDelay));
   }
-  else /* FMC_Bank2_SDRAM */                      
+  else /* FMC_Bank2_SDRAM */
   {
-    tmpr1 = Device->SDCR[FMC_SDRAM_BANK1];
-    
-    /* Clear SDCLK, RBURST, and RPIPE bits */
-    tmpr1 &= ((uint32_t)~(FMC_SDCR1_SDCLK | FMC_SDCR1_RBURST | FMC_SDCR1_RPIPE));
-    
-    tmpr1 |= (uint32_t)(Init->SDClockPeriod      |\
-                        Init->ReadBurst          |\
-                        Init->ReadPipeDelay);
-    
-    tmpr2 = Device->SDCR[FMC_SDRAM_BANK2];
-    
-    /* Clear NC, NR, MWID, NB, CAS, WP, SDCLK, RBURST, and RPIPE bits */
-    tmpr2 &= ((uint32_t)~(FMC_SDCR1_NC  | FMC_SDCR1_NR | FMC_SDCR1_MWID | \
-                          FMC_SDCR1_NB  | FMC_SDCR1_CAS | FMC_SDCR1_WP   | \
-                          FMC_SDCR1_SDCLK | FMC_SDCR1_RBURST | FMC_SDCR1_RPIPE));
+    MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK1],
+               FMC_SDCR1_SDCLK           |
+               FMC_SDCR1_RBURST          |
+               FMC_SDCR1_RPIPE,
+               (Init->SDClockPeriod      |
+                Init->ReadBurst          |
+                Init->ReadPipeDelay));
 
-    tmpr2 |= (uint32_t)(Init->ColumnBitsNumber   |\
-                       Init->RowBitsNumber       |\
-                       Init->MemoryDataWidth     |\
-                       Init->InternalBankNumber  |\
-                       Init->CASLatency          |\
-                       Init->WriteProtection);
-
-    Device->SDCR[FMC_SDRAM_BANK1] = tmpr1;
-    Device->SDCR[FMC_SDRAM_BANK2] = tmpr2;
+    MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK2],
+               SDCR_CLEAR_MASK,
+               (Init->ColumnBitsNumber   |
+                Init->RowBitsNumber      |
+                Init->MemoryDataWidth    |
+                Init->InternalBankNumber |
+                Init->CASLatency         |
+                Init->WriteProtection));
   }
-  
+
   return HAL_OK;
 }
 
@@ -817,14 +844,12 @@
   *         parameters in the FMC_SDRAM_TimingTypeDef
   * @param  Device Pointer to SDRAM device instance
   * @param  Timing Pointer to SDRAM Timing structure
-  * @param  Bank SDRAM bank number   
+  * @param  Bank SDRAM bank number
   * @retval HAL status
   */
-HAL_StatusTypeDef FMC_SDRAM_Timing_Init(FMC_SDRAM_TypeDef *Device, FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank)
+HAL_StatusTypeDef FMC_SDRAM_Timing_Init(FMC_SDRAM_TypeDef *Device,
+                                        FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank)
 {
-  uint32_t tmpr1 = 0;
-  uint32_t tmpr2 = 0;
-    
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_LOADTOACTIVE_DELAY(Timing->LoadToActiveDelay));
@@ -835,58 +860,42 @@
   assert_param(IS_FMC_RP_DELAY(Timing->RPDelay));
   assert_param(IS_FMC_RCD_DELAY(Timing->RCDDelay));
   assert_param(IS_FMC_SDRAM_BANK(Bank));
-  
-  /* Set SDRAM device timing parameters */ 
-  if (Bank != FMC_SDRAM_BANK2) 
+
+  /* Set SDRAM device timing parameters */
+  if (Bank == FMC_SDRAM_BANK1)
   {
-    tmpr1 = Device->SDTR[FMC_SDRAM_BANK1];
-    
-    /* Clear TMRD, TXSR, TRAS, TRC, TWR, TRP and TRCD bits */
-    tmpr1 &= ((uint32_t)~(FMC_SDTR1_TMRD  | FMC_SDTR1_TXSR | FMC_SDTR1_TRAS | \
-                          FMC_SDTR1_TRC  | FMC_SDTR1_TWR | FMC_SDTR1_TRP | \
-                          FMC_SDTR1_TRCD));
-    
-    tmpr1 |= (uint32_t)(((Timing->LoadToActiveDelay)-1)           |\
-                       (((Timing->ExitSelfRefreshDelay)-1) << 4) |\
-                       (((Timing->SelfRefreshTime)-1) << 8)      |\
-                       (((Timing->RowCycleDelay)-1) << 12)       |\
-                       (((Timing->WriteRecoveryTime)-1) <<16)    |\
-                       (((Timing->RPDelay)-1) << 20)             |\
-                       (((Timing->RCDDelay)-1) << 24));
-    Device->SDTR[FMC_SDRAM_BANK1] = tmpr1;
+    MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK1],
+               SDTR_CLEAR_MASK,
+               (((Timing->LoadToActiveDelay) - 1U)                                      |
+                (((Timing->ExitSelfRefreshDelay) - 1U) << FMC_SDTR1_TXSR_Pos) |
+                (((Timing->SelfRefreshTime) - 1U)      << FMC_SDTR1_TRAS_Pos) |
+                (((Timing->RowCycleDelay) - 1U)        << FMC_SDTR1_TRC_Pos)  |
+                (((Timing->WriteRecoveryTime) - 1U)    << FMC_SDTR1_TWR_Pos)  |
+                (((Timing->RPDelay) - 1U)              << FMC_SDTR1_TRP_Pos)  |
+                (((Timing->RCDDelay) - 1U)             << FMC_SDTR1_TRCD_Pos)));
   }
   else /* FMC_Bank2_SDRAM */
   {
-    tmpr1 = Device->SDTR[FMC_SDRAM_BANK1];
-    
-    /* Clear TRC and TRP bits */
-    tmpr1 &= ((uint32_t)~(FMC_SDTR1_TRC | FMC_SDTR1_TRP));
-    
-    tmpr1 |= (uint32_t)((((Timing->RowCycleDelay)-1) << 12)       |\
-                        (((Timing->RPDelay)-1) << 20)); 
-    
-    tmpr2 = Device->SDTR[FMC_SDRAM_BANK2];
-    
-    /* Clear TMRD, TXSR, TRAS, TRC, TWR, TRP and TRCD bits */
-    tmpr2 &= ((uint32_t)~(FMC_SDTR1_TMRD  | FMC_SDTR1_TXSR | FMC_SDTR1_TRAS | \
-                          FMC_SDTR1_TRC  | FMC_SDTR1_TWR | FMC_SDTR1_TRP | \
-                          FMC_SDTR1_TRCD));
-    
-    tmpr2 |= (uint32_t)(((Timing->LoadToActiveDelay)-1)           |\
-                       (((Timing->ExitSelfRefreshDelay)-1) << 4)  |\
-                       (((Timing->SelfRefreshTime)-1) << 8)       |\
-                       (((Timing->WriteRecoveryTime)-1) <<16)     |\
-                       (((Timing->RCDDelay)-1) << 24));   
+    MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK1],
+               FMC_SDTR1_TRC |
+               FMC_SDTR1_TRP,
+               (((Timing->RowCycleDelay) - 1U)         << FMC_SDTR1_TRC_Pos)  |
+               (((Timing->RPDelay) - 1U)               << FMC_SDTR1_TRP_Pos));
 
-    Device->SDTR[FMC_SDRAM_BANK1] = tmpr1;
-    Device->SDTR[FMC_SDRAM_BANK2] = tmpr2;
+    MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK2],
+               SDTR_CLEAR_MASK,
+               (((Timing->LoadToActiveDelay) - 1U)                                      |
+                (((Timing->ExitSelfRefreshDelay) - 1U) << FMC_SDTR1_TXSR_Pos) |
+                (((Timing->SelfRefreshTime) - 1U)      << FMC_SDTR1_TRAS_Pos) |
+                (((Timing->WriteRecoveryTime) - 1U)    << FMC_SDTR1_TWR_Pos)  |
+                (((Timing->RCDDelay) - 1U)             << FMC_SDTR1_TRCD_Pos)));
   }
-  
+
   return HAL_OK;
 }
 
 /**
-  * @brief  DeInitializes the FMC_SDRAM peripheral 
+  * @brief  DeInitializes the FMC_SDRAM peripheral
   * @param  Device Pointer to SDRAM device instance
   * @retval HAL status
   */
@@ -895,13 +904,13 @@
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_SDRAM_BANK(Bank));
-  
+
   /* De-initialize the SDRAM device */
-  Device->SDCR[Bank] = 0x000002D0;
-  Device->SDTR[Bank] = 0x0FFFFFFF;    
-  Device->SDCMR      = 0x00000000;
-  Device->SDRTR      = 0x00000000;
-  Device->SDSR       = 0x00000000;
+  Device->SDCR[Bank] = 0x000002D0U;
+  Device->SDTR[Bank] = 0x0FFFFFFFU;
+  Device->SDCMR      = 0x00000000U;
+  Device->SDRTR      = 0x00000000U;
+  Device->SDSR       = 0x00000000U;
 
   return HAL_OK;
 }
@@ -911,12 +920,12 @@
   */
 
 /** @addtogroup FMC_LL_SDRAMPrivate_Functions_Group2
-  *  @brief   management functions 
+  *  @brief   management functions
   *
-@verbatim   
+@verbatim
   ==============================================================================
                       ##### FMC_SDRAM Control functions #####
-  ==============================================================================  
+  ==============================================================================
   [..]
     This subsection provides a set of functions allowing to control dynamically
     the FMC SDRAM interface.
@@ -928,19 +937,19 @@
 /**
   * @brief  Enables dynamically FMC_SDRAM write protection.
   * @param  Device Pointer to SDRAM device instance
-  * @param  Bank SDRAM bank number 
+  * @param  Bank SDRAM bank number
   * @retval HAL status
   */
 HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Enable(FMC_SDRAM_TypeDef *Device, uint32_t Bank)
-{ 
+{
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_SDRAM_BANK(Bank));
-  
+
   /* Enable write protection */
-  Device->SDCR[Bank] |= FMC_SDRAM_WRITE_PROTECTION_ENABLE;
-  
-  return HAL_OK;  
+  SET_BIT(Device->SDCR[Bank], FMC_SDRAM_WRITE_PROTECTION_ENABLE);
+
+  return HAL_OK;
 }
 
 /**
@@ -953,43 +962,45 @@
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_SDRAM_BANK(Bank));
-  
+
   /* Disable write protection */
-  Device->SDCR[Bank] &= ~FMC_SDRAM_WRITE_PROTECTION_ENABLE;
-  
+  CLEAR_BIT(Device->SDCR[Bank], FMC_SDRAM_WRITE_PROTECTION_ENABLE);
+
   return HAL_OK;
 }
-  
+
 /**
   * @brief  Send Command to the FMC SDRAM bank
   * @param  Device Pointer to SDRAM device instance
-  * @param  Command Pointer to SDRAM command structure   
+  * @param  Command Pointer to SDRAM command structure
   * @param  Timing Pointer to SDRAM Timing structure
   * @param  Timeout Timeout wait value
   * @retval HAL state
-  */  
-HAL_StatusTypeDef FMC_SDRAM_SendCommand(FMC_SDRAM_TypeDef *Device, FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout)
-{ 
+  */
+HAL_StatusTypeDef FMC_SDRAM_SendCommand(FMC_SDRAM_TypeDef *Device,
+                                        FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout)
+{
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_COMMAND_MODE(Command->CommandMode));
   assert_param(IS_FMC_COMMAND_TARGET(Command->CommandTarget));
   assert_param(IS_FMC_AUTOREFRESH_NUMBER(Command->AutoRefreshNumber));
-  assert_param(IS_FMC_MODE_REGISTER(Command->ModeRegisterDefinition));  
+  assert_param(IS_FMC_MODE_REGISTER(Command->ModeRegisterDefinition));
 
   /* Set command register */
-  MODIFY_REG(Device->SDCMR, (FMC_SDCMR_MODE | FMC_SDCMR_CTB2 | FMC_SDCMR_CTB1 | 
-             FMC_SDCMR_NRFS | FMC_SDCMR_MRD), ((Command->CommandMode) | 
-             (Command->CommandTarget) | (((Command->AutoRefreshNumber) - 1U) << FMC_SDCMR_NRFS_Pos) |
-             ((Command->ModeRegisterDefinition) << FMC_SDCMR_MRD_Pos)));
-  
-  return HAL_OK;  
+  MODIFY_REG(Device->SDCMR, (FMC_SDCMR_MODE | FMC_SDCMR_CTB2 | FMC_SDCMR_CTB1 | FMC_SDCMR_NRFS | FMC_SDCMR_MRD),
+             ((Command->CommandMode) | (Command->CommandTarget) |
+              (((Command->AutoRefreshNumber) - 1U) << FMC_SDCMR_NRFS_Pos) |
+              ((Command->ModeRegisterDefinition) << FMC_SDCMR_MRD_Pos)));
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(Timeout);
+  return HAL_OK;
 }
 
 /**
   * @brief  Program the SDRAM Memory Refresh rate.
-  * @param  Device Pointer to SDRAM device instance  
-  * @param  RefreshRate The SDRAM refresh rate value.       
+  * @param  Device Pointer to SDRAM device instance
+  * @param  RefreshRate The SDRAM refresh rate value.
   * @retval HAL state
   */
 HAL_StatusTypeDef FMC_SDRAM_ProgramRefreshRate(FMC_SDRAM_TypeDef *Device, uint32_t RefreshRate)
@@ -997,58 +1008,59 @@
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_REFRESH_RATE(RefreshRate));
-  
+
   /* Set the refresh rate in command register */
-  Device->SDRTR |= (RefreshRate<<1);
-  
-  return HAL_OK;   
+  MODIFY_REG(Device->SDRTR, FMC_SDRTR_COUNT, (RefreshRate << FMC_SDRTR_COUNT_Pos));
+
+  return HAL_OK;
 }
 
 /**
   * @brief  Set the Number of consecutive SDRAM Memory auto Refresh commands.
-  * @param  Device Pointer to SDRAM device instance  
-  * @param  AutoRefreshNumber Specifies the auto Refresh number.       
+  * @param  Device Pointer to SDRAM device instance
+  * @param  AutoRefreshNumber Specifies the auto Refresh number.
   * @retval None
   */
-HAL_StatusTypeDef FMC_SDRAM_SetAutoRefreshNumber(FMC_SDRAM_TypeDef *Device, uint32_t AutoRefreshNumber)
+HAL_StatusTypeDef FMC_SDRAM_SetAutoRefreshNumber(FMC_SDRAM_TypeDef *Device,
+                                                 uint32_t AutoRefreshNumber)
 {
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_AUTOREFRESH_NUMBER(AutoRefreshNumber));
-  
-  /* Set the Auto-refresh number in command register */
-  Device->SDCMR |= (AutoRefreshNumber << 5); 
 
-  return HAL_OK;  
+  /* Set the Auto-refresh number in command register */
+  MODIFY_REG(Device->SDCMR, FMC_SDCMR_NRFS, ((AutoRefreshNumber - 1U) << FMC_SDCMR_NRFS_Pos));
+
+  return HAL_OK;
 }
 
 /**
   * @brief  Returns the indicated FMC SDRAM bank mode status.
-  * @param  Device Pointer to SDRAM device instance  
-  * @param  Bank Defines the FMC SDRAM bank. This parameter can be 
-  *                     FMC_Bank1_SDRAM or FMC_Bank2_SDRAM. 
+  * @param  Device Pointer to SDRAM device instance
+  * @param  Bank Defines the FMC SDRAM bank. This parameter can be
+  *                     FMC_Bank1_SDRAM or FMC_Bank2_SDRAM.
   * @retval The FMC SDRAM bank mode status, could be on of the following values:
-  *         FMC_SDRAM_NORMAL_MODE, FMC_SDRAM_SELF_REFRESH_MODE or 
-  *         FMC_SDRAM_POWER_DOWN_MODE.           
+  *         FMC_SDRAM_NORMAL_MODE, FMC_SDRAM_SELF_REFRESH_MODE or
+  *         FMC_SDRAM_POWER_DOWN_MODE.
   */
 uint32_t FMC_SDRAM_GetModeStatus(FMC_SDRAM_TypeDef *Device, uint32_t Bank)
 {
-  uint32_t tmpreg = 0;
-  
+  uint32_t tmpreg;
+
   /* Check the parameters */
   assert_param(IS_FMC_SDRAM_DEVICE(Device));
   assert_param(IS_FMC_SDRAM_BANK(Bank));
 
   /* Get the corresponding bank mode */
-  if(Bank == FMC_SDRAM_BANK1)
+  if (Bank == FMC_SDRAM_BANK1)
   {
-    tmpreg = (uint32_t)(Device->SDSR & FMC_SDSR_MODES1); 
+    tmpreg = (uint32_t)(Device->SDSR & FMC_SDSR_MODES1);
   }
   else
   {
-    tmpreg = ((uint32_t)(Device->SDSR & FMC_SDSR_MODES2) >> 2);
+    tmpreg = ((uint32_t)(Device->SDSR & FMC_SDSR_MODES2) >> 2U);
   }
-  
+
   /* Return the mode status */
   return tmpreg;
 }
@@ -1061,10 +1073,6 @@
   * @}
   */
 
-/**
-  * @}
-  */
-#endif /* HAL_SRAM_MODULE_ENABLED || HAL_NOR_MODULE_ENABLED || HAL_NAND_MODULE_ENABLED || HAL_SDRAM_MODULE_ENABLED */
 
 /**
   * @}
@@ -1074,4 +1082,10 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+#endif /* HAL_NOR_MODULE_ENABLED */
+/**
+  * @}
+  */
+/**
+  * @}
+  */
diff --git a/Src/stm32f7xx_ll_gpio.c b/Src/stm32f7xx_ll_gpio.c
index 86f9996..23d37d0 100644
--- a/Src/stm32f7xx_ll_gpio.c
+++ b/Src/stm32f7xx_ll_gpio.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -299,4 +298,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_i2c.c b/Src/stm32f7xx_ll_i2c.c
index a2eb5d5..1e36480 100644
--- a/Src/stm32f7xx_ll_i2c.c
+++ b/Src/stm32f7xx_ll_i2c.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -25,7 +24,7 @@
 #include "stm32_assert.h"
 #else
 #define assert_param(expr) ((void)0U)
-#endif
+#endif /* USE_FULL_ASSERT */
 
 /** @addtogroup STM32F7xx_LL_Driver
   * @{
@@ -125,7 +124,7 @@
     /* Release reset of I2C clock */
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_I2C4);
   }
-#endif
+#endif /* I2C4 */
   else
   {
     status = ERROR;
@@ -241,5 +240,3 @@
   */
 
 #endif /* USE_FULL_LL_DRIVER */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_lptim.c b/Src/stm32f7xx_ll_lptim.c
index 6c58544..41f8e3b 100644
--- a/Src/stm32f7xx_ll_lptim.c
+++ b/Src/stm32f7xx_ll_lptim.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -28,7 +27,7 @@
 #include "stm32_assert.h"
 #else
 #define assert_param(expr) ((void)0U)
-#endif
+#endif /* USE_FULL_ASSERT */
 
 /** @addtogroup STM32F7xx_LL_Driver
   * @{
@@ -189,11 +188,14 @@
   uint32_t tmpCFGR;
   uint32_t tmpCMP;
   uint32_t tmpARR;
+  uint32_t primask_bit;
 
   /* Check the parameters */
   assert_param(IS_LPTIM_INSTANCE(LPTIMx));
 
-  __disable_irq();
+  /* Enter critical section */
+  primask_bit = __get_PRIMASK();
+  __set_PRIMASK(1) ;
 
   /********** Save LPTIM Config *********/
   /* Save LPTIM source clock */
@@ -271,7 +273,8 @@
   LPTIMx->IER = tmpIER;
   LPTIMx->CFGR = tmpCFGR;
 
-  __enable_irq();
+  /* Exit critical section: restore previous priority mask */
+  __set_PRIMASK(primask_bit);
 }
 
 /**
@@ -293,5 +296,3 @@
   */
 
 #endif /* USE_FULL_LL_DRIVER */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_pwr.c b/Src/stm32f7xx_ll_pwr.c
index 45c6175..ae92b0a 100644
--- a/Src/stm32f7xx_ll_pwr.c
+++ b/Src/stm32f7xx_ll_pwr.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -84,4 +83,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_rcc.c b/Src/stm32f7xx_ll_rcc.c
index 083659b..bb347ec 100644
--- a/Src/stm32f7xx_ll_rcc.c
+++ b/Src/stm32f7xx_ll_rcc.c
@@ -6,14 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+  * This software is licensed under terms that can be found in the LICENSE file in
+  * the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   ******************************************************************************
   */
 #if defined(USE_FULL_LL_DRIVER)
@@ -1580,4 +1578,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_rng.c b/Src/stm32f7xx_ll_rng.c
index 5b9fe66..501fa36 100644
--- a/Src/stm32f7xx_ll_rng.c
+++ b/Src/stm32f7xx_ll_rng.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -26,7 +25,7 @@
 #include "stm32_assert.h"
 #else
 #define assert_param(expr) ((void)0U)
-#endif
+#endif /* USE_FULL_ASSERT */
 
 /** @addtogroup STM32F7xx_LL_Driver
   * @{
@@ -62,14 +61,24 @@
   */
 ErrorStatus LL_RNG_DeInit(RNG_TypeDef *RNGx)
 {
+  ErrorStatus status = SUCCESS;
+
   /* Check the parameters */
   assert_param(IS_RNG_ALL_INSTANCE(RNGx));
-  /* Enable RNG reset state */
-  LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_RNG);
+  if (RNGx == RNG)
+  {
+    /* Enable RNG reset state */
+    LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_RNG);
 
-  /* Release RNG from reset state */
-  LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_RNG);
-  return (SUCCESS);
+    /* Release RNG from reset state */
+    LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_RNG);
+  }
+  else
+  {
+    status = ERROR;
+  }
+
+  return status;
 }
 
 /**
@@ -92,5 +101,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/Src/stm32f7xx_ll_rtc.c b/Src/stm32f7xx_ll_rtc.c
index a333075..4fcf311 100644
--- a/Src/stm32f7xx_ll_rtc.c
+++ b/Src/stm32f7xx_ll_rtc.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -87,18 +86,7 @@
 
 #define IS_LL_RTC_DAY(__DAY__)    (((__DAY__) >= 1U) && ((__DAY__) <= 31U))
 
-#define IS_LL_RTC_MONTH(__VALUE__) (((__VALUE__) == LL_RTC_MONTH_JANUARY) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_FEBRUARY) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_MARCH) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_APRIL) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_MAY) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_JUNE) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_JULY) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_AUGUST) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_SEPTEMBER) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_OCTOBER) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_NOVEMBER) \
-                                 || ((__VALUE__) == LL_RTC_MONTH_DECEMBER))
+#define IS_LL_RTC_MONTH(__MONTH__) (((__MONTH__) >= 1U) && ((__MONTH__) <= 12U))
 
 #define IS_LL_RTC_YEAR(__YEAR__) ((__YEAR__) <= 99U)
 
@@ -328,7 +316,7 @@
     }
 
     /* Exit Initialization mode */
-    LL_RTC_DisableInitMode(RTC);
+    LL_RTC_DisableInitMode(RTCx);
 
     /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
     if (LL_RTC_IsShadowRegBypassEnabled(RTCx) == 0U)
@@ -416,7 +404,7 @@
     }
 
     /* Exit Initialization mode */
-    LL_RTC_DisableInitMode(RTC);
+    LL_RTC_DisableInitMode(RTCx);
 
     /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
     if (LL_RTC_IsShadowRegBypassEnabled(RTCx) == 0U)
@@ -876,4 +864,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_sdmmc.c b/Src/stm32f7xx_ll_sdmmc.c
index a69b28c..28efb6a 100644
--- a/Src/stm32f7xx_ll_sdmmc.c
+++ b/Src/stm32f7xx_ll_sdmmc.c
@@ -11,6 +11,17 @@
   *           + Peripheral Control functions 
   *           + Peripheral State functions
   *         
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                        ##### SDMMC peripheral features #####
@@ -142,17 +153,6 @@
   
   @endverbatim
   ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                       opensource.org/licenses/BSD-3-Clause
-  *
-  ******************************************************************************
   */ 
 
 /* Includes ------------------------------------------------------------------*/
@@ -177,11 +177,6 @@
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
 static uint32_t SDMMC_GetCmdError(SDMMC_TypeDef *SDMMCx);
-static uint32_t SDMMC_GetCmdResp1(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint32_t Timeout);
-static uint32_t SDMMC_GetCmdResp2(SDMMC_TypeDef *SDMMCx);
-static uint32_t SDMMC_GetCmdResp3(SDMMC_TypeDef *SDMMCx);
-static uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx);
-static uint32_t SDMMC_GetCmdResp6(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint16_t *pRCA);
 
 /* Exported functions --------------------------------------------------------*/
 
@@ -311,10 +306,6 @@
   /* Set power state to ON */ 
   SDMMCx->POWER = SDMMC_POWER_PWRCTRL;
 
-  /* 1ms: required power up waiting time before starting the SD initialization
-  sequence */
-  HAL_Delay(2);
-  
   return HAL_OK;
 }
 
@@ -1027,6 +1018,31 @@
 }
 
 /**
+  * @brief  Send the Set Relative Address command to MMC card (not SD card).
+  * @param  SDMMCx Pointer to SDMMC register base
+  * @param  RCA Card RCA
+  * @retval HAL status
+  */
+uint32_t SDMMC_CmdSetRelAddMmc(SDMMC_TypeDef *SDMMCx, uint16_t RCA)
+{
+  SDMMC_CmdInitTypeDef  sdmmc_cmdinit;
+  uint32_t errorstate;
+
+  /* Send CMD3 SD_CMD_SET_REL_ADDR */
+  sdmmc_cmdinit.Argument         = ((uint32_t)RCA << 16U);
+  sdmmc_cmdinit.CmdIndex         = SDMMC_CMD_SET_REL_ADDR;
+  sdmmc_cmdinit.Response         = SDMMC_RESPONSE_SHORT;
+  sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO;
+  sdmmc_cmdinit.CPSM             = SDMMC_CPSM_ENABLE;
+  (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit);
+
+  /* Check for error conditions */
+  errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SET_REL_ADDR, SDMMC_CMDTIMEOUT);
+
+  return errorstate;
+}
+
+/**
   * @brief  Send the Status command and check the response.
   * @param  SDMMCx: Pointer to SDMMC register base 
   * @param  Argument: Command Argument
@@ -1125,47 +1141,54 @@
 }
 
 /**
-  * @}
+  * @brief  Send the Send EXT_CSD command and check the response.
+  * @param  SDMMCx Pointer to SDMMC register base
+  * @param  Argument Command Argument
+  * @retval HAL status
   */
-
-/* Private function ----------------------------------------------------------*/  
-/** @addtogroup SD_Private_Functions
-  * @{
-  */
-    
-/**
-  * @brief  Checks for error conditions for CMD0.
-  * @param  hsd: SD handle
-  * @retval SD Card error state
-  */
-static uint32_t SDMMC_GetCmdError(SDMMC_TypeDef *SDMMCx)
+uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument)
 {
-  /* 8 is the number of required instructions cycles for the below loop statement.
-  The SDMMC_CMDTIMEOUT is expressed in ms */
-  uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U);
-  
-  do
-  {
-    if (count-- == 0U)
-    {
-      return SDMMC_ERROR_TIMEOUT;
-    }
-    
-  }while(!__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CMDSENT));
-  
-  /* Clear all the static flags */
-  __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS);
-  
-  return SDMMC_ERROR_NONE;
+  SDMMC_CmdInitTypeDef  sdmmc_cmdinit;
+  uint32_t errorstate;
+
+  /* Send CMD9 SEND_CSD */
+  sdmmc_cmdinit.Argument         = Argument;
+  sdmmc_cmdinit.CmdIndex         = SDMMC_CMD_HS_SEND_EXT_CSD;
+  sdmmc_cmdinit.Response         = SDMMC_RESPONSE_SHORT;
+  sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO;
+  sdmmc_cmdinit.CPSM             = SDMMC_CPSM_ENABLE;
+  (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit);
+
+  /* Check for error conditions */
+  errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_HS_SEND_EXT_CSD,SDMMC_CMDTIMEOUT);
+
+  return errorstate;
 }
 
 /**
+  * @}
+  */
+
+/** @defgroup HAL_SDMMC_LL_Group5 Responses management functions
+ *  @brief   Responses functions
+ *
+@verbatim
+ ===============================================================================
+                   ##### Responses management functions #####
+ ===============================================================================
+    [..]
+    This subsection provides a set of functions allowing to manage the needed responses.
+
+@endverbatim
+  * @{
+  */
+/**
   * @brief  Checks for error conditions for R1 response.
-  * @param  hsd: SD handle
+  * @param  SDMMCx Pointer to SDMMC register base
   * @param  SD_CMD: The sent command index  
   * @retval SD Card error state
   */
-static uint32_t SDMMC_GetCmdResp1(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint32_t Timeout)
+uint32_t SDMMC_GetCmdResp1(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint32_t Timeout)
 {
   uint32_t response_r1;
   uint32_t sta_reg;
@@ -1297,10 +1320,10 @@
 
 /**
   * @brief  Checks for error conditions for R2 (CID or CSD) response.
-  * @param  hsd: SD handle
+  * @param  SDMMCx Pointer to SDMMC register base
   * @retval SD Card error state
   */
-static uint32_t SDMMC_GetCmdResp2(SDMMC_TypeDef *SDMMCx)
+uint32_t SDMMC_GetCmdResp2(SDMMC_TypeDef *SDMMCx)
 {
   uint32_t sta_reg;
   /* 8 is the number of required instructions cycles for the below loop statement.
@@ -1341,10 +1364,10 @@
 
 /**
   * @brief  Checks for error conditions for R3 (OCR) response.
-  * @param  hsd: SD handle
+  * @param  SDMMCx Pointer to SDMMC register base
   * @retval SD Card error state
   */
-static uint32_t SDMMC_GetCmdResp3(SDMMC_TypeDef *SDMMCx)
+uint32_t SDMMC_GetCmdResp3(SDMMC_TypeDef *SDMMCx)
 {
   uint32_t sta_reg;
   /* 8 is the number of required instructions cycles for the below loop statement.
@@ -1378,13 +1401,13 @@
 
 /**
   * @brief  Checks for error conditions for R6 (RCA) response.
-  * @param  hsd: SD handle
+  * @param  SDMMCx Pointer to SDMMC register base
   * @param  SD_CMD: The sent command index
   * @param  pRCA: Pointer to the variable that will contain the SD card relative 
   *         address RCA   
   * @retval SD Card error state
   */
-static uint32_t SDMMC_GetCmdResp6(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint16_t *pRCA)
+uint32_t SDMMC_GetCmdResp6(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint16_t *pRCA)
 {
   uint32_t response_r1;
   uint32_t sta_reg;
@@ -1454,10 +1477,10 @@
 
 /**
   * @brief  Checks for error conditions for R7 response.
-  * @param  hsd: SD handle
+  * @param  SDMMCx Pointer to SDMMC register base
   * @retval SD Card error state
   */
-static uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx)
+uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx)
 {
   uint32_t sta_reg;
   /* 8 is the number of required instructions cycles for the below loop statement.
@@ -1504,28 +1527,38 @@
 }
 
 /**
-  * @brief  Send the Send EXT_CSD command and check the response.
-  * @param  SDMMCx: Pointer to SDMMC register base
-  * @param  Argument: Command Argument
-  * @retval HAL status
+  * @}
   */
-uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument)
+
+/* Private function ----------------------------------------------------------*/  
+/** @addtogroup SD_Private_Functions
+  * @{
+  */
+    
+/**
+  * @brief  Checks for error conditions for CMD0.
+  * @param  SDMMCx Pointer to SDMMC register base
+  * @retval SD Card error state
+  */
+static uint32_t SDMMC_GetCmdError(SDMMC_TypeDef *SDMMCx)
 {
-  SDMMC_CmdInitTypeDef  sdmmc_cmdinit;
-  uint32_t errorstate;
-
-  /* Send CMD9 SEND_CSD */
-  sdmmc_cmdinit.Argument         = Argument;
-  sdmmc_cmdinit.CmdIndex         = SDMMC_CMD_HS_SEND_EXT_CSD;
-  sdmmc_cmdinit.Response         = SDMMC_RESPONSE_SHORT;
-  sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO;
-  sdmmc_cmdinit.CPSM             = SDMMC_CPSM_ENABLE;
-  (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit);
-
-  /* Check for error conditions */
-  errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_HS_SEND_EXT_CSD,SDMMC_CMDTIMEOUT);
-
-  return errorstate;
+  /* 8 is the number of required instructions cycles for the below loop statement.
+  The SDMMC_CMDTIMEOUT is expressed in ms */
+  uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U);
+  
+  do
+  {
+    if (count-- == 0U)
+    {
+      return SDMMC_ERROR_TIMEOUT;
+    }
+    
+  }while(!__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CMDSENT));
+  
+  /* Clear all the static flags */
+  __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS);
+  
+  return SDMMC_ERROR_NONE;
 }
 
 
@@ -1543,5 +1576,3 @@
   */
 
 #endif /* SDMMC1 */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_spi.c b/Src/stm32f7xx_ll_spi.c
index 668e2dc..16fd78a 100644
--- a/Src/stm32f7xx_ll_spi.c
+++ b/Src/stm32f7xx_ll_spi.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -27,7 +26,7 @@
 #include "stm32_assert.h"
 #else
 #define assert_param(expr) ((void)0U)
-#endif
+#endif /* USE_FULL_ASSERT */
 
 /** @addtogroup STM32F7xx_LL_Driver
   * @{
@@ -576,4 +575,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_tim.c b/Src/stm32f7xx_ll_tim.c
index d3a992d..05051e2 100644
--- a/Src/stm32f7xx_ll_tim.c
+++ b/Src/stm32f7xx_ll_tim.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -237,84 +236,84 @@
     LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM3);
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM3);
   }
-#endif
+#endif /* TIM3 */
 #if defined(TIM4)
   else if (TIMx == TIM4)
   {
     LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM4);
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM4);
   }
-#endif
+#endif /* TIM4 */
 #if defined(TIM5)
   else if (TIMx == TIM5)
   {
     LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM5);
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM5);
   }
-#endif
+#endif /* TIM5 */
 #if defined(TIM6)
   else if (TIMx == TIM6)
   {
     LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM6);
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM6);
   }
-#endif
+#endif /* TIM6 */
 #if defined (TIM7)
   else if (TIMx == TIM7)
   {
     LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM7);
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM7);
   }
-#endif
+#endif /* TIM7 */
 #if defined(TIM8)
   else if (TIMx == TIM8)
   {
     LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM8);
     LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM8);
   }
-#endif
+#endif /* TIM8 */
 #if defined(TIM9)
   else if (TIMx == TIM9)
   {
     LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM9);
     LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM9);
   }
-#endif
+#endif /* TIM9 */
 #if defined(TIM10)
   else if (TIMx == TIM10)
   {
     LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM10);
     LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM10);
   }
-#endif
+#endif /* TIM10 */
 #if defined(TIM11)
   else if (TIMx == TIM11)
   {
     LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM11);
     LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM11);
   }
-#endif
+#endif /* TIM11 */
 #if defined(TIM12)
   else if (TIMx == TIM12)
   {
     LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM12);
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM12);
   }
-#endif
+#endif /* TIM12 */
 #if defined(TIM13)
   else if (TIMx == TIM13)
   {
     LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM13);
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM13);
   }
-#endif
+#endif /* TIM13 */
 #if defined(TIM14)
   else if (TIMx == TIM14)
   {
     LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM14);
     LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM14);
   }
-#endif
+#endif /* TIM14 */
   else
   {
     result = ERROR;
@@ -342,7 +341,8 @@
 /**
   * @brief  Configure the TIMx time base unit.
   * @param  TIMx Timer Instance
-  * @param  TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure (TIMx time base unit configuration data structure)
+  * @param  TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure
+  *         (TIMx time base unit configuration data structure)
   * @retval An ErrorStatus enumeration value:
   *          - SUCCESS: TIMx registers are de-initialized
   *          - ERROR: not applicable
@@ -395,7 +395,8 @@
 /**
   * @brief  Set the fields of the TIMx output channel configuration data
   *         structure to their default values.
-  * @param  TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure (the output channel configuration data structure)
+  * @param  TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure
+  *         (the output channel configuration data structure)
   * @retval None
   */
 void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct)
@@ -421,7 +422,8 @@
   *         @arg @ref LL_TIM_CHANNEL_CH4
   *         @arg @ref LL_TIM_CHANNEL_CH5
   *         @arg @ref LL_TIM_CHANNEL_CH6
-  * @param  TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure (TIMx output channel configuration data structure)
+  * @param  TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure (TIMx output channel configuration
+  *         data structure)
   * @retval An ErrorStatus enumeration value:
   *          - SUCCESS: TIMx output channel is initialized
   *          - ERROR: TIMx output channel is not initialized
@@ -460,7 +462,8 @@
 /**
   * @brief  Set the fields of the TIMx input channel configuration data
   *         structure to their default values.
-  * @param  TIM_ICInitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (the input channel configuration data structure)
+  * @param  TIM_ICInitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (the input channel configuration
+  *         data structure)
   * @retval None
   */
 void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct)
@@ -480,7 +483,8 @@
   *         @arg @ref LL_TIM_CHANNEL_CH2
   *         @arg @ref LL_TIM_CHANNEL_CH3
   *         @arg @ref LL_TIM_CHANNEL_CH4
-  * @param  TIM_IC_InitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (TIMx input channel configuration data structure)
+  * @param  TIM_IC_InitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (TIMx input channel configuration data
+  *         structure)
   * @retval An ErrorStatus enumeration value:
   *          - SUCCESS: TIMx output channel is initialized
   *          - ERROR: TIMx output channel is not initialized
@@ -512,7 +516,8 @@
 
 /**
   * @brief  Fills each TIM_EncoderInitStruct field with its default value
-  * @param  TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (encoder interface configuration data structure)
+  * @param  TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (encoder interface
+  *         configuration data structure)
   * @retval None
   */
 void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct)
@@ -532,7 +537,8 @@
 /**
   * @brief  Configure the encoder interface of the timer instance.
   * @param  TIMx Timer Instance
-  * @param  TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (TIMx encoder interface configuration data structure)
+  * @param  TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (TIMx encoder interface
+  *         configuration data structure)
   * @retval An ErrorStatus enumeration value:
   *          - SUCCESS: TIMx registers are de-initialized
   *          - ERROR: not applicable
@@ -596,7 +602,8 @@
 /**
   * @brief  Set the fields of the TIMx Hall sensor interface configuration data
   *         structure to their default values.
-  * @param  TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (HALL sensor interface configuration data structure)
+  * @param  TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (HALL sensor interface
+  *         configuration data structure)
   * @retval None
   */
 void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct)
@@ -623,7 +630,8 @@
   * @note LL_TIM_IC_POLARITY_BOTHEDGE must not be used for TI1 when it is used
   *       when TIMx operates in Hall sensor interface mode.
   * @param  TIMx Timer Instance
-  * @param  TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (TIMx HALL sensor interface configuration data structure)
+  * @param  TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (TIMx HALL sensor
+  *         interface configuration data structure)
   * @retval An ErrorStatus enumeration value:
   *          - SUCCESS: TIMx registers are de-initialized
   *          - ERROR: not applicable
@@ -703,7 +711,8 @@
 /**
   * @brief  Set the fields of the Break and Dead Time configuration data structure
   *         to their default values.
-  * @param  TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration data structure)
+  * @param  TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration
+  *         data structure)
   * @retval None
   */
 void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct)
@@ -733,7 +742,8 @@
   * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not
   *       a timer instance provides a second break input.
   * @param  TIMx Timer Instance
-  * @param  TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration data structure)
+  * @param  TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration
+  *         data structure)
   * @retval An ErrorStatus enumeration value:
   *          - SUCCESS: Break and Dead Time is initialized
   *          - ERROR: not applicable
@@ -1375,4 +1385,3 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_usart.c b/Src/stm32f7xx_ll_usart.c
index ab92435..d9ca27f 100644
--- a/Src/stm32f7xx_ll_usart.c
+++ b/Src/stm32f7xx_ll_usart.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -437,5 +436,4 @@
 
 #endif /* USE_FULL_LL_DRIVER */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 
diff --git a/Src/stm32f7xx_ll_usb.c b/Src/stm32f7xx_ll_usb.c
index 17d4ed3..21e190b 100644
--- a/Src/stm32f7xx_ll_usb.c
+++ b/Src/stm32f7xx_ll_usb.c
@@ -11,6 +11,17 @@
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
   @verbatim
   ==============================================================================
                     ##### How to use this driver #####
@@ -23,17 +34,7 @@
       (#) The upper HAL HCD/PCD driver will call the right routines for its internal processes.
 
   @endverbatim
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
-  *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
-  *
+
   ******************************************************************************
   */
 
@@ -54,10 +55,9 @@
 /* Private functions ---------------------------------------------------------*/
 #if defined (USB_OTG_FS) || defined (USB_OTG_HS)
 static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx);
-
-#ifdef USB_HS_PHYC
+#ifdef USBPHYC
 static HAL_StatusTypeDef USB_HS_PHYCInit(USB_OTG_GlobalTypeDef *USBx);
-#endif
+#endif /* USBPHYC */
 
 /* Exported functions --------------------------------------------------------*/
 /** @defgroup USB_LL_Exported_Functions USB Low Layer Exported Functions
@@ -105,10 +105,11 @@
     {
       USBx->GUSBCFG |= USB_OTG_GUSBCFG_ULPIEVBUSD;
     }
-    /* Reset after a PHY select  */
+
+    /* Reset after a PHY select */
     ret = USB_CoreReset(USBx);
   }
-#ifdef USB_HS_PHYC
+#if defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F730xx) || defined(STM32F732xx) || defined(STM32F733xx)
   else if (cfg.phy_itface == USB_OTG_HS_EMBEDDED_PHY)
   {
     USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN);
@@ -121,6 +122,8 @@
 
     /* Select UTMI Interface */
     USBx->GUSBCFG &= ~USB_OTG_GUSBCFG_ULPI_UTMI_SEL;
+#ifdef USBPHYC
+    /* Enable USB HS PHY */
     USBx->GCCFG |= USB_OTG_GCCFG_PHYHSEN;
 
     /* Enables control of a High Speed USB PHY */
@@ -128,15 +131,17 @@
     {
       return HAL_ERROR;
     }
+#endif /* USBPHYC */
 
     if (cfg.use_external_vbus == 1U)
     {
       USBx->GUSBCFG |= USB_OTG_GUSBCFG_ULPIEVBUSD;
     }
-    /* Reset after a PHY select  */
+
+    /* Reset after a PHY select */
     ret = USB_CoreReset(USBx);
   }
-#endif
+#endif /* defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F730xx) || defined(STM32F732xx) || defined(STM32F733xx) */
   else /* FS interface (embedded Phy) */
   {
     /* Select FS Embedded PHY */
@@ -277,21 +282,39 @@
   */
 HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_OTG_ModeTypeDef mode)
 {
+  uint32_t ms = 0U;
+
   USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_FHMOD | USB_OTG_GUSBCFG_FDMOD);
 
   if (mode == USB_HOST_MODE)
   {
     USBx->GUSBCFG |= USB_OTG_GUSBCFG_FHMOD;
+
+    do
+    {
+      HAL_Delay(1U);
+      ms++;
+    } while ((USB_GetMode(USBx) != (uint32_t)USB_HOST_MODE) && (ms < 50U));
   }
   else if (mode == USB_DEVICE_MODE)
   {
     USBx->GUSBCFG |= USB_OTG_GUSBCFG_FDMOD;
+
+    do
+    {
+      HAL_Delay(1U);
+      ms++;
+    } while ((USB_GetMode(USBx) != (uint32_t)USB_DEVICE_MODE) && (ms < 50U));
   }
   else
   {
     return HAL_ERROR;
   }
-  HAL_Delay(50U);
+
+  if (ms == 50U)
+  {
+    return HAL_ERROR;
+  }
 
   return HAL_OK;
 }
@@ -352,6 +375,7 @@
       (void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
     }
   }
+#if defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F730xx) || defined(STM32F732xx) || defined(STM32F733xx)
   else if (cfg.phy_itface == USB_OTG_HS_EMBEDDED_PHY)
   {
     if (cfg.speed == USBD_HS_SPEED)
@@ -365,6 +389,7 @@
       (void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
     }
   }
+#endif /* defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F730xx) || defined(STM32F732xx) || defined(STM32F733xx) */
   else
   {
     /* Set Core speed to Full speed mode */
@@ -465,7 +490,7 @@
 }
 
 /**
-  * @brief  USB_OTG_FlushTxFifo : Flush a Tx FIFO
+  * @brief  USB_FlushTxFifo Flush a Tx FIFO
   * @param  USBx  Selected device
   * @param  num  FIFO number
   *         This parameter can be a value from 1 to 15
@@ -474,8 +499,19 @@
   */
 HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num)
 {
-  uint32_t count = 0U;
+  __IO uint32_t count = 0U;
 
+  /* Wait for AHB master IDLE state. */
+  do
+  {
+    if (++count > 200000U)
+    {
+      return HAL_TIMEOUT;
+    }
+  } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U);
+
+  /* Flush TX Fifo */
+  count = 0U;
   USBx->GRSTCTL = (USB_OTG_GRSTCTL_TXFFLSH | (num << 6));
 
   do
@@ -490,14 +526,25 @@
 }
 
 /**
-  * @brief  USB_FlushRxFifo : Flush Rx FIFO
+  * @brief  USB_FlushRxFifo  Flush Rx FIFO
   * @param  USBx  Selected device
   * @retval HAL status
   */
 HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx)
 {
-  uint32_t count = 0;
+  __IO uint32_t count = 0U;
 
+  /* Wait for AHB master IDLE state. */
+  do
+  {
+    if (++count > 200000U)
+    {
+      return HAL_TIMEOUT;
+    }
+  } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U);
+
+  /* Flush RX Fifo */
+  count = 0U;
   USBx->GRSTCTL = USB_OTG_GRSTCTL_RXFFLSH;
 
   do
@@ -758,7 +805,9 @@
       */
       USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ);
       USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT);
-      USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket) << 19));
+      USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT &
+                                     (((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket) << 19));
+
       USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_XFRSIZ & ep->xfer_len);
 
       if (ep->type == EP_TYPE_ISOC)
@@ -979,8 +1028,9 @@
                                   uint8_t ch_ep_num, uint16_t len, uint8_t dma)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t *pSrc = (uint32_t *)src;
-  uint32_t count32b, i;
+  uint8_t *pSrc = src;
+  uint32_t count32b;
+  uint32_t i;
 
   if (dma == 0U)
   {
@@ -989,6 +1039,9 @@
     {
       USBx_DFIFO((uint32_t)ch_ep_num) = __UNALIGNED_UINT32_READ(pSrc);
       pSrc++;
+      pSrc++;
+      pSrc++;
+      pSrc++;
     }
   }
 
@@ -1005,14 +1058,34 @@
 void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t *pDest = (uint32_t *)dest;
+  uint8_t *pDest = dest;
+  uint32_t pData;
   uint32_t i;
-  uint32_t count32b = ((uint32_t)len + 3U) / 4U;
+  uint32_t count32b = (uint32_t)len >> 2U;
+  uint16_t remaining_bytes = len % 4U;
 
   for (i = 0U; i < count32b; i++)
   {
     __UNALIGNED_UINT32_WRITE(pDest, USBx_DFIFO(0U));
     pDest++;
+    pDest++;
+    pDest++;
+    pDest++;
+  }
+
+  /* When Number of data is not word aligned, read the remaining byte */
+  if (remaining_bytes != 0U)
+  {
+    i = 0U;
+    __UNALIGNED_UINT32_WRITE(&pData, USBx_DFIFO(0U));
+
+    do
+    {
+      *(uint8_t *)pDest = (uint8_t)(pData >> (8U * (uint8_t)(i)));
+      i++;
+      pDest++;
+      remaining_bytes--;
+    } while (remaining_bytes != 0U);
   }
 
   return ((void *)pDest);
@@ -1244,7 +1317,9 @@
 uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t tmpreg, msk, emp;
+  uint32_t tmpreg;
+  uint32_t msk;
+  uint32_t emp;
 
   msk = USBx_DEVICE->DIEPMSK;
   emp = USBx_DEVICE->DIEPEMPMSK;
@@ -1340,7 +1415,7 @@
   */
 static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx)
 {
-  uint32_t count = 0U;
+  __IO uint32_t count = 0U;
 
   /* Wait for AHB master IDLE state. */
   do
@@ -1366,9 +1441,9 @@
   return HAL_OK;
 }
 
-#ifdef USB_HS_PHYC
+#ifdef USBPHYC
 /**
-  * @brief  Enables control of a High Speed USB PHY’s
+  * @brief  Enables control of a High Speed USB PHY
   *         Init the low level hardware : GPIO, CLOCK, NVIC...
   * @param  USBx  Selected device
   * @retval HAL status
@@ -1376,7 +1451,7 @@
 static HAL_StatusTypeDef USB_HS_PHYCInit(USB_OTG_GlobalTypeDef *USBx)
 {
   UNUSED(USBx);
-  uint32_t count = 0U;
+  __IO uint32_t count = 0U;
 
   /* Enable LDO */
   USB_HS_PHYC->USB_HS_PHYC_LDO |= USB_HS_PHYC_LDO_ENABLE;
@@ -1426,13 +1501,14 @@
   /* Enable PLL internal PHY */
   USB_HS_PHYC->USB_HS_PHYC_PLL |= USB_HS_PHYC_PLL_PLLEN;
 
+
   /* 2ms Delay required to get internal phy clock stable */
   HAL_Delay(2U);
 
   return HAL_OK;
 }
 
-#endif /* USB_HS_PHYC */
+#endif /* USBPHYC */
 /**
   * @brief  USB_HostInit : Initializes the USB OTG controller registers
   *         for Host mode
@@ -1443,6 +1519,7 @@
   */
 HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg)
 {
+  HAL_StatusTypeDef ret = HAL_OK;
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t i;
 
@@ -1472,8 +1549,15 @@
   }
 
   /* Make sure the FIFOs are flushed. */
-  (void)USB_FlushTxFifo(USBx, 0x10U); /* all Tx FIFOs */
-  (void)USB_FlushRxFifo(USBx);
+  if (USB_FlushTxFifo(USBx, 0x10U) != HAL_OK) /* all Tx FIFOs */
+  {
+    ret = HAL_ERROR;
+  }
+
+  if (USB_FlushRxFifo(USBx) != HAL_OK)
+  {
+    ret = HAL_ERROR;
+  }
 
   /* Clear all pending HC Interrupts */
   for (i = 0U; i < cfg.Host_channels; i++)
@@ -1482,11 +1566,6 @@
     USBx_HC(i)->HCINTMSK = 0U;
   }
 
-  /* Enable VBUS driving */
-  (void)USB_DriveVbus(USBx, 1U);
-
-  HAL_Delay(200U);
-
   /* Disable all interrupts. */
   USBx->GINTMSK = 0U;
 
@@ -1519,7 +1598,7 @@
                     USB_OTG_GINTMSK_SOFM             | USB_OTG_GINTSTS_DISCINT | \
                     USB_OTG_GINTMSK_PXFRM_IISOOXFRM  | USB_OTG_GINTMSK_WUIM);
 
-  return HAL_OK;
+  return ret;
 }
 
 /**
@@ -1670,7 +1749,8 @@
 {
   HAL_StatusTypeDef ret = HAL_OK;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t HCcharEpDir, HCcharLowSpeed;
+  uint32_t HCcharEpDir;
+  uint32_t HCcharLowSpeed;
   uint32_t HostCoreSpeed;
 
   /* Clear old interrupt conditions for this host channel. */
@@ -1735,6 +1815,9 @@
       break;
   }
 
+  /* Enable host channel Halt interrupt */
+  USBx_HC((uint32_t)ch_num)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM;
+
   /* Enable the top level host channel interrupt. */
   USBx_HOST->HAINTMSK |= 1UL << (ch_num & 0xFU);
 
@@ -1943,7 +2026,7 @@
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t hcnum = (uint32_t)hc_num;
-  uint32_t count = 0U;
+  __IO uint32_t count = 0U;
   uint32_t HcEpType = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_EPTYP) >> 18;
   uint32_t ChannelEna = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) >> 31;
 
@@ -1964,7 +2047,6 @@
       {
         USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_CHENA;
         USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA;
-        USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_EPDIR;
         do
         {
           if (++count > 1000U)
@@ -1987,7 +2069,6 @@
     {
       USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_CHENA;
       USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA;
-      USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_EPDIR;
       do
       {
         if (++count > 1000U)
@@ -2038,16 +2119,24 @@
   */
 HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx)
 {
+  HAL_StatusTypeDef ret = HAL_OK;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t count = 0U;
+  __IO uint32_t count = 0U;
   uint32_t value;
   uint32_t i;
 
   (void)USB_DisableGlobalInt(USBx);
 
-  /* Flush FIFO */
-  (void)USB_FlushTxFifo(USBx, 0x10U);
-  (void)USB_FlushRxFifo(USBx);
+  /* Flush USB FIFO */
+  if (USB_FlushTxFifo(USBx, 0x10U) != HAL_OK) /* all Tx FIFOs */
+  {
+    ret = HAL_ERROR;
+  }
+
+  if (USB_FlushRxFifo(USBx) != HAL_OK)
+  {
+    ret = HAL_ERROR;
+  }
 
   /* Flush out any leftover queued requests. */
   for (i = 0U; i <= 15U; i++)
@@ -2083,7 +2172,7 @@
 
   (void)USB_EnableGlobalInt(USBx);
 
-  return HAL_OK;
+  return ret;
 }
 
 /**
@@ -2134,5 +2223,3 @@
 /**
   * @}
   */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Src/stm32f7xx_ll_utils.c b/Src/stm32f7xx_ll_utils.c
index 4ac57c0..2ff8087 100644
--- a/Src/stm32f7xx_ll_utils.c
+++ b/Src/stm32f7xx_ll_utils.c
@@ -6,13 +6,12 @@
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
-  * All rights reserved.</center></h2>
+  * Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.
   *
-  * This software component is licensed by ST under BSD 3-Clause license,
-  * the "License"; You may not use this file except in compliance with the
-  * License. You may obtain a copy of the License at:
-  *                        opensource.org/licenses/BSD-3-Clause
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
   */
@@ -751,4 +750,3 @@
   * @}
   */
 
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/