Release v1.3.0
diff --git a/Inc/Legacy/stm32_hal_legacy.h b/Inc/Legacy/stm32_hal_legacy.h
index 48aff55..934f1f9 100644
--- a/Inc/Legacy/stm32_hal_legacy.h
+++ b/Inc/Legacy/stm32_hal_legacy.h
@@ -37,14 +37,16 @@
 #define AES_CLEARFLAG_CCF               CRYP_CLEARFLAG_CCF
 #define AES_CLEARFLAG_RDERR             CRYP_CLEARFLAG_RDERR
 #define AES_CLEARFLAG_WRERR             CRYP_CLEARFLAG_WRERR
-#if defined(STM32U5)
+#if defined(STM32U5) || defined(STM32H7) || defined(STM32MP1)
 #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
+#if defined(STM32U5)
 #define CRYP_CCF_CLEAR                  CRYP_CLEAR_CCF
 #define CRYP_ERR_CLEAR                  CRYP_CLEAR_RWEIF
 #endif /* STM32U5 */
+#endif /* STM32U5 || STM32H7 || STM32MP1 */
 /**
   * @}
   */
@@ -104,6 +106,13 @@
 #if defined(STM32H7)
 #define ADC_CHANNEL_VBAT_DIV4           ADC_CHANNEL_VBAT
 #endif /* STM32H7 */
+
+#if defined(STM32U5)
+#define ADC_SAMPLETIME_5CYCLE           ADC_SAMPLETIME_5CYCLES
+#define ADC_SAMPLETIME_391CYCLES_5      ADC_SAMPLETIME_391CYCLES
+#define ADC4_SAMPLETIME_160CYCLES_5     ADC4_SAMPLETIME_814CYCLES_5
+#endif /* STM32U5 */
+
 /**
   * @}
   */
@@ -225,8 +234,11 @@
 /** @defgroup CRC_Aliases CRC API aliases
   * @{
   */
+#if defined(STM32C0)
+#else
 #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 */
+#endif
 /**
   * @}
   */
@@ -410,6 +422,10 @@
 #define DAC_TRIGGER_LP2_OUT                        DAC_TRIGGER_LPTIM2_OUT
 
 #endif /* STM32H7 */
+
+#if defined(STM32U5)
+#define GPDMA1_REQUEST_DCMI                        GPDMA1_REQUEST_DCMI_PSSI
+#endif /* STM32U5 */
 /**
   * @}
   */
@@ -489,7 +505,7 @@
 #define OB_RDP_LEVEL0                 OB_RDP_LEVEL_0
 #define OB_RDP_LEVEL1                 OB_RDP_LEVEL_1
 #define OB_RDP_LEVEL2                 OB_RDP_LEVEL_2
-#if defined(STM32G0)
+#if defined(STM32G0) || defined(STM32C0)
 #define OB_BOOT_LOCK_DISABLE          OB_BOOT_ENTRY_FORCED_NONE
 #define OB_BOOT_LOCK_ENABLE           OB_BOOT_ENTRY_FORCED_FLASH
 #else
@@ -657,6 +673,10 @@
 #if defined(STM32U5)
 #define GPIO_AF0_RTC_50Hz                         GPIO_AF0_RTC_50HZ
 #endif /* STM32U5 */
+#if defined(STM32U5)
+#define GPIO_AF0_S2DSTOP                          GPIO_AF0_SRDSTOP
+#define GPIO_AF11_LPGPIO                          GPIO_AF11_LPGPIO1
+#endif /* STM32U5 */
 /**
   * @}
   */
@@ -1069,8 +1089,8 @@
 #define RTC_TAMPER1_2_3_INTERRUPT       RTC_ALL_TAMPER_INTERRUPT
 
 #define RTC_TIMESTAMPPIN_PC13  RTC_TIMESTAMPPIN_DEFAULT
-#define RTC_TIMESTAMPPIN_PA0 RTC_TIMESTAMPPIN_POS1
-#define RTC_TIMESTAMPPIN_PI8 RTC_TIMESTAMPPIN_POS1
+#define RTC_TIMESTAMPPIN_PA0   RTC_TIMESTAMPPIN_POS1
+#define RTC_TIMESTAMPPIN_PI8   RTC_TIMESTAMPPIN_POS1
 #define RTC_TIMESTAMPPIN_PC1   RTC_TIMESTAMPPIN_POS2
 
 #define RTC_OUTPUT_REMAP_PC13  RTC_OUTPUT_REMAP_NONE
@@ -1081,15 +1101,22 @@
 #define RTC_TAMPERPIN_PA0  RTC_TAMPERPIN_POS1
 #define RTC_TAMPERPIN_PI8  RTC_TAMPERPIN_POS1
 
+#if defined(STM32F7)
+#define RTC_TAMPCR_TAMPXE          RTC_TAMPER_ENABLE_BITS_MASK
+#define RTC_TAMPCR_TAMPXIE         RTC_TAMPER_IT_ENABLE_BITS_MASK
+#endif /* STM32F7 */
+
 #if defined(STM32H7)
 #define RTC_TAMPCR_TAMPXE          RTC_TAMPER_X
 #define RTC_TAMPCR_TAMPXIE         RTC_TAMPER_X_INTERRUPT
+#endif /* STM32H7 */
 
+#if defined(STM32F7) || defined(STM32H7)
 #define RTC_TAMPER1_INTERRUPT      RTC_IT_TAMP1
 #define RTC_TAMPER2_INTERRUPT      RTC_IT_TAMP2
 #define RTC_TAMPER3_INTERRUPT      RTC_IT_TAMP3
-#define RTC_ALL_TAMPER_INTERRUPT   RTC_IT_TAMPALL
-#endif /* STM32H7 */
+#define RTC_ALL_TAMPER_INTERRUPT   RTC_IT_TAMP
+#endif /* STM32F7 || STM32H7 */
 
 /**
   * @}
@@ -1690,6 +1717,79 @@
 
 #define PWR_MODE_EVT                                  PWR_PVD_MODE_NORMAL
 
+#if defined (STM32U5)
+#define PWR_SRAM1_PAGE1_STOP_RETENTION                PWR_SRAM1_PAGE1_STOP
+#define PWR_SRAM1_PAGE2_STOP_RETENTION                PWR_SRAM1_PAGE2_STOP
+#define PWR_SRAM1_PAGE3_STOP_RETENTION                PWR_SRAM1_PAGE3_STOP
+#define PWR_SRAM1_PAGE4_STOP_RETENTION                PWR_SRAM1_PAGE4_STOP
+#define PWR_SRAM1_PAGE5_STOP_RETENTION                PWR_SRAM1_PAGE5_STOP
+#define PWR_SRAM1_PAGE6_STOP_RETENTION                PWR_SRAM1_PAGE6_STOP
+#define PWR_SRAM1_PAGE7_STOP_RETENTION                PWR_SRAM1_PAGE7_STOP
+#define PWR_SRAM1_PAGE8_STOP_RETENTION                PWR_SRAM1_PAGE8_STOP
+#define PWR_SRAM1_PAGE9_STOP_RETENTION                PWR_SRAM1_PAGE9_STOP
+#define PWR_SRAM1_PAGE10_STOP_RETENTION               PWR_SRAM1_PAGE10_STOP
+#define PWR_SRAM1_PAGE11_STOP_RETENTION               PWR_SRAM1_PAGE11_STOP
+#define PWR_SRAM1_PAGE12_STOP_RETENTION               PWR_SRAM1_PAGE12_STOP
+#define PWR_SRAM1_FULL_STOP_RETENTION                 PWR_SRAM1_FULL_STOP
+
+#define PWR_SRAM2_PAGE1_STOP_RETENTION                PWR_SRAM2_PAGE1_STOP
+#define PWR_SRAM2_PAGE2_STOP_RETENTION                PWR_SRAM2_PAGE2_STOP
+#define PWR_SRAM2_FULL_STOP_RETENTION                 PWR_SRAM2_FULL_STOP
+
+#define PWR_SRAM3_PAGE1_STOP_RETENTION                PWR_SRAM3_PAGE1_STOP
+#define PWR_SRAM3_PAGE2_STOP_RETENTION                PWR_SRAM3_PAGE2_STOP
+#define PWR_SRAM3_PAGE3_STOP_RETENTION                PWR_SRAM3_PAGE3_STOP
+#define PWR_SRAM3_PAGE4_STOP_RETENTION                PWR_SRAM3_PAGE4_STOP
+#define PWR_SRAM3_PAGE5_STOP_RETENTION                PWR_SRAM3_PAGE5_STOP
+#define PWR_SRAM3_PAGE6_STOP_RETENTION                PWR_SRAM3_PAGE6_STOP
+#define PWR_SRAM3_PAGE7_STOP_RETENTION                PWR_SRAM3_PAGE7_STOP
+#define PWR_SRAM3_PAGE8_STOP_RETENTION                PWR_SRAM3_PAGE8_STOP
+#define PWR_SRAM3_PAGE9_STOP_RETENTION                PWR_SRAM3_PAGE9_STOP
+#define PWR_SRAM3_PAGE10_STOP_RETENTION               PWR_SRAM3_PAGE10_STOP
+#define PWR_SRAM3_PAGE11_STOP_RETENTION               PWR_SRAM3_PAGE11_STOP
+#define PWR_SRAM3_PAGE12_STOP_RETENTION               PWR_SRAM3_PAGE12_STOP
+#define PWR_SRAM3_PAGE13_STOP_RETENTION               PWR_SRAM3_PAGE13_STOP
+#define PWR_SRAM3_FULL_STOP_RETENTION                 PWR_SRAM3_FULL_STOP
+
+#define PWR_SRAM4_FULL_STOP_RETENTION                 PWR_SRAM4_FULL_STOP
+
+#define PWR_SRAM5_PAGE1_STOP_RETENTION                PWR_SRAM5_PAGE1_STOP
+#define PWR_SRAM5_PAGE2_STOP_RETENTION                PWR_SRAM5_PAGE2_STOP
+#define PWR_SRAM5_PAGE3_STOP_RETENTION                PWR_SRAM5_PAGE3_STOP
+#define PWR_SRAM5_PAGE4_STOP_RETENTION                PWR_SRAM5_PAGE4_STOP
+#define PWR_SRAM5_PAGE5_STOP_RETENTION                PWR_SRAM5_PAGE5_STOP
+#define PWR_SRAM5_PAGE6_STOP_RETENTION                PWR_SRAM5_PAGE6_STOP
+#define PWR_SRAM5_PAGE7_STOP_RETENTION                PWR_SRAM5_PAGE7_STOP
+#define PWR_SRAM5_PAGE8_STOP_RETENTION                PWR_SRAM5_PAGE8_STOP
+#define PWR_SRAM5_PAGE9_STOP_RETENTION                PWR_SRAM5_PAGE9_STOP
+#define PWR_SRAM5_PAGE10_STOP_RETENTION               PWR_SRAM5_PAGE10_STOP
+#define PWR_SRAM5_PAGE11_STOP_RETENTION               PWR_SRAM5_PAGE11_STOP
+#define PWR_SRAM5_PAGE12_STOP_RETENTION               PWR_SRAM5_PAGE12_STOP
+#define PWR_SRAM5_PAGE13_STOP_RETENTION               PWR_SRAM5_PAGE13_STOP
+#define PWR_SRAM5_FULL_STOP_RETENTION                 PWR_SRAM5_FULL_STOP
+
+#define PWR_ICACHE_FULL_STOP_RETENTION                PWR_ICACHE_FULL_STOP
+#define PWR_DCACHE1_FULL_STOP_RETENTION               PWR_DCACHE1_FULL_STOP
+#define PWR_DCACHE2_FULL_STOP_RETENTION               PWR_DCACHE2_FULL_STOP
+#define PWR_DMA2DRAM_FULL_STOP_RETENTION              PWR_DMA2DRAM_FULL_STOP
+#define PWR_PERIPHRAM_FULL_STOP_RETENTION             PWR_PERIPHRAM_FULL_STOP
+#define PWR_PKA32RAM_FULL_STOP_RETENTION              PWR_PKA32RAM_FULL_STOP
+#define PWR_GRAPHICPRAM_FULL_STOP_RETENTION           PWR_GRAPHICPRAM_FULL_STOP
+#define PWR_DSIRAM_FULL_STOP_RETENTION                PWR_DSIRAM_FULL_STOP
+
+#define PWR_SRAM2_PAGE1_STANDBY_RETENTION             PWR_SRAM2_PAGE1_STANDBY
+#define PWR_SRAM2_PAGE2_STANDBY_RETENTION             PWR_SRAM2_PAGE2_STANDBY
+#define PWR_SRAM2_FULL_STANDBY_RETENTION              PWR_SRAM2_FULL_STANDBY
+
+#define PWR_SRAM1_FULL_RUN_RETENTION                  PWR_SRAM1_FULL_RUN
+#define PWR_SRAM2_FULL_RUN_RETENTION                  PWR_SRAM2_FULL_RUN
+#define PWR_SRAM3_FULL_RUN_RETENTION                  PWR_SRAM3_FULL_RUN
+#define PWR_SRAM4_FULL_RUN_RETENTION                  PWR_SRAM4_FULL_RUN
+#define PWR_SRAM5_FULL_RUN_RETENTION                  PWR_SRAM5_FULL_RUN
+
+#define PWR_ALL_RAM_RUN_RETENTION_MASK                PWR_ALL_RAM_RUN_MASK
+#endif
+
 /**
   * @}
  */
@@ -3323,7 +3423,7 @@
 #define RCC_MCOSOURCE_PLLCLK_NODIV  RCC_MCO1SOURCE_PLLCLK
 #define RCC_MCOSOURCE_PLLCLK_DIV2   RCC_MCO1SOURCE_PLLCLK_DIV2
 
-#if defined(STM32L4) || defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5) || defined(STM32WL)
+#if defined(STM32L4) || defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5) || defined(STM32WL) || defined(STM32C0)
 #define RCC_RTCCLKSOURCE_NO_CLK     RCC_RTCCLKSOURCE_NONE
 #else
 #define RCC_RTCCLKSOURCE_NONE       RCC_RTCCLKSOURCE_NO_CLK
@@ -3436,8 +3536,8 @@
 #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 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
@@ -3453,13 +3553,20 @@
 #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
+#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
+#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE       __HAL_RCC_ADC12_CLK_SLEEP_ENABLE
+#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE      __HAL_RCC_ADC12_CLK_SLEEP_DISABLE
+#define __HAL_RCC_GET_CLK48_SOURCE            __HAL_RCC_GET_ICLK_SOURCE
+#define __HAL_RCC_PLLFRACN_ENABLE             __HAL_RCC_PLL_FRACN_ENABLE
+#define __HAL_RCC_PLLFRACN_DISABLE            __HAL_RCC_PLL_FRACN_DISABLE
+#define __HAL_RCC_PLLFRACN_CONFIG             __HAL_RCC_PLL_FRACN_CONFIG
+#define IS_RCC_PLLFRACN_VALUE                 IS_RCC_PLL_FRACN_VALUE
+#endif /* STM32U5 */
 
 /**
   * @}
@@ -3477,7 +3584,9 @@
 /** @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) || defined (STM32U5)
+#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx)|| \
+    defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL) || defined (STM32U5) || \
+    defined (STM32C0)
 #else
 #define __HAL_RTC_CLEAR_FLAG                      __HAL_RTC_EXTI_CLEAR_FLAG
 #endif
@@ -3878,6 +3987,16 @@
   * @}
   */
 
+/** @defgroup HAL_Generic_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose
+  * @{
+  */
+#if defined (STM32F7)
+#define ART_ACCLERATOR_ENABLE ART_ACCELERATOR_ENABLE
+#endif /* STM32F7 */
+/**
+  * @}
+  */
+
 /** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose
   * @{
   */
diff --git a/Inc/Legacy/stm32f7xx_hal_eth_legacy.h b/Inc/Legacy/stm32f7xx_hal_eth_legacy.h
new file mode 100644
index 0000000..8c18ea3
--- /dev/null
+++ b/Inc/Legacy/stm32f7xx_hal_eth_legacy.h
@@ -0,0 +1,2212 @@
+/**
+  ******************************************************************************
+  * @file    stm32f7xx_hal_eth_legacy.h
+  * @author  MCD Application Team
+  * @brief   Header file of ETH HAL 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.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F7xx_HAL_ETH_LEGACY_H
+#define __STM32F7xx_HAL_ETH_LEGACY_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f7xx_hal_def.h"
+
+#if defined (ETH)
+
+/** @addtogroup STM32F7xx_HAL_Driver
+  * @{
+  */
+
+/** @addtogroup ETH
+  * @{
+  */
+
+/** @addtogroup ETH_Private_Macros
+  * @{
+  */
+#define IS_ETH_PHY_ADDRESS(ADDRESS) ((ADDRESS) <= 0x20)
+#define IS_ETH_AUTONEGOTIATION(CMD) (((CMD) == ETH_AUTONEGOTIATION_ENABLE) || \
+                                     ((CMD) == ETH_AUTONEGOTIATION_DISABLE))
+#define IS_ETH_SPEED(SPEED) (((SPEED) == ETH_SPEED_10M) || \
+                             ((SPEED) == ETH_SPEED_100M))
+#define IS_ETH_DUPLEX_MODE(MODE)  (((MODE) == ETH_MODE_FULLDUPLEX) || \
+                                  ((MODE) == ETH_MODE_HALFDUPLEX))
+#define IS_ETH_RX_MODE(MODE)    (((MODE) == ETH_RXPOLLING_MODE) || \
+                                 ((MODE) == ETH_RXINTERRUPT_MODE))
+#define IS_ETH_CHECKSUM_MODE(MODE)    (((MODE) == ETH_CHECKSUM_BY_HARDWARE) || \
+                                      ((MODE) == ETH_CHECKSUM_BY_SOFTWARE))
+#define IS_ETH_MEDIA_INTERFACE(MODE)         (((MODE) == ETH_MEDIA_INTERFACE_MII) || \
+                                              ((MODE) == ETH_MEDIA_INTERFACE_RMII))
+#define IS_ETH_WATCHDOG(CMD) (((CMD) == ETH_WATCHDOG_ENABLE) || \
+                              ((CMD) == ETH_WATCHDOG_DISABLE))
+#define IS_ETH_JABBER(CMD) (((CMD) == ETH_JABBER_ENABLE) || \
+                            ((CMD) == ETH_JABBER_DISABLE))
+#define IS_ETH_INTER_FRAME_GAP(GAP) (((GAP) == ETH_INTERFRAMEGAP_96BIT) || \
+                                     ((GAP) == ETH_INTERFRAMEGAP_88BIT) || \
+                                     ((GAP) == ETH_INTERFRAMEGAP_80BIT) || \
+                                     ((GAP) == ETH_INTERFRAMEGAP_72BIT) || \
+                                     ((GAP) == ETH_INTERFRAMEGAP_64BIT) || \
+                                     ((GAP) == ETH_INTERFRAMEGAP_56BIT) || \
+                                     ((GAP) == ETH_INTERFRAMEGAP_48BIT) || \
+                                     ((GAP) == ETH_INTERFRAMEGAP_40BIT))
+#define IS_ETH_CARRIER_SENSE(CMD) (((CMD) == ETH_CARRIERSENCE_ENABLE) || \
+                                   ((CMD) == ETH_CARRIERSENCE_DISABLE))
+#define IS_ETH_RECEIVE_OWN(CMD) (((CMD) == ETH_RECEIVEOWN_ENABLE) || \
+                                 ((CMD) == ETH_RECEIVEOWN_DISABLE))
+#define IS_ETH_LOOPBACK_MODE(CMD) (((CMD) == ETH_LOOPBACKMODE_ENABLE) || \
+                                   ((CMD) == ETH_LOOPBACKMODE_DISABLE))
+#define IS_ETH_CHECKSUM_OFFLOAD(CMD) (((CMD) == ETH_CHECKSUMOFFLAOD_ENABLE) || \
+                                      ((CMD) == ETH_CHECKSUMOFFLAOD_DISABLE))
+#define IS_ETH_RETRY_TRANSMISSION(CMD) (((CMD) == ETH_RETRYTRANSMISSION_ENABLE) || \
+                                        ((CMD) == ETH_RETRYTRANSMISSION_DISABLE))
+#define IS_ETH_AUTOMATIC_PADCRC_STRIP(CMD) (((CMD) == ETH_AUTOMATICPADCRCSTRIP_ENABLE) || \
+                                            ((CMD) == ETH_AUTOMATICPADCRCSTRIP_DISABLE))
+#define IS_ETH_BACKOFF_LIMIT(LIMIT) (((LIMIT) == ETH_BACKOFFLIMIT_10) || \
+                                     ((LIMIT) == ETH_BACKOFFLIMIT_8) || \
+                                     ((LIMIT) == ETH_BACKOFFLIMIT_4) || \
+                                     ((LIMIT) == ETH_BACKOFFLIMIT_1))
+#define IS_ETH_DEFERRAL_CHECK(CMD) (((CMD) == ETH_DEFFERRALCHECK_ENABLE) || \
+                                    ((CMD) == ETH_DEFFERRALCHECK_DISABLE))
+#define IS_ETH_RECEIVE_ALL(CMD) (((CMD) == ETH_RECEIVEALL_ENABLE) || \
+                                 ((CMD) == ETH_RECEIVEAll_DISABLE))
+#define IS_ETH_SOURCE_ADDR_FILTER(CMD) (((CMD) == ETH_SOURCEADDRFILTER_NORMAL_ENABLE) || \
+                                        ((CMD) == ETH_SOURCEADDRFILTER_INVERSE_ENABLE) || \
+                                        ((CMD) == ETH_SOURCEADDRFILTER_DISABLE))
+#define IS_ETH_CONTROL_FRAMES(PASS) (((PASS) == ETH_PASSCONTROLFRAMES_BLOCKALL) || \
+                                     ((PASS) == ETH_PASSCONTROLFRAMES_FORWARDALL) || \
+                                     ((PASS) == ETH_PASSCONTROLFRAMES_FORWARDPASSEDADDRFILTER))
+#define IS_ETH_BROADCAST_FRAMES_RECEPTION(CMD) (((CMD) == ETH_BROADCASTFRAMESRECEPTION_ENABLE) || \
+                                                ((CMD) == ETH_BROADCASTFRAMESRECEPTION_DISABLE))
+#define IS_ETH_DESTINATION_ADDR_FILTER(FILTER) (((FILTER) == ETH_DESTINATIONADDRFILTER_NORMAL) || \
+                                                ((FILTER) == ETH_DESTINATIONADDRFILTER_INVERSE))
+#define IS_ETH_PROMISCUOUS_MODE(CMD) (((CMD) == ETH_PROMISCUOUS_MODE_ENABLE) || \
+                                      ((CMD) == ETH_PROMISCUOUS_MODE_DISABLE))
+#define IS_ETH_MULTICAST_FRAMES_FILTER(FILTER) (((FILTER) == ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE) || \
+                                                ((FILTER) == ETH_MULTICASTFRAMESFILTER_HASHTABLE) || \
+                                                ((FILTER) == ETH_MULTICASTFRAMESFILTER_PERFECT) || \
+                                                ((FILTER) == ETH_MULTICASTFRAMESFILTER_NONE))
+#define IS_ETH_UNICAST_FRAMES_FILTER(FILTER) (((FILTER) == ETH_UNICASTFRAMESFILTER_PERFECTHASHTABLE) || \
+                                              ((FILTER) == ETH_UNICASTFRAMESFILTER_HASHTABLE) || \
+                                              ((FILTER) == ETH_UNICASTFRAMESFILTER_PERFECT))
+#define IS_ETH_PAUSE_TIME(TIME) ((TIME) <= 0xFFFF)
+#define IS_ETH_ZEROQUANTA_PAUSE(CMD)   (((CMD) == ETH_ZEROQUANTAPAUSE_ENABLE) || \
+                                        ((CMD) == ETH_ZEROQUANTAPAUSE_DISABLE))
+#define IS_ETH_PAUSE_LOW_THRESHOLD(THRESHOLD) (((THRESHOLD) == ETH_PAUSELOWTHRESHOLD_MINUS4) || \
+                                               ((THRESHOLD) == ETH_PAUSELOWTHRESHOLD_MINUS28) || \
+                                               ((THRESHOLD) == ETH_PAUSELOWTHRESHOLD_MINUS144) || \
+                                               ((THRESHOLD) == ETH_PAUSELOWTHRESHOLD_MINUS256))
+#define IS_ETH_UNICAST_PAUSE_FRAME_DETECT(CMD) (((CMD) == ETH_UNICASTPAUSEFRAMEDETECT_ENABLE) || \
+                                                ((CMD) == ETH_UNICASTPAUSEFRAMEDETECT_DISABLE))
+#define IS_ETH_RECEIVE_FLOWCONTROL(CMD) (((CMD) == ETH_RECEIVEFLOWCONTROL_ENABLE) || \
+                                         ((CMD) == ETH_RECEIVEFLOWCONTROL_DISABLE))
+#define IS_ETH_TRANSMIT_FLOWCONTROL(CMD) (((CMD) == ETH_TRANSMITFLOWCONTROL_ENABLE) || \
+                                          ((CMD) == ETH_TRANSMITFLOWCONTROL_DISABLE))
+#define IS_ETH_VLAN_TAG_COMPARISON(COMPARISON) (((COMPARISON) == ETH_VLANTAGCOMPARISON_12BIT) || \
+                                                ((COMPARISON) == ETH_VLANTAGCOMPARISON_16BIT))
+#define IS_ETH_VLAN_TAG_IDENTIFIER(IDENTIFIER) ((IDENTIFIER) <= 0xFFFF)
+#define IS_ETH_MAC_ADDRESS0123(ADDRESS) (((ADDRESS) == ETH_MAC_ADDRESS0) || \
+                                         ((ADDRESS) == ETH_MAC_ADDRESS1) || \
+                                         ((ADDRESS) == ETH_MAC_ADDRESS2) || \
+                                         ((ADDRESS) == ETH_MAC_ADDRESS3))
+#define IS_ETH_MAC_ADDRESS123(ADDRESS) (((ADDRESS) == ETH_MAC_ADDRESS1) || \
+                                        ((ADDRESS) == ETH_MAC_ADDRESS2) || \
+                                        ((ADDRESS) == ETH_MAC_ADDRESS3))
+#define IS_ETH_MAC_ADDRESS_FILTER(FILTER) (((FILTER) == ETH_MAC_ADDRESSFILTER_SA) || \
+                                           ((FILTER) == ETH_MAC_ADDRESSFILTER_DA))
+#define IS_ETH_MAC_ADDRESS_MASK(MASK) (((MASK) == ETH_MAC_ADDRESSMASK_BYTE6) || \
+                                       ((MASK) == ETH_MAC_ADDRESSMASK_BYTE5) || \
+                                       ((MASK) == ETH_MAC_ADDRESSMASK_BYTE4) || \
+                                       ((MASK) == ETH_MAC_ADDRESSMASK_BYTE3) || \
+                                       ((MASK) == ETH_MAC_ADDRESSMASK_BYTE2) || \
+                                       ((MASK) == ETH_MAC_ADDRESSMASK_BYTE1))
+#define IS_ETH_DROP_TCPIP_CHECKSUM_FRAME(CMD) (((CMD) == ETH_DROPTCPIPCHECKSUMERRORFRAME_ENABLE) || \
+                                               ((CMD) == ETH_DROPTCPIPCHECKSUMERRORFRAME_DISABLE))
+#define IS_ETH_RECEIVE_STORE_FORWARD(CMD) (((CMD) == ETH_RECEIVESTOREFORWARD_ENABLE) || \
+                                           ((CMD) == ETH_RECEIVESTOREFORWARD_DISABLE))
+#define IS_ETH_FLUSH_RECEIVE_FRAME(CMD) (((CMD) == ETH_FLUSHRECEIVEDFRAME_ENABLE) || \
+                                         ((CMD) == ETH_FLUSHRECEIVEDFRAME_DISABLE))
+#define IS_ETH_TRANSMIT_STORE_FORWARD(CMD) (((CMD) == ETH_TRANSMITSTOREFORWARD_ENABLE) || \
+                                            ((CMD) == ETH_TRANSMITSTOREFORWARD_DISABLE))
+#define IS_ETH_TRANSMIT_THRESHOLD_CONTROL(THRESHOLD) (((THRESHOLD) == ETH_TRANSMITTHRESHOLDCONTROL_64BYTES) || \
+                                                      ((THRESHOLD) == ETH_TRANSMITTHRESHOLDCONTROL_128BYTES) || \
+                                                      ((THRESHOLD) == ETH_TRANSMITTHRESHOLDCONTROL_192BYTES) || \
+                                                      ((THRESHOLD) == ETH_TRANSMITTHRESHOLDCONTROL_256BYTES) || \
+                                                      ((THRESHOLD) == ETH_TRANSMITTHRESHOLDCONTROL_40BYTES) || \
+                                                      ((THRESHOLD) == ETH_TRANSMITTHRESHOLDCONTROL_32BYTES) || \
+                                                      ((THRESHOLD) == ETH_TRANSMITTHRESHOLDCONTROL_24BYTES) || \
+                                                      ((THRESHOLD) == ETH_TRANSMITTHRESHOLDCONTROL_16BYTES))
+#define IS_ETH_FORWARD_ERROR_FRAMES(CMD) (((CMD) == ETH_FORWARDERRORFRAMES_ENABLE) || \
+                                          ((CMD) == ETH_FORWARDERRORFRAMES_DISABLE))
+#define IS_ETH_FORWARD_UNDERSIZED_GOOD_FRAMES(CMD) (((CMD) == ETH_FORWARDUNDERSIZEDGOODFRAMES_ENABLE) || \
+                                                    ((CMD) == ETH_FORWARDUNDERSIZEDGOODFRAMES_DISABLE))
+#define IS_ETH_RECEIVE_THRESHOLD_CONTROL(THRESHOLD) (((THRESHOLD) == ETH_RECEIVEDTHRESHOLDCONTROL_64BYTES) || \
+                                                     ((THRESHOLD) == ETH_RECEIVEDTHRESHOLDCONTROL_32BYTES) || \
+                                                     ((THRESHOLD) == ETH_RECEIVEDTHRESHOLDCONTROL_96BYTES) || \
+                                                     ((THRESHOLD) == ETH_RECEIVEDTHRESHOLDCONTROL_128BYTES))
+#define IS_ETH_SECOND_FRAME_OPERATE(CMD) (((CMD) == ETH_SECONDFRAMEOPERARTE_ENABLE) || \
+                                          ((CMD) == ETH_SECONDFRAMEOPERARTE_DISABLE))
+#define IS_ETH_ADDRESS_ALIGNED_BEATS(CMD) (((CMD) == ETH_ADDRESSALIGNEDBEATS_ENABLE) || \
+                                           ((CMD) == ETH_ADDRESSALIGNEDBEATS_DISABLE))
+#define IS_ETH_FIXED_BURST(CMD) (((CMD) == ETH_FIXEDBURST_ENABLE) || \
+                                 ((CMD) == ETH_FIXEDBURST_DISABLE))
+#define IS_ETH_RXDMA_BURST_LENGTH(LENGTH) (((LENGTH) == ETH_RXDMABURSTLENGTH_1BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_2BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_4BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_8BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_16BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_32BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_4XPBL_4BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_4XPBL_8BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_4XPBL_16BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_4XPBL_32BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_4XPBL_64BEAT) || \
+                                           ((LENGTH) == ETH_RXDMABURSTLENGTH_4XPBL_128BEAT))
+#define IS_ETH_TXDMA_BURST_LENGTH(LENGTH) (((LENGTH) == ETH_TXDMABURSTLENGTH_1BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_2BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_4BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_8BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_16BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_32BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_4XPBL_4BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_4XPBL_8BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_4XPBL_16BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_4XPBL_32BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_4XPBL_64BEAT) || \
+                                           ((LENGTH) == ETH_TXDMABURSTLENGTH_4XPBL_128BEAT))
+#define IS_ETH_DMA_DESC_SKIP_LENGTH(LENGTH) ((LENGTH) <= 0x1F)
+#define IS_ETH_DMA_ARBITRATION_ROUNDROBIN_RXTX(RATIO) (((RATIO) == ETH_DMAARBITRATION_ROUNDROBIN_RXTX_1_1) || \
+                                                       ((RATIO) == ETH_DMAARBITRATION_ROUNDROBIN_RXTX_2_1) || \
+                                                       ((RATIO) == ETH_DMAARBITRATION_ROUNDROBIN_RXTX_3_1) || \
+                                                       ((RATIO) == ETH_DMAARBITRATION_ROUNDROBIN_RXTX_4_1) || \
+                                                       ((RATIO) == ETH_DMAARBITRATION_RXPRIORTX))
+#define IS_ETH_DMATXDESC_GET_FLAG(FLAG) (((FLAG) == ETH_DMATXDESC_OWN) || \
+                                         ((FLAG) == ETH_DMATXDESC_IC) || \
+                                         ((FLAG) == ETH_DMATXDESC_LS) || \
+                                         ((FLAG) == ETH_DMATXDESC_FS) || \
+                                         ((FLAG) == ETH_DMATXDESC_DC) || \
+                                         ((FLAG) == ETH_DMATXDESC_DP) || \
+                                         ((FLAG) == ETH_DMATXDESC_TTSE) || \
+                                         ((FLAG) == ETH_DMATXDESC_TER) || \
+                                         ((FLAG) == ETH_DMATXDESC_TCH) || \
+                                         ((FLAG) == ETH_DMATXDESC_TTSS) || \
+                                         ((FLAG) == ETH_DMATXDESC_IHE) || \
+                                         ((FLAG) == ETH_DMATXDESC_ES) || \
+                                         ((FLAG) == ETH_DMATXDESC_JT) || \
+                                         ((FLAG) == ETH_DMATXDESC_FF) || \
+                                         ((FLAG) == ETH_DMATXDESC_PCE) || \
+                                         ((FLAG) == ETH_DMATXDESC_LCA) || \
+                                         ((FLAG) == ETH_DMATXDESC_NC) || \
+                                         ((FLAG) == ETH_DMATXDESC_LCO) || \
+                                         ((FLAG) == ETH_DMATXDESC_EC) || \
+                                         ((FLAG) == ETH_DMATXDESC_VF) || \
+                                         ((FLAG) == ETH_DMATXDESC_CC) || \
+                                         ((FLAG) == ETH_DMATXDESC_ED) || \
+                                         ((FLAG) == ETH_DMATXDESC_UF) || \
+                                         ((FLAG) == ETH_DMATXDESC_DB))
+#define IS_ETH_DMA_TXDESC_SEGMENT(SEGMENT) (((SEGMENT) == ETH_DMATXDESC_LASTSEGMENTS) || \
+                                            ((SEGMENT) == ETH_DMATXDESC_FIRSTSEGMENT))
+#define IS_ETH_DMA_TXDESC_CHECKSUM(CHECKSUM) (((CHECKSUM) == ETH_DMATXDESC_CHECKSUMBYPASS) || \
+                                              ((CHECKSUM) == ETH_DMATXDESC_CHECKSUMIPV4HEADER) || \
+                                              ((CHECKSUM) == ETH_DMATXDESC_CHECKSUMTCPUDPICMPSEGMENT) || \
+                                              ((CHECKSUM) == ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL))
+#define IS_ETH_DMATXDESC_BUFFER_SIZE(SIZE) ((SIZE) <= 0x1FFF)
+#define IS_ETH_DMARXDESC_GET_FLAG(FLAG) (((FLAG) == ETH_DMARXDESC_OWN) || \
+                                         ((FLAG) == ETH_DMARXDESC_AFM) || \
+                                         ((FLAG) == ETH_DMARXDESC_ES) || \
+                                         ((FLAG) == ETH_DMARXDESC_DE) || \
+                                         ((FLAG) == ETH_DMARXDESC_SAF) || \
+                                         ((FLAG) == ETH_DMARXDESC_LE) || \
+                                         ((FLAG) == ETH_DMARXDESC_OE) || \
+                                         ((FLAG) == ETH_DMARXDESC_VLAN) || \
+                                         ((FLAG) == ETH_DMARXDESC_FS) || \
+                                         ((FLAG) == ETH_DMARXDESC_LS) || \
+                                         ((FLAG) == ETH_DMARXDESC_IPV4HCE) || \
+                                         ((FLAG) == ETH_DMARXDESC_LC) || \
+                                         ((FLAG) == ETH_DMARXDESC_FT) || \
+                                         ((FLAG) == ETH_DMARXDESC_RWT) || \
+                                         ((FLAG) == ETH_DMARXDESC_RE) || \
+                                         ((FLAG) == ETH_DMARXDESC_DBE) || \
+                                         ((FLAG) == ETH_DMARXDESC_CE) || \
+                                         ((FLAG) == ETH_DMARXDESC_MAMPCE))
+#define IS_ETH_DMA_RXDESC_BUFFER(BUFFER) (((BUFFER) == ETH_DMARXDESC_BUFFER1) || \
+                                          ((BUFFER) == ETH_DMARXDESC_BUFFER2))
+#define IS_ETH_PMT_GET_FLAG(FLAG) (((FLAG) == ETH_PMT_FLAG_WUFR) || \
+                                   ((FLAG) == ETH_PMT_FLAG_MPR))
+#define IS_ETH_DMA_FLAG(FLAG) ((((FLAG) & (uint32_t)0xC7FE1800) == 0x00) && ((FLAG) != 0x00))
+#define IS_ETH_DMA_GET_FLAG(FLAG) (((FLAG) == ETH_DMA_FLAG_TST) || ((FLAG) == ETH_DMA_FLAG_PMT) || \
+                                   ((FLAG) == ETH_DMA_FLAG_MMC) || ((FLAG) == ETH_DMA_FLAG_DATATRANSFERERROR) || \
+                                   ((FLAG) == ETH_DMA_FLAG_READWRITEERROR) || ((FLAG) == ETH_DMA_FLAG_ACCESSERROR) || \
+                                   ((FLAG) == ETH_DMA_FLAG_NIS) || ((FLAG) == ETH_DMA_FLAG_AIS) || \
+                                   ((FLAG) == ETH_DMA_FLAG_ER) || ((FLAG) == ETH_DMA_FLAG_FBE) || \
+                                   ((FLAG) == ETH_DMA_FLAG_ET) || ((FLAG) == ETH_DMA_FLAG_RWT) || \
+                                   ((FLAG) == ETH_DMA_FLAG_RPS) || ((FLAG) == ETH_DMA_FLAG_RBU) || \
+                                   ((FLAG) == ETH_DMA_FLAG_R) || ((FLAG) == ETH_DMA_FLAG_TU) || \
+                                   ((FLAG) == ETH_DMA_FLAG_RO) || ((FLAG) == ETH_DMA_FLAG_TJT) || \
+                                   ((FLAG) == ETH_DMA_FLAG_TBU) || ((FLAG) == ETH_DMA_FLAG_TPS) || \
+                                   ((FLAG) == ETH_DMA_FLAG_T))
+#define IS_ETH_MAC_IT(IT) ((((IT) & (uint32_t)0xFFFFFDF1) == 0x00) && ((IT) != 0x00))
+#define IS_ETH_MAC_GET_IT(IT) (((IT) == ETH_MAC_IT_TST) || ((IT) == ETH_MAC_IT_MMCT) || \
+                               ((IT) == ETH_MAC_IT_MMCR) || ((IT) == ETH_MAC_IT_MMC) || \
+                               ((IT) == ETH_MAC_IT_PMT))
+#define IS_ETH_MAC_GET_FLAG(FLAG) (((FLAG) == ETH_MAC_FLAG_TST) || ((FLAG) == ETH_MAC_FLAG_MMCT) || \
+                                   ((FLAG) == ETH_MAC_FLAG_MMCR) || ((FLAG) == ETH_MAC_FLAG_MMC) || \
+                                   ((FLAG) == ETH_MAC_FLAG_PMT))
+#define IS_ETH_DMA_IT(IT) ((((IT) & (uint32_t)0xC7FE1800) == 0x00) && ((IT) != 0x00))
+#define IS_ETH_DMA_GET_IT(IT) (((IT) == ETH_DMA_IT_TST) || ((IT) == ETH_DMA_IT_PMT) || \
+                               ((IT) == ETH_DMA_IT_MMC) || ((IT) == ETH_DMA_IT_NIS) || \
+                               ((IT) == ETH_DMA_IT_AIS) || ((IT) == ETH_DMA_IT_ER) || \
+                               ((IT) == ETH_DMA_IT_FBE) || ((IT) == ETH_DMA_IT_ET) || \
+                               ((IT) == ETH_DMA_IT_RWT) || ((IT) == ETH_DMA_IT_RPS) || \
+                               ((IT) == ETH_DMA_IT_RBU) || ((IT) == ETH_DMA_IT_R) || \
+                               ((IT) == ETH_DMA_IT_TU) || ((IT) == ETH_DMA_IT_RO) || \
+                               ((IT) == ETH_DMA_IT_TJT) || ((IT) == ETH_DMA_IT_TBU) || \
+                               ((IT) == ETH_DMA_IT_TPS) || ((IT) == ETH_DMA_IT_T))
+#define IS_ETH_DMA_GET_OVERFLOW(OVERFLOW) (((OVERFLOW) == ETH_DMA_OVERFLOW_RXFIFOCOUNTER) || \
+                                           ((OVERFLOW) == ETH_DMA_OVERFLOW_MISSEDFRAMECOUNTER))
+#define IS_ETH_MMC_IT(IT) (((((IT) & (uint32_t)0xFFDF3FFF) == 0x00) || (((IT) & (uint32_t)0xEFFDFF9F) == 0x00)) && \
+                           ((IT) != 0x00))
+#define IS_ETH_MMC_GET_IT(IT) (((IT) == ETH_MMC_IT_TGF) || ((IT) == ETH_MMC_IT_TGFMSC) || \
+                               ((IT) == ETH_MMC_IT_TGFSC) || ((IT) == ETH_MMC_IT_RGUF) || \
+                               ((IT) == ETH_MMC_IT_RFAE) || ((IT) == ETH_MMC_IT_RFCE))
+#define IS_ETH_ENHANCED_DESCRIPTOR_FORMAT(CMD) (((CMD) == ETH_DMAENHANCEDDESCRIPTOR_ENABLE) || \
+                                                ((CMD) == ETH_DMAENHANCEDDESCRIPTOR_DISABLE))
+
+
+/**
+  * @}
+  */
+
+/** @addtogroup ETH_Private_Defines
+  * @{
+  */
+/* Delay to wait when writing to some Ethernet registers */
+#define ETH_REG_WRITE_DELAY ((uint32_t)0x00000001U)
+
+/* Ethernet Errors */
+#define  ETH_SUCCESS            ((uint32_t)0U)
+#define  ETH_ERROR              ((uint32_t)1U)
+
+/* Ethernet DMA Tx descriptors Collision Count Shift */
+#define  ETH_DMATXDESC_COLLISION_COUNTSHIFT         ((uint32_t)3U)
+
+/* Ethernet DMA Tx descriptors Buffer2 Size Shift */
+#define  ETH_DMATXDESC_BUFFER2_SIZESHIFT           ((uint32_t)16U)
+
+/* Ethernet DMA Rx descriptors Frame Length Shift */
+#define  ETH_DMARXDESC_FRAME_LENGTHSHIFT           ((uint32_t)16U)
+
+/* Ethernet DMA Rx descriptors Buffer2 Size Shift */
+#define  ETH_DMARXDESC_BUFFER2_SIZESHIFT           ((uint32_t)16U)
+
+/* Ethernet DMA Rx descriptors Frame length Shift */
+#define  ETH_DMARXDESC_FRAMELENGTHSHIFT            ((uint32_t)16)
+
+/* Ethernet MAC address offsets */
+#define ETH_MAC_ADDR_HBASE    (uint32_t)(ETH_MAC_BASE + (uint32_t)0x40U)  /* Ethernet MAC address high offset */
+#define ETH_MAC_ADDR_LBASE    (uint32_t)(ETH_MAC_BASE + (uint32_t)0x44U)  /* Ethernet MAC address low offset */
+
+/* Ethernet MACMIIAR register Mask */
+#define ETH_MACMIIAR_CR_MASK    ((uint32_t)0xFFFFFFE3U)
+
+/* Ethernet MACCR register Mask */
+#define ETH_MACCR_CLEAR_MASK    ((uint32_t)0xFF20810FU)
+
+/* Ethernet MACFCR register Mask */
+#define ETH_MACFCR_CLEAR_MASK   ((uint32_t)0x0000FF41U)
+
+/* Ethernet DMAOMR register Mask */
+#define ETH_DMAOMR_CLEAR_MASK   ((uint32_t)0xF8DE3F23U)
+
+/* Ethernet Remote Wake-up frame register length */
+#define ETH_WAKEUP_REGISTER_LENGTH      8U
+
+/* Ethernet Missed frames counter Shift */
+#define  ETH_DMA_RX_OVERFLOW_MISSEDFRAMES_COUNTERSHIFT     17U
+ /**
+  * @}
+  */
+
+/* Exported types ------------------------------------------------------------*/
+/** @defgroup ETH_Exported_Types ETH Exported Types
+  * @{
+  */
+
+/**
+  * @brief  HAL State structures definition
+  */
+typedef enum
+{
+  HAL_ETH_STATE_RESET             = 0x00U,    /*!< Peripheral not yet Initialized or disabled         */
+  HAL_ETH_STATE_READY             = 0x01U,    /*!< Peripheral Initialized and ready for use           */
+  HAL_ETH_STATE_BUSY              = 0x02U,    /*!< an internal process is ongoing                     */
+  HAL_ETH_STATE_BUSY_TX           = 0x12U,    /*!< Data Transmission process is ongoing               */
+  HAL_ETH_STATE_BUSY_RX           = 0x22U,    /*!< Data Reception process is ongoing                  */
+  HAL_ETH_STATE_BUSY_TX_RX        = 0x32U,    /*!< Data Transmission and Reception process is ongoing */
+  HAL_ETH_STATE_BUSY_WR           = 0x42U,    /*!< Write process is ongoing                           */
+  HAL_ETH_STATE_BUSY_RD           = 0x82U,    /*!< Read process is ongoing                            */
+  HAL_ETH_STATE_TIMEOUT           = 0x03U,    /*!< Timeout state                                      */
+  HAL_ETH_STATE_ERROR             = 0x04U     /*!< Reception process is ongoing                       */
+}HAL_ETH_StateTypeDef;
+
+/**
+  * @brief  ETH Init Structure definition
+  */
+
+typedef struct
+{
+  uint32_t             AutoNegotiation;           /*!< Selects or not the AutoNegotiation mode for the external PHY
+                                                           The AutoNegotiation allows an automatic setting of the Speed (10/100Mbps)
+                                                           and the mode (half/full-duplex).
+                                                           This parameter can be a value of @ref ETH_AutoNegotiation */
+
+  uint32_t             Speed;                     /*!< Sets the Ethernet speed: 10/100 Mbps.
+                                                           This parameter can be a value of @ref ETH_Speed */
+
+  uint32_t             DuplexMode;                /*!< Selects the MAC duplex mode: Half-Duplex or Full-Duplex mode
+                                                           This parameter can be a value of @ref ETH_Duplex_Mode */
+
+  uint16_t             PhyAddress;                /*!< Ethernet PHY address.
+                                                           This parameter must be a number between Min_Data = 0 and Max_Data = 32 */
+
+  uint8_t             *MACAddr;                   /*!< MAC Address of used Hardware: must be pointer on an array of 6 bytes */
+
+  uint32_t             RxMode;                    /*!< Selects the Ethernet Rx mode: Polling mode, Interrupt mode.
+                                                           This parameter can be a value of @ref ETH_Rx_Mode */
+
+  uint32_t             ChecksumMode;              /*!< Selects if the checksum is check by hardware or by software.
+                                                         This parameter can be a value of @ref ETH_Checksum_Mode */
+
+  uint32_t             MediaInterface    ;               /*!< Selects the media-independent interface or the reduced media-independent interface.
+                                                         This parameter can be a value of @ref ETH_Media_Interface */
+
+} ETH_InitTypeDef;
+
+
+ /**
+  * @brief  ETH MAC Configuration Structure definition
+  */
+
+typedef struct
+{
+  uint32_t             Watchdog;                  /*!< Selects or not the Watchdog timer
+                                                           When enabled, the MAC allows no more then 2048 bytes to be received.
+                                                           When disabled, the MAC can receive up to 16384 bytes.
+                                                           This parameter can be a value of @ref ETH_Watchdog */
+
+  uint32_t             Jabber;                    /*!< Selects or not Jabber timer
+                                                           When enabled, the MAC allows no more then 2048 bytes to be sent.
+                                                           When disabled, the MAC can send up to 16384 bytes.
+                                                           This parameter can be a value of @ref ETH_Jabber */
+
+  uint32_t             InterFrameGap;             /*!< Selects the minimum IFG between frames during transmission.
+                                                           This parameter can be a value of @ref ETH_Inter_Frame_Gap */
+
+  uint32_t             CarrierSense;              /*!< Selects or not the Carrier Sense.
+                                                           This parameter can be a value of @ref ETH_Carrier_Sense */
+
+  uint32_t             ReceiveOwn;                /*!< Selects or not the ReceiveOwn,
+                                                           ReceiveOwn allows the reception of frames when the TX_EN signal is asserted
+                                                           in Half-Duplex mode.
+                                                           This parameter can be a value of @ref ETH_Receive_Own */
+
+  uint32_t             LoopbackMode;              /*!< Selects or not the internal MAC MII Loopback mode.
+                                                           This parameter can be a value of @ref ETH_Loop_Back_Mode */
+
+  uint32_t             ChecksumOffload;           /*!< Selects or not the IPv4 checksum checking for received frame payloads' TCP/UDP/ICMP headers.
+                                                           This parameter can be a value of @ref ETH_Checksum_Offload */
+
+  uint32_t             RetryTransmission;         /*!< Selects or not the MAC attempt retries transmission, based on the settings of BL,
+                                                           when a collision occurs (Half-Duplex mode).
+                                                           This parameter can be a value of @ref ETH_Retry_Transmission */
+
+  uint32_t             AutomaticPadCRCStrip;      /*!< Selects or not the Automatic MAC Pad/CRC Stripping.
+                                                           This parameter can be a value of @ref ETH_Automatic_Pad_CRC_Strip */
+
+  uint32_t             BackOffLimit;              /*!< Selects the BackOff limit value.
+                                                           This parameter can be a value of @ref ETH_Back_Off_Limit */
+
+  uint32_t             DeferralCheck;             /*!< Selects or not the deferral check function (Half-Duplex mode).
+                                                           This parameter can be a value of @ref ETH_Deferral_Check */
+
+  uint32_t             ReceiveAll;                /*!< Selects or not all frames reception by the MAC (No filtering).
+                                                           This parameter can be a value of @ref ETH_Receive_All */
+
+  uint32_t             SourceAddrFilter;          /*!< Selects the Source Address Filter mode.
+                                                           This parameter can be a value of @ref ETH_Source_Addr_Filter */
+
+  uint32_t             PassControlFrames;         /*!< Sets the forwarding mode of the control frames (including unicast and multicast PAUSE frames)
+                                                           This parameter can be a value of @ref ETH_Pass_Control_Frames */
+
+  uint32_t             BroadcastFramesReception;  /*!< Selects or not the reception of Broadcast Frames.
+                                                           This parameter can be a value of @ref ETH_Broadcast_Frames_Reception */
+
+  uint32_t             DestinationAddrFilter;     /*!< Sets the destination filter mode for both unicast and multicast frames.
+                                                           This parameter can be a value of @ref ETH_Destination_Addr_Filter */
+
+  uint32_t             PromiscuousMode;           /*!< Selects or not the Promiscuous Mode
+                                                           This parameter can be a value of @ref ETH_Promiscuous_Mode */
+
+  uint32_t             MulticastFramesFilter;     /*!< Selects the Multicast Frames filter mode: None/HashTableFilter/PerfectFilter/PerfectHashTableFilter.
+                                                           This parameter can be a value of @ref ETH_Multicast_Frames_Filter */
+
+  uint32_t             UnicastFramesFilter;       /*!< Selects the Unicast Frames filter mode: HashTableFilter/PerfectFilter/PerfectHashTableFilter.
+                                                           This parameter can be a value of @ref ETH_Unicast_Frames_Filter */
+
+  uint32_t             HashTableHigh;             /*!< This field holds the higher 32 bits of Hash table.
+                                                           This parameter must be a number between Min_Data = 0x0 and Max_Data = 0xFFFFFFFF */
+
+  uint32_t             HashTableLow;              /*!< This field holds the lower 32 bits of Hash table.
+                                                           This parameter must be a number between Min_Data = 0x0 and Max_Data = 0xFFFFFFFF  */
+
+  uint32_t             PauseTime;                 /*!< This field holds the value to be used in the Pause Time field in the transmit control frame.
+                                                           This parameter must be a number between Min_Data = 0x0 and Max_Data = 0xFFFF */
+
+  uint32_t             ZeroQuantaPause;           /*!< Selects or not the automatic generation of Zero-Quanta Pause Control frames.
+                                                           This parameter can be a value of @ref ETH_Zero_Quanta_Pause */
+
+  uint32_t             PauseLowThreshold;         /*!< This field configures the threshold of the PAUSE to be checked for
+                                                           automatic retransmission of PAUSE Frame.
+                                                           This parameter can be a value of @ref ETH_Pause_Low_Threshold */
+
+  uint32_t             UnicastPauseFrameDetect;   /*!< Selects or not the MAC detection of the Pause frames (with MAC Address0
+                                                           unicast address and unique multicast address).
+                                                           This parameter can be a value of @ref ETH_Unicast_Pause_Frame_Detect */
+
+  uint32_t             ReceiveFlowControl;        /*!< Enables or disables the MAC to decode the received Pause frame and
+                                                           disable its transmitter for a specified time (Pause Time)
+                                                           This parameter can be a value of @ref ETH_Receive_Flow_Control */
+
+  uint32_t             TransmitFlowControl;       /*!< Enables or disables the MAC to transmit Pause frames (Full-Duplex mode)
+                                                           or the MAC back-pressure operation (Half-Duplex mode)
+                                                           This parameter can be a value of @ref ETH_Transmit_Flow_Control */
+
+  uint32_t             VLANTagComparison;         /*!< Selects the 12-bit VLAN identifier or the complete 16-bit VLAN tag for
+                                                           comparison and filtering.
+                                                           This parameter can be a value of @ref ETH_VLAN_Tag_Comparison */
+
+  uint32_t             VLANTagIdentifier;         /*!< Holds the VLAN tag identifier for receive frames */
+
+} ETH_MACInitTypeDef;
+
+
+/**
+  * @brief  ETH DMA Configuration Structure definition
+  */
+
+typedef struct
+{
+ uint32_t              DropTCPIPChecksumErrorFrame; /*!< Selects or not the Dropping of TCP/IP Checksum Error Frames.
+                                                             This parameter can be a value of @ref ETH_Drop_TCP_IP_Checksum_Error_Frame */
+
+  uint32_t             ReceiveStoreForward;         /*!< Enables or disables the Receive store and forward mode.
+                                                             This parameter can be a value of @ref ETH_Receive_Store_Forward */
+
+  uint32_t             FlushReceivedFrame;          /*!< Enables or disables the flushing of received frames.
+                                                             This parameter can be a value of @ref ETH_Flush_Received_Frame */
+
+  uint32_t             TransmitStoreForward;        /*!< Enables or disables Transmit store and forward mode.
+                                                             This parameter can be a value of @ref ETH_Transmit_Store_Forward */
+
+  uint32_t             TransmitThresholdControl;    /*!< Selects or not the Transmit Threshold Control.
+                                                             This parameter can be a value of @ref ETH_Transmit_Threshold_Control */
+
+  uint32_t             ForwardErrorFrames;          /*!< Selects or not the forward to the DMA of erroneous frames.
+                                                             This parameter can be a value of @ref ETH_Forward_Error_Frames */
+
+  uint32_t             ForwardUndersizedGoodFrames; /*!< Enables or disables the Rx FIFO to forward Undersized frames (frames with no Error
+                                                             and length less than 64 bytes) including pad-bytes and CRC)
+                                                             This parameter can be a value of @ref ETH_Forward_Undersized_Good_Frames */
+
+  uint32_t             ReceiveThresholdControl;     /*!< Selects the threshold level of the Receive FIFO.
+                                                             This parameter can be a value of @ref ETH_Receive_Threshold_Control */
+
+  uint32_t             SecondFrameOperate;          /*!< Selects or not the Operate on second frame mode, which allows the DMA to process a second
+                                                             frame of Transmit data even before obtaining the status for the first frame.
+                                                             This parameter can be a value of @ref ETH_Second_Frame_Operate */
+
+  uint32_t             AddressAlignedBeats;         /*!< Enables or disables the Address Aligned Beats.
+                                                             This parameter can be a value of @ref ETH_Address_Aligned_Beats */
+
+  uint32_t             FixedBurst;                  /*!< Enables or disables the AHB Master interface fixed burst transfers.
+                                                             This parameter can be a value of @ref ETH_Fixed_Burst */
+
+  uint32_t             RxDMABurstLength;            /*!< Indicates the maximum number of beats to be transferred in one Rx DMA transaction.
+                                                             This parameter can be a value of @ref ETH_Rx_DMA_Burst_Length */
+
+  uint32_t             TxDMABurstLength;            /*!< Indicates the maximum number of beats to be transferred in one Tx DMA transaction.
+                                                             This parameter can be a value of @ref ETH_Tx_DMA_Burst_Length */
+
+  uint32_t             EnhancedDescriptorFormat;    /*!< Enables the enhanced descriptor format.
+                                                             This parameter can be a value of @ref ETH_DMA_Enhanced_descriptor_format */
+
+  uint32_t             DescriptorSkipLength;        /*!< Specifies the number of word to skip between two unchained descriptors (Ring mode)
+                                                             This parameter must be a number between Min_Data = 0 and Max_Data = 32 */
+
+  uint32_t             DMAArbitration;              /*!< Selects the DMA Tx/Rx arbitration.
+                                                             This parameter can be a value of @ref ETH_DMA_Arbitration */
+} ETH_DMAInitTypeDef;
+
+
+/**
+  * @brief  ETH DMA Descriptors data structure definition
+  */
+
+typedef struct
+{
+  __IO uint32_t   Status;           /*!< Status */
+
+  uint32_t   ControlBufferSize;     /*!< Control and Buffer1, Buffer2 lengths */
+
+  uint32_t   Buffer1Addr;           /*!< Buffer1 address pointer */
+
+  uint32_t   Buffer2NextDescAddr;   /*!< Buffer2 or next descriptor address pointer */
+
+  /*!< Enhanced Ethernet DMA PTP Descriptors */
+  uint32_t   ExtendedStatus;        /*!< Extended status for PTP receive descriptor */
+
+  uint32_t   Reserved1;             /*!< Reserved */
+
+  uint32_t   TimeStampLow;          /*!< Time Stamp Low value for transmit and receive */
+
+  uint32_t   TimeStampHigh;         /*!< Time Stamp High value for transmit and receive */
+
+} ETH_DMADescTypeDef;
+
+
+/**
+  * @brief  Received Frame Information structure definition
+  */
+typedef struct
+{
+  ETH_DMADescTypeDef *FSRxDesc;          /*!< First Segment Rx Desc */
+
+  ETH_DMADescTypeDef *LSRxDesc;          /*!< Last Segment Rx Desc */
+
+  uint32_t  SegCount;                    /*!< Segment count */
+
+  uint32_t length;                       /*!< Frame length */
+
+  uint32_t buffer;                       /*!< Frame buffer */
+
+} ETH_DMARxFrameInfos;
+
+
+/**
+  * @brief  ETH Handle Structure definition
+  */
+
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+typedef struct __ETH_HandleTypeDef
+#else
+typedef struct
+#endif
+{
+  ETH_TypeDef                *Instance;     /*!< Register base address       */
+
+  ETH_InitTypeDef            Init;          /*!< Ethernet Init Configuration */
+
+  uint32_t                   LinkStatus;    /*!< Ethernet link status        */
+
+  ETH_DMADescTypeDef         *RxDesc;       /*!< Rx descriptor to Get        */
+
+  ETH_DMADescTypeDef         *TxDesc;       /*!< Tx descriptor to Set        */
+
+  ETH_DMARxFrameInfos        RxFrameInfos;  /*!< last Rx frame infos         */
+
+  __IO HAL_ETH_StateTypeDef  State;         /*!< ETH communication state     */
+
+  HAL_LockTypeDef            Lock;          /*!< ETH Lock                    */
+
+  #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+
+  void    (* TxCpltCallback)     ( struct __ETH_HandleTypeDef * heth);  /*!< ETH Tx Complete Callback   */
+  void    (* RxCpltCallback)     ( struct __ETH_HandleTypeDef * heth);  /*!< ETH Rx  Complete Callback   */
+  void    (* DMAErrorCallback)   ( struct __ETH_HandleTypeDef * heth);  /*!< DMA Error Callback      */
+  void    (* MspInitCallback)    ( struct __ETH_HandleTypeDef * heth);  /*!< ETH Msp Init callback       */
+  void    (* MspDeInitCallback)  ( struct __ETH_HandleTypeDef * heth);  /*!< ETH Msp DeInit callback     */
+
+#endif  /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+} ETH_HandleTypeDef;
+
+
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+/**
+  * @brief  HAL ETH Callback ID enumeration definition
+  */
+typedef enum
+{
+  HAL_ETH_MSPINIT_CB_ID            = 0x00U,    /*!< ETH MspInit callback ID            */
+  HAL_ETH_MSPDEINIT_CB_ID          = 0x01U,    /*!< ETH MspDeInit callback ID          */
+  HAL_ETH_TX_COMPLETE_CB_ID        = 0x02U,    /*!< ETH Tx Complete Callback ID        */
+  HAL_ETH_RX_COMPLETE_CB_ID        = 0x03U,    /*!< ETH Rx Complete Callback ID        */
+  HAL_ETH_DMA_ERROR_CB_ID          = 0x04U,    /*!< ETH DMA Error Callback ID          */
+
+}HAL_ETH_CallbackIDTypeDef;
+
+/**
+  * @brief  HAL ETH Callback pointer definition
+  */
+typedef  void (*pETH_CallbackTypeDef)(ETH_HandleTypeDef * heth); /*!< pointer to an ETH callback function */
+
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+ /**
+  * @}
+  */
+
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup ETH_Exported_Constants ETH Exported Constants
+  * @{
+  */
+
+/** @defgroup ETH_Buffers_setting ETH Buffers setting
+  * @{
+  */
+#define ETH_MAX_PACKET_SIZE    ((uint32_t)1524U)    /*!< ETH_HEADER + ETH_EXTRA + ETH_VLAN_TAG + ETH_MAX_ETH_PAYLOAD + ETH_CRC */
+#define ETH_HEADER               ((uint32_t)14U)    /*!< 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */
+#define ETH_CRC                   ((uint32_t)4U)    /*!< Ethernet CRC */
+#define ETH_EXTRA                 ((uint32_t)2U)    /*!< Extra bytes in some cases */
+#define ETH_VLAN_TAG              ((uint32_t)4U)    /*!< optional 802.1q VLAN Tag */
+#define ETH_MIN_ETH_PAYLOAD       ((uint32_t)46U)    /*!< Minimum Ethernet payload size */
+#define ETH_MAX_ETH_PAYLOAD       ((uint32_t)1500U)    /*!< Maximum Ethernet payload size */
+#define ETH_JUMBO_FRAME_PAYLOAD   ((uint32_t)9000U)    /*!< Jumbo frame payload size */
+
+ /* Ethernet driver receive buffers are organized in a chained linked-list, when
+    an Ethernet packet is received, the Rx-DMA will transfer the packet from RxFIFO
+    to the driver receive buffers memory.
+
+    Depending on the size of the received Ethernet packet and the size of
+    each Ethernet driver receive buffer, the received packet can take one or more
+    Ethernet driver receive buffer.
+
+    In below are defined the size of one Ethernet driver receive buffer ETH_RX_BUF_SIZE
+    and the total count of the driver receive buffers ETH_RXBUFNB.
+
+    The configured value for ETH_RX_BUF_SIZE and ETH_RXBUFNB are only provided as
+    example, they can be reconfigured in the application layer to fit the application
+    needs */
+
+/* Here we configure each Ethernet driver receive buffer to fit the Max size Ethernet
+   packet */
+#ifndef ETH_RX_BUF_SIZE
+ #define ETH_RX_BUF_SIZE         ETH_MAX_PACKET_SIZE
+#endif
+
+/* 5 Ethernet driver receive buffers are used (in a chained linked list)*/
+#ifndef ETH_RXBUFNB
+ #define ETH_RXBUFNB             ((uint32_t)5U)     /*  5 Rx buffers of size ETH_RX_BUF_SIZE */
+#endif
+
+
+ /* Ethernet driver transmit buffers are organized in a chained linked-list, when
+    an Ethernet packet is transmitted, Tx-DMA will transfer the packet from the
+    driver transmit buffers memory to the TxFIFO.
+
+    Depending on the size of the Ethernet packet to be transmitted and the size of
+    each Ethernet driver transmit buffer, the packet to be transmitted can take
+    one or more Ethernet driver transmit buffer.
+
+    In below are defined the size of one Ethernet driver transmit buffer ETH_TX_BUF_SIZE
+    and the total count of the driver transmit buffers ETH_TXBUFNB.
+
+    The configured value for ETH_TX_BUF_SIZE and ETH_TXBUFNB are only provided as
+    example, they can be reconfigured in the application layer to fit the application
+    needs */
+
+/* Here we configure each Ethernet driver transmit buffer to fit the Max size Ethernet
+   packet */
+#ifndef ETH_TX_BUF_SIZE
+ #define ETH_TX_BUF_SIZE         ETH_MAX_PACKET_SIZE
+#endif
+
+/* 5 Ethernet driver transmit buffers are used (in a chained linked list)*/
+#ifndef ETH_TXBUFNB
+ #define ETH_TXBUFNB             ((uint32_t)5U)      /* 5  Tx buffers of size ETH_TX_BUF_SIZE */
+#endif
+
+ /**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_TX_Descriptor ETH DMA TX Descriptor
+  * @{
+  */
+
+/*
+   DMA Tx Descriptor
+  -----------------------------------------------------------------------------------------------
+  TDES0 | OWN(31) | CTRL[30:26] | Reserved[25:24] | CTRL[23:20] | Reserved[19:17] | Status[16:0] |
+  -----------------------------------------------------------------------------------------------
+  TDES1 | Reserved[31:29] | Buffer2 ByteCount[28:16] | Reserved[15:13] | Buffer1 ByteCount[12:0] |
+  -----------------------------------------------------------------------------------------------
+  TDES2 |                         Buffer1 Address [31:0]                                         |
+  -----------------------------------------------------------------------------------------------
+  TDES3 |                   Buffer2 Address [31:0] / Next Descriptor Address [31:0]              |
+  -----------------------------------------------------------------------------------------------
+*/
+
+/**
+  * @brief  Bit definition of TDES0 register: DMA Tx descriptor status register
+  */
+#define ETH_DMATXDESC_OWN                     ((uint32_t)0x80000000U)  /*!< OWN bit: descriptor is owned by DMA engine */
+#define ETH_DMATXDESC_IC                      ((uint32_t)0x40000000U)  /*!< Interrupt on Completion */
+#define ETH_DMATXDESC_LS                      ((uint32_t)0x20000000U)  /*!< Last Segment */
+#define ETH_DMATXDESC_FS                      ((uint32_t)0x10000000U)  /*!< First Segment */
+#define ETH_DMATXDESC_DC                      ((uint32_t)0x08000000U)  /*!< Disable CRC */
+#define ETH_DMATXDESC_DP                      ((uint32_t)0x04000000U)  /*!< Disable Padding */
+#define ETH_DMATXDESC_TTSE                    ((uint32_t)0x02000000U)  /*!< Transmit Time Stamp Enable */
+#define ETH_DMATXDESC_CIC                     ((uint32_t)0x00C00000U)  /*!< Checksum Insertion Control: 4 cases */
+#define ETH_DMATXDESC_CIC_BYPASS              ((uint32_t)0x00000000U)  /*!< Do Nothing: Checksum Engine is bypassed */
+#define ETH_DMATXDESC_CIC_IPV4HEADER          ((uint32_t)0x00400000U)  /*!< IPV4 header Checksum Insertion */
+#define ETH_DMATXDESC_CIC_TCPUDPICMP_SEGMENT  ((uint32_t)0x00800000U)  /*!< TCP/UDP/ICMP Checksum Insertion calculated over segment only */
+#define ETH_DMATXDESC_CIC_TCPUDPICMP_FULL     ((uint32_t)0x00C00000U)  /*!< TCP/UDP/ICMP Checksum Insertion fully calculated */
+#define ETH_DMATXDESC_TER                     ((uint32_t)0x00200000U)  /*!< Transmit End of Ring */
+#define ETH_DMATXDESC_TCH                     ((uint32_t)0x00100000U)  /*!< Second Address Chained */
+#define ETH_DMATXDESC_TTSS                    ((uint32_t)0x00020000U)  /*!< Tx Time Stamp Status */
+#define ETH_DMATXDESC_IHE                     ((uint32_t)0x00010000U)  /*!< IP Header Error */
+#define ETH_DMATXDESC_ES                      ((uint32_t)0x00008000U)  /*!< Error summary: OR of the following bits: UE || ED || EC || LCO || NC || LCA || FF || JT */
+#define ETH_DMATXDESC_JT                      ((uint32_t)0x00004000U)  /*!< Jabber Timeout */
+#define ETH_DMATXDESC_FF                      ((uint32_t)0x00002000U)  /*!< Frame Flushed: DMA/MTL flushed the frame due to SW flush */
+#define ETH_DMATXDESC_PCE                     ((uint32_t)0x00001000U)  /*!< Payload Checksum Error */
+#define ETH_DMATXDESC_LCA                     ((uint32_t)0x00000800U)  /*!< Loss of Carrier: carrier lost during transmission */
+#define ETH_DMATXDESC_NC                      ((uint32_t)0x00000400U)  /*!< No Carrier: no carrier signal from the transceiver */
+#define ETH_DMATXDESC_LCO                     ((uint32_t)0x00000200U)  /*!< Late Collision: transmission aborted due to collision */
+#define ETH_DMATXDESC_EC                      ((uint32_t)0x00000100U)  /*!< Excessive Collision: transmission aborted after 16 collisions */
+#define ETH_DMATXDESC_VF                      ((uint32_t)0x00000080U)  /*!< VLAN Frame */
+#define ETH_DMATXDESC_CC                      ((uint32_t)0x00000078U)  /*!< Collision Count */
+#define ETH_DMATXDESC_ED                      ((uint32_t)0x00000004U)  /*!< Excessive Deferral */
+#define ETH_DMATXDESC_UF                      ((uint32_t)0x00000002U)  /*!< Underflow Error: late data arrival from the memory */
+#define ETH_DMATXDESC_DB                      ((uint32_t)0x00000001U)  /*!< Deferred Bit */
+
+/**
+  * @brief  Bit definition of TDES1 register
+  */
+#define ETH_DMATXDESC_TBS2  ((uint32_t)0x1FFF0000U)  /*!< Transmit Buffer2 Size */
+#define ETH_DMATXDESC_TBS1  ((uint32_t)0x00001FFFU)  /*!< Transmit Buffer1 Size */
+
+/**
+  * @brief  Bit definition of TDES2 register
+  */
+#define ETH_DMATXDESC_B1AP  ((uint32_t)0xFFFFFFFFU)  /*!< Buffer1 Address Pointer */
+
+/**
+  * @brief  Bit definition of TDES3 register
+  */
+#define ETH_DMATXDESC_B2AP  ((uint32_t)0xFFFFFFFFU)  /*!< Buffer2 Address Pointer */
+
+  /*---------------------------------------------------------------------------------------------
+  TDES6 |                         Transmit Time Stamp Low [31:0]                                 |
+  -----------------------------------------------------------------------------------------------
+  TDES7 |                         Transmit Time Stamp High [31:0]                                |
+  ----------------------------------------------------------------------------------------------*/
+
+/* Bit definition of TDES6 register */
+ #define ETH_DMAPTPTXDESC_TTSL  ((uint32_t)0xFFFFFFFFU)  /* Transmit Time Stamp Low */
+
+/* Bit definition of TDES7 register */
+ #define ETH_DMAPTPTXDESC_TTSH  ((uint32_t)0xFFFFFFFFU)  /* Transmit Time Stamp High */
+
+/**
+  * @}
+  */
+/** @defgroup ETH_DMA_RX_Descriptor ETH DMA RX Descriptor
+  * @{
+  */
+
+/*
+  DMA Rx Descriptor
+  --------------------------------------------------------------------------------------------------------------------
+  RDES0 | OWN(31) |                                             Status [30:0]                                          |
+  ---------------------------------------------------------------------------------------------------------------------
+  RDES1 | CTRL(31) | Reserved[30:29] | Buffer2 ByteCount[28:16] | CTRL[15:14] | Reserved(13) | Buffer1 ByteCount[12:0] |
+  ---------------------------------------------------------------------------------------------------------------------
+  RDES2 |                                       Buffer1 Address [31:0]                                                 |
+  ---------------------------------------------------------------------------------------------------------------------
+  RDES3 |                          Buffer2 Address [31:0] / Next Descriptor Address [31:0]                             |
+  ---------------------------------------------------------------------------------------------------------------------
+*/
+
+/**
+  * @brief  Bit definition of RDES0 register: DMA Rx descriptor status register
+  */
+#define ETH_DMARXDESC_OWN         ((uint32_t)0x80000000U)  /*!< OWN bit: descriptor is owned by DMA engine  */
+#define ETH_DMARXDESC_AFM         ((uint32_t)0x40000000U)  /*!< DA Filter Fail for the rx frame  */
+#define ETH_DMARXDESC_FL          ((uint32_t)0x3FFF0000U)  /*!< Receive descriptor frame length  */
+#define ETH_DMARXDESC_ES          ((uint32_t)0x00008000U)  /*!< Error summary: OR of the following bits: DE || OE || IPC || LC || RWT || RE || CE */
+#define ETH_DMARXDESC_DE          ((uint32_t)0x00004000U)  /*!< Descriptor error: no more descriptors for receive frame  */
+#define ETH_DMARXDESC_SAF         ((uint32_t)0x00002000U)  /*!< SA Filter Fail for the received frame */
+#define ETH_DMARXDESC_LE          ((uint32_t)0x00001000U)  /*!< Frame size not matching with length field */
+#define ETH_DMARXDESC_OE          ((uint32_t)0x00000800U)  /*!< Overflow Error: Frame was damaged due to buffer overflow */
+#define ETH_DMARXDESC_VLAN        ((uint32_t)0x00000400U)  /*!< VLAN Tag: received frame is a VLAN frame */
+#define ETH_DMARXDESC_FS          ((uint32_t)0x00000200U)  /*!< First descriptor of the frame  */
+#define ETH_DMARXDESC_LS          ((uint32_t)0x00000100U)  /*!< Last descriptor of the frame  */
+#define ETH_DMARXDESC_IPV4HCE     ((uint32_t)0x00000080U)  /*!< IPC Checksum Error: Rx Ipv4 header checksum error   */
+#define ETH_DMARXDESC_LC          ((uint32_t)0x00000040U)  /*!< Late collision occurred during reception   */
+#define ETH_DMARXDESC_FT          ((uint32_t)0x00000020U)  /*!< Frame type - Ethernet, otherwise 802.3    */
+#define ETH_DMARXDESC_RWT         ((uint32_t)0x00000010U)  /*!< Receive Watchdog Timeout: watchdog timer expired during reception    */
+#define ETH_DMARXDESC_RE          ((uint32_t)0x00000008U)  /*!< Receive error: error reported by MII interface  */
+#define ETH_DMARXDESC_DBE         ((uint32_t)0x00000004U)  /*!< Dribble bit error: frame contains non int multiple of 8 bits  */
+#define ETH_DMARXDESC_CE          ((uint32_t)0x00000002U)  /*!< CRC error */
+#define ETH_DMARXDESC_MAMPCE      ((uint32_t)0x00000001U)  /*!< Rx MAC Address/Payload Checksum Error: Rx MAC address matched/ Rx Payload Checksum Error */
+
+/**
+  * @brief  Bit definition of RDES1 register
+  */
+#define ETH_DMARXDESC_DIC   ((uint32_t)0x80000000U)  /*!< Disable Interrupt on Completion */
+#define ETH_DMARXDESC_RBS2  ((uint32_t)0x1FFF0000U)  /*!< Receive Buffer2 Size */
+#define ETH_DMARXDESC_RER   ((uint32_t)0x00008000U)  /*!< Receive End of Ring */
+#define ETH_DMARXDESC_RCH   ((uint32_t)0x00004000U)  /*!< Second Address Chained */
+#define ETH_DMARXDESC_RBS1  ((uint32_t)0x00001FFFU)  /*!< Receive Buffer1 Size */
+
+/**
+  * @brief  Bit definition of RDES2 register
+  */
+#define ETH_DMARXDESC_B1AP  ((uint32_t)0xFFFFFFFFU)  /*!< Buffer1 Address Pointer */
+
+/**
+  * @brief  Bit definition of RDES3 register
+  */
+#define ETH_DMARXDESC_B2AP  ((uint32_t)0xFFFFFFFFU)  /*!< Buffer2 Address Pointer */
+
+/*---------------------------------------------------------------------------------------------------------------------
+  RDES4 |                   Reserved[31:15]              |             Extended Status [14:0]                          |
+  ---------------------------------------------------------------------------------------------------------------------
+  RDES5 |                                            Reserved[31:0]                                                    |
+  ---------------------------------------------------------------------------------------------------------------------
+  RDES6 |                                       Receive Time Stamp Low [31:0]                                          |
+  ---------------------------------------------------------------------------------------------------------------------
+  RDES7 |                                       Receive Time Stamp High [31:0]                                         |
+  --------------------------------------------------------------------------------------------------------------------*/
+
+/* Bit definition of RDES4 register */
+#define ETH_DMAPTPRXDESC_PTPV                            ((uint32_t)0x00002000U)  /* PTP Version */
+#define ETH_DMAPTPRXDESC_PTPFT                           ((uint32_t)0x00001000U)  /* PTP Frame Type */
+#define ETH_DMAPTPRXDESC_PTPMT                           ((uint32_t)0x00000F00U)  /* PTP Message Type */
+#define ETH_DMAPTPRXDESC_PTPMT_SYNC                      ((uint32_t)0x00000100U)  /* SYNC message (all clock types) */
+#define ETH_DMAPTPRXDESC_PTPMT_FOLLOWUP                  ((uint32_t)0x00000200U)  /* FollowUp message (all clock types) */
+#define ETH_DMAPTPRXDESC_PTPMT_DELAYREQ                  ((uint32_t)0x00000300U)  /* DelayReq message (all clock types) */
+#define ETH_DMAPTPRXDESC_PTPMT_DELAYRESP                 ((uint32_t)0x00000400U)  /* DelayResp message (all clock types) */
+#define ETH_DMAPTPRXDESC_PTPMT_PDELAYREQ_ANNOUNCE        ((uint32_t)0x00000500U)  /* PdelayReq message (peer-to-peer transparent clock) or Announce message (Ordinary or Boundary clock) */
+#define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESP_MANAG          ((uint32_t)0x00000600U)  /* PdelayResp message (peer-to-peer transparent clock) or Management message (Ordinary or Boundary clock)  */
+#define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESPFOLLOWUP_SIGNAL ((uint32_t)0x00000700U)  /* PdelayRespFollowUp message (peer-to-peer transparent clock) or Signaling message (Ordinary or Boundary clock) */
+#define ETH_DMAPTPRXDESC_IPV6PR                          ((uint32_t)0x00000080U)  /* IPv6 Packet Received */
+#define ETH_DMAPTPRXDESC_IPV4PR                          ((uint32_t)0x00000040U)  /* IPv4 Packet Received */
+#define ETH_DMAPTPRXDESC_IPCB                            ((uint32_t)0x00000020U)  /* IP Checksum Bypassed */
+#define ETH_DMAPTPRXDESC_IPPE                            ((uint32_t)0x00000010U)  /* IP Payload Error */
+#define ETH_DMAPTPRXDESC_IPHE                            ((uint32_t)0x00000008U)  /* IP Header Error */
+#define ETH_DMAPTPRXDESC_IPPT                            ((uint32_t)0x00000007U)  /* IP Payload Type */
+#define ETH_DMAPTPRXDESC_IPPT_UDP                        ((uint32_t)0x00000001U)  /* UDP payload encapsulated in the IP datagram */
+#define ETH_DMAPTPRXDESC_IPPT_TCP                        ((uint32_t)0x00000002U)  /* TCP payload encapsulated in the IP datagram */
+#define ETH_DMAPTPRXDESC_IPPT_ICMP                       ((uint32_t)0x00000003U)  /* ICMP payload encapsulated in the IP datagram */
+
+/* Bit definition of RDES6 register */
+#define ETH_DMAPTPRXDESC_RTSL  ((uint32_t)0xFFFFFFFFU)  /* Receive Time Stamp Low */
+
+/* Bit definition of RDES7 register */
+#define ETH_DMAPTPRXDESC_RTSH  ((uint32_t)0xFFFFFFFFU)  /* Receive Time Stamp High */
+/**
+  * @}
+  */
+ /** @defgroup ETH_AutoNegotiation ETH AutoNegotiation
+  * @{
+  */
+#define ETH_AUTONEGOTIATION_ENABLE     ((uint32_t)0x00000001U)
+#define ETH_AUTONEGOTIATION_DISABLE    ((uint32_t)0x00000000U)
+
+/**
+  * @}
+  */
+/** @defgroup ETH_Speed ETH Speed
+  * @{
+  */
+#define ETH_SPEED_10M        ((uint32_t)0x00000000U)
+#define ETH_SPEED_100M       ((uint32_t)0x00004000U)
+
+/**
+  * @}
+  */
+/** @defgroup ETH_Duplex_Mode ETH Duplex Mode
+  * @{
+  */
+#define ETH_MODE_FULLDUPLEX       ((uint32_t)0x00000800U)
+#define ETH_MODE_HALFDUPLEX       ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+/** @defgroup ETH_Rx_Mode ETH Rx Mode
+  * @{
+  */
+#define ETH_RXPOLLING_MODE      ((uint32_t)0x00000000U)
+#define ETH_RXINTERRUPT_MODE    ((uint32_t)0x00000001U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Checksum_Mode ETH Checksum Mode
+  * @{
+  */
+#define ETH_CHECKSUM_BY_HARDWARE      ((uint32_t)0x00000000U)
+#define ETH_CHECKSUM_BY_SOFTWARE      ((uint32_t)0x00000001U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Media_Interface ETH Media Interface
+  * @{
+  */
+#define ETH_MEDIA_INTERFACE_MII       ((uint32_t)0x00000000U)
+#define ETH_MEDIA_INTERFACE_RMII      ((uint32_t)SYSCFG_PMC_MII_RMII_SEL)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Watchdog ETH Watchdog
+  * @{
+  */
+#define ETH_WATCHDOG_ENABLE       ((uint32_t)0x00000000U)
+#define ETH_WATCHDOG_DISABLE      ((uint32_t)0x00800000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Jabber ETH Jabber
+  * @{
+  */
+#define ETH_JABBER_ENABLE    ((uint32_t)0x00000000U)
+#define ETH_JABBER_DISABLE   ((uint32_t)0x00400000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Inter_Frame_Gap ETH Inter Frame Gap
+  * @{
+  */
+#define ETH_INTERFRAMEGAP_96BIT   ((uint32_t)0x00000000U)  /*!< minimum IFG between frames during transmission is 96Bit */
+#define ETH_INTERFRAMEGAP_88BIT   ((uint32_t)0x00020000U)  /*!< minimum IFG between frames during transmission is 88Bit */
+#define ETH_INTERFRAMEGAP_80BIT   ((uint32_t)0x00040000U)  /*!< minimum IFG between frames during transmission is 80Bit */
+#define ETH_INTERFRAMEGAP_72BIT   ((uint32_t)0x00060000U)  /*!< minimum IFG between frames during transmission is 72Bit */
+#define ETH_INTERFRAMEGAP_64BIT   ((uint32_t)0x00080000U)  /*!< minimum IFG between frames during transmission is 64Bit */
+#define ETH_INTERFRAMEGAP_56BIT   ((uint32_t)0x000A0000U)  /*!< minimum IFG between frames during transmission is 56Bit */
+#define ETH_INTERFRAMEGAP_48BIT   ((uint32_t)0x000C0000U)  /*!< minimum IFG between frames during transmission is 48Bit */
+#define ETH_INTERFRAMEGAP_40BIT   ((uint32_t)0x000E0000U)  /*!< minimum IFG between frames during transmission is 40Bit */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Carrier_Sense ETH Carrier Sense
+  * @{
+  */
+#define ETH_CARRIERSENCE_ENABLE   ((uint32_t)0x00000000U)
+#define ETH_CARRIERSENCE_DISABLE  ((uint32_t)0x00010000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Receive_Own ETH Receive Own
+  * @{
+  */
+#define ETH_RECEIVEOWN_ENABLE     ((uint32_t)0x00000000U)
+#define ETH_RECEIVEOWN_DISABLE    ((uint32_t)0x00002000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Loop_Back_Mode ETH Loop Back Mode
+  * @{
+  */
+#define ETH_LOOPBACKMODE_ENABLE        ((uint32_t)0x00001000U)
+#define ETH_LOOPBACKMODE_DISABLE       ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Checksum_Offload ETH Checksum Offload
+  * @{
+  */
+#define ETH_CHECKSUMOFFLAOD_ENABLE     ((uint32_t)0x00000400U)
+#define ETH_CHECKSUMOFFLAOD_DISABLE    ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Retry_Transmission ETH Retry Transmission
+  * @{
+  */
+#define ETH_RETRYTRANSMISSION_ENABLE   ((uint32_t)0x00000000U)
+#define ETH_RETRYTRANSMISSION_DISABLE  ((uint32_t)0x00000200U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Automatic_Pad_CRC_Strip ETH Automatic Pad CRC Strip
+  * @{
+  */
+#define ETH_AUTOMATICPADCRCSTRIP_ENABLE     ((uint32_t)0x00000080U)
+#define ETH_AUTOMATICPADCRCSTRIP_DISABLE    ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Back_Off_Limit ETH Back Off Limit
+  * @{
+  */
+#define ETH_BACKOFFLIMIT_10  ((uint32_t)0x00000000U)
+#define ETH_BACKOFFLIMIT_8   ((uint32_t)0x00000020U)
+#define ETH_BACKOFFLIMIT_4   ((uint32_t)0x00000040U)
+#define ETH_BACKOFFLIMIT_1   ((uint32_t)0x00000060U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Deferral_Check ETH Deferral Check
+  * @{
+  */
+#define ETH_DEFFERRALCHECK_ENABLE       ((uint32_t)0x00000010U)
+#define ETH_DEFFERRALCHECK_DISABLE      ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Receive_All ETH Receive All
+  * @{
+  */
+#define ETH_RECEIVEALL_ENABLE     ((uint32_t)0x80000000U)
+#define ETH_RECEIVEAll_DISABLE    ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Source_Addr_Filter ETH Source Addr Filter
+  * @{
+  */
+#define ETH_SOURCEADDRFILTER_NORMAL_ENABLE       ((uint32_t)0x00000200U)
+#define ETH_SOURCEADDRFILTER_INVERSE_ENABLE      ((uint32_t)0x00000300U)
+#define ETH_SOURCEADDRFILTER_DISABLE             ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Pass_Control_Frames ETH Pass Control Frames
+  * @{
+  */
+#define ETH_PASSCONTROLFRAMES_BLOCKALL                ((uint32_t)0x00000040U)  /*!< MAC filters all control frames from reaching the application */
+#define ETH_PASSCONTROLFRAMES_FORWARDALL              ((uint32_t)0x00000080U)  /*!< MAC forwards all control frames to application even if they fail the Address Filter */
+#define ETH_PASSCONTROLFRAMES_FORWARDPASSEDADDRFILTER ((uint32_t)0x000000C0U)  /*!< MAC forwards control frames that pass the Address Filter. */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Broadcast_Frames_Reception ETH Broadcast Frames Reception
+  * @{
+  */
+#define ETH_BROADCASTFRAMESRECEPTION_ENABLE     ((uint32_t)0x00000000U)
+#define ETH_BROADCASTFRAMESRECEPTION_DISABLE    ((uint32_t)0x00000020U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Destination_Addr_Filter ETH Destination Addr Filter
+  * @{
+  */
+#define ETH_DESTINATIONADDRFILTER_NORMAL    ((uint32_t)0x00000000U)
+#define ETH_DESTINATIONADDRFILTER_INVERSE   ((uint32_t)0x00000008U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Promiscuous_Mode ETH Promiscuous Mode
+  * @{
+  */
+#define ETH_PROMISCUOUS_MODE_ENABLE     ((uint32_t)0x00000001U)
+#define ETH_PROMISCUOUS_MODE_DISABLE    ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Multicast_Frames_Filter ETH Multicast Frames Filter
+  * @{
+  */
+#define ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE    ((uint32_t)0x00000404U)
+#define ETH_MULTICASTFRAMESFILTER_HASHTABLE           ((uint32_t)0x00000004U)
+#define ETH_MULTICASTFRAMESFILTER_PERFECT             ((uint32_t)0x00000000U)
+#define ETH_MULTICASTFRAMESFILTER_NONE                ((uint32_t)0x00000010U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Unicast_Frames_Filter ETH Unicast Frames Filter
+  * @{
+  */
+#define ETH_UNICASTFRAMESFILTER_PERFECTHASHTABLE ((uint32_t)0x00000402U)
+#define ETH_UNICASTFRAMESFILTER_HASHTABLE        ((uint32_t)0x00000002U)
+#define ETH_UNICASTFRAMESFILTER_PERFECT          ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Zero_Quanta_Pause ETH Zero Quanta Pause
+  * @{
+  */
+#define ETH_ZEROQUANTAPAUSE_ENABLE     ((uint32_t)0x00000000U)
+#define ETH_ZEROQUANTAPAUSE_DISABLE    ((uint32_t)0x00000080U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Pause_Low_Threshold ETH Pause Low Threshold
+  * @{
+  */
+#define ETH_PAUSELOWTHRESHOLD_MINUS4        ((uint32_t)0x00000000U)  /*!< Pause time minus 4 slot times */
+#define ETH_PAUSELOWTHRESHOLD_MINUS28       ((uint32_t)0x00000010U)  /*!< Pause time minus 28 slot times */
+#define ETH_PAUSELOWTHRESHOLD_MINUS144      ((uint32_t)0x00000020U)  /*!< Pause time minus 144 slot times */
+#define ETH_PAUSELOWTHRESHOLD_MINUS256      ((uint32_t)0x00000030U)  /*!< Pause time minus 256 slot times */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Unicast_Pause_Frame_Detect ETH Unicast Pause Frame Detect
+  * @{
+  */
+#define ETH_UNICASTPAUSEFRAMEDETECT_ENABLE  ((uint32_t)0x00000008U)
+#define ETH_UNICASTPAUSEFRAMEDETECT_DISABLE ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Receive_Flow_Control ETH Receive Flow Control
+  * @{
+  */
+#define ETH_RECEIVEFLOWCONTROL_ENABLE       ((uint32_t)0x00000004U)
+#define ETH_RECEIVEFLOWCONTROL_DISABLE      ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Transmit_Flow_Control ETH Transmit Flow Control
+  * @{
+  */
+#define ETH_TRANSMITFLOWCONTROL_ENABLE      ((uint32_t)0x00000002U)
+#define ETH_TRANSMITFLOWCONTROL_DISABLE     ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_VLAN_Tag_Comparison ETH VLAN Tag Comparison
+  * @{
+  */
+#define ETH_VLANTAGCOMPARISON_12BIT    ((uint32_t)0x00010000U)
+#define ETH_VLANTAGCOMPARISON_16BIT    ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_MAC_addresses ETH MAC addresses
+  * @{
+  */
+#define ETH_MAC_ADDRESS0     ((uint32_t)0x00000000U)
+#define ETH_MAC_ADDRESS1     ((uint32_t)0x00000008U)
+#define ETH_MAC_ADDRESS2     ((uint32_t)0x00000010U)
+#define ETH_MAC_ADDRESS3     ((uint32_t)0x00000018U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_MAC_addresses_filter_SA_DA ETH MAC addresses filter SA DA
+  * @{
+  */
+#define ETH_MAC_ADDRESSFILTER_SA       ((uint32_t)0x00000000U)
+#define ETH_MAC_ADDRESSFILTER_DA       ((uint32_t)0x00000008U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_MAC_addresses_filter_Mask_bytes ETH MAC addresses filter Mask bytes
+  * @{
+  */
+#define ETH_MAC_ADDRESSMASK_BYTE6      ((uint32_t)0x20000000U)  /*!< Mask MAC Address high reg bits [15:8] */
+#define ETH_MAC_ADDRESSMASK_BYTE5      ((uint32_t)0x10000000U)  /*!< Mask MAC Address high reg bits [7:0] */
+#define ETH_MAC_ADDRESSMASK_BYTE4      ((uint32_t)0x08000000U)  /*!< Mask MAC Address low reg bits [31:24] */
+#define ETH_MAC_ADDRESSMASK_BYTE3      ((uint32_t)0x04000000U)  /*!< Mask MAC Address low reg bits [23:16] */
+#define ETH_MAC_ADDRESSMASK_BYTE2      ((uint32_t)0x02000000U)  /*!< Mask MAC Address low reg bits [15:8] */
+#define ETH_MAC_ADDRESSMASK_BYTE1      ((uint32_t)0x01000000U)  /*!< Mask MAC Address low reg bits [70] */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Drop_TCP_IP_Checksum_Error_Frame ETH Drop TCP IP Checksum Error Frame
+  * @{
+  */
+#define ETH_DROPTCPIPCHECKSUMERRORFRAME_ENABLE   ((uint32_t)0x00000000U)
+#define ETH_DROPTCPIPCHECKSUMERRORFRAME_DISABLE  ((uint32_t)0x04000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Receive_Store_Forward ETH Receive Store Forward
+  * @{
+  */
+#define ETH_RECEIVESTOREFORWARD_ENABLE      ((uint32_t)0x02000000U)
+#define ETH_RECEIVESTOREFORWARD_DISABLE     ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Flush_Received_Frame ETH Flush Received Frame
+  * @{
+  */
+#define ETH_FLUSHRECEIVEDFRAME_ENABLE       ((uint32_t)0x00000000U)
+#define ETH_FLUSHRECEIVEDFRAME_DISABLE      ((uint32_t)0x01000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Transmit_Store_Forward ETH Transmit Store Forward
+  * @{
+  */
+#define ETH_TRANSMITSTOREFORWARD_ENABLE     ((uint32_t)0x00200000U)
+#define ETH_TRANSMITSTOREFORWARD_DISABLE    ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Transmit_Threshold_Control ETH Transmit Threshold Control
+  * @{
+  */
+#define ETH_TRANSMITTHRESHOLDCONTROL_64BYTES     ((uint32_t)0x00000000U)  /*!< threshold level of the MTL Transmit FIFO is 64 Bytes */
+#define ETH_TRANSMITTHRESHOLDCONTROL_128BYTES    ((uint32_t)0x00004000U)  /*!< threshold level of the MTL Transmit FIFO is 128 Bytes */
+#define ETH_TRANSMITTHRESHOLDCONTROL_192BYTES    ((uint32_t)0x00008000U)  /*!< threshold level of the MTL Transmit FIFO is 192 Bytes */
+#define ETH_TRANSMITTHRESHOLDCONTROL_256BYTES    ((uint32_t)0x0000C000U)  /*!< threshold level of the MTL Transmit FIFO is 256 Bytes */
+#define ETH_TRANSMITTHRESHOLDCONTROL_40BYTES     ((uint32_t)0x00010000U)  /*!< threshold level of the MTL Transmit FIFO is 40 Bytes */
+#define ETH_TRANSMITTHRESHOLDCONTROL_32BYTES     ((uint32_t)0x00014000U)  /*!< threshold level of the MTL Transmit FIFO is 32 Bytes */
+#define ETH_TRANSMITTHRESHOLDCONTROL_24BYTES     ((uint32_t)0x00018000U)  /*!< threshold level of the MTL Transmit FIFO is 24 Bytes */
+#define ETH_TRANSMITTHRESHOLDCONTROL_16BYTES     ((uint32_t)0x0001C000U)  /*!< threshold level of the MTL Transmit FIFO is 16 Bytes */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Forward_Error_Frames ETH Forward Error Frames
+  * @{
+  */
+#define ETH_FORWARDERRORFRAMES_ENABLE       ((uint32_t)0x00000080U)
+#define ETH_FORWARDERRORFRAMES_DISABLE      ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Forward_Undersized_Good_Frames ETH Forward Undersized Good Frames
+  * @{
+  */
+#define ETH_FORWARDUNDERSIZEDGOODFRAMES_ENABLE   ((uint32_t)0x00000040U)
+#define ETH_FORWARDUNDERSIZEDGOODFRAMES_DISABLE  ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Receive_Threshold_Control ETH Receive Threshold Control
+  * @{
+  */
+#define ETH_RECEIVEDTHRESHOLDCONTROL_64BYTES      ((uint32_t)0x00000000U)  /*!< threshold level of the MTL Receive FIFO is 64 Bytes */
+#define ETH_RECEIVEDTHRESHOLDCONTROL_32BYTES      ((uint32_t)0x00000008U)  /*!< threshold level of the MTL Receive FIFO is 32 Bytes */
+#define ETH_RECEIVEDTHRESHOLDCONTROL_96BYTES      ((uint32_t)0x00000010U)  /*!< threshold level of the MTL Receive FIFO is 96 Bytes */
+#define ETH_RECEIVEDTHRESHOLDCONTROL_128BYTES     ((uint32_t)0x00000018U)  /*!< threshold level of the MTL Receive FIFO is 128 Bytes */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Second_Frame_Operate ETH Second Frame Operate
+  * @{
+  */
+#define ETH_SECONDFRAMEOPERARTE_ENABLE       ((uint32_t)0x00000004U)
+#define ETH_SECONDFRAMEOPERARTE_DISABLE      ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Address_Aligned_Beats ETH Address Aligned Beats
+  * @{
+  */
+#define ETH_ADDRESSALIGNEDBEATS_ENABLE      ((uint32_t)0x02000000U)
+#define ETH_ADDRESSALIGNEDBEATS_DISABLE     ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Fixed_Burst ETH Fixed Burst
+  * @{
+  */
+#define ETH_FIXEDBURST_ENABLE     ((uint32_t)0x00010000U)
+#define ETH_FIXEDBURST_DISABLE    ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Rx_DMA_Burst_Length ETH Rx DMA Burst Length
+  * @{
+  */
+#define ETH_RXDMABURSTLENGTH_1BEAT          ((uint32_t)0x00020000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 1 */
+#define ETH_RXDMABURSTLENGTH_2BEAT          ((uint32_t)0x00040000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 2 */
+#define ETH_RXDMABURSTLENGTH_4BEAT          ((uint32_t)0x00080000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 4 */
+#define ETH_RXDMABURSTLENGTH_8BEAT          ((uint32_t)0x00100000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 8 */
+#define ETH_RXDMABURSTLENGTH_16BEAT         ((uint32_t)0x00200000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 16 */
+#define ETH_RXDMABURSTLENGTH_32BEAT         ((uint32_t)0x00400000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 32 */
+#define ETH_RXDMABURSTLENGTH_4XPBL_4BEAT    ((uint32_t)0x01020000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 4 */
+#define ETH_RXDMABURSTLENGTH_4XPBL_8BEAT    ((uint32_t)0x01040000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 8 */
+#define ETH_RXDMABURSTLENGTH_4XPBL_16BEAT   ((uint32_t)0x01080000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 16 */
+#define ETH_RXDMABURSTLENGTH_4XPBL_32BEAT   ((uint32_t)0x01100000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 32 */
+#define ETH_RXDMABURSTLENGTH_4XPBL_64BEAT   ((uint32_t)0x01200000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 64 */
+#define ETH_RXDMABURSTLENGTH_4XPBL_128BEAT  ((uint32_t)0x01400000U)  /*!< maximum number of beats to be transferred in one RxDMA transaction is 128 */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Tx_DMA_Burst_Length ETH Tx DMA Burst Length
+  * @{
+  */
+#define ETH_TXDMABURSTLENGTH_1BEAT          ((uint32_t)0x00000100U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 1 */
+#define ETH_TXDMABURSTLENGTH_2BEAT          ((uint32_t)0x00000200U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 2 */
+#define ETH_TXDMABURSTLENGTH_4BEAT          ((uint32_t)0x00000400U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */
+#define ETH_TXDMABURSTLENGTH_8BEAT          ((uint32_t)0x00000800U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */
+#define ETH_TXDMABURSTLENGTH_16BEAT         ((uint32_t)0x00001000U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */
+#define ETH_TXDMABURSTLENGTH_32BEAT         ((uint32_t)0x00002000U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */
+#define ETH_TXDMABURSTLENGTH_4XPBL_4BEAT    ((uint32_t)0x01000100U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */
+#define ETH_TXDMABURSTLENGTH_4XPBL_8BEAT    ((uint32_t)0x01000200U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */
+#define ETH_TXDMABURSTLENGTH_4XPBL_16BEAT   ((uint32_t)0x01000400U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */
+#define ETH_TXDMABURSTLENGTH_4XPBL_32BEAT   ((uint32_t)0x01000800U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */
+#define ETH_TXDMABURSTLENGTH_4XPBL_64BEAT   ((uint32_t)0x01001000U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 64 */
+#define ETH_TXDMABURSTLENGTH_4XPBL_128BEAT  ((uint32_t)0x01002000U)  /*!< maximum number of beats to be transferred in one TxDMA (or both) transaction is 128 */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_Enhanced_descriptor_format ETH DMA Enhanced descriptor format
+  * @{
+  */
+#define ETH_DMAENHANCEDDESCRIPTOR_ENABLE              ((uint32_t)0x00000080U)
+#define ETH_DMAENHANCEDDESCRIPTOR_DISABLE             ((uint32_t)0x00000000U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_Arbitration ETH DMA Arbitration
+  * @{
+  */
+#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_1_1   ((uint32_t)0x00000000U)
+#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_2_1   ((uint32_t)0x00004000U)
+#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_3_1   ((uint32_t)0x00008000U)
+#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_4_1   ((uint32_t)0x0000C000U)
+#define ETH_DMAARBITRATION_RXPRIORTX             ((uint32_t)0x00000002U)
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_Tx_descriptor_segment ETH DMA Tx descriptor segment
+  * @{
+  */
+#define ETH_DMATXDESC_LASTSEGMENTS      ((uint32_t)0x40000000U)  /*!< Last Segment */
+#define ETH_DMATXDESC_FIRSTSEGMENT      ((uint32_t)0x20000000U)  /*!< First Segment */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_Tx_descriptor_Checksum_Insertion_Control ETH DMA Tx descriptor Checksum Insertion Control
+  * @{
+  */
+#define ETH_DMATXDESC_CHECKSUMBYPASS             ((uint32_t)0x00000000U)   /*!< Checksum engine bypass */
+#define ETH_DMATXDESC_CHECKSUMIPV4HEADER         ((uint32_t)0x00400000U)   /*!< IPv4 header checksum insertion  */
+#define ETH_DMATXDESC_CHECKSUMTCPUDPICMPSEGMENT  ((uint32_t)0x00800000U)   /*!< TCP/UDP/ICMP checksum insertion. Pseudo header checksum is assumed to be present */
+#define ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL     ((uint32_t)0x00C00000U)   /*!< TCP/UDP/ICMP checksum fully in hardware including pseudo header */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_Rx_descriptor_buffers ETH DMA Rx descriptor buffers
+  * @{
+  */
+#define ETH_DMARXDESC_BUFFER1     ((uint32_t)0x00000000U)  /*!< DMA Rx Desc Buffer1 */
+#define ETH_DMARXDESC_BUFFER2     ((uint32_t)0x00000001U)  /*!< DMA Rx Desc Buffer2 */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_PMT_Flags ETH PMT Flags
+  * @{
+  */
+#define ETH_PMT_FLAG_WUFFRPR      ((uint32_t)0x80000000U)  /*!< Wake-Up Frame Filter Register Pointer Reset */
+#define ETH_PMT_FLAG_WUFR         ((uint32_t)0x00000040U)  /*!< Wake-Up Frame Received */
+#define ETH_PMT_FLAG_MPR          ((uint32_t)0x00000020U)  /*!< Magic Packet Received */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_MMC_Tx_Interrupts ETH MMC Tx Interrupts
+  * @{
+  */
+#define ETH_MMC_IT_TGF       ((uint32_t)0x00200000U)  /*!< When Tx good frame counter reaches half the maximum value */
+#define ETH_MMC_IT_TGFMSC    ((uint32_t)0x00008000U)  /*!< When Tx good multi col counter reaches half the maximum value */
+#define ETH_MMC_IT_TGFSC     ((uint32_t)0x00004000U)  /*!< When Tx good single col counter reaches half the maximum value */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_MMC_Rx_Interrupts ETH MMC Rx Interrupts
+  * @{
+  */
+#define ETH_MMC_IT_RGUF      ((uint32_t)0x10020000U)  /*!< When Rx good unicast frames counter reaches half the maximum value */
+#define ETH_MMC_IT_RFAE      ((uint32_t)0x10000040U)  /*!< When Rx alignment error counter reaches half the maximum value */
+#define ETH_MMC_IT_RFCE      ((uint32_t)0x10000020U)  /*!< When Rx crc error counter reaches half the maximum value */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_MAC_Flags ETH MAC Flags
+  * @{
+  */
+#define ETH_MAC_FLAG_TST     ((uint32_t)0x00000200U)  /*!< Time stamp trigger flag (on MAC) */
+#define ETH_MAC_FLAG_MMCT    ((uint32_t)0x00000040U)  /*!< MMC transmit flag  */
+#define ETH_MAC_FLAG_MMCR    ((uint32_t)0x00000020U)  /*!< MMC receive flag */
+#define ETH_MAC_FLAG_MMC     ((uint32_t)0x00000010U)  /*!< MMC flag (on MAC) */
+#define ETH_MAC_FLAG_PMT     ((uint32_t)0x00000008U)  /*!< PMT flag (on MAC) */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_Flags ETH DMA Flags
+  * @{
+  */
+#define ETH_DMA_FLAG_TST               ((uint32_t)0x20000000U)  /*!< Time-stamp trigger interrupt (on DMA) */
+#define ETH_DMA_FLAG_PMT               ((uint32_t)0x10000000U)  /*!< PMT interrupt (on DMA) */
+#define ETH_DMA_FLAG_MMC               ((uint32_t)0x08000000U)  /*!< MMC interrupt (on DMA) */
+#define ETH_DMA_FLAG_DATATRANSFERERROR ((uint32_t)0x00800000U)  /*!< Error bits 0-Rx DMA, 1-Tx DMA */
+#define ETH_DMA_FLAG_READWRITEERROR    ((uint32_t)0x01000000U)  /*!< Error bits 0-write transfer, 1-read transfer */
+#define ETH_DMA_FLAG_ACCESSERROR       ((uint32_t)0x02000000U)  /*!< Error bits 0-data buffer, 1-desc. access */
+#define ETH_DMA_FLAG_NIS               ((uint32_t)0x00010000U)  /*!< Normal interrupt summary flag */
+#define ETH_DMA_FLAG_AIS               ((uint32_t)0x00008000U)  /*!< Abnormal interrupt summary flag */
+#define ETH_DMA_FLAG_ER                ((uint32_t)0x00004000U)  /*!< Early receive flag */
+#define ETH_DMA_FLAG_FBE               ((uint32_t)0x00002000U)  /*!< Fatal bus error flag */
+#define ETH_DMA_FLAG_ET                ((uint32_t)0x00000400U)  /*!< Early transmit flag */
+#define ETH_DMA_FLAG_RWT               ((uint32_t)0x00000200U)  /*!< Receive watchdog timeout flag */
+#define ETH_DMA_FLAG_RPS               ((uint32_t)0x00000100U)  /*!< Receive process stopped flag */
+#define ETH_DMA_FLAG_RBU               ((uint32_t)0x00000080U)  /*!< Receive buffer unavailable flag */
+#define ETH_DMA_FLAG_R                 ((uint32_t)0x00000040U)  /*!< Receive flag */
+#define ETH_DMA_FLAG_TU                ((uint32_t)0x00000020U)  /*!< Underflow flag */
+#define ETH_DMA_FLAG_RO                ((uint32_t)0x00000010U)  /*!< Overflow flag */
+#define ETH_DMA_FLAG_TJT               ((uint32_t)0x00000008U)  /*!< Transmit jabber timeout flag */
+#define ETH_DMA_FLAG_TBU               ((uint32_t)0x00000004U)  /*!< Transmit buffer unavailable flag */
+#define ETH_DMA_FLAG_TPS               ((uint32_t)0x00000002U)  /*!< Transmit process stopped flag */
+#define ETH_DMA_FLAG_T                 ((uint32_t)0x00000001U)  /*!< Transmit flag */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_MAC_Interrupts ETH MAC Interrupts
+  * @{
+  */
+#define ETH_MAC_IT_TST       ((uint32_t)0x00000200U)  /*!< Time stamp trigger interrupt (on MAC) */
+#define ETH_MAC_IT_MMCT      ((uint32_t)0x00000040U)  /*!< MMC transmit interrupt */
+#define ETH_MAC_IT_MMCR      ((uint32_t)0x00000020U)  /*!< MMC receive interrupt */
+#define ETH_MAC_IT_MMC       ((uint32_t)0x00000010U)  /*!< MMC interrupt (on MAC) */
+#define ETH_MAC_IT_PMT       ((uint32_t)0x00000008U)  /*!< PMT interrupt (on MAC) */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_Interrupts ETH DMA Interrupts
+  * @{
+  */
+#define ETH_DMA_IT_TST       ((uint32_t)0x20000000U)  /*!< Time-stamp trigger interrupt (on DMA) */
+#define ETH_DMA_IT_PMT       ((uint32_t)0x10000000U)  /*!< PMT interrupt (on DMA) */
+#define ETH_DMA_IT_MMC       ((uint32_t)0x08000000U)  /*!< MMC interrupt (on DMA) */
+#define ETH_DMA_IT_NIS       ((uint32_t)0x00010000U)  /*!< Normal interrupt summary */
+#define ETH_DMA_IT_AIS       ((uint32_t)0x00008000U)  /*!< Abnormal interrupt summary */
+#define ETH_DMA_IT_ER        ((uint32_t)0x00004000U)  /*!< Early receive interrupt */
+#define ETH_DMA_IT_FBE       ((uint32_t)0x00002000U)  /*!< Fatal bus error interrupt */
+#define ETH_DMA_IT_ET        ((uint32_t)0x00000400U)  /*!< Early transmit interrupt */
+#define ETH_DMA_IT_RWT       ((uint32_t)0x00000200U)  /*!< Receive watchdog timeout interrupt */
+#define ETH_DMA_IT_RPS       ((uint32_t)0x00000100U)  /*!< Receive process stopped interrupt */
+#define ETH_DMA_IT_RBU       ((uint32_t)0x00000080U)  /*!< Receive buffer unavailable interrupt */
+#define ETH_DMA_IT_R         ((uint32_t)0x00000040U)  /*!< Receive interrupt */
+#define ETH_DMA_IT_TU        ((uint32_t)0x00000020U)  /*!< Underflow interrupt */
+#define ETH_DMA_IT_RO        ((uint32_t)0x00000010U)  /*!< Overflow interrupt */
+#define ETH_DMA_IT_TJT       ((uint32_t)0x00000008U)  /*!< Transmit jabber timeout interrupt */
+#define ETH_DMA_IT_TBU       ((uint32_t)0x00000004U)  /*!< Transmit buffer unavailable interrupt */
+#define ETH_DMA_IT_TPS       ((uint32_t)0x00000002U)  /*!< Transmit process stopped interrupt */
+#define ETH_DMA_IT_T         ((uint32_t)0x00000001U)  /*!< Transmit interrupt */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_transmit_process_state ETH DMA transmit process state
+  * @{
+  */
+#define ETH_DMA_TRANSMITPROCESS_STOPPED     ((uint32_t)0x00000000U)  /*!< Stopped - Reset or Stop Tx Command issued */
+#define ETH_DMA_TRANSMITPROCESS_FETCHING    ((uint32_t)0x00100000U)  /*!< Running - fetching the Tx descriptor */
+#define ETH_DMA_TRANSMITPROCESS_WAITING     ((uint32_t)0x00200000U)  /*!< Running - waiting for status */
+#define ETH_DMA_TRANSMITPROCESS_READING     ((uint32_t)0x00300000U)  /*!< Running - reading the data from host memory */
+#define ETH_DMA_TRANSMITPROCESS_SUSPENDED   ((uint32_t)0x00600000U)  /*!< Suspended - Tx Descriptor unavailable */
+#define ETH_DMA_TRANSMITPROCESS_CLOSING     ((uint32_t)0x00700000U)  /*!< Running - closing Rx descriptor */
+
+/**
+  * @}
+  */
+
+
+/** @defgroup ETH_DMA_receive_process_state ETH DMA receive process state
+  * @{
+  */
+#define ETH_DMA_RECEIVEPROCESS_STOPPED      ((uint32_t)0x00000000U)  /*!< Stopped - Reset or Stop Rx Command issued */
+#define ETH_DMA_RECEIVEPROCESS_FETCHING     ((uint32_t)0x00020000U)  /*!< Running - fetching the Rx descriptor */
+#define ETH_DMA_RECEIVEPROCESS_WAITING      ((uint32_t)0x00060000U)  /*!< Running - waiting for packet */
+#define ETH_DMA_RECEIVEPROCESS_SUSPENDED    ((uint32_t)0x00080000U)  /*!< Suspended - Rx Descriptor unavailable */
+#define ETH_DMA_RECEIVEPROCESS_CLOSING      ((uint32_t)0x000A0000U)  /*!< Running - closing descriptor */
+#define ETH_DMA_RECEIVEPROCESS_QUEUING      ((uint32_t)0x000E0000U)  /*!< Running - queuing the receive frame into host memory */
+
+/**
+  * @}
+  */
+
+/** @defgroup ETH_DMA_overflow ETH DMA overflow
+  * @{
+  */
+#define ETH_DMA_OVERFLOW_RXFIFOCOUNTER      ((uint32_t)0x10000000U)  /*!< Overflow bit for FIFO overflow counter */
+#define ETH_DMA_OVERFLOW_MISSEDFRAMECOUNTER ((uint32_t)0x00010000U)  /*!< Overflow bit for missed frame counter */
+/**
+  * @}
+  */
+
+/** @defgroup ETH_EXTI_LINE_WAKEUP ETH EXTI LINE WAKEUP
+  * @{
+  */
+#define ETH_EXTI_LINE_WAKEUP              ((uint32_t)0x00080000U)  /*!< External interrupt line 19 Connected to the ETH EXTI Line */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/* Exported macro ------------------------------------------------------------*/
+/** @defgroup ETH_Exported_Macros ETH Exported Macros
+ *  @brief macros to handle interrupts and specific clock configurations
+ * @{
+ */
+
+/** @brief Reset ETH handle state
+  * @param  __HANDLE__ specifies the ETH handle.
+  * @retval None
+  */
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+#define __HAL_ETH_RESET_HANDLE_STATE(__HANDLE__)  do{                                                 \
+                                                       (__HANDLE__)->State = HAL_ETH_STATE_RESET;     \
+                                                       (__HANDLE__)->MspInitCallback = NULL;          \
+                                                       (__HANDLE__)->MspDeInitCallback = NULL;        \
+                                                     } while(0)
+#else
+#define __HAL_ETH_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_ETH_STATE_RESET)
+#endif /*USE_HAL_ETH_REGISTER_CALLBACKS */
+
+/**
+  * @brief  Checks whether the specified Ethernet DMA Tx Desc flag is set or not.
+  * @param  __HANDLE__ ETH Handle
+  * @param  __FLAG__ specifies the flag of TDES0 to check.
+  * @retval the ETH_DMATxDescFlag (SET or RESET).
+  */
+#define __HAL_ETH_DMATXDESC_GET_FLAG(__HANDLE__, __FLAG__)             ((__HANDLE__)->TxDesc->Status & (__FLAG__) == (__FLAG__))
+
+/**
+  * @brief  Checks whether the specified Ethernet DMA Rx Desc flag is set or not.
+  * @param  __HANDLE__ ETH Handle
+  * @param  __FLAG__ specifies the flag of RDES0 to check.
+  * @retval the ETH_DMATxDescFlag (SET or RESET).
+  */
+#define __HAL_ETH_DMARXDESC_GET_FLAG(__HANDLE__, __FLAG__)             ((__HANDLE__)->RxDesc->Status & (__FLAG__) == (__FLAG__))
+
+/**
+  * @brief  Enables the specified DMA Rx Desc receive interrupt.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMARXDESC_ENABLE_IT(__HANDLE__)                          ((__HANDLE__)->RxDesc->ControlBufferSize &=(~(uint32_t)ETH_DMARXDESC_DIC))
+
+/**
+  * @brief  Disables the specified DMA Rx Desc receive interrupt.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMARXDESC_DISABLE_IT(__HANDLE__)                         ((__HANDLE__)->RxDesc->ControlBufferSize |= ETH_DMARXDESC_DIC)
+
+/**
+  * @brief  Set the specified DMA Rx Desc Own bit.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMARXDESC_SET_OWN_BIT(__HANDLE__)                           ((__HANDLE__)->RxDesc->Status |= ETH_DMARXDESC_OWN)
+
+/**
+  * @brief  Returns the specified Ethernet DMA Tx Desc collision count.
+  * @param  __HANDLE__ ETH Handle
+  * @retval The Transmit descriptor collision counter value.
+  */
+#define __HAL_ETH_DMATXDESC_GET_COLLISION_COUNT(__HANDLE__)                   (((__HANDLE__)->TxDesc->Status & ETH_DMATXDESC_CC) >> ETH_DMATXDESC_COLLISION_COUNTSHIFT)
+
+/**
+  * @brief  Set the specified DMA Tx Desc Own bit.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMATXDESC_SET_OWN_BIT(__HANDLE__)                       ((__HANDLE__)->TxDesc->Status |= ETH_DMATXDESC_OWN)
+
+/**
+  * @brief  Enables the specified DMA Tx Desc Transmit interrupt.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMATXDESC_ENABLE_IT(__HANDLE__)                          ((__HANDLE__)->TxDesc->Status |= ETH_DMATXDESC_IC)
+
+/**
+  * @brief  Disables the specified DMA Tx Desc Transmit interrupt.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMATXDESC_DISABLE_IT(__HANDLE__)                          ((__HANDLE__)->TxDesc->Status &= ~ETH_DMATXDESC_IC)
+
+/**
+  * @brief  Selects the specified Ethernet DMA Tx Desc Checksum Insertion.
+  * @param  __HANDLE__ ETH Handle
+  * @param  __CHECKSUM__ specifies is the DMA Tx desc checksum insertion.
+  *   This parameter can be one of the following values:
+  *     @arg ETH_DMATXDESC_CHECKSUMBYPASS : Checksum bypass
+  *     @arg ETH_DMATXDESC_CHECKSUMIPV4HEADER : IPv4 header checksum
+  *     @arg ETH_DMATXDESC_CHECKSUMTCPUDPICMPSEGMENT : TCP/UDP/ICMP checksum. Pseudo header checksum is assumed to be present
+  *     @arg ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL : TCP/UDP/ICMP checksum fully in hardware including pseudo header
+  * @retval None
+  */
+#define __HAL_ETH_DMATXDESC_CHECKSUM_INSERTION(__HANDLE__, __CHECKSUM__)     ((__HANDLE__)->TxDesc->Status |= (__CHECKSUM__))
+
+/**
+  * @brief  Enables the DMA Tx Desc CRC.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMATXDESC_CRC_ENABLE(__HANDLE__)                          ((__HANDLE__)->TxDesc->Status &= ~ETH_DMATXDESC_DC)
+
+/**
+  * @brief  Disables the DMA Tx Desc CRC.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMATXDESC_CRC_DISABLE(__HANDLE__)                         ((__HANDLE__)->TxDesc->Status |= ETH_DMATXDESC_DC)
+
+/**
+  * @brief  Enables the DMA Tx Desc padding for frame shorter than 64 bytes.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMATXDESC_SHORT_FRAME_PADDING_ENABLE(__HANDLE__)            ((__HANDLE__)->TxDesc->Status &= ~ETH_DMATXDESC_DP)
+
+/**
+  * @brief  Disables the DMA Tx Desc padding for frame shorter than 64 bytes.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_DMATXDESC_SHORT_FRAME_PADDING_DISABLE(__HANDLE__)           ((__HANDLE__)->TxDesc->Status |= ETH_DMATXDESC_DP)
+
+/**
+ * @brief  Enables the specified Ethernet MAC interrupts.
+  * @param  __HANDLE__    ETH Handle
+  * @param  __INTERRUPT__ specifies the Ethernet MAC interrupt sources to be
+  *   enabled or disabled.
+  *   This parameter can be any combination of the following values:
+  *     @arg ETH_MAC_IT_TST : Time stamp trigger interrupt
+  *     @arg ETH_MAC_IT_PMT : PMT interrupt
+  * @retval None
+  */
+#define __HAL_ETH_MAC_ENABLE_IT(__HANDLE__, __INTERRUPT__)                 ((__HANDLE__)->Instance->MACIMR |= (__INTERRUPT__))
+
+/**
+  * @brief  Disables the specified Ethernet MAC interrupts.
+  * @param  __HANDLE__    ETH Handle
+  * @param  __INTERRUPT__ specifies the Ethernet MAC interrupt sources to be
+  *   enabled or disabled.
+  *   This parameter can be any combination of the following values:
+  *     @arg ETH_MAC_IT_TST : Time stamp trigger interrupt
+  *     @arg ETH_MAC_IT_PMT : PMT interrupt
+  * @retval None
+  */
+#define __HAL_ETH_MAC_DISABLE_IT(__HANDLE__, __INTERRUPT__)                ((__HANDLE__)->Instance->MACIMR &= ~(__INTERRUPT__))
+
+/**
+  * @brief  Initiate a Pause Control Frame (Full-duplex only).
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_INITIATE_PAUSE_CONTROL_FRAME(__HANDLE__)              ((__HANDLE__)->Instance->MACFCR |= ETH_MACFCR_FCBBPA)
+
+/**
+  * @brief  Checks whether the Ethernet flow control busy bit is set or not.
+  * @param  __HANDLE__ ETH Handle
+  * @retval The new state of flow control busy status bit (SET or RESET).
+  */
+#define __HAL_ETH_GET_FLOW_CONTROL_BUSY_STATUS(__HANDLE__)               (((__HANDLE__)->Instance->MACFCR & ETH_MACFCR_FCBBPA) == ETH_MACFCR_FCBBPA)
+
+/**
+  * @brief  Enables the MAC Back Pressure operation activation (Half-duplex only).
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_BACK_PRESSURE_ACTIVATION_ENABLE(__HANDLE__)          ((__HANDLE__)->Instance->MACFCR |= ETH_MACFCR_FCBBPA)
+
+/**
+  * @brief  Disables the MAC BackPressure operation activation (Half-duplex only).
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_BACK_PRESSURE_ACTIVATION_DISABLE(__HANDLE__)         ((__HANDLE__)->Instance->MACFCR &= ~ETH_MACFCR_FCBBPA)
+
+/**
+  * @brief  Checks whether the specified Ethernet MAC flag is set or not.
+  * @param  __HANDLE__ ETH Handle
+  * @param  __FLAG__ specifies the flag to check.
+  *   This parameter can be one of the following values:
+  *     @arg ETH_MAC_FLAG_TST  : Time stamp trigger flag
+  *     @arg ETH_MAC_FLAG_MMCT : MMC transmit flag
+  *     @arg ETH_MAC_FLAG_MMCR : MMC receive flag
+  *     @arg ETH_MAC_FLAG_MMC  : MMC flag
+  *     @arg ETH_MAC_FLAG_PMT  : PMT flag
+  * @retval The state of Ethernet MAC flag.
+  */
+#define __HAL_ETH_MAC_GET_FLAG(__HANDLE__, __FLAG__)                   (((__HANDLE__)->Instance->MACSR &( __FLAG__)) == ( __FLAG__))
+
+/**
+  * @brief  Enables the specified Ethernet DMA interrupts.
+  * @param  __HANDLE__    ETH Handle
+  * @param  __INTERRUPT__ specifies the Ethernet DMA interrupt sources to be
+  *   enabled @ref ETH_DMA_Interrupts
+  * @retval None
+  */
+#define __HAL_ETH_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__)                 ((__HANDLE__)->Instance->DMAIER |= (__INTERRUPT__))
+
+/**
+  * @brief  Disables the specified Ethernet DMA interrupts.
+  * @param  __HANDLE__    ETH Handle
+  * @param  __INTERRUPT__ specifies the Ethernet DMA interrupt sources to be
+  *   disabled. @ref ETH_DMA_Interrupts
+  * @retval None
+  */
+#define __HAL_ETH_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__)                ((__HANDLE__)->Instance->DMAIER &= ~(__INTERRUPT__))
+
+/**
+  * @brief  Clears the Ethernet DMA IT pending bit.
+  * @param  __HANDLE__    ETH Handle
+  * @param  __INTERRUPT__ specifies the interrupt pending bit to clear. @ref ETH_DMA_Interrupts
+  * @retval None
+  */
+#define __HAL_ETH_DMA_CLEAR_IT(__HANDLE__, __INTERRUPT__)      ((__HANDLE__)->Instance->DMASR =(__INTERRUPT__))
+
+/**
+  * @brief  Checks whether the specified Ethernet DMA flag is set or not.
+* @param  __HANDLE__ ETH Handle
+  * @param  __FLAG__ specifies the flag to check. @ref ETH_DMA_Flags
+  * @retval The new state of ETH_DMA_FLAG (SET or RESET).
+  */
+#define __HAL_ETH_DMA_GET_FLAG(__HANDLE__, __FLAG__)                   (((__HANDLE__)->Instance->DMASR &( __FLAG__)) == ( __FLAG__))
+
+/**
+  * @brief  Checks whether the specified Ethernet DMA flag is set or not.
+  * @param  __HANDLE__ ETH Handle
+  * @param  __FLAG__ specifies the flag to clear. @ref ETH_DMA_Flags
+  * @retval The new state of ETH_DMA_FLAG (SET or RESET).
+  */
+#define __HAL_ETH_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__)                 ((__HANDLE__)->Instance->DMASR = (__FLAG__))
+
+/**
+  * @brief  Checks whether the specified Ethernet DMA overflow flag is set or not.
+  * @param  __HANDLE__ ETH Handle
+  * @param  __OVERFLOW__ specifies the DMA overflow flag to check.
+  *   This parameter can be one of the following values:
+  *     @arg ETH_DMA_OVERFLOW_RXFIFOCOUNTER : Overflow for FIFO Overflows Counter
+  *     @arg ETH_DMA_OVERFLOW_MISSEDFRAMECOUNTER : Overflow for Buffer Unavailable Missed Frame Counter
+  * @retval The state of Ethernet DMA overflow Flag (SET or RESET).
+  */
+#define __HAL_ETH_GET_DMA_OVERFLOW_STATUS(__HANDLE__, __OVERFLOW__)       (((__HANDLE__)->Instance->DMAMFBOCR & (__OVERFLOW__)) == (__OVERFLOW__))
+
+/**
+  * @brief  Set the DMA Receive status watchdog timer register value
+  * @param  __HANDLE__ ETH Handle
+  * @param  __VALUE__ DMA Receive status watchdog timer register value
+  * @retval None
+  */
+#define __HAL_ETH_SET_RECEIVE_WATCHDOG_TIMER(__HANDLE__, __VALUE__)       ((__HANDLE__)->Instance->DMARSWTR = (__VALUE__))
+
+/**
+  * @brief  Enables any unicast packet filtered by the MAC address
+  *   recognition to be a wake-up frame.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_GLOBAL_UNICAST_WAKEUP_ENABLE(__HANDLE__)               ((__HANDLE__)->Instance->MACPMTCSR |= ETH_MACPMTCSR_GU)
+
+/**
+  * @brief  Disables any unicast packet filtered by the MAC address
+  *   recognition to be a wake-up frame.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_GLOBAL_UNICAST_WAKEUP_DISABLE(__HANDLE__)              ((__HANDLE__)->Instance->MACPMTCSR &= ~ETH_MACPMTCSR_GU)
+
+/**
+  * @brief  Enables the MAC Wake-Up Frame Detection.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_FRAME_DETECTION_ENABLE(__HANDLE__)              ((__HANDLE__)->Instance->MACPMTCSR |= ETH_MACPMTCSR_WFE)
+
+/**
+  * @brief  Disables the MAC Wake-Up Frame Detection.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_FRAME_DETECTION_DISABLE(__HANDLE__)             ((__HANDLE__)->Instance->MACPMTCSR &= ~ETH_MACPMTCSR_WFE)
+
+/**
+  * @brief  Enables the MAC Magic Packet Detection.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_MAGIC_PACKET_DETECTION_ENABLE(__HANDLE__)              ((__HANDLE__)->Instance->MACPMTCSR |= ETH_MACPMTCSR_MPE)
+
+/**
+  * @brief  Disables the MAC Magic Packet Detection.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_MAGIC_PACKET_DETECTION_DISABLE(__HANDLE__)             ((__HANDLE__)->Instance->MACPMTCSR &= ~ETH_MACPMTCSR_WFE)
+
+/**
+  * @brief  Enables the MAC Power Down.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_POWER_DOWN_ENABLE(__HANDLE__)                         ((__HANDLE__)->Instance->MACPMTCSR |= ETH_MACPMTCSR_PD)
+
+/**
+  * @brief  Disables the MAC Power Down.
+  * @param  __HANDLE__ ETH Handle
+  * @retval None
+  */
+#define __HAL_ETH_POWER_DOWN_DISABLE(__HANDLE__)                        ((__HANDLE__)->Instance->MACPMTCSR &= ~ETH_MACPMTCSR_PD)
+
+/**
+  * @brief  Checks whether the specified Ethernet PMT flag is set or not.
+  * @param  __HANDLE__ ETH Handle.
+  * @param  __FLAG__ specifies the flag to check.
+  *   This parameter can be one of the following values:
+  *     @arg ETH_PMT_FLAG_WUFFRPR : Wake-Up Frame Filter Register Pointer Reset
+  *     @arg ETH_PMT_FLAG_WUFR    : Wake-Up Frame Received
+  *     @arg ETH_PMT_FLAG_MPR     : Magic Packet Received
+  * @retval The new state of Ethernet PMT Flag (SET or RESET).
+  */
+#define __HAL_ETH_GET_PMT_FLAG_STATUS(__HANDLE__, __FLAG__)               (((__HANDLE__)->Instance->MACPMTCSR &( __FLAG__)) == ( __FLAG__))
+
+/**
+  * @brief  Preset and Initialize the MMC counters to almost-full value: 0xFFFF_FFF0 (full - 16)
+  * @param   __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_MMC_COUNTER_FULL_PRESET(__HANDLE__)                     ((__HANDLE__)->Instance->MMCCR |= (ETH_MMCCR_MCFHP | ETH_MMCCR_MCP))
+
+/**
+  * @brief  Preset and Initialize the MMC counters to almost-half value: 0x7FFF_FFF0 (half - 16)
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_MMC_COUNTER_HALF_PRESET(__HANDLE__)                     do{(__HANDLE__)->Instance->MMCCR &= ~ETH_MMCCR_MCFHP;\
+                                                                          (__HANDLE__)->Instance->MMCCR |= ETH_MMCCR_MCP;} while (0)
+
+/**
+  * @brief  Enables the MMC Counter Freeze.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_MMC_COUNTER_FREEZE_ENABLE(__HANDLE__)                  ((__HANDLE__)->Instance->MMCCR |= ETH_MMCCR_MCF)
+
+/**
+  * @brief  Disables the MMC Counter Freeze.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_MMC_COUNTER_FREEZE_DISABLE(__HANDLE__)                 ((__HANDLE__)->Instance->MMCCR &= ~ETH_MMCCR_MCF)
+
+/**
+  * @brief  Enables the MMC Reset On Read.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_ETH_MMC_RESET_ONREAD_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->MMCCR |= ETH_MMCCR_ROR)
+
+/**
+  * @brief  Disables the MMC Reset On Read.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_ETH_MMC_RESET_ONREAD_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->MMCCR &= ~ETH_MMCCR_ROR)
+
+/**
+  * @brief  Enables the MMC Counter Stop Rollover.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_ETH_MMC_COUNTER_ROLLOVER_ENABLE(__HANDLE__)            ((__HANDLE__)->Instance->MMCCR &= ~ETH_MMCCR_CSR)
+
+/**
+  * @brief  Disables the MMC Counter Stop Rollover.
+  * @param  __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_ETH_MMC_COUNTER_ROLLOVER_DISABLE(__HANDLE__)           ((__HANDLE__)->Instance->MMCCR |= ETH_MMCCR_CSR)
+
+/**
+  * @brief  Resets the MMC Counters.
+  * @param   __HANDLE__ ETH Handle.
+  * @retval None
+  */
+#define __HAL_ETH_MMC_COUNTERS_RESET(__HANDLE__)                         ((__HANDLE__)->Instance->MMCCR |= ETH_MMCCR_CR)
+
+/**
+  * @brief  Enables the specified Ethernet MMC Rx interrupts.
+  * @param   __HANDLE__ ETH Handle.
+  * @param  __INTERRUPT__ specifies the Ethernet MMC interrupt sources to be enabled or disabled.
+  *   This parameter can be one of the following values:
+  *     @arg ETH_MMC_IT_RGUF  : When Rx good unicast frames counter reaches half the maximum value
+  *     @arg ETH_MMC_IT_RFAE  : When Rx alignment error counter reaches half the maximum value
+  *     @arg ETH_MMC_IT_RFCE  : When Rx crc error counter reaches half the maximum value
+  * @retval None
+  */
+#define __HAL_ETH_MMC_RX_IT_ENABLE(__HANDLE__, __INTERRUPT__)               (__HANDLE__)->Instance->MMCRIMR &= ~((__INTERRUPT__) & 0xEFFFFFFF)
+/**
+  * @brief  Disables the specified Ethernet MMC Rx interrupts.
+  * @param   __HANDLE__ ETH Handle.
+  * @param  __INTERRUPT__ specifies the Ethernet MMC interrupt sources to be enabled or disabled.
+  *   This parameter can be one of the following values:
+  *     @arg ETH_MMC_IT_RGUF  : When Rx good unicast frames counter reaches half the maximum value
+  *     @arg ETH_MMC_IT_RFAE  : When Rx alignment error counter reaches half the maximum value
+  *     @arg ETH_MMC_IT_RFCE  : When Rx crc error counter reaches half the maximum value
+  * @retval None
+  */
+#define __HAL_ETH_MMC_RX_IT_DISABLE(__HANDLE__, __INTERRUPT__)              (__HANDLE__)->Instance->MMCRIMR |= ((__INTERRUPT__) & 0xEFFFFFFF)
+/**
+  * @brief  Enables the specified Ethernet MMC Tx interrupts.
+  * @param   __HANDLE__ ETH Handle.
+  * @param  __INTERRUPT__ specifies the Ethernet MMC interrupt sources to be enabled or disabled.
+  *   This parameter can be one of the following values:
+  *     @arg ETH_MMC_IT_TGF   : When Tx good frame counter reaches half the maximum value
+  *     @arg ETH_MMC_IT_TGFMSC: When Tx good multi col counter reaches half the maximum value
+  *     @arg ETH_MMC_IT_TGFSC : When Tx good single col counter reaches half the maximum value
+  * @retval None
+  */
+#define __HAL_ETH_MMC_TX_IT_ENABLE(__HANDLE__, __INTERRUPT__)            ((__HANDLE__)->Instance->MMCRIMR &= ~ (__INTERRUPT__))
+
+/**
+  * @brief  Disables the specified Ethernet MMC Tx interrupts.
+  * @param   __HANDLE__ ETH Handle.
+  * @param  __INTERRUPT__ specifies the Ethernet MMC interrupt sources to be enabled or disabled.
+  *   This parameter can be one of the following values:
+  *     @arg ETH_MMC_IT_TGF   : When Tx good frame counter reaches half the maximum value
+  *     @arg ETH_MMC_IT_TGFMSC: When Tx good multi col counter reaches half the maximum value
+  *     @arg ETH_MMC_IT_TGFSC : When Tx good single col counter reaches half the maximum value
+  * @retval None
+  */
+#define __HAL_ETH_MMC_TX_IT_DISABLE(__HANDLE__, __INTERRUPT__)           ((__HANDLE__)->Instance->MMCRIMR |= (__INTERRUPT__))
+
+/**
+  * @brief  Enables the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_ENABLE_IT()    EXTI->IMR |= (ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief  Disables the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_DISABLE_IT()   EXTI->IMR &= ~(ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief Enable event on ETH External event line.
+  * @retval None.
+  */
+#define __HAL_ETH_WAKEUP_EXTI_ENABLE_EVENT()  EXTI->EMR |= (ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief Disable event on ETH External event line
+  * @retval None.
+  */
+#define __HAL_ETH_WAKEUP_EXTI_DISABLE_EVENT() EXTI->EMR &= ~(ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief  Get flag of the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_GET_FLAG()     EXTI->PR & (ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief  Clear flag of the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG()   EXTI->PR = (ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief  Enables rising edge trigger to the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE_TRIGGER()  EXTI->RTSR |= ETH_EXTI_LINE_WAKEUP
+
+/**
+  * @brief  Disables the rising edge trigger to the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_DISABLE_RISING_EDGE_TRIGGER()  EXTI->RTSR &= ~(ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief  Enables falling edge trigger to the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE_TRIGGER()  EXTI->FTSR |= (ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief  Disables falling edge trigger to the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_DISABLE_FALLING_EDGE_TRIGGER()  EXTI->FTSR &= ~(ETH_EXTI_LINE_WAKEUP)
+
+/**
+  * @brief  Enables rising/falling edge trigger to the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER()  do{EXTI->RTSR |= ETH_EXTI_LINE_WAKEUP;\
+                                                                 EXTI->FTSR |= ETH_EXTI_LINE_WAKEUP;\
+                                                                 }while(0)
+
+/**
+  * @brief  Disables rising/falling edge trigger to the ETH External interrupt line.
+  * @retval None
+  */
+#define __HAL_ETH_WAKEUP_EXTI_DISABLE_FALLINGRISING_TRIGGER()  do{EXTI->RTSR &= ~(ETH_EXTI_LINE_WAKEUP);\
+                                                                  EXTI->FTSR &= ~(ETH_EXTI_LINE_WAKEUP);\
+                                                                  }while(0)
+
+/**
+  * @brief Generate a Software interrupt on selected EXTI line.
+  * @retval None.
+  */
+#define __HAL_ETH_WAKEUP_EXTI_GENERATE_SWIT()                  EXTI->SWIER|= ETH_EXTI_LINE_WAKEUP
+
+/**
+  * @}
+  */
+/* Exported functions --------------------------------------------------------*/
+
+/** @addtogroup ETH_Exported_Functions
+  * @{
+  */
+
+/* Initialization and de-initialization functions  ****************************/
+
+/** @addtogroup ETH_Exported_Functions_Group1
+  * @{
+  */
+HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef *heth);
+HAL_StatusTypeDef HAL_ETH_DeInit(ETH_HandleTypeDef *heth);
+void HAL_ETH_MspInit(ETH_HandleTypeDef *heth);
+void HAL_ETH_MspDeInit(ETH_HandleTypeDef *heth);
+HAL_StatusTypeDef HAL_ETH_DMATxDescListInit(ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMATxDescTab, uint8_t* TxBuff, uint32_t TxBuffCount);
+HAL_StatusTypeDef HAL_ETH_DMARxDescListInit(ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount);
+/* Callbacks Register/UnRegister functions  ***********************************/
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+HAL_StatusTypeDef HAL_ETH_RegisterCallback(ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID, pETH_CallbackTypeDef pCallback);
+HAL_StatusTypeDef HAL_ETH_UnRegisterCallback(ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID);
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+/**
+  * @}
+  */
+/* IO operation functions  ****************************************************/
+
+/** @addtogroup ETH_Exported_Functions_Group2
+  * @{
+  */
+HAL_StatusTypeDef HAL_ETH_TransmitFrame(ETH_HandleTypeDef *heth, uint32_t FrameLength);
+HAL_StatusTypeDef HAL_ETH_GetReceivedFrame(ETH_HandleTypeDef *heth);
+/* Communication with PHY functions*/
+HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t *RegValue);
+HAL_StatusTypeDef HAL_ETH_WritePHYRegister(ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t RegValue);
+/* Non-Blocking mode: Interrupt */
+HAL_StatusTypeDef HAL_ETH_GetReceivedFrame_IT(ETH_HandleTypeDef *heth);
+void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth);
+/* Callback in non blocking modes (Interrupt) */
+void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *heth);
+void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth);
+void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *heth);
+/**
+  * @}
+  */
+
+/* Peripheral Control functions  **********************************************/
+
+/** @addtogroup ETH_Exported_Functions_Group3
+  * @{
+  */
+
+HAL_StatusTypeDef HAL_ETH_Start(ETH_HandleTypeDef *heth);
+HAL_StatusTypeDef HAL_ETH_Stop(ETH_HandleTypeDef *heth);
+HAL_StatusTypeDef HAL_ETH_ConfigMAC(ETH_HandleTypeDef *heth, ETH_MACInitTypeDef *macconf);
+HAL_StatusTypeDef HAL_ETH_ConfigDMA(ETH_HandleTypeDef *heth, ETH_DMAInitTypeDef *dmaconf);
+/**
+  * @}
+  */
+
+/* Peripheral State functions  ************************************************/
+
+/** @addtogroup ETH_Exported_Functions_Group4
+  * @{
+  */
+HAL_ETH_StateTypeDef HAL_ETH_GetState(ETH_HandleTypeDef *heth);
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+#endif /* ETH */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F7xx_HAL_ETH_LEGACY_H */
diff --git a/Inc/stm32f7xx_hal_can.h b/Inc/stm32f7xx_hal_can.h
index 5430887..dc61353 100644
--- a/Inc/stm32f7xx_hal_can.h
+++ b/Inc/stm32f7xx_hal_can.h
@@ -102,21 +102,25 @@
 {
   uint32_t FilterIdHigh;          /*!< Specifies the filter identification number (MSBs for a 32-bit
                                        configuration, first one for a 16-bit configuration).
-                                       This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
+                                       This parameter must be a number between
+                                       Min_Data = 0x0000 and Max_Data = 0xFFFF. */
 
   uint32_t FilterIdLow;           /*!< Specifies the filter identification number (LSBs for a 32-bit
                                        configuration, second one for a 16-bit configuration).
-                                       This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
+                                       This parameter must be a number between
+                                       Min_Data = 0x0000 and Max_Data = 0xFFFF. */
 
   uint32_t FilterMaskIdHigh;      /*!< Specifies the filter mask number or identification number,
                                        according to the mode (MSBs for a 32-bit configuration,
                                        first one for a 16-bit configuration).
-                                       This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
+                                       This parameter must be a number between
+                                       Min_Data = 0x0000 and Max_Data = 0xFFFF. */
 
   uint32_t FilterMaskIdLow;       /*!< Specifies the filter mask number or identification number,
                                        according to the mode (LSBs for a 32-bit configuration,
                                        second one for a 16-bit configuration).
-                                       This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
+                                       This parameter must be a number between
+                                       Min_Data = 0x0000 and Max_Data = 0xFFFF. */
 
   uint32_t FilterFIFOAssignment;  /*!< Specifies the FIFO (0 or 1U) which will be assigned to the filter.
                                        This parameter can be a value of @ref CAN_filter_FIFO */
@@ -294,11 +298,11 @@
 #define HAL_CAN_ERROR_RX_FOV0         (0x00000200U)  /*!< Rx FIFO0 overrun error                               */
 #define HAL_CAN_ERROR_RX_FOV1         (0x00000400U)  /*!< Rx FIFO1 overrun error                               */
 #define HAL_CAN_ERROR_TX_ALST0        (0x00000800U)  /*!< TxMailbox 0 transmit failure due to arbitration lost */
-#define HAL_CAN_ERROR_TX_TERR0        (0x00001000U)  /*!< TxMailbox 0 transmit failure due to transmit error    */
+#define HAL_CAN_ERROR_TX_TERR0        (0x00001000U)  /*!< TxMailbox 0 transmit failure due to transmit error   */
 #define HAL_CAN_ERROR_TX_ALST1        (0x00002000U)  /*!< TxMailbox 1 transmit failure due to arbitration lost */
-#define HAL_CAN_ERROR_TX_TERR1        (0x00004000U)  /*!< TxMailbox 1 transmit failure due to transmit error    */
+#define HAL_CAN_ERROR_TX_TERR1        (0x00004000U)  /*!< TxMailbox 1 transmit failure due to transmit error   */
 #define HAL_CAN_ERROR_TX_ALST2        (0x00008000U)  /*!< TxMailbox 2 transmit failure due to arbitration lost */
-#define HAL_CAN_ERROR_TX_TERR2        (0x00010000U)  /*!< TxMailbox 2 transmit failure due to transmit error    */
+#define HAL_CAN_ERROR_TX_TERR2        (0x00010000U)  /*!< TxMailbox 2 transmit failure due to transmit error   */
 #define HAL_CAN_ERROR_TIMEOUT         (0x00020000U)  /*!< Timeout error                                        */
 #define HAL_CAN_ERROR_NOT_INITIALIZED (0x00040000U)  /*!< Peripheral not initialized                           */
 #define HAL_CAN_ERROR_NOT_READY       (0x00080000U)  /*!< Peripheral not ready                                 */
@@ -329,7 +333,8 @@
 #define CAN_MODE_NORMAL             (0x00000000U)                              /*!< Normal mode   */
 #define CAN_MODE_LOOPBACK           ((uint32_t)CAN_BTR_LBKM)                   /*!< Loopback mode */
 #define CAN_MODE_SILENT             ((uint32_t)CAN_BTR_SILM)                   /*!< Silent mode   */
-#define CAN_MODE_SILENT_LOOPBACK    ((uint32_t)(CAN_BTR_LBKM | CAN_BTR_SILM))  /*!< Loopback combined with silent mode */
+#define CAN_MODE_SILENT_LOOPBACK    ((uint32_t)(CAN_BTR_LBKM | CAN_BTR_SILM))  /*!< Loopback combined with
+                                                                                    silent mode   */
 /**
   * @}
   */
@@ -644,7 +649,8 @@
 
 #if USE_HAL_CAN_REGISTER_CALLBACKS == 1
 /* Callbacks Register/UnRegister functions  ***********************************/
-HAL_StatusTypeDef HAL_CAN_RegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID, void (* pCallback)(CAN_HandleTypeDef *_hcan));
+HAL_StatusTypeDef HAL_CAN_RegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID,
+                                           void (* pCallback)(CAN_HandleTypeDef *_hcan));
 HAL_StatusTypeDef HAL_CAN_UnRegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID);
 
 #endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
@@ -658,7 +664,7 @@
  */
 
 /* Configuration functions ****************************************************/
-HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterTypeDef *sFilterConfig);
+HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, const CAN_FilterTypeDef *sFilterConfig);
 
 /**
  * @}
@@ -674,14 +680,16 @@
 HAL_StatusTypeDef HAL_CAN_Stop(CAN_HandleTypeDef *hcan);
 HAL_StatusTypeDef HAL_CAN_RequestSleep(CAN_HandleTypeDef *hcan);
 HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan);
-uint32_t HAL_CAN_IsSleepActive(CAN_HandleTypeDef *hcan);
-HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_t aData[], uint32_t *pTxMailbox);
+uint32_t HAL_CAN_IsSleepActive(const CAN_HandleTypeDef *hcan);
+HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, const CAN_TxHeaderTypeDef *pHeader,
+                                       const uint8_t aData[], uint32_t *pTxMailbox);
 HAL_StatusTypeDef HAL_CAN_AbortTxRequest(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes);
-uint32_t HAL_CAN_GetTxMailboxesFreeLevel(CAN_HandleTypeDef *hcan);
-uint32_t HAL_CAN_IsTxMessagePending(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes);
-uint32_t HAL_CAN_GetTxTimestamp(CAN_HandleTypeDef *hcan, uint32_t TxMailbox);
-HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo, CAN_RxHeaderTypeDef *pHeader, uint8_t aData[]);
-uint32_t HAL_CAN_GetRxFifoFillLevel(CAN_HandleTypeDef *hcan, uint32_t RxFifo);
+uint32_t HAL_CAN_GetTxMailboxesFreeLevel(const CAN_HandleTypeDef *hcan);
+uint32_t HAL_CAN_IsTxMessagePending(const CAN_HandleTypeDef *hcan, uint32_t TxMailboxes);
+uint32_t HAL_CAN_GetTxTimestamp(const CAN_HandleTypeDef *hcan, uint32_t TxMailbox);
+HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo,
+                                       CAN_RxHeaderTypeDef *pHeader, uint8_t aData[]);
+uint32_t HAL_CAN_GetRxFifoFillLevel(const CAN_HandleTypeDef *hcan, uint32_t RxFifo);
 
 /**
  * @}
@@ -729,8 +737,8 @@
  * @{
  */
 /* Peripheral State and Error functions ***************************************/
-HAL_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef *hcan);
-uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan);
+HAL_CAN_StateTypeDef HAL_CAN_GetState(const CAN_HandleTypeDef *hcan);
+uint32_t HAL_CAN_GetError(const CAN_HandleTypeDef *hcan);
 HAL_StatusTypeDef HAL_CAN_ResetError(CAN_HandleTypeDef *hcan);
 
 /**
@@ -808,7 +816,8 @@
 #define IS_CAN_TX_MAILBOX(TRANSMITMAILBOX) (((TRANSMITMAILBOX) == CAN_TX_MAILBOX0 ) || \
                                             ((TRANSMITMAILBOX) == CAN_TX_MAILBOX1 ) || \
                                             ((TRANSMITMAILBOX) == CAN_TX_MAILBOX2 ))
-#define IS_CAN_TX_MAILBOX_LIST(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= (CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | CAN_TX_MAILBOX2))
+#define IS_CAN_TX_MAILBOX_LIST(TRANSMITMAILBOX) ((TRANSMITMAILBOX) <= (CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | \
+                                                                       CAN_TX_MAILBOX2))
 #define IS_CAN_STDID(STDID)   ((STDID) <= 0x7FFU)
 #define IS_CAN_EXTID(EXTID)   ((EXTID) <= 0x1FFFFFFFU)
 #define IS_CAN_DLC(DLC)       ((DLC) <= 8U)
diff --git a/Inc/stm32f7xx_hal_cec.h b/Inc/stm32f7xx_hal_cec.h
index df908cc..63b2e47 100644
--- a/Inc/stm32f7xx_hal_cec.h
+++ b/Inc/stm32f7xx_hal_cec.h
@@ -48,70 +48,80 @@
 typedef struct
 {
   uint32_t SignalFreeTime;               /*!< Set SFT field, specifies the Signal Free Time.
-                                              It can be one of @ref CEC_Signal_Free_Time
+                                              It can be one of CEC_Signal_Free_Time
                                               and belongs to the set {0,...,7} where
                                               0x0 is the default configuration
                                               else means 0.5 + (SignalFreeTime - 1) nominal data bit periods */
 
   uint32_t Tolerance;                    /*!< Set RXTOL bit, specifies the tolerance accepted on the received waveforms,
-                                              it can be a value of @ref CEC_Tolerance : it is either CEC_STANDARD_TOLERANCE
-                                              or CEC_EXTENDED_TOLERANCE */
+                                              it can be a value of CEC_Tolerance :
+                                              it is either CEC_STANDARD_TOLERANCE or CEC_EXTENDED_TOLERANCE */
 
-  uint32_t BRERxStop;                    /*!< Set BRESTP bit @ref CEC_BRERxStop : specifies whether or not a Bit Rising Error stops the reception.
+  uint32_t BRERxStop;                    /*!< Set BRESTP bit CEC_BRERxStop : specifies whether or not a Bit Rising
+                                              Error stops the reception.
                                               CEC_NO_RX_STOP_ON_BRE: reception is not stopped.
                                               CEC_RX_STOP_ON_BRE:    reception is stopped. */
 
-  uint32_t BREErrorBitGen;               /*!< Set BREGEN bit @ref CEC_BREErrorBitGen : specifies whether or not an Error-Bit is generated on the
+  uint32_t BREErrorBitGen;               /*!< Set BREGEN bit CEC_BREErrorBitGen : specifies whether or not an
+                                              Error-Bit is generated on the
                                               CEC line upon Bit Rising Error detection.
                                               CEC_BRE_ERRORBIT_NO_GENERATION: no error-bit generation.
                                               CEC_BRE_ERRORBIT_GENERATION:    error-bit generation if BRESTP is set. */
 
-  uint32_t LBPEErrorBitGen;              /*!< Set LBPEGEN bit @ref CEC_LBPEErrorBitGen : specifies whether or not an Error-Bit is generated on the
+  uint32_t LBPEErrorBitGen;              /*!< Set LBPEGEN bit CEC_LBPEErrorBitGen : specifies whether or not an
+                                              Error-Bit is generated on the
                                               CEC line upon Long Bit Period Error detection.
                                               CEC_LBPE_ERRORBIT_NO_GENERATION:  no error-bit generation.
                                               CEC_LBPE_ERRORBIT_GENERATION:     error-bit generation. */
 
-  uint32_t BroadcastMsgNoErrorBitGen;    /*!< Set BRDNOGEN bit @ref CEC_BroadCastMsgErrorBitGen : allows to avoid an Error-Bit generation on the CEC line
+  uint32_t BroadcastMsgNoErrorBitGen;    /*!< Set BRDNOGEN bit CEC_BroadCastMsgErrorBitGen : allows to avoid an
+                                              Error-Bit generation on the CEC line
                                               upon an error detected on a broadcast message.
 
-                                              It supersedes BREGEN and LBPEGEN bits for a broadcast message error handling. It can take two values:
+                                              It supersedes BREGEN and LBPEGEN bits for a broadcast message error
+                                              handling. It can take two values:
 
                                               1) CEC_BROADCASTERROR_ERRORBIT_GENERATION.
-                                                 a) BRE detection: error-bit generation on the CEC line if BRESTP=CEC_RX_STOP_ON_BRE
-                                                    and BREGEN=CEC_BRE_ERRORBIT_NO_GENERATION.
+                                                 a) BRE detection: error-bit generation on the CEC line if
+                                                    BRESTP=CEC_RX_STOP_ON_BRE and BREGEN=CEC_BRE_ERRORBIT_NO_GENERATION.
                                                  b) LBPE detection: error-bit generation on the CEC line
                                                     if LBPGEN=CEC_LBPE_ERRORBIT_NO_GENERATION.
 
                                               2) CEC_BROADCASTERROR_NO_ERRORBIT_GENERATION.
-                                                 no error-bit generation in case neither a) nor b) are satisfied. Additionally,
-                                                 there is no error-bit generation in case of Short Bit Period Error detection in
-                                                 a broadcast message while LSTN bit is set. */
+                                                 no error-bit generation in case neither a) nor b) are satisfied.
+                                                 Additionally, there is no error-bit generation in case of Short Bit
+                                                 Period Error detection in a broadcast message while LSTN bit is set. */
 
-  uint32_t SignalFreeTimeOption;         /*!< Set SFTOP bit @ref CEC_SFT_Option : specifies when SFT timer starts.
+  uint32_t SignalFreeTimeOption;         /*!< Set SFTOP bit CEC_SFT_Option : specifies when SFT timer starts.
                                               CEC_SFT_START_ON_TXSOM SFT:    timer starts when TXSOM is set by software.
-                                              CEC_SFT_START_ON_TX_RX_END:  SFT timer starts automatically at the end of message transmission/reception. */
+                                              CEC_SFT_START_ON_TX_RX_END:  SFT timer starts automatically at the end
+                                              of message transmission/reception. */
 
-  uint32_t ListenMode;                   /*!< Set LSTN bit @ref CEC_Listening_Mode : specifies device listening mode. It can take two values:
+  uint32_t ListenMode;                   /*!< Set LSTN bit CEC_Listening_Mode : specifies device listening mode.
+                                              It can take two values:
 
-                                              CEC_REDUCED_LISTENING_MODE: CEC peripheral receives only message addressed to its
-                                                own address (OAR). Messages addressed to different destination are ignored.
+                                              CEC_REDUCED_LISTENING_MODE: CEC peripheral receives only message addressed
+                                                to its own address (OAR). Messages addressed to different destination
+                                                are ignored.
                                                 Broadcast messages are always received.
 
-                                              CEC_FULL_LISTENING_MODE: CEC peripheral receives messages addressed to its own
-                                                address (OAR) with positive acknowledge. Messages addressed to different destination
-                                                are received, but without interfering with the CEC bus: no acknowledge sent.  */
+                                              CEC_FULL_LISTENING_MODE: CEC peripheral receives messages addressed to its
+                                                own address (OAR) with positive acknowledge. Messages addressed to
+                                                different destination are received, but without interfering with the
+                                                CEC bus: no acknowledge sent.  */
 
-  uint16_t  OwnAddress;                 /*!< Own addresses configuration
-                                             This parameter can be a value of @ref CEC_OWN_ADDRESS */
+  uint16_t  OwnAddress;                  /*!< Own addresses configuration
+                                              This parameter can be a value of CEC_OWN_ADDRESS */
 
-  uint8_t  *RxBuffer;                    /*!< CEC Rx buffer pointeur */
+  uint8_t  *RxBuffer;                    /*!< CEC Rx buffer pointer */
 
 
 } CEC_InitTypeDef;
 
 /**
   * @brief HAL CEC State definition
-  * @note  HAL CEC State value is a combination of 2 different substates: gState and RxState (see @ref CEC_State_Definition).
+  * @note  HAL CEC State value is a combination of 2 different substates: gState and RxState
+           (see CEC_State_Definition).
   *        - gState contains CEC state information related to global Handle management
   *          and also information related to Tx operations.
   *          gState value coding follow below described bitmap :
@@ -159,37 +169,37 @@
 typedef struct
 #endif /* USE_HAL_CEC_REGISTER_CALLBACKS */
 {
-  CEC_TypeDef             *Instance;      /*!< CEC registers base address */
+  CEC_TypeDef             *Instance;      /*!< CEC registers base address                                 */
 
-  CEC_InitTypeDef         Init;           /*!< CEC communication parameters */
+  CEC_InitTypeDef         Init;           /*!< CEC communication parameters                               */
 
-  uint8_t                 *pTxBuffPtr;    /*!< Pointer to CEC Tx transfer Buffer */
+  const uint8_t           *pTxBuffPtr;    /*!< Pointer to CEC Tx transfer Buffer                          */
 
-  uint16_t                TxXferCount;    /*!< CEC Tx Transfer Counter */
+  uint16_t                TxXferCount;    /*!< CEC Tx Transfer Counter                                    */
 
-  uint16_t                RxXferSize;     /*!< CEC Rx Transfer size, 0: header received only */
+  uint16_t                RxXferSize;     /*!< CEC Rx Transfer size, 0: header received only              */
 
-  HAL_LockTypeDef         Lock;           /*!< Locking object */
+  HAL_LockTypeDef         Lock;           /*!< Locking object                                             */
 
   HAL_CEC_StateTypeDef    gState;         /*!< CEC state information related to global Handle management
                                                and also related to Tx operations.
-                                               This parameter can be a value of @ref HAL_CEC_StateTypeDef */
+                                               This parameter can be a value of HAL_CEC_StateTypeDef      */
 
   HAL_CEC_StateTypeDef    RxState;        /*!< CEC state information related to Rx operations.
-                                               This parameter can be a value of @ref HAL_CEC_StateTypeDef */
+                                               This parameter can be a value of HAL_CEC_StateTypeDef      */
 
   uint32_t                ErrorCode;      /*!< For errors handling purposes, copy of ISR register
-                                               in case error is reported */
+                                               in case error is reported                                  */
 
 #if (USE_HAL_CEC_REGISTER_CALLBACKS == 1)
   void (* TxCpltCallback)(struct __CEC_HandleTypeDef
-                          *hcec);                                /*!< CEC Tx Transfer completed callback */
+                          *hcec);                                /*!< CEC Tx Transfer completed callback  */
   void (* RxCpltCallback)(struct __CEC_HandleTypeDef *hcec,
-                          uint32_t RxFrameSize);          /*!< CEC Rx Transfer completed callback */
-  void (* ErrorCallback)(struct __CEC_HandleTypeDef *hcec);                                 /*!< CEC error callback */
+                          uint32_t RxFrameSize);                 /*!< CEC Rx Transfer completed callback  */
+  void (* ErrorCallback)(struct __CEC_HandleTypeDef *hcec);      /*!< CEC error callback                  */
 
-  void (* MspInitCallback)(struct __CEC_HandleTypeDef *hcec);               /*!< CEC Msp Init callback              */
-  void (* MspDeInitCallback)(struct __CEC_HandleTypeDef *hcec);             /*!< CEC Msp DeInit callback            */
+  void (* MspInitCallback)(struct __CEC_HandleTypeDef *hcec);    /*!< CEC Msp Init callback               */
+  void (* MspDeInitCallback)(struct __CEC_HandleTypeDef *hcec);  /*!< CEC Msp DeInit callback             */
 
 #endif /* (USE_HAL_CEC_REGISTER_CALLBACKS) */
 } CEC_HandleTypeDef;
@@ -202,7 +212,7 @@
 {
   HAL_CEC_TX_CPLT_CB_ID      = 0x00U,    /*!< CEC Tx Transfer completed callback ID  */
   HAL_CEC_RX_CPLT_CB_ID      = 0x01U,    /*!< CEC Rx Transfer completed callback ID  */
-  HAL_CEC_ERROR_CB_ID        = 0x02U,    /*!< CEC error callback ID                 */
+  HAL_CEC_ERROR_CB_ID        = 0x02U,    /*!< CEC error callback ID                  */
   HAL_CEC_MSPINIT_CB_ID      = 0x03U,    /*!< CEC Msp Init callback ID               */
   HAL_CEC_MSPDEINIT_CB_ID    = 0x04U     /*!< CEC Msp DeInit callback ID             */
 } HAL_CEC_CallbackIDTypeDef;
@@ -212,7 +222,8 @@
   */
 typedef  void (*pCEC_CallbackTypeDef)(CEC_HandleTypeDef *hcec);  /*!< pointer to an CEC callback function */
 typedef  void (*pCEC_RxCallbackTypeDef)(CEC_HandleTypeDef *hcec,
-                                        uint32_t RxFrameSize);  /*!< pointer to an Rx Transfer completed callback function */
+                                        uint32_t RxFrameSize);  /*!< pointer to an Rx Transfer completed
+                                                                     callback function */
 #endif /* USE_HAL_CEC_REGISTER_CALLBACKS */
 /**
   * @}
@@ -358,16 +369,16 @@
 /** @defgroup CEC_OWN_ADDRESS   CEC Own Address
   * @{
   */
-#define CEC_OWN_ADDRESS_NONE           ((uint16_t) 0x0000U)   /* Reset value */
-#define CEC_OWN_ADDRESS_0              ((uint16_t) 0x0001U)   /* Logical Address 0 */
-#define CEC_OWN_ADDRESS_1              ((uint16_t) 0x0002U)   /* Logical Address 1 */
-#define CEC_OWN_ADDRESS_2              ((uint16_t) 0x0004U)   /* Logical Address 2 */
-#define CEC_OWN_ADDRESS_3              ((uint16_t) 0x0008U)   /* Logical Address 3 */
-#define CEC_OWN_ADDRESS_4              ((uint16_t) 0x0010U)   /* Logical Address 4 */
-#define CEC_OWN_ADDRESS_5              ((uint16_t) 0x0020U)   /* Logical Address 5 */
-#define CEC_OWN_ADDRESS_6              ((uint16_t) 0x0040U)   /* Logical Address 6 */
-#define CEC_OWN_ADDRESS_7              ((uint16_t) 0x0080U)   /* Logical Address 7 */
-#define CEC_OWN_ADDRESS_8              ((uint16_t) 0x0100U)   /* Logical Address 9 */
+#define CEC_OWN_ADDRESS_NONE           ((uint16_t) 0x0000U)   /* Reset value        */
+#define CEC_OWN_ADDRESS_0              ((uint16_t) 0x0001U)   /* Logical Address 0  */
+#define CEC_OWN_ADDRESS_1              ((uint16_t) 0x0002U)   /* Logical Address 1  */
+#define CEC_OWN_ADDRESS_2              ((uint16_t) 0x0004U)   /* Logical Address 2  */
+#define CEC_OWN_ADDRESS_3              ((uint16_t) 0x0008U)   /* Logical Address 3  */
+#define CEC_OWN_ADDRESS_4              ((uint16_t) 0x0010U)   /* Logical Address 4  */
+#define CEC_OWN_ADDRESS_5              ((uint16_t) 0x0020U)   /* Logical Address 5  */
+#define CEC_OWN_ADDRESS_6              ((uint16_t) 0x0040U)   /* Logical Address 6  */
+#define CEC_OWN_ADDRESS_7              ((uint16_t) 0x0080U)   /* Logical Address 7  */
+#define CEC_OWN_ADDRESS_8              ((uint16_t) 0x0100U)   /* Logical Address 9  */
 #define CEC_OWN_ADDRESS_9              ((uint16_t) 0x0200U)   /* Logical Address 10 */
 #define CEC_OWN_ADDRESS_10             ((uint16_t) 0x0400U)   /* Logical Address 11 */
 #define CEC_OWN_ADDRESS_11             ((uint16_t) 0x0800U)   /* Logical Address 12 */
@@ -421,8 +432,8 @@
 /** @defgroup CEC_ALL_ERROR CEC all RX or TX errors flags
   * @{
   */
-#define CEC_ISR_ALL_ERROR              ((uint32_t)CEC_ISR_RXOVR|CEC_ISR_BRE|CEC_ISR_SBPE|CEC_ISR_LBPE|CEC_ISR_RXACKE|\
-                                        CEC_ISR_ARBLST|CEC_ISR_TXUDR|CEC_ISR_TXERR|CEC_ISR_TXACKE)
+#define CEC_ISR_ALL_ERROR       ((uint32_t)CEC_ISR_RXOVR|CEC_ISR_BRE|CEC_ISR_SBPE|CEC_ISR_LBPE|CEC_ISR_RXACKE|\
+                                 CEC_ISR_ARBLST|CEC_ISR_TXUDR|CEC_ISR_TXERR|CEC_ISR_TXACKE)
 /**
   * @}
   */
@@ -430,7 +441,7 @@
 /** @defgroup CEC_IER_ALL_RX CEC all RX errors interrupts enabling flag
   * @{
   */
-#define CEC_IER_RX_ALL_ERR              ((uint32_t)CEC_IER_RXACKEIE|CEC_IER_LBPEIE|CEC_IER_SBPEIE|CEC_IER_BREIE|CEC_IER_RXOVRIE)
+#define CEC_IER_RX_ALL_ERR      ((uint32_t)CEC_IER_RXACKEIE|CEC_IER_LBPEIE|CEC_IER_SBPEIE|CEC_IER_BREIE|CEC_IER_RXOVRIE)
 /**
   * @}
   */
@@ -438,7 +449,7 @@
 /** @defgroup CEC_IER_ALL_TX CEC all TX errors interrupts enabling flag
   * @{
   */
-#define CEC_IER_TX_ALL_ERR              ((uint32_t)CEC_IER_TXACKEIE|CEC_IER_TXERRIE|CEC_IER_TXUDRIE|CEC_IER_ARBLSTIE)
+#define CEC_IER_TX_ALL_ERR      ((uint32_t)CEC_IER_TXACKEIE|CEC_IER_TXERRIE|CEC_IER_TXUDRIE|CEC_IER_ARBLSTIE)
 /**
   * @}
   */
@@ -622,7 +633,8 @@
   * @param  __ADDRESS__ Own Address value (CEC logical address is identified by bit position)
   * @retval none
   */
-#define __HAL_CEC_SET_OAR(__HANDLE__,__ADDRESS__)   SET_BIT((__HANDLE__)->Instance->CFGR, (__ADDRESS__)<< CEC_CFGR_OAR_LSB_POS)
+#define __HAL_CEC_SET_OAR(__HANDLE__,__ADDRESS__)   SET_BIT((__HANDLE__)->Instance->CFGR, \
+                                                            (__ADDRESS__)<< CEC_CFGR_OAR_LSB_POS)
 
 /**
   * @}
@@ -660,8 +672,8 @@
   */
 /* I/O operation functions  ***************************************************/
 HAL_StatusTypeDef HAL_CEC_Transmit_IT(CEC_HandleTypeDef *hcec, uint8_t InitiatorAddress, uint8_t DestinationAddress,
-                                      uint8_t *pData, uint32_t Size);
-uint32_t HAL_CEC_GetLastReceivedFrameSize(CEC_HandleTypeDef *hcec);
+                                      const uint8_t *pData, uint32_t Size);
+uint32_t HAL_CEC_GetLastReceivedFrameSize(const CEC_HandleTypeDef *hcec);
 void HAL_CEC_ChangeRxBuffer(CEC_HandleTypeDef *hcec, uint8_t *Rxbuffer);
 void HAL_CEC_IRQHandler(CEC_HandleTypeDef *hcec);
 void HAL_CEC_TxCpltCallback(CEC_HandleTypeDef *hcec);
@@ -675,8 +687,8 @@
   * @{
   */
 /* Peripheral State functions  ************************************************/
-HAL_CEC_StateTypeDef HAL_CEC_GetState(CEC_HandleTypeDef *hcec);
-uint32_t HAL_CEC_GetError(CEC_HandleTypeDef *hcec);
+HAL_CEC_StateTypeDef HAL_CEC_GetState(const CEC_HandleTypeDef *hcec);
+uint32_t HAL_CEC_GetError(const CEC_HandleTypeDef *hcec);
 /**
   * @}
   */
@@ -731,8 +743,9 @@
 #define IS_CEC_LBPEERRORBITGEN(__ERRORBITGEN__) (((__ERRORBITGEN__) == CEC_LBPE_ERRORBIT_NO_GENERATION) || \
                                                  ((__ERRORBITGEN__) == CEC_LBPE_ERRORBIT_GENERATION))
 
-#define IS_CEC_BROADCASTERROR_NO_ERRORBIT_GENERATION(__ERRORBITGEN__) (((__ERRORBITGEN__) == CEC_BROADCASTERROR_ERRORBIT_GENERATION) || \
-                                                                       ((__ERRORBITGEN__) == CEC_BROADCASTERROR_NO_ERRORBIT_GENERATION))
+#define IS_CEC_BROADCASTERROR_NO_ERRORBIT_GENERATION(__ERRORBITGEN__) \
+  (((__ERRORBITGEN__) == CEC_BROADCASTERROR_ERRORBIT_GENERATION) || \
+   ((__ERRORBITGEN__) == CEC_BROADCASTERROR_NO_ERRORBIT_GENERATION))
 
 #define IS_CEC_SFTOP(__SFTOP__)          (((__SFTOP__) == CEC_SFT_START_ON_TXSOM) || \
                                           ((__SFTOP__) == CEC_SFT_START_ON_TX_RX_END))
@@ -789,4 +802,3 @@
 #endif
 
 #endif /* STM32F7xxHAL_CEC_H */
-
diff --git a/Inc/stm32f7xx_hal_conf_template.h b/Inc/stm32f7xx_hal_conf_template.h
index 075c1ea..5ae21d4 100644
--- a/Inc/stm32f7xx_hal_conf_template.h
+++ b/Inc/stm32f7xx_hal_conf_template.h
@@ -44,7 +44,8 @@
 #define HAL_DCMI_MODULE_ENABLED 
 #define HAL_DMA_MODULE_ENABLED
 #define HAL_DMA2D_MODULE_ENABLED 
-#define HAL_ETH_MODULE_ENABLED 
+#define HAL_ETH_MODULE_ENABLED
+/* #define HAL_ETH_LEGACY_MODULE_ENABLED */
 #define HAL_EXTI_MODULE_ENABLED 
 #define HAL_FLASH_MODULE_ENABLED 
 #define HAL_NAND_MODULE_ENABLED
@@ -146,7 +147,7 @@
 #define  TICK_INT_PRIORITY            0x0FU /*!< tick interrupt priority */
 #define  USE_RTOS                     0U
 #define  PREFETCH_ENABLE              1U /* To enable prefetch */
-#define  ART_ACCLERATOR_ENABLE        1U /* To enable ART Accelerator */
+#define  ART_ACCELERATOR_ENABLE       1U /* To enable ART Accelerator */
 
 #define  USE_HAL_ADC_REGISTER_CALLBACKS         0U /* ADC register callback disabled       */
 #define  USE_HAL_CAN_REGISTER_CALLBACKS         0U /* CAN register callback disabled       */
@@ -207,8 +208,8 @@
 #define MAC_ADDR5   0U
 
 /* Definition of the Ethernet driver buffers size and count */   
-#define ETH_RX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for receive               */
-#define ETH_TX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for transmit              */
+#define ETH_RX_BUF_SIZE                1528U    /* ETH Max buffer size for receive               */
+#define ETH_TX_BUF_SIZE                1528U    /* ETH Max buffer size for transmit              */
 #define ETH_RXBUFNB                    4U       /* 4 Rx buffers of size ETH_RX_BUF_SIZE  */
 #define ETH_TXBUFNB                    4U       /* 4 Tx buffers of size ETH_TX_BUF_SIZE  */
 
@@ -330,6 +331,10 @@
   #include "stm32f7xx_hal_eth.h"
 #endif /* HAL_ETH_MODULE_ENABLED */
 
+#ifdef HAL_ETH_LEGACY_MODULE_ENABLED
+  #include "stm32f7xx_hal_eth_legacy.h"
+#endif /* HAL_ETH_LEGACY_MODULE_ENABLED */
+
 #ifdef HAL_EXTI_MODULE_ENABLED
   #include "stm32f7xx_hal_exti.h"
 #endif /* HAL_EXTI_MODULE_ENABLED */
diff --git a/Inc/stm32f7xx_hal_eth.h b/Inc/stm32f7xx_hal_eth.h
index 7e4ae6f..7d1f6e9 100644
--- a/Inc/stm32f7xx_hal_eth.h
+++ b/Inc/stm32f7xx_hal_eth.h
@@ -276,9 +276,6 @@
   PreambleLength;              /*!< Selects or not the Preamble Length for Transmit packets (Full Duplex mode).
                                                            This parameter can be a value of @ref ETH_Preamble_Length */
 
-  FunctionalState
-  UnicastSlowProtocolPacketDetect;   /*!< Enable or disables the Detection of Slow Protocol Packets with unicast address. */
-
   FunctionalState  SlowProtocolDetect;          /*!< Enable or disables the Slow Protocol Detection. */
 
   FunctionalState  CRCCheckingRxPackets;        /*!< Enable or disables the CRC Checking for Received Packets. */
@@ -404,7 +401,7 @@
 typedef enum
 {
   HAL_ETH_MII_MODE             = 0x00U,   /*!<  Media Independent Interface               */
-  HAL_ETH_RMII_MODE            = ((uint32_t)SYSCFG_PMC_MII_RMII_SEL)    /*!<   Reduced Media Independent Interface       */
+  HAL_ETH_RMII_MODE            = SYSCFG_PMC_MII_RMII_SEL    /*!<   Reduced Media Independent Interface       */
 } ETH_MediaInterfaceTypeDef;
 /**
   *
@@ -694,51 +691,51 @@
 /**
   * @brief  Bit definition of TDES0 register: DMA Tx descriptor status register
   */
-#define ETH_DMATXDESC_OWN                     ((uint32_t)0x80000000U)  /*!< OWN bit: descriptor is owned by DMA engine */
-#define ETH_DMATXDESC_IC                      ((uint32_t)0x40000000U)  /*!< Interrupt on Completion */
-#define ETH_DMATXDESC_LS                      ((uint32_t)0x20000000U)  /*!< Last Segment */
-#define ETH_DMATXDESC_FS                      ((uint32_t)0x10000000U)  /*!< First Segment */
-#define ETH_DMATXDESC_DC                      ((uint32_t)0x08000000U)  /*!< Disable CRC */
-#define ETH_DMATXDESC_DP                      ((uint32_t)0x04000000U)  /*!< Disable Padding */
-#define ETH_DMATXDESC_TTSE                    ((uint32_t)0x02000000U)  /*!< Transmit Time Stamp Enable */
-#define ETH_DMATXDESC_CIC                     ((uint32_t)0x00C00000U)  /*!< Checksum Insertion Control: 4 cases */
-#define ETH_DMATXDESC_CIC_BYPASS              ((uint32_t)0x00000000U)  /*!< Do Nothing: Checksum Engine is bypassed */
-#define ETH_DMATXDESC_CIC_IPV4HEADER          ((uint32_t)0x00400000U)  /*!< IPV4 header Checksum Insertion */
-#define ETH_DMATXDESC_CIC_TCPUDPICMP_SEGMENT  ((uint32_t)0x00800000U)  /*!< TCP/UDP/ICMP Checksum Insertion calculated over segment only */
-#define ETH_DMATXDESC_CIC_TCPUDPICMP_FULL     ((uint32_t)0x00C00000U)  /*!< TCP/UDP/ICMP Checksum Insertion fully calculated */
-#define ETH_DMATXDESC_TER                     ((uint32_t)0x00200000U)  /*!< Transmit End of Ring */
-#define ETH_DMATXDESC_TCH                     ((uint32_t)0x00100000U)  /*!< Second Address Chained */
-#define ETH_DMATXDESC_TTSS                    ((uint32_t)0x00020000U)  /*!< Tx Time Stamp Status */
-#define ETH_DMATXDESC_IHE                     ((uint32_t)0x00010000U)  /*!< IP Header Error */
-#define ETH_DMATXDESC_ES                      ((uint32_t)0x00008000U)  /*!< Error summary: OR of the following bits: UE || ED || EC || LCO || NC || LCA || FF || JT */
-#define ETH_DMATXDESC_JT                      ((uint32_t)0x00004000U)  /*!< Jabber Timeout */
-#define ETH_DMATXDESC_FF                      ((uint32_t)0x00002000U)  /*!< Frame Flushed: DMA/MTL flushed the frame due to SW flush */
-#define ETH_DMATXDESC_PCE                     ((uint32_t)0x00001000U)  /*!< Payload Checksum Error */
-#define ETH_DMATXDESC_LCA                     ((uint32_t)0x00000800U)  /*!< Loss of Carrier: carrier lost during transmission */
-#define ETH_DMATXDESC_NC                      ((uint32_t)0x00000400U)  /*!< No Carrier: no carrier signal from the transceiver */
-#define ETH_DMATXDESC_LCO                     ((uint32_t)0x00000200U)  /*!< Late Collision: transmission aborted due to collision */
-#define ETH_DMATXDESC_EC                      ((uint32_t)0x00000100U)  /*!< Excessive Collision: transmission aborted after 16 collisions */
-#define ETH_DMATXDESC_VF                      ((uint32_t)0x00000080U)  /*!< VLAN Frame */
-#define ETH_DMATXDESC_CC                      ((uint32_t)0x00000078U)  /*!< Collision Count */
-#define ETH_DMATXDESC_ED                      ((uint32_t)0x00000004U)  /*!< Excessive Deferral */
-#define ETH_DMATXDESC_UF                      ((uint32_t)0x00000002U)  /*!< Underflow Error: late data arrival from the memory */
-#define ETH_DMATXDESC_DB                      ((uint32_t)0x00000001U)  /*!< Deferred Bit */
+#define ETH_DMATXDESC_OWN                     0x80000000U  /*!< OWN bit: descriptor is owned by DMA engine */
+#define ETH_DMATXDESC_IC                      0x40000000U  /*!< Interrupt on Completion */
+#define ETH_DMATXDESC_LS                      0x20000000U  /*!< Last Segment */
+#define ETH_DMATXDESC_FS                      0x10000000U  /*!< First Segment */
+#define ETH_DMATXDESC_DC                      0x08000000U  /*!< Disable CRC */
+#define ETH_DMATXDESC_DP                      0x04000000U  /*!< Disable Padding */
+#define ETH_DMATXDESC_TTSE                    0x02000000U  /*!< Transmit Time Stamp Enable */
+#define ETH_DMATXDESC_CIC                     0x00C00000U  /*!< Checksum Insertion Control: 4 cases */
+#define ETH_DMATXDESC_CIC_BYPASS              0x00000000U  /*!< Do Nothing: Checksum Engine is bypassed */
+#define ETH_DMATXDESC_CIC_IPV4HEADER          0x00400000U  /*!< IPV4 header Checksum Insertion */
+#define ETH_DMATXDESC_CIC_TCPUDPICMP_SEGMENT  0x00800000U  /*!< TCP/UDP/ICMP Checksum Insertion calculated over segment only */
+#define ETH_DMATXDESC_CIC_TCPUDPICMP_FULL     0x00C00000U  /*!< TCP/UDP/ICMP Checksum Insertion fully calculated */
+#define ETH_DMATXDESC_TER                     0x00200000U  /*!< Transmit End of Ring */
+#define ETH_DMATXDESC_TCH                     0x00100000U  /*!< Second Address Chained */
+#define ETH_DMATXDESC_TTSS                    0x00020000U  /*!< Tx Time Stamp Status */
+#define ETH_DMATXDESC_IHE                     0x00010000U  /*!< IP Header Error */
+#define ETH_DMATXDESC_ES                      0x00008000U  /*!< Error summary: OR of the following bits: UE || ED || EC || LCO || NC || LCA || FF || JT */
+#define ETH_DMATXDESC_JT                      0x00004000U  /*!< Jabber Timeout */
+#define ETH_DMATXDESC_FF                      0x00002000U  /*!< Frame Flushed: DMA/MTL flushed the frame due to SW flush */
+#define ETH_DMATXDESC_PCE                     0x00001000U  /*!< Payload Checksum Error */
+#define ETH_DMATXDESC_LCA                     0x00000800U  /*!< Loss of Carrier: carrier lost during transmission */
+#define ETH_DMATXDESC_NC                      0x00000400U  /*!< No Carrier: no carrier signal from the transceiver */
+#define ETH_DMATXDESC_LCO                     0x00000200U  /*!< Late Collision: transmission aborted due to collision */
+#define ETH_DMATXDESC_EC                      0x00000100U  /*!< Excessive Collision: transmission aborted after 16 collisions */
+#define ETH_DMATXDESC_VF                      0x00000080U  /*!< VLAN Frame */
+#define ETH_DMATXDESC_CC                      0x00000078U  /*!< Collision Count */
+#define ETH_DMATXDESC_ED                      0x00000004U  /*!< Excessive Deferral */
+#define ETH_DMATXDESC_UF                      0x00000002U  /*!< Underflow Error: late data arrival from the memory */
+#define ETH_DMATXDESC_DB                      0x00000001U  /*!< Deferred Bit */
 
 /**
   * @brief  Bit definition of TDES1 register
   */
-#define ETH_DMATXDESC_TBS2  ((uint32_t)0x1FFF0000U)  /*!< Transmit Buffer2 Size */
-#define ETH_DMATXDESC_TBS1  ((uint32_t)0x00001FFFU)  /*!< Transmit Buffer1 Size */
+#define ETH_DMATXDESC_TBS2                    0x1FFF0000U  /*!< Transmit Buffer2 Size */
+#define ETH_DMATXDESC_TBS1                    0x00001FFFU  /*!< Transmit Buffer1 Size */
 
 /**
   * @brief  Bit definition of TDES2 register
   */
-#define ETH_DMATXDESC_B1AP  ((uint32_t)0xFFFFFFFFU)  /*!< Buffer1 Address Pointer */
+#define ETH_DMATXDESC_B1AP                    0xFFFFFFFFU  /*!< Buffer1 Address Pointer */
 
 /**
   * @brief  Bit definition of TDES3 register
   */
-#define ETH_DMATXDESC_B2AP  ((uint32_t)0xFFFFFFFFU)  /*!< Buffer2 Address Pointer */
+#define ETH_DMATXDESC_B2AP                    0xFFFFFFFFU  /*!< Buffer2 Address Pointer */
 
 /*---------------------------------------------------------------------------------------------
 TDES6 |                         Transmit Time Stamp Low [31:0]                                 |
@@ -747,10 +744,10 @@
 ----------------------------------------------------------------------------------------------*/
 
 /* Bit definition of TDES6 register */
-#define ETH_DMAPTPTXDESC_TTSL  ((uint32_t)0xFFFFFFFFU)  /* Transmit Time Stamp Low */
+#define ETH_DMAPTPTXDESC_TTSL                 0xFFFFFFFFU  /* Transmit Time Stamp Low */
 
 /* Bit definition of TDES7 register */
-#define ETH_DMAPTPTXDESC_TTSH  ((uint32_t)0xFFFFFFFFU)  /* Transmit Time Stamp High */
+#define ETH_DMAPTPTXDESC_TTSH                 0xFFFFFFFFU  /* Transmit Time Stamp High */
 
 /**
   * @}
@@ -777,44 +774,44 @@
 /**
   * @brief  Bit definition of RDES0 register: DMA Rx descriptor status register
   */
-#define ETH_DMARXDESC_OWN         ((uint32_t)0x80000000U)  /*!< OWN bit: descriptor is owned by DMA engine  */
-#define ETH_DMARXDESC_AFM         ((uint32_t)0x40000000U)  /*!< DA Filter Fail for the rx frame  */
-#define ETH_DMARXDESC_FL          ((uint32_t)0x3FFF0000U)  /*!< Receive descriptor frame length  */
-#define ETH_DMARXDESC_ES          ((uint32_t)0x00008000U)  /*!< Error summary: OR of the following bits: DE || OE || IPC || LC || RWT || RE || CE */
-#define ETH_DMARXDESC_DE          ((uint32_t)0x00004000U)  /*!< Descriptor error: no more descriptors for receive frame  */
-#define ETH_DMARXDESC_SAF         ((uint32_t)0x00002000U)  /*!< SA Filter Fail for the received frame */
-#define ETH_DMARXDESC_LE          ((uint32_t)0x00001000U)  /*!< Frame size not matching with length field */
-#define ETH_DMARXDESC_OE          ((uint32_t)0x00000800U)  /*!< Overflow Error: Frame was damaged due to buffer overflow */
-#define ETH_DMARXDESC_VLAN        ((uint32_t)0x00000400U)  /*!< VLAN Tag: received frame is a VLAN frame */
-#define ETH_DMARXDESC_FS          ((uint32_t)0x00000200U)  /*!< First descriptor of the frame  */
-#define ETH_DMARXDESC_LS          ((uint32_t)0x00000100U)  /*!< Last descriptor of the frame  */
-#define ETH_DMARXDESC_IPV4HCE     ((uint32_t)0x00000080U)  /*!< IPC Checksum Error: Rx Ipv4 header checksum error   */
-#define ETH_DMARXDESC_LC          ((uint32_t)0x00000040U)  /*!< Late collision occurred during reception   */
-#define ETH_DMARXDESC_FT          ((uint32_t)0x00000020U)  /*!< Frame type - Ethernet, otherwise 802.3    */
-#define ETH_DMARXDESC_RWT         ((uint32_t)0x00000010U)  /*!< Receive Watchdog Timeout: watchdog timer expired during reception    */
-#define ETH_DMARXDESC_RE          ((uint32_t)0x00000008U)  /*!< Receive error: error reported by MII interface  */
-#define ETH_DMARXDESC_DBE         ((uint32_t)0x00000004U)  /*!< Dribble bit error: frame contains non int multiple of 8 bits  */
-#define ETH_DMARXDESC_CE          ((uint32_t)0x00000002U)  /*!< CRC error */
-#define ETH_DMARXDESC_MAMPCE      ((uint32_t)0x00000001U)  /*!< Rx MAC Address/Payload Checksum Error: Rx MAC address matched/ Rx Payload Checksum Error */
+#define ETH_DMARXDESC_OWN         0x80000000U  /*!< OWN bit: descriptor is owned by DMA engine  */
+#define ETH_DMARXDESC_AFM         0x40000000U  /*!< DA Filter Fail for the rx frame  */
+#define ETH_DMARXDESC_FL          0x3FFF0000U  /*!< Receive descriptor frame length  */
+#define ETH_DMARXDESC_ES          0x00008000U  /*!< Error summary: OR of the following bits: DE || OE || IPC || LC || RWT || RE || CE */
+#define ETH_DMARXDESC_DE          0x00004000U  /*!< Descriptor error: no more descriptors for receive frame  */
+#define ETH_DMARXDESC_SAF         0x00002000U  /*!< SA Filter Fail for the received frame */
+#define ETH_DMARXDESC_LE          0x00001000U  /*!< Frame size not matching with length field */
+#define ETH_DMARXDESC_OE          0x00000800U  /*!< Overflow Error: Frame was damaged due to buffer overflow */
+#define ETH_DMARXDESC_VLAN        0x00000400U  /*!< VLAN Tag: received frame is a VLAN frame */
+#define ETH_DMARXDESC_FS          0x00000200U  /*!< First descriptor of the frame  */
+#define ETH_DMARXDESC_LS          0x00000100U  /*!< Last descriptor of the frame  */
+#define ETH_DMARXDESC_IPV4HCE     0x00000080U  /*!< IPC Checksum Error: Rx Ipv4 header checksum error   */
+#define ETH_DMARXDESC_LC          0x00000040U  /*!< Late collision occurred during reception   */
+#define ETH_DMARXDESC_FT          0x00000020U  /*!< Frame type - Ethernet, otherwise 802.3    */
+#define ETH_DMARXDESC_RWT         0x00000010U  /*!< Receive Watchdog Timeout: watchdog timer expired during reception    */
+#define ETH_DMARXDESC_RE          0x00000008U  /*!< Receive error: error reported by MII interface  */
+#define ETH_DMARXDESC_DBE         0x00000004U  /*!< Dribble bit error: frame contains non int multiple of 8 bits  */
+#define ETH_DMARXDESC_CE          0x00000002U  /*!< CRC error */
+#define ETH_DMARXDESC_MAMPCE      0x00000001U  /*!< Rx MAC Address/Payload Checksum Error: Rx MAC address matched/ Rx Payload Checksum Error */
 
 /**
   * @brief  Bit definition of RDES1 register
   */
-#define ETH_DMARXDESC_DIC   ((uint32_t)0x80000000U)  /*!< Disable Interrupt on Completion */
-#define ETH_DMARXDESC_RBS2  ((uint32_t)0x1FFF0000U)  /*!< Receive Buffer2 Size */
-#define ETH_DMARXDESC_RER   ((uint32_t)0x00008000U)  /*!< Receive End of Ring */
-#define ETH_DMARXDESC_RCH   ((uint32_t)0x00004000U)  /*!< Second Address Chained */
-#define ETH_DMARXDESC_RBS1  ((uint32_t)0x00001FFFU)  /*!< Receive Buffer1 Size */
+#define ETH_DMARXDESC_DIC         0x80000000U  /*!< Disable Interrupt on Completion */
+#define ETH_DMARXDESC_RBS2        0x1FFF0000U  /*!< Receive Buffer2 Size */
+#define ETH_DMARXDESC_RER         0x00008000U  /*!< Receive End of Ring */
+#define ETH_DMARXDESC_RCH         0x00004000U  /*!< Second Address Chained */
+#define ETH_DMARXDESC_RBS1        0x00001FFFU  /*!< Receive Buffer1 Size */
 
 /**
   * @brief  Bit definition of RDES2 register
   */
-#define ETH_DMARXDESC_B1AP  ((uint32_t)0xFFFFFFFFU)  /*!< Buffer1 Address Pointer */
+#define ETH_DMARXDESC_B1AP        0xFFFFFFFFU  /*!< Buffer1 Address Pointer */
 
 /**
   * @brief  Bit definition of RDES3 register
   */
-#define ETH_DMARXDESC_B2AP  ((uint32_t)0xFFFFFFFFU)  /*!< Buffer2 Address Pointer */
+#define ETH_DMARXDESC_B2AP        0xFFFFFFFFU  /*!< Buffer2 Address Pointer */
 
 /*---------------------------------------------------------------------------------------------------------------------
   RDES4 |                   Reserved[31:15]              |             Extended Status [14:0]                          |
@@ -827,47 +824,47 @@
   --------------------------------------------------------------------------------------------------------------------*/
 
 /* Bit definition of RDES4 register */
-#define ETH_DMAPTPRXDESC_PTPV                            ((uint32_t)0x00002000U)  /* PTP Version */
-#define ETH_DMAPTPRXDESC_PTPFT                           ((uint32_t)0x00001000U)  /* PTP Frame Type */
-#define ETH_DMAPTPRXDESC_PTPMT                           ((uint32_t)0x00000F00U)  /* PTP Message Type */
-#define ETH_DMAPTPRXDESC_PTPMT_SYNC                      ((uint32_t)0x00000100U)  /* SYNC message
-                                                                                     (all clock types) */
-#define ETH_DMAPTPRXDESC_PTPMT_FOLLOWUP                  ((uint32_t)0x00000200U)  /* FollowUp message
-                                                                                     (all clock types) */
-#define ETH_DMAPTPRXDESC_PTPMT_DELAYREQ                  ((uint32_t)0x00000300U)  /* DelayReq message
-                                                                                     (all clock types) */
-#define ETH_DMAPTPRXDESC_PTPMT_DELAYRESP                 ((uint32_t)0x00000400U)  /* DelayResp message
-                                                                                     (all clock types) */
-#define ETH_DMAPTPRXDESC_PTPMT_PDELAYREQ_ANNOUNCE        ((uint32_t)0x00000500U)  /* PdelayReq message
-                                                                                     (peer-to-peer transparent clock)
-                                                                                      or Announce message (Ordinary
-                                                                                      or Boundary clock) */
-#define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESP_MANAG          ((uint32_t)0x00000600U)  /* PdelayResp message
-                                                                                     (peer-to-peer transparent clock)
-                                                                                      or Management message (Ordinary
-                                                                                      or Boundary clock)  */
-#define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESPFOLLOWUP_SIGNAL ((uint32_t)0x00000700U)  /* PdelayRespFollowUp message
-                                                                                    (peer-to-peer transparent clock)
-                                                                                     or Signaling message (Ordinary
-                                                                                     or Boundary clock) */
-#define ETH_DMAPTPRXDESC_IPV6PR                          ((uint32_t)0x00000080U)  /* IPv6 Packet Received */
-#define ETH_DMAPTPRXDESC_IPV4PR                          ((uint32_t)0x00000040U)  /* IPv4 Packet Received */
-#define ETH_DMAPTPRXDESC_IPCB                            ((uint32_t)0x00000020U)  /* IP Checksum Bypassed */
-#define ETH_DMAPTPRXDESC_IPPE                            ((uint32_t)0x00000010U)  /* IP Payload Error */
-#define ETH_DMAPTPRXDESC_IPHE                            ((uint32_t)0x00000008U)  /* IP Header Error */
-#define ETH_DMAPTPRXDESC_IPPT                            ((uint32_t)0x00000007U)  /* IP Payload Type */
-#define ETH_DMAPTPRXDESC_IPPT_UDP                        ((uint32_t)0x00000001U)  /* UDP payload encapsulated in
-                                                                                     the IP datagram */
-#define ETH_DMAPTPRXDESC_IPPT_TCP                        ((uint32_t)0x00000002U)  /* TCP payload encapsulated in
-                                                                                     the IP datagram */
-#define ETH_DMAPTPRXDESC_IPPT_ICMP                       ((uint32_t)0x00000003U)  /* ICMP payload encapsulated in
+#define ETH_DMAPTPRXDESC_PTPV                            0x00002000U  /* PTP Version */
+#define ETH_DMAPTPRXDESC_PTPFT                           0x00001000U  /* PTP Frame Type */
+#define ETH_DMAPTPRXDESC_PTPMT                           0x00000F00U  /* PTP Message Type */
+#define ETH_DMAPTPRXDESC_PTPMT_SYNC                      0x00000100U  /* SYNC message
+                                                                                   (all clock types) */
+#define ETH_DMAPTPRXDESC_PTPMT_FOLLOWUP                  0x00000200U  /* FollowUp message
+                                                                                   (all clock types) */
+#define ETH_DMAPTPRXDESC_PTPMT_DELAYREQ                  0x00000300U  /* DelayReq message
+                                                                                   (all clock types) */
+#define ETH_DMAPTPRXDESC_PTPMT_DELAYRESP                 0x00000400U  /* DelayResp message
+                                                                                   (all clock types) */
+#define ETH_DMAPTPRXDESC_PTPMT_PDELAYREQ_ANNOUNCE        0x00000500U  /* PdelayReq message
+                                                                                   (peer-to-peer transparent clock)
+                                                                                    or Announce message (Ordinary
+                                                                                    or Boundary clock) */
+#define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESP_MANAG          0x00000600U  /* PdelayResp message
+                                                                                   (peer-to-peer transparent clock)
+                                                                                    or Management message (Ordinary
+                                                                                    or Boundary clock)  */
+#define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESPFOLLOWUP_SIGNAL 0x00000700U  /* PdelayRespFollowUp message
+                                                                                  (peer-to-peer transparent clock)
+                                                                                   or Signaling message (Ordinary
+                                                                                   or Boundary clock) */
+#define ETH_DMAPTPRXDESC_IPV6PR                          0x00000080U  /* IPv6 Packet Received */
+#define ETH_DMAPTPRXDESC_IPV4PR                          0x00000040U  /* IPv4 Packet Received */
+#define ETH_DMAPTPRXDESC_IPCB                            0x00000020U  /* IP Checksum Bypassed */
+#define ETH_DMAPTPRXDESC_IPPE                            0x00000010U  /* IP Payload Error */
+#define ETH_DMAPTPRXDESC_IPHE                            0x00000008U  /* IP Header Error */
+#define ETH_DMAPTPRXDESC_IPPT                            0x00000007U  /* IP Payload Type */
+#define ETH_DMAPTPRXDESC_IPPT_UDP                        0x00000001U  /* UDP payload encapsulated in
+                                                                                   the IP datagram */
+#define ETH_DMAPTPRXDESC_IPPT_TCP                        0x00000002U  /* TCP payload encapsulated in
+                                                                                   the IP datagram */
+#define ETH_DMAPTPRXDESC_IPPT_ICMP                       0x00000003U  /* ICMP payload encapsulated in
                                                                                      the IP datagram */
 
 /* Bit definition of RDES6 register */
-#define ETH_DMAPTPRXDESC_RTSL  ((uint32_t)0xFFFFFFFFU)  /* Receive Time Stamp Low */
+#define ETH_DMAPTPRXDESC_RTSL  0xFFFFFFFFU  /* Receive Time Stamp Low */
 
 /* Bit definition of RDES7 register */
-#define ETH_DMAPTPRXDESC_RTSH  ((uint32_t)0xFFFFFFFFU)  /* Receive Time Stamp High */
+#define ETH_DMAPTPRXDESC_RTSH  0xFFFFFFFFU  /* Receive Time Stamp High */
 
 /**
   * @}
@@ -876,13 +873,13 @@
 /** @defgroup ETH_Frame_settings ETH frame settings
   * @{
   */
-#define ETH_MAX_PACKET_SIZE      ((uint32_t)1528U)    /*!< ETH_HEADER + 2*VLAN_TAG + MAX_ETH_PAYLOAD + ETH_CRC */
-#define ETH_HEADER               ((uint32_t)14U)    /*!< 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */
-#define ETH_CRC                  ((uint32_t)4U)    /*!< Ethernet CRC */
-#define ETH_VLAN_TAG             ((uint32_t)4U)    /*!< optional 802.1q VLAN Tag */
-#define ETH_MIN_PAYLOAD          ((uint32_t)46U)    /*!< Minimum Ethernet payload size */
-#define ETH_MAX_PAYLOAD          ((uint32_t)1500U)    /*!< Maximum Ethernet payload size */
-#define ETH_JUMBO_FRAME_PAYLOAD  ((uint32_t)9000U)    /*!< Jumbo frame payload size */
+#define ETH_MAX_PACKET_SIZE      1528U    /*!< ETH_HEADER + 2*VLAN_TAG + MAX_ETH_PAYLOAD + ETH_CRC */
+#define ETH_HEADER               14U    /*!< 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */
+#define ETH_CRC                  4U    /*!< Ethernet CRC */
+#define ETH_VLAN_TAG             4U    /*!< optional 802.1q VLAN Tag */
+#define ETH_MIN_PAYLOAD          46U    /*!< Minimum Ethernet payload size */
+#define ETH_MAX_PAYLOAD          1500U    /*!< Maximum Ethernet payload size */
+#define ETH_JUMBO_FRAME_PAYLOAD  9000U    /*!< Jumbo frame payload size */
 /**
   * @}
   */
@@ -890,14 +887,14 @@
 /** @defgroup ETH_Error_Code ETH Error Code
   * @{
   */
-#define HAL_ETH_ERROR_NONE         ((uint32_t)0x00000000U)   /*!< No error            */
-#define HAL_ETH_ERROR_PARAM        ((uint32_t)0x00000001U)   /*!< Busy error          */
-#define HAL_ETH_ERROR_BUSY         ((uint32_t)0x00000002U)   /*!< Parameter error     */
-#define HAL_ETH_ERROR_TIMEOUT      ((uint32_t)0x00000004U)   /*!< Timeout error       */
-#define HAL_ETH_ERROR_DMA          ((uint32_t)0x00000008U)   /*!< DMA transfer error  */
-#define HAL_ETH_ERROR_MAC          ((uint32_t)0x00000010U)   /*!< MAC transfer error  */
+#define HAL_ETH_ERROR_NONE             0x00000000U   /*!< No error            */
+#define HAL_ETH_ERROR_PARAM            0x00000001U   /*!< Busy error          */
+#define HAL_ETH_ERROR_BUSY             0x00000002U   /*!< Parameter error     */
+#define HAL_ETH_ERROR_TIMEOUT          0x00000004U   /*!< Timeout error       */
+#define HAL_ETH_ERROR_DMA              0x00000008U   /*!< DMA transfer error  */
+#define HAL_ETH_ERROR_MAC              0x00000010U   /*!< MAC transfer error  */
 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
-#define HAL_ETH_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U)    /*!< Invalid Callback error  */
+#define HAL_ETH_ERROR_INVALID_CALLBACK 0x00000020U    /*!< Invalid Callback error  */
 #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
 /**
   * @}
@@ -906,12 +903,12 @@
 /** @defgroup ETH_Tx_Packet_Attributes ETH Tx Packet Attributes
   * @{
   */
-#define ETH_TX_PACKETS_FEATURES_CSUM          ((uint32_t)0x00000001U)
-#define ETH_TX_PACKETS_FEATURES_SAIC          ((uint32_t)0x00000002U)
-#define ETH_TX_PACKETS_FEATURES_VLANTAG       ((uint32_t)0x00000004U)
-#define ETH_TX_PACKETS_FEATURES_INNERVLANTAG  ((uint32_t)0x00000008U)
-#define ETH_TX_PACKETS_FEATURES_TSO           ((uint32_t)0x00000010U)
-#define ETH_TX_PACKETS_FEATURES_CRCPAD        ((uint32_t)0x00000020U)
+#define ETH_TX_PACKETS_FEATURES_CSUM          0x00000001U
+#define ETH_TX_PACKETS_FEATURES_SAIC          0x00000002U
+#define ETH_TX_PACKETS_FEATURES_VLANTAG       0x00000004U
+#define ETH_TX_PACKETS_FEATURES_INNERVLANTAG  0x00000008U
+#define ETH_TX_PACKETS_FEATURES_TSO           0x00000010U
+#define ETH_TX_PACKETS_FEATURES_CRCPAD        0x00000020U
 /**
   * @}
   */
@@ -930,7 +927,7 @@
   * @{
   */
 #define ETH_CRC_PAD_DISABLE      (uint32_t)(ETH_DMATXDESC_DP | ETH_DMATXDESC_DC)
-#define ETH_CRC_PAD_INSERT       ((uint32_t)0x00000000U)
+#define ETH_CRC_PAD_INSERT       0x00000000U
 #define ETH_CRC_INSERT           ETH_DMATXDESC_DP
 /**
   * @}
@@ -997,7 +994,7 @@
   * @{
   */
 #define ETH_DMAARBITRATION_RX        ETH_DMAMR_DA
-#define ETH_DMAARBITRATION_RX1_TX1   ((uint32_t)0x00000000U)
+#define ETH_DMAARBITRATION_RX1_TX1   0x00000000U
 #define ETH_DMAARBITRATION_RX2_TX1   ETH_DMAMR_PR_2_1
 #define ETH_DMAARBITRATION_RX3_TX1   ETH_DMAMR_PR_3_1
 #define ETH_DMAARBITRATION_RX4_TX1   ETH_DMAMR_PR_4_1
@@ -1006,7 +1003,7 @@
 #define ETH_DMAARBITRATION_RX7_TX1   ETH_DMAMR_PR_7_1
 #define ETH_DMAARBITRATION_RX8_TX1   ETH_DMAMR_PR_8_1
 #define ETH_DMAARBITRATION_TX        (ETH_DMAMR_TXPR | ETH_DMAMR_DA)
-#define ETH_DMAARBITRATION_TX1_RX1   ((uint32_t)0x00000000U)
+#define ETH_DMAARBITRATION_TX1_RX1   0x00000000U
 #define ETH_DMAARBITRATION_TX2_RX1   (ETH_DMAMR_TXPR | ETH_DMAMR_PR_2_1)
 #define ETH_DMAARBITRATION_TX3_RX1   (ETH_DMAMR_TXPR | ETH_DMAMR_PR_3_1)
 #define ETH_DMAARBITRATION_TX4_RX1   (ETH_DMAMR_TXPR | ETH_DMAMR_PR_4_1)
@@ -1023,7 +1020,7 @@
   */
 #define ETH_BURSTLENGTH_FIXED           ETH_DMABMR_FB
 #define ETH_BURSTLENGTH_MIXED           ETH_DMABMR_MB
-#define ETH_BURSTLENGTH_UNSPECIFIED     ((uint32_t)0x00000000U)
+#define ETH_BURSTLENGTH_UNSPECIFIED     0x00000000U
 /**
   * @}
   */
@@ -1089,12 +1086,12 @@
 /** @defgroup ETH_DMA_Status_Flags ETH DMA Status Flags
   * @{
   */
-#define ETH_DMA_RX_NO_ERROR_FLAG                 ((uint32_t)0x00000000U)
+#define ETH_DMA_RX_NO_ERROR_FLAG                 0x00000000U
 #define ETH_DMA_RX_DESC_READ_ERROR_FLAG          (ETH_DMACSR_REB_BIT_2 | ETH_DMACSR_REB_BIT_1 | ETH_DMACSR_REB_BIT_0)
 #define ETH_DMA_RX_DESC_WRITE_ERROR_FLAG         (ETH_DMACSR_REB_BIT_2 | ETH_DMACSR_REB_BIT_1)
 #define ETH_DMA_RX_BUFFER_READ_ERROR_FLAG        (ETH_DMACSR_REB_BIT_2 | ETH_DMACSR_REB_BIT_0)
 #define ETH_DMA_RX_BUFFER_WRITE_ERROR_FLAG        ETH_DMACSR_REB_BIT_2
-#define ETH_DMA_TX_NO_ERROR_FLAG                 ((uint32_t)0x00000000U)
+#define ETH_DMA_TX_NO_ERROR_FLAG                 0x00000000U
 #define ETH_DMA_TX_DESC_READ_ERROR_FLAG          (ETH_DMACSR_TEB_BIT_2 | ETH_DMACSR_TEB_BIT_1 | ETH_DMACSR_TEB_BIT_0)
 #define ETH_DMA_TX_DESC_WRITE_ERROR_FLAG         (ETH_DMACSR_TEB_BIT_2 | ETH_DMACSR_TEB_BIT_1)
 #define ETH_DMA_TX_BUFFER_READ_ERROR_FLAG        (ETH_DMACSR_TEB_BIT_2 | ETH_DMACSR_TEB_BIT_0)
@@ -1191,7 +1188,7 @@
 /** @defgroup ETH_Speed  ETH Speed
   * @{
   */
-#define ETH_SPEED_10M        ((uint32_t)0x00000000U)
+#define ETH_SPEED_10M        0x00000000U
 #define ETH_SPEED_100M       0x00004000U
 /**
   * @}
@@ -1201,7 +1198,7 @@
   * @{
   */
 #define ETH_FULLDUPLEX_MODE       ETH_MACCR_DM
-#define ETH_HALFDUPLEX_MODE       ((uint32_t)0x00000000U)
+#define ETH_HALFDUPLEX_MODE       0x00000000U
 /**
   * @}
   */
@@ -1230,7 +1227,7 @@
 /** @defgroup ETH_Source_Addr_Control ETH Source Addr Control
   * @{
   */
-#define ETH_SOURCEADDRESS_DISABLE           ((uint32_t)0x00000000U)
+#define ETH_SOURCEADDRESS_DISABLE           0x00000000U
 #define ETH_SOURCEADDRESS_INSERT_ADDR0      ETH_MACCR_SARC_INSADDR0
 #define ETH_SOURCEADDRESS_INSERT_ADDR1      ETH_MACCR_SARC_INSADDR1
 #define ETH_SOURCEADDRESS_REPLACE_ADDR0     ETH_MACCR_SARC_REPADDR0
@@ -1262,10 +1259,10 @@
 /** @defgroup ETH_MAC_addresses ETH MAC addresses
   * @{
   */
-#define ETH_MAC_ADDRESS0     ((uint32_t)0x00000000U)
-#define ETH_MAC_ADDRESS1     ((uint32_t)0x00000008U)
-#define ETH_MAC_ADDRESS2     ((uint32_t)0x00000010U)
-#define ETH_MAC_ADDRESS3     ((uint32_t)0x00000018U)
+#define ETH_MAC_ADDRESS0     0x00000000U
+#define ETH_MAC_ADDRESS1     0x00000008U
+#define ETH_MAC_ADDRESS2     0x00000010U
+#define ETH_MAC_ADDRESS3     0x00000018U
 /**
   * @}
   */
@@ -1304,11 +1301,11 @@
 /** @defgroup HAL_ETH_StateTypeDef ETH States
   * @{
   */
-#define HAL_ETH_STATE_RESET       ((uint32_t)0x00000000U)    /*!< Peripheral not yet Initialized or disabled */
-#define HAL_ETH_STATE_READY       ((uint32_t)0x00000010U)    /*!< Peripheral Communication started           */
-#define HAL_ETH_STATE_BUSY        ((uint32_t)0x00000023U)    /*!< an internal process is ongoing             */
-#define HAL_ETH_STATE_STARTED     ((uint32_t)0x00000023U)    /*!< an internal process is started             */
-#define HAL_ETH_STATE_ERROR       ((uint32_t)0x000000E0U)    /*!< Error State                                */
+#define HAL_ETH_STATE_RESET       0x00000000U    /*!< Peripheral not yet Initialized or disabled */
+#define HAL_ETH_STATE_READY       0x00000010U    /*!< Peripheral Communication started           */
+#define HAL_ETH_STATE_BUSY        0x00000023U    /*!< an internal process is ongoing             */
+#define HAL_ETH_STATE_STARTED     0x00000023U    /*!< an internal process is started             */
+#define HAL_ETH_STATE_ERROR       0x000000E0U    /*!< Error State                                */
 /**
   * @}
   */
@@ -1344,7 +1341,7 @@
   * @{
   */
 #define ETH_MEDIA_INTERFACE_MII       0x00000000U
-#define ETH_MEDIA_INTERFACE_RMII      ((uint32_t)SYSCFG_PMC_MII_RMII_SEL)
+#define ETH_MEDIA_INTERFACE_RMII      (SYSCFG_PMC_MII_RMII_SEL)
 /**
   * @}
   */
@@ -1805,8 +1802,8 @@
 /** @defgroup ETH_PTP_Config_Status ETH PTP Config Status
   * @{
   */
-#define HAL_ETH_PTP_NOT_CONFIGURATED       ((uint32_t)0x00000000U)    /*!< ETH PTP Configuration not done */
-#define HAL_ETH_PTP_CONFIGURATED           ((uint32_t)0x00000001U)    /*!< ETH PTP Configuration done     */
+#define HAL_ETH_PTP_NOT_CONFIGURATED        0x00000000U    /*!< ETH PTP Configuration not done */
+#define HAL_ETH_PTP_CONFIGURATED            0x00000001U    /*!< ETH PTP Configuration done     */
 /**
   * @}
   */
@@ -1928,7 +1925,7 @@
                                                                             ( __INTERRUPT__)) == ( __INTERRUPT__))
 
 /*!< External interrupt line 19 Connected to the ETH wakeup EXTI Line */
-#define ETH_WAKEUP_EXTI_LINE  ((uint32_t)0x00080000U)
+#define ETH_WAKEUP_EXTI_LINE  0x00080000U
 
 /**
   * @brief Enable the ETH WAKEUP Exti Line.
diff --git a/Inc/stm32f7xx_hal_hcd.h b/Inc/stm32f7xx_hal_hcd.h
index 433a808..5177482 100644
--- a/Inc/stm32f7xx_hal_hcd.h
+++ b/Inc/stm32f7xx_hal_hcd.h
@@ -159,6 +159,10 @@
 
 #define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__)      ((USB_ReadInterrupts((__HANDLE__)->Instance)\
                                                              & (__INTERRUPT__)) == (__INTERRUPT__))
+
+#define __HAL_HCD_GET_CH_FLAG(__HANDLE__, __chnum__, __INTERRUPT__) \
+  ((USB_ReadChInterrupts((__HANDLE__)->Instance, (__chnum__)) & (__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)
 
diff --git a/Inc/stm32f7xx_hal_i2c.h b/Inc/stm32f7xx_hal_i2c.h
index f8e67d6..dd61e75 100644
--- a/Inc/stm32f7xx_hal_i2c.h
+++ b/Inc/stm32f7xx_hal_i2c.h
@@ -217,6 +217,10 @@
 
   __IO uint32_t              AddrEventCount; /*!< I2C Address Event counter                 */
 
+  __IO uint32_t              Devaddress;     /*!< I2C Target device address                 */
+
+  __IO uint32_t              Memaddress;     /*!< I2C Target memory address                 */
+
 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
   void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
   /*!< I2C Master Tx Transfer completed callback */
diff --git a/Inc/stm32f7xx_hal_irda.h b/Inc/stm32f7xx_hal_irda.h
index fe7b565..72be07c 100644
--- a/Inc/stm32f7xx_hal_irda.h
+++ b/Inc/stm32f7xx_hal_irda.h
@@ -361,6 +361,9 @@
   *           - 0xXXXX  : Flag mask in the ISR register
   * @{
   */
+#if defined(USART_ISR_REACK)
+#define IRDA_FLAG_REACK                     USART_ISR_REACK         /*!< IRDA receive enable acknowledge flag      */
+#endif /* USART_ISR_REACK */
 #define IRDA_FLAG_TEACK                     USART_ISR_TEACK         /*!< IRDA transmit enable acknowledge flag     */
 #define IRDA_FLAG_BUSY                      USART_ISR_BUSY          /*!< IRDA busy flag                            */
 #define IRDA_FLAG_ABRF                      USART_ISR_ABRF          /*!< IRDA auto Baud rate flag                  */
@@ -520,6 +523,9 @@
   * @param  __HANDLE__ specifies the IRDA Handle.
   * @param  __FLAG__ specifies the flag to check.
   *        This parameter can be one of the following values:
+#if defined(USART_ISR_REACK)
+  *            @arg @ref IRDA_FLAG_REACK Receive enable acknowledge flag
+#endif
   *            @arg @ref IRDA_FLAG_TEACK Transmit enable acknowledge flag
   *            @arg @ref IRDA_FLAG_BUSY  Busy flag
   *            @arg @ref IRDA_FLAG_ABRF  Auto Baud rate detection flag
@@ -824,8 +830,8 @@
   */
 
 /* Peripheral State and Error functions ***************************************/
-HAL_IRDA_StateTypeDef HAL_IRDA_GetState(IRDA_HandleTypeDef *hirda);
-uint32_t              HAL_IRDA_GetError(IRDA_HandleTypeDef *hirda);
+HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda);
+uint32_t              HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda);
 
 /**
   * @}
diff --git a/Inc/stm32f7xx_hal_lptim.h b/Inc/stm32f7xx_hal_lptim.h
index cbeaf2c..0e49bcd 100644
--- a/Inc/stm32f7xx_hal_lptim.h
+++ b/Inc/stm32f7xx_hal_lptim.h
@@ -793,11 +793,13 @@
 #define IS_LPTIM_COUNTER_SOURCE(__SOURCE__)     (((__SOURCE__) == LPTIM_COUNTERSOURCE_INTERNAL) || \
                                                  ((__SOURCE__) == LPTIM_COUNTERSOURCE_EXTERNAL))
 
-#define IS_LPTIM_AUTORELOAD(__AUTORELOAD__)     ((__AUTORELOAD__) <= 0x0000FFFFUL)
+#define IS_LPTIM_AUTORELOAD(__AUTORELOAD__)     ((0x00000001UL <= (__AUTORELOAD__)) &&\
+                                                 ((__AUTORELOAD__) <= 0x0000FFFFUL))
 
 #define IS_LPTIM_COMPARE(__COMPARE__)           ((__COMPARE__) <= 0x0000FFFFUL)
 
-#define IS_LPTIM_PERIOD(__PERIOD__)             ((__PERIOD__) <= 0x0000FFFFUL)
+#define IS_LPTIM_PERIOD(__PERIOD__)             ((0x00000001UL <= (__PERIOD__)) &&\
+                                                 ((__PERIOD__) <= 0x0000FFFFUL))
 
 #define IS_LPTIM_PULSE(__PULSE__)               ((__PULSE__) <= 0x0000FFFFUL)
 
diff --git a/Inc/stm32f7xx_hal_pcd.h b/Inc/stm32f7xx_hal_pcd.h
index 9572fe1..79136f0 100644
--- a/Inc/stm32f7xx_hal_pcd.h
+++ b/Inc/stm32f7xx_hal_pcd.h
@@ -106,6 +106,7 @@
   uint32_t                Setup[12];   /*!< Setup packet buffer               */
   PCD_LPM_StateTypeDef    LPM_State;   /*!< LPM State                         */
   uint32_t                BESL;
+  uint32_t                FrameNumber; /*!< Store Current Frame number        */
 
 
   uint32_t lpm_active;                 /*!< Enable or disable the Link Power Management .
@@ -284,12 +285,10 @@
   * @}
   */
 
-HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd,
-                                           HAL_PCD_CallbackIDTypeDef CallbackID,
+HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID,
                                            pPCD_CallbackTypeDef pCallback);
 
-HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd,
-                                             HAL_PCD_CallbackIDTypeDef CallbackID);
+HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID);
 
 HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd,
                                                        pPCD_DataOutStageCallbackTypeDef pCallback);
@@ -311,9 +310,7 @@
 
 HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd);
 
-HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd,
-                                              pPCD_LpmCallbackTypeDef pCallback);
-
+HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd, pPCD_LpmCallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback(PCD_HandleTypeDef *hpcd);
 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
 /**
@@ -353,19 +350,14 @@
 HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd);
 HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd);
 HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address);
-HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
-                                  uint16_t ep_mps, uint8_t ep_type);
-
+HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type);
 HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
-HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
-                                     uint8_t *pBuf, uint32_t len);
-
-HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
-                                      uint8_t *pBuf, uint32_t len);
-
+HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len);
+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_EP_Abort(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);
diff --git a/Inc/stm32f7xx_hal_qspi.h b/Inc/stm32f7xx_hal_qspi.h
index e0dbf9c..3c90ad3 100644
--- a/Inc/stm32f7xx_hal_qspi.h
+++ b/Inc/stm32f7xx_hal_qspi.h
@@ -456,7 +456,7 @@
   * @{
   */
 /** @brief Reset QSPI handle state.
-  * @param  __HANDLE__ : QSPI handle.
+  * @param  __HANDLE__ QSPI handle.
   * @retval None
   */
 #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1)
@@ -470,20 +470,20 @@
 #endif
 
 /** @brief  Enable the QSPI peripheral.
-  * @param  __HANDLE__ : specifies the QSPI Handle.
+  * @param  __HANDLE__ specifies the QSPI Handle.
   * @retval None
   */
 #define __HAL_QSPI_ENABLE(__HANDLE__)                       SET_BIT((__HANDLE__)->Instance->CR, QUADSPI_CR_EN)
 
 /** @brief  Disable the QSPI peripheral.
-  * @param  __HANDLE__ : specifies the QSPI Handle.
+  * @param  __HANDLE__ specifies the QSPI Handle.
   * @retval None
   */
 #define __HAL_QSPI_DISABLE(__HANDLE__)                      CLEAR_BIT((__HANDLE__)->Instance->CR, QUADSPI_CR_EN)
 
 /** @brief  Enable the specified QSPI interrupt.
-  * @param  __HANDLE__ : specifies the QSPI Handle.
-  * @param  __INTERRUPT__ : specifies the QSPI interrupt source to enable.
+  * @param  __HANDLE__ specifies the QSPI Handle.
+  * @param  __INTERRUPT__ specifies the QSPI interrupt source to enable.
   *          This parameter can be one of the following values:
   *            @arg QSPI_IT_TO: QSPI Timeout interrupt
   *            @arg QSPI_IT_SM: QSPI Status match interrupt
@@ -496,8 +496,8 @@
 
 
 /** @brief  Disable the specified QSPI interrupt.
-  * @param  __HANDLE__ : specifies the QSPI Handle.
-  * @param  __INTERRUPT__ : specifies the QSPI interrupt source to disable.
+  * @param  __HANDLE__ specifies the QSPI Handle.
+  * @param  __INTERRUPT__ specifies the QSPI interrupt source to disable.
   *          This parameter can be one of the following values:
   *            @arg QSPI_IT_TO: QSPI Timeout interrupt
   *            @arg QSPI_IT_SM: QSPI Status match interrupt
@@ -509,8 +509,8 @@
 #define __HAL_QSPI_DISABLE_IT(__HANDLE__, __INTERRUPT__)    CLEAR_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__))
 
 /** @brief  Check whether the specified QSPI interrupt source is enabled or not.
-  * @param  __HANDLE__ : specifies the QSPI Handle.
-  * @param  __INTERRUPT__ : specifies the QSPI interrupt source to check.
+  * @param  __HANDLE__ specifies the QSPI Handle.
+  * @param  __INTERRUPT__ specifies the QSPI interrupt source to check.
   *          This parameter can be one of the following values:
   *            @arg QSPI_IT_TO: QSPI Timeout interrupt
   *            @arg QSPI_IT_SM: QSPI Status match interrupt
@@ -523,8 +523,8 @@
 
 /**
   * @brief  Check whether the selected QSPI flag is set or not.
-  * @param  __HANDLE__ : specifies the QSPI Handle.
-  * @param  __FLAG__ : specifies the QSPI flag to check.
+  * @param  __HANDLE__ specifies the QSPI Handle.
+  * @param  __FLAG__ specifies the QSPI flag to check.
   *          This parameter can be one of the following values:
   *            @arg QSPI_FLAG_BUSY: QSPI Busy flag
   *            @arg QSPI_FLAG_TO:   QSPI Timeout flag
@@ -537,8 +537,8 @@
 #define __HAL_QSPI_GET_FLAG(__HANDLE__, __FLAG__)           ((READ_BIT((__HANDLE__)->Instance->SR, (__FLAG__)) != 0U) ? SET : RESET)
 
 /** @brief  Clears the specified QSPI's flag status.
-  * @param  __HANDLE__ : specifies the QSPI Handle.
-  * @param  __FLAG__ : specifies the QSPI clear register flag that needs to be set
+  * @param  __HANDLE__ specifies the QSPI Handle.
+  * @param  __FLAG__ specifies the QSPI clear register flag that needs to be set
   *          This parameter can be one of the following values:
   *            @arg QSPI_FLAG_TO: QSPI Timeout flag
   *            @arg QSPI_FLAG_SM: QSPI Status match flag
diff --git a/Inc/stm32f7xx_hal_rtc.h b/Inc/stm32f7xx_hal_rtc.h
index 5cd3d19..29cb36b 100644
--- a/Inc/stm32f7xx_hal_rtc.h
+++ b/Inc/stm32f7xx_hal_rtc.h
@@ -17,14 +17,15 @@
   */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F7xx_HAL_RTC_H
-#define __STM32F7xx_HAL_RTC_H
+#ifndef STM32F7xx_HAL_RTC_H
+#define STM32F7xx_HAL_RTC_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
 /* Includes ------------------------------------------------------------------*/
+
 #include "stm32f7xx_hal_def.h"
 
 /** @addtogroup STM32F7xx_HAL_Driver
@@ -36,6 +37,7 @@
   */
 
 /* Exported types ------------------------------------------------------------*/
+
 /** @defgroup RTC_Exported_Types RTC Exported Types
   * @{
   */
@@ -50,8 +52,7 @@
   HAL_RTC_STATE_BUSY              = 0x02U,  /*!< RTC process is ongoing              */
   HAL_RTC_STATE_TIMEOUT           = 0x03U,  /*!< RTC timeout state                   */
   HAL_RTC_STATE_ERROR             = 0x04U   /*!< RTC error state                     */
-
-}HAL_RTCStateTypeDef;
+} HAL_RTCStateTypeDef;
 
 /**
   * @brief  RTC Configuration Structure definition
@@ -65,17 +66,17 @@
                                  This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F */
 
   uint32_t SynchPrediv;     /*!< Specifies the RTC Synchronous Predivider value.
-                                 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7FFF */
+                                 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0x7FFF */
 
   uint32_t OutPut;          /*!< Specifies which signal will be routed to the RTC output.
-                                 This parameter can be a value of @ref RTCEx_Output_selection_Definitions */
+                                 This parameter can be a value of @ref RTC_Output_selection_Definitions */
 
   uint32_t OutPutPolarity;  /*!< Specifies the polarity of the output signal.
                                  This parameter can be a value of @ref RTC_Output_Polarity_Definitions */
 
   uint32_t OutPutType;      /*!< Specifies the RTC Output Pin mode.
                                  This parameter can be a value of @ref RTC_Output_Type_ALARM_OUT */
-}RTC_InitTypeDef;
+} RTC_InitTypeDef;
 
 /**
   * @brief  RTC Time structure definition
@@ -83,8 +84,8 @@
 typedef struct
 {
   uint8_t Hours;            /*!< Specifies the RTC Time Hour.
-                                 This parameter must be a number between Min_Data = 0 and Max_Data = 12 if the RTC_HourFormat_12 is selected.
-                                 This parameter must be a number between Min_Data = 0 and Max_Data = 23 if the RTC_HourFormat_24 is selected  */
+                                 This parameter must be a number between Min_Data = 0 and Max_Data = 12 if the RTC_HourFormat_12 is selected
+                                 This parameter must be a number between Min_Data = 0 and Max_Data = 23 if the RTC_HourFormat_24 is selected */
 
   uint8_t Minutes;          /*!< Specifies the RTC Time Minutes.
                                  This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
@@ -92,25 +93,25 @@
   uint8_t Seconds;          /*!< Specifies the RTC Time Seconds.
                                  This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
 
+  uint8_t TimeFormat;       /*!< Specifies the RTC AM/PM Time.
+                                 This parameter can be a value of @ref RTC_AM_PM_Definitions */
+
   uint32_t SubSeconds;      /*!< Specifies the RTC_SSR RTC Sub Second register content.
                                  This parameter corresponds to a time unit range between [0-1] Second
                                  with [1 Sec / SecondFraction +1] granularity */
 
   uint32_t SecondFraction;  /*!< Specifies the range or granularity of Sub Second register content
-                                 corresponding to Synchronous pre-scaler factor value (PREDIV_S)
+                                 corresponding to Synchronous prescaler factor value (PREDIV_S)
                                  This parameter corresponds to a time unit range between [0-1] Second
                                  with [1 Sec / SecondFraction +1] granularity.
                                  This field will be used only by HAL_RTC_GetTime function */
 
-  uint8_t TimeFormat;       /*!< Specifies the RTC AM/PM Time.
-                                 This parameter can be a value of @ref RTC_AM_PM_Definitions */
+  uint32_t DayLightSaving;  /*!< This interface is deprecated. To manage Daylight
+                                 Saving Time, please use HAL_RTC_DST_xxx functions */
 
-  uint32_t DayLightSaving;  /*!< This interface is deprecated. To manage Daylight Saving Time,
-                                 please use HAL_RTC_DST_xxx functions */
-
-  uint32_t StoreOperation;  /*!< This interface is deprecated. To manage Daylight Saving Time,
-                                 please use HAL_RTC_DST_xxx functions */
-}RTC_TimeTypeDef;
+  uint32_t StoreOperation;  /*!< This interface is deprecated. To manage Daylight
+                                 Saving Time, please use HAL_RTC_DST_xxx functions */
+} RTC_TimeTypeDef;
 
 /**
   * @brief  RTC Date structure definition
@@ -129,7 +130,7 @@
   uint8_t Year;     /*!< Specifies the RTC Date Year.
                          This parameter must be a number between Min_Data = 0 and Max_Data = 99 */
 
-}RTC_DateTypeDef;
+} RTC_DateTypeDef;
 
 /**
   * @brief  RTC Alarm structure definition
@@ -145,7 +146,7 @@
                                       This parameter can be a value of @ref RTC_Alarm_Sub_Seconds_Masks_Definitions */
 
   uint32_t AlarmDateWeekDaySel;  /*!< Specifies the RTC Alarm is on Date or WeekDay.
-                                     This parameter can be a value of @ref RTC_AlarmDateWeekDay_Definitions */
+                                      This parameter can be a value of @ref RTC_AlarmDateWeekDay_Definitions */
 
   uint8_t AlarmDateWeekDay;      /*!< Specifies the RTC Alarm Date/WeekDay.
                                       If the Alarm Date is selected, this parameter must be set to a value in the 1-31 range.
@@ -153,7 +154,7 @@
 
   uint32_t Alarm;                /*!< Specifies the alarm .
                                       This parameter can be a value of @ref RTC_Alarms_Definitions */
-}RTC_AlarmTypeDef;
+} RTC_AlarmTypeDef;
 
 /**
   * @brief  RTC Handle Structure definition
@@ -162,7 +163,7 @@
 typedef struct __RTC_HandleTypeDef
 #else
 typedef struct
-#endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */
+#endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
 {
   RTC_TypeDef                 *Instance;  /*!< Register base address    */
 
@@ -173,27 +174,27 @@
   __IO HAL_RTCStateTypeDef    State;      /*!< Time communication state */
 
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
-  void  (* AlarmAEventCallback)      ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC Alarm A Event callback         */
+  void (* AlarmAEventCallback)      (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC Alarm A Event callback         */
 
-  void  (* AlarmBEventCallback)      ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC Alarm B Event callback         */
+  void (* AlarmBEventCallback)      (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC Alarm B Event callback         */
 
-  void  (* TimeStampEventCallback)   ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC TimeStamp Event callback       */
+  void (* TimeStampEventCallback)   (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC Timestamp Event callback       */
 
-  void  (* WakeUpTimerEventCallback) ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC WakeUpTimer Event callback     */
+  void (* WakeUpTimerEventCallback) (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC WakeUpTimer Event callback     */
 
-  void  (* Tamper1EventCallback)     ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC Tamper 1 Event callback        */
+  void (* Tamper1EventCallback)     (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC Tamper 1 Event callback        */
 
-  void  (* Tamper2EventCallback)     ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC Tamper 2 Event callback        */
+  void (* Tamper2EventCallback)     (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC Tamper 2 Event callback        */
 
-  void  (* Tamper3EventCallback)     ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC Tamper 3 Event callback        */
+  void (* Tamper3EventCallback)     (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC Tamper 3 Event callback        */
 
-  void  (* MspInitCallback)          ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC Msp Init callback              */
+  void (* MspInitCallback)          (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC Msp Init callback              */
 
-  void  (* MspDeInitCallback)        ( struct __RTC_HandleTypeDef * hrtc);  /*!< RTC Msp DeInit callback            */
+  void (* MspDeInitCallback)        (struct __RTC_HandleTypeDef *hrtc);  /*!< RTC Msp DeInit callback            */
 
-#endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */
+#endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
 
-}RTC_HandleTypeDef;
+} RTC_HandleTypeDef;
 
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
 /**
@@ -201,21 +202,21 @@
   */
 typedef enum
 {
-  HAL_RTC_ALARM_A_EVENT_CB_ID           = 0x00u,    /*!< RTC Alarm A Event Callback ID       */
-  HAL_RTC_ALARM_B_EVENT_CB_ID           = 0x01u,    /*!< RTC Alarm B Event Callback ID       */
-  HAL_RTC_TIMESTAMP_EVENT_CB_ID         = 0x02u,    /*!< RTC TimeStamp Event Callback ID     */
-  HAL_RTC_WAKEUPTIMER_EVENT_CB_ID       = 0x03u,    /*!< RTC Wake-Up Timer Event Callback ID */
-  HAL_RTC_TAMPER1_EVENT_CB_ID           = 0x04u,    /*!< RTC Tamper 1 Callback ID            */
-  HAL_RTC_TAMPER2_EVENT_CB_ID           = 0x05u,    /*!< RTC Tamper 2 Callback ID            */
-  HAL_RTC_TAMPER3_EVENT_CB_ID           = 0x06u,    /*!< RTC Tamper 3 Callback ID            */
-  HAL_RTC_MSPINIT_CB_ID                 = 0x0Eu,    /*!< RTC Msp Init callback ID            */
-  HAL_RTC_MSPDEINIT_CB_ID               = 0x0Fu     /*!< RTC Msp DeInit callback ID          */
-}HAL_RTC_CallbackIDTypeDef;
+  HAL_RTC_ALARM_A_EVENT_CB_ID           = 0x00U,    /*!< RTC Alarm A Event Callback ID       */
+  HAL_RTC_ALARM_B_EVENT_CB_ID           = 0x01U,    /*!< RTC Alarm B Event Callback ID       */
+  HAL_RTC_TIMESTAMP_EVENT_CB_ID         = 0x02U,    /*!< RTC Timestamp Event Callback ID     */
+  HAL_RTC_WAKEUPTIMER_EVENT_CB_ID       = 0x03U,    /*!< RTC Wakeup Timer Event Callback ID  */
+  HAL_RTC_TAMPER1_EVENT_CB_ID           = 0x04U,    /*!< RTC Tamper 1 Callback ID            */
+  HAL_RTC_TAMPER2_EVENT_CB_ID           = 0x05U,    /*!< RTC Tamper 2 Callback ID            */
+  HAL_RTC_TAMPER3_EVENT_CB_ID           = 0x06U,    /*!< RTC Tamper 3 Callback ID            */
+  HAL_RTC_MSPINIT_CB_ID                 = 0x0EU,    /*!< RTC Msp Init callback ID            */
+  HAL_RTC_MSPDEINIT_CB_ID               = 0x0FU     /*!< RTC Msp DeInit callback ID          */
+} HAL_RTC_CallbackIDTypeDef;
 
 /**
   * @brief  HAL RTC Callback pointer definition
   */
-typedef  void (*pRTC_CallbackTypeDef)(RTC_HandleTypeDef * hrtc); /*!< pointer to an RTC callback function */
+typedef  void (*pRTC_CallbackTypeDef)(RTC_HandleTypeDef *hrtc);  /*!< pointer to an RTC callback function */
 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
 
 /**
@@ -223,6 +224,7 @@
   */
 
 /* Exported constants --------------------------------------------------------*/
+
 /** @defgroup RTC_Exported_Constants RTC Exported Constants
   * @{
   */
@@ -231,17 +233,27 @@
   * @{
   */
 #define RTC_HOURFORMAT_24              0x00000000U
-#define RTC_HOURFORMAT_12              0x00000040U
+#define RTC_HOURFORMAT_12              RTC_CR_FMT
 /**
   * @}
   */
 
+/** @defgroup RTC_Output_selection_Definitions RTC Output Selection Definitions
+  * @{
+  */
+#define RTC_OUTPUT_DISABLE             0x00000000U
+#define RTC_OUTPUT_ALARMA              RTC_CR_OSEL_0
+#define RTC_OUTPUT_ALARMB              RTC_CR_OSEL_1
+#define RTC_OUTPUT_WAKEUP              RTC_CR_OSEL
+/**
+  * @}
+  */
 
 /** @defgroup RTC_Output_Polarity_Definitions RTC Output Polarity Definitions
   * @{
   */
 #define RTC_OUTPUT_POLARITY_HIGH       0x00000000U
-#define RTC_OUTPUT_POLARITY_LOW        0x00100000U
+#define RTC_OUTPUT_POLARITY_LOW        RTC_CR_POL
 /**
   * @}
   */
@@ -250,7 +262,7 @@
   * @{
   */
 #define RTC_OUTPUT_TYPE_OPENDRAIN      0x00000000U
-#define RTC_OUTPUT_TYPE_PUSHPULL       RTC_OR_ALARMTYPE  /* 0x00000008 */
+#define RTC_OUTPUT_TYPE_PUSHPULL       RTC_OR_ALARMTYPE
 /**
   * @}
   */
@@ -258,8 +270,8 @@
 /** @defgroup RTC_AM_PM_Definitions RTC AM PM Definitions
   * @{
   */
-#define RTC_HOURFORMAT12_AM            ((uint8_t)0x00U)
-#define RTC_HOURFORMAT12_PM            ((uint8_t)0x40U)
+#define RTC_HOURFORMAT12_AM            ((uint8_t)0x00)
+#define RTC_HOURFORMAT12_PM            ((uint8_t)0x01)
 /**
   * @}
   */
@@ -267,8 +279,8 @@
 /** @defgroup RTC_DayLightSaving_Definitions RTC DayLight Saving Definitions
   * @{
   */
-#define RTC_DAYLIGHTSAVING_SUB1H       0x00020000U
-#define RTC_DAYLIGHTSAVING_ADD1H       0x00010000U
+#define RTC_DAYLIGHTSAVING_SUB1H       RTC_CR_SUB1H
+#define RTC_DAYLIGHTSAVING_ADD1H       RTC_CR_ADD1H
 #define RTC_DAYLIGHTSAVING_NONE        0x00000000U
 /**
   * @}
@@ -278,7 +290,7 @@
   * @{
   */
 #define RTC_STOREOPERATION_RESET        0x00000000U
-#define RTC_STOREOPERATION_SET          0x00040000U
+#define RTC_STOREOPERATION_SET          RTC_CR_BKP
 /**
   * @}
   */
@@ -292,22 +304,21 @@
   * @}
   */
 
-/** @defgroup RTC_Month_Date_Definitions RTC Month Date Definitions
+/** @defgroup RTC_Month_Date_Definitions RTC Month Date Definitions (in BCD format)
   * @{
   */
-/* Coded in BCD format */
-#define RTC_MONTH_JANUARY              ((uint8_t)0x01U)
-#define RTC_MONTH_FEBRUARY             ((uint8_t)0x02U)
-#define RTC_MONTH_MARCH                ((uint8_t)0x03U)
-#define RTC_MONTH_APRIL                ((uint8_t)0x04U)
-#define RTC_MONTH_MAY                  ((uint8_t)0x05U)
-#define RTC_MONTH_JUNE                 ((uint8_t)0x06U)
-#define RTC_MONTH_JULY                 ((uint8_t)0x07U)
-#define RTC_MONTH_AUGUST               ((uint8_t)0x08U)
-#define RTC_MONTH_SEPTEMBER            ((uint8_t)0x09U)
-#define RTC_MONTH_OCTOBER              ((uint8_t)0x10U)
-#define RTC_MONTH_NOVEMBER             ((uint8_t)0x11U)
-#define RTC_MONTH_DECEMBER             ((uint8_t)0x12U)
+#define RTC_MONTH_JANUARY              ((uint8_t)0x01)
+#define RTC_MONTH_FEBRUARY             ((uint8_t)0x02)
+#define RTC_MONTH_MARCH                ((uint8_t)0x03)
+#define RTC_MONTH_APRIL                ((uint8_t)0x04)
+#define RTC_MONTH_MAY                  ((uint8_t)0x05)
+#define RTC_MONTH_JUNE                 ((uint8_t)0x06)
+#define RTC_MONTH_JULY                 ((uint8_t)0x07)
+#define RTC_MONTH_AUGUST               ((uint8_t)0x08)
+#define RTC_MONTH_SEPTEMBER            ((uint8_t)0x09)
+#define RTC_MONTH_OCTOBER              ((uint8_t)0x10)
+#define RTC_MONTH_NOVEMBER             ((uint8_t)0x11)
+#define RTC_MONTH_DECEMBER             ((uint8_t)0x12)
 /**
   * @}
   */
@@ -315,13 +326,13 @@
 /** @defgroup RTC_WeekDay_Definitions RTC WeekDay Definitions
   * @{
   */
-#define RTC_WEEKDAY_MONDAY             ((uint8_t)0x01U)
-#define RTC_WEEKDAY_TUESDAY            ((uint8_t)0x02U)
-#define RTC_WEEKDAY_WEDNESDAY          ((uint8_t)0x03U)
-#define RTC_WEEKDAY_THURSDAY           ((uint8_t)0x04U)
-#define RTC_WEEKDAY_FRIDAY             ((uint8_t)0x05U)
-#define RTC_WEEKDAY_SATURDAY           ((uint8_t)0x06U)
-#define RTC_WEEKDAY_SUNDAY             ((uint8_t)0x07U)
+#define RTC_WEEKDAY_MONDAY             ((uint8_t)0x01)
+#define RTC_WEEKDAY_TUESDAY            ((uint8_t)0x02)
+#define RTC_WEEKDAY_WEDNESDAY          ((uint8_t)0x03)
+#define RTC_WEEKDAY_THURSDAY           ((uint8_t)0x04)
+#define RTC_WEEKDAY_FRIDAY             ((uint8_t)0x05)
+#define RTC_WEEKDAY_SATURDAY           ((uint8_t)0x06)
+#define RTC_WEEKDAY_SUNDAY             ((uint8_t)0x07)
 /**
   * @}
   */
@@ -330,7 +341,7 @@
   * @{
   */
 #define RTC_ALARMDATEWEEKDAYSEL_DATE      0x00000000U
-#define RTC_ALARMDATEWEEKDAYSEL_WEEKDAY   0x40000000U
+#define RTC_ALARMDATEWEEKDAYSEL_WEEKDAY   RTC_ALRMAR_WDSEL
 /**
   * @}
   */
@@ -343,7 +354,10 @@
 #define RTC_ALARMMASK_HOURS               RTC_ALRMAR_MSK3
 #define RTC_ALARMMASK_MINUTES             RTC_ALRMAR_MSK2
 #define RTC_ALARMMASK_SECONDS             RTC_ALRMAR_MSK1
-#define RTC_ALARMMASK_ALL                 0x80808080U
+#define RTC_ALARMMASK_ALL                 (RTC_ALARMMASK_DATEWEEKDAY | \
+                                           RTC_ALARMMASK_HOURS       | \
+                                           RTC_ALARMMASK_MINUTES     | \
+                                           RTC_ALARMMASK_SECONDS)
 /**
   * @}
   */
@@ -360,39 +374,38 @@
 /** @defgroup RTC_Alarm_Sub_Seconds_Masks_Definitions RTC Alarm Sub Seconds Masks Definitions
   * @{
   */
-#define RTC_ALARMSUBSECONDMASK_ALL         0x00000000U  /*!< All Alarm SS fields are masked.
-                                                             There is no comparison on sub seconds
-                                                             for Alarm                              */
-#define RTC_ALARMSUBSECONDMASK_SS14_1      0x01000000U  /*!< SS[14:1] are don't care in Alarm
-                                                             comparison. Only SS[0] is compared.    */
-#define RTC_ALARMSUBSECONDMASK_SS14_2      0x02000000U  /*!< SS[14:2] are don't care in Alarm
-                                                             comparison. Only SS[1:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_3      0x03000000U  /*!< SS[14:3] are don't care in Alarm
-                                                             comparison. Only SS[2:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_4      0x04000000U  /*!< SS[14:4] are don't care in Alarm
-                                                             comparison. Only SS[3:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_5      0x05000000U  /*!< SS[14:5] are don't care in Alarm
-                                                             comparison. Only SS[4:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_6      0x06000000U  /*!< SS[14:6] are don't care in Alarm
-                                                             comparison. Only SS[5:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_7      0x07000000U  /*!< SS[14:7] are don't care in Alarm
-                                                             comparison. Only SS[6:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_8      0x08000000U  /*!< SS[14:8] are don't care in Alarm
-                                                             comparison. Only SS[7:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_9      0x09000000U  /*!< SS[14:9] are don't care in Alarm
-                                                             comparison. Only SS[8:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_10     0x0A000000U  /*!< SS[14:10] are don't care in Alarm
-                                                             comparison. Only SS[9:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_11     0x0B000000U  /*!< SS[14:11] are don't care in Alarm
-                                                             comparison. Only SS[10:0] are compared */
-#define RTC_ALARMSUBSECONDMASK_SS14_12     0x0C000000U  /*!< SS[14:12] are don't care in Alarm
-                                                             comparison.Only SS[11:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_SS14_13     0x0D000000U  /*!< SS[14:13] are don't care in Alarm
-                                                             comparison. Only SS[12:0] are compared */
-#define RTC_ALARMSUBSECONDMASK_SS14        0x0E000000U  /*!< SS[14] is don't care in Alarm
-                                                             comparison.Only SS[13:0] are compared  */
-#define RTC_ALARMSUBSECONDMASK_NONE        0x0F000000U  /*!< SS[14:0] are compared and must match
-                                                             to activate alarm. */
+/*!< All Alarm SS fields are masked. There is no comparison on sub seconds for Alarm */
+#define RTC_ALARMSUBSECONDMASK_ALL         0x00000000U
+/*!< SS[14:1] are don't care in Alarm comparison. Only SS[0] is compared.     */
+#define RTC_ALARMSUBSECONDMASK_SS14_1      RTC_ALRMASSR_MASKSS_0
+/*!< SS[14:2] are don't care in Alarm comparison. Only SS[1:0] are compared.  */
+#define RTC_ALARMSUBSECONDMASK_SS14_2      RTC_ALRMASSR_MASKSS_1
+/*!< SS[14:3] are don't care in Alarm comparison. Only SS[2:0] are compared.  */
+#define RTC_ALARMSUBSECONDMASK_SS14_3      (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_1)
+/*!< SS[14:4] are don't care in Alarm comparison. Only SS[3:0] are compared.  */
+#define RTC_ALARMSUBSECONDMASK_SS14_4      RTC_ALRMASSR_MASKSS_2
+/*!< SS[14:5] are don't care in Alarm comparison. Only SS[4:0] are compared.  */
+#define RTC_ALARMSUBSECONDMASK_SS14_5      (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_2)
+/*!< SS[14:6] are don't care in Alarm comparison. Only SS[5:0] are compared.  */
+#define RTC_ALARMSUBSECONDMASK_SS14_6      (RTC_ALRMASSR_MASKSS_1 | RTC_ALRMASSR_MASKSS_2)
+/*!< SS[14:7] are don't care in Alarm comparison. Only SS[6:0] are compared.  */
+#define RTC_ALARMSUBSECONDMASK_SS14_7      (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_1 | RTC_ALRMASSR_MASKSS_2)
+/*!< SS[14:8] are don't care in Alarm comparison. Only SS[7:0] are compared.  */
+#define RTC_ALARMSUBSECONDMASK_SS14_8      RTC_ALRMASSR_MASKSS_3
+/*!< SS[14:9] are don't care in Alarm comparison. Only SS[8:0] are compared.  */
+#define RTC_ALARMSUBSECONDMASK_SS14_9      (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_3)
+/*!< SS[14:10] are don't care in Alarm comparison. Only SS[9:0] are compared. */
+#define RTC_ALARMSUBSECONDMASK_SS14_10     (RTC_ALRMASSR_MASKSS_1 | RTC_ALRMASSR_MASKSS_3)
+/*!< SS[14:11] are don't care in Alarm comparison. Only SS[10:0] are compared. */
+#define RTC_ALARMSUBSECONDMASK_SS14_11     (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_1 | RTC_ALRMASSR_MASKSS_3)
+/*!< SS[14:12] are don't care in Alarm comparison. Only SS[11:0] are compared. */
+#define RTC_ALARMSUBSECONDMASK_SS14_12     (RTC_ALRMASSR_MASKSS_2 | RTC_ALRMASSR_MASKSS_3)
+/*!< SS[14:13] are don't care in Alarm comparison. Only SS[12:0] are compared. */
+#define RTC_ALARMSUBSECONDMASK_SS14_13     (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_2 | RTC_ALRMASSR_MASKSS_3)
+/*!< SS[14] is don't care in Alarm comparison. Only SS[13:0] are compared. */
+#define RTC_ALARMSUBSECONDMASK_SS14        (RTC_ALRMASSR_MASKSS_1 | RTC_ALRMASSR_MASKSS_2 | RTC_ALRMASSR_MASKSS_3)
+/*!< SS[14:0] are compared and must match to activate alarm. */
+#define RTC_ALARMSUBSECONDMASK_NONE        RTC_ALRMASSR_MASKSS
 /**
   * @}
   */
@@ -400,14 +413,10 @@
 /** @defgroup RTC_Interrupts_Definitions RTC Interrupts Definitions
   * @{
   */
-#define RTC_IT_TS                         RTC_CR_TSIE
-#define RTC_IT_WUT                        RTC_CR_WUTIE
-#define RTC_IT_ALRA                       RTC_CR_ALRAIE
-#define RTC_IT_ALRB                       RTC_CR_ALRBIE
-#define RTC_IT_TAMP                       RTC_TAMPCR_TAMPIE /* Used only to Enable the Tamper Interrupt */
-#define RTC_IT_TAMP1                      RTC_TAMPCR_TAMP1IE
-#define RTC_IT_TAMP2                      RTC_TAMPCR_TAMP2IE
-#define RTC_IT_TAMP3                      RTC_TAMPCR_TAMP3IE
+#define RTC_IT_TS                         RTC_CR_TSIE         /*!< Enable Timestamp Interrupt               */
+#define RTC_IT_WUT                        RTC_CR_WUTIE        /*!< Enable Wakeup timer Interrupt            */
+#define RTC_IT_ALRB                       RTC_CR_ALRBIE       /*!< Enable Alarm B Interrupt                 */
+#define RTC_IT_ALRA                       RTC_CR_ALRAIE       /*!< Enable Alarm A Interrupt                 */
 /**
   * @}
   */
@@ -415,23 +424,23 @@
 /** @defgroup RTC_Flags_Definitions RTC Flags Definitions
   * @{
   */
-#define RTC_FLAG_RECALPF                  RTC_ISR_RECALPF
-#define RTC_FLAG_TAMP3F                   RTC_ISR_TAMP3F
-#define RTC_FLAG_TAMP2F                   RTC_ISR_TAMP2F
-#define RTC_FLAG_TAMP1F                   RTC_ISR_TAMP1F
-#define RTC_FLAG_TSOVF                    RTC_ISR_TSOVF
-#define RTC_FLAG_TSF                      RTC_ISR_TSF
-#define RTC_FLAG_ITSF                     RTC_ISR_ITSF
-#define RTC_FLAG_WUTF                     RTC_ISR_WUTF
-#define RTC_FLAG_ALRBF                    RTC_ISR_ALRBF
-#define RTC_FLAG_ALRAF                    RTC_ISR_ALRAF
-#define RTC_FLAG_INITF                    RTC_ISR_INITF
-#define RTC_FLAG_RSF                      RTC_ISR_RSF
-#define RTC_FLAG_INITS                    RTC_ISR_INITS
-#define RTC_FLAG_SHPF                     RTC_ISR_SHPF
-#define RTC_FLAG_WUTWF                    RTC_ISR_WUTWF
-#define RTC_FLAG_ALRBWF                   RTC_ISR_ALRBWF
-#define RTC_FLAG_ALRAWF                   RTC_ISR_ALRAWF
+#define RTC_FLAG_RECALPF                  RTC_ISR_RECALPF     /*!< Recalibration pending flag               */
+#define RTC_FLAG_TAMP3F                   RTC_ISR_TAMP3F      /*!< Tamper 3 event flag                      */
+#define RTC_FLAG_TAMP2F                   RTC_ISR_TAMP2F      /*!< Tamper 2 event flag                      */
+#define RTC_FLAG_TAMP1F                   RTC_ISR_TAMP1F      /*!< Tamper 1 event flag                      */
+#define RTC_FLAG_TSOVF                    RTC_ISR_TSOVF       /*!< Timestamp overflow flag                  */
+#define RTC_FLAG_TSF                      RTC_ISR_TSF         /*!< Timestamp event flag                     */
+#define RTC_FLAG_ITSF                     RTC_ISR_ITSF        /*!< Internal Timestamp event flag            */
+#define RTC_FLAG_WUTF                     RTC_ISR_WUTF        /*!< Wakeup timer event flag                  */
+#define RTC_FLAG_ALRBF                    RTC_ISR_ALRBF       /*!< Alarm B event flag                       */
+#define RTC_FLAG_ALRAF                    RTC_ISR_ALRAF       /*!< Alarm A event flag                       */
+#define RTC_FLAG_INITF                    RTC_ISR_INITF       /*!< RTC in initialization mode flag          */
+#define RTC_FLAG_RSF                      RTC_ISR_RSF         /*!< Register synchronization flag            */
+#define RTC_FLAG_INITS                    RTC_ISR_INITS       /*!< RTC initialization status flag           */
+#define RTC_FLAG_SHPF                     RTC_ISR_SHPF        /*!< Shift operation pending flag             */
+#define RTC_FLAG_WUTWF                    RTC_ISR_WUTWF       /*!< WUTR register write allowance flag       */
+#define RTC_FLAG_ALRBWF                   RTC_ISR_ALRBWF      /*!< ALRMBR register write allowance flag     */
+#define RTC_FLAG_ALRAWF                   RTC_ISR_ALRAWF      /*!< ALRMAR register write allowance flag     */
 /**
   * @}
   */
@@ -440,7 +449,8 @@
   * @}
   */
 
-/* Exported macro ------------------------------------------------------------*/
+/* Exported macros -----------------------------------------------------------*/
+
 /** @defgroup RTC_Exported_Macros RTC Exported Macros
   * @{
   */
@@ -450,11 +460,11 @@
   * @retval None
   */
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
-#define __HAL_RTC_RESET_HANDLE_STATE(__HANDLE__) do{\
-                                                      (__HANDLE__)->State = HAL_RTC_STATE_RESET;\
-                                                      (__HANDLE__)->MspInitCallback = NULL;\
-                                                      (__HANDLE__)->MspDeInitCallback = NULL;\
-                                                     }while(0u)
+#define __HAL_RTC_RESET_HANDLE_STATE(__HANDLE__) do {                                            \
+                                                      (__HANDLE__)->State = HAL_RTC_STATE_RESET; \
+                                                      (__HANDLE__)->MspInitCallback = NULL;      \
+                                                      (__HANDLE__)->MspDeInitCallback = NULL;    \
+                                                    } while(0U)
 #else
 #define __HAL_RTC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RTC_STATE_RESET)
 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
@@ -464,21 +474,26 @@
   * @param  __HANDLE__ specifies the RTC handle.
   * @retval None
   */
-#define __HAL_RTC_WRITEPROTECTION_DISABLE(__HANDLE__)             \
-                        do{                                       \
-                            (__HANDLE__)->Instance->WPR = 0xCAU;   \
-                            (__HANDLE__)->Instance->WPR = 0x53U;   \
-                          } while(0U)
+#define __HAL_RTC_WRITEPROTECTION_DISABLE(__HANDLE__) do {                                       \
+                                                           (__HANDLE__)->Instance->WPR = 0xCAU;  \
+                                                           (__HANDLE__)->Instance->WPR = 0x53U;  \
+                                                         } while(0U)
 
 /**
   * @brief  Enable the write protection for RTC registers.
   * @param  __HANDLE__ specifies the RTC handle.
   * @retval None
   */
-#define __HAL_RTC_WRITEPROTECTION_ENABLE(__HANDLE__)              \
-                        do{                                       \
-                            (__HANDLE__)->Instance->WPR = 0xFFU;   \
-                          } while(0U)
+#define __HAL_RTC_WRITEPROTECTION_ENABLE(__HANDLE__) do {                                       \
+                                                          (__HANDLE__)->Instance->WPR = 0xFFU;  \
+                                                        } while(0U)
+
+/**
+  * @brief  Check whether the RTC Calendar is initialized.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @retval None
+  */
+#define __HAL_RTC_IS_CALENDAR_INITIALIZED(__HANDLE__)                 (((((__HANDLE__)->Instance->ISR) & (RTC_FLAG_INITS)) == RTC_FLAG_INITS) ? 1U : 0U)
 
 /**
   * @brief  Enable the RTC ALARMA peripheral.
@@ -523,9 +538,9 @@
   * @brief  Disable the RTC Alarm interrupt.
   * @param  __HANDLE__ specifies the RTC handle.
   * @param  __INTERRUPT__ specifies the RTC Alarm interrupt sources to be enabled or disabled.
-  *         This parameter can be any combination of the following values:
-  *            @arg RTC_IT_ALRA: Alarm A interrupt
-  *            @arg RTC_IT_ALRB: Alarm B interrupt
+  *          This parameter can be any combination of the following values:
+  *             @arg RTC_IT_ALRA: Alarm A interrupt
+  *             @arg RTC_IT_ALRB: Alarm B interrupt
   * @retval None
   */
 #define __HAL_RTC_ALARM_DISABLE_IT(__HANDLE__, __INTERRUPT__)         ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
@@ -539,31 +554,31 @@
   *            @arg RTC_IT_ALRB: Alarm B interrupt
   * @retval None
   */
-#define __HAL_RTC_ALARM_GET_IT(__HANDLE__, __INTERRUPT__)                  ((((((__HANDLE__)->Instance->ISR)& ((__INTERRUPT__)>> 4U)) & 0x0000FFFFU) != RESET)? SET : RESET)
+#define __HAL_RTC_ALARM_GET_IT(__HANDLE__, __INTERRUPT__)           (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__) >> 4U)) != 0U) ? 1U : 0U)
 
 /**
   * @brief  Get the selected RTC Alarm's flag status.
   * @param  __HANDLE__ specifies the RTC handle.
   * @param  __FLAG__ specifies the RTC Alarm Flag to check.
   *         This parameter can be:
-  *            @arg RTC_FLAG_ALRAF
-  *            @arg RTC_FLAG_ALRBF
-  *            @arg RTC_FLAG_ALRAWF
-  *            @arg RTC_FLAG_ALRBWF
+  *            @arg RTC_FLAG_ALRAF: Alarm A interrupt flag
+  *            @arg RTC_FLAG_ALRAWF: Alarm A 'write allowed' flag
+  *            @arg RTC_FLAG_ALRBF: Alarm B interrupt flag
+  *            @arg RTC_FLAG_ALRBWF: Alarm B 'write allowed' flag
   * @retval None
   */
-#define __HAL_RTC_ALARM_GET_FLAG(__HANDLE__, __FLAG__)                (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
+#define __HAL_RTC_ALARM_GET_FLAG(__HANDLE__, __FLAG__)                (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
 
 /**
   * @brief  Clear the RTC Alarm's pending flags.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC Alarm Flag sources to be enabled or disabled.
+  * @param  __FLAG__ specifies the RTC Alarm flag to be cleared.
   *          This parameter can be:
   *             @arg RTC_FLAG_ALRAF
   *             @arg RTC_FLAG_ALRBF
   * @retval None
   */
-#define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__)                  ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& 0x0000FFFFU)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
+#define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__)                  ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
 
 /**
   * @brief  Check whether the specified RTC Alarm interrupt has been enabled or not.
@@ -574,82 +589,88 @@
   *            @arg RTC_IT_ALRB: Alarm B interrupt
   * @retval None
   */
-#define __HAL_RTC_ALARM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
+#define __HAL_RTC_ALARM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
 
 /**
-  * @brief  Enable interrupt on the RTC Alarm associated Exti line.
+  * @brief  Enable interrupt on the RTC Alarm associated EXTI line.
   * @retval None
   */
 #define __HAL_RTC_ALARM_EXTI_ENABLE_IT()            (EXTI->IMR |= RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief  Disable interrupt on the RTC Alarm associated Exti line.
+  * @brief  Disable interrupt on the RTC Alarm associated EXTI line.
   * @retval None
   */
-#define __HAL_RTC_ALARM_EXTI_DISABLE_IT()           (EXTI->IMR &= ~(RTC_EXTI_LINE_ALARM_EVENT))
+#define __HAL_RTC_ALARM_EXTI_DISABLE_IT()           (EXTI->IMR &= ~RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief  Enable event on the RTC Alarm associated Exti line.
+  * @brief  Enable event on the RTC Alarm associated EXTI line.
   * @retval None.
   */
-#define __HAL_RTC_ALARM_EXTI_ENABLE_EVENT()         (EXTI->EMR |= RTC_EXTI_LINE_ALARM_EVENT)
+#define __HAL_RTC_ALARM_EXTI_ENABLE_EVENT()          (EXTI->EMR |= RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief  Disable event on the RTC Alarm associated Exti line.
+  * @brief  Disable event on the RTC Alarm associated EXTI line.
   * @retval None.
   */
-#define __HAL_RTC_ALARM_EXTI_DISABLE_EVENT()         (EXTI->EMR &= ~(RTC_EXTI_LINE_ALARM_EVENT))
+#define __HAL_RTC_ALARM_EXTI_DISABLE_EVENT()         (EXTI->EMR &= ~RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief  Enable falling edge trigger on the RTC Alarm associated Exti line.
+  * @brief  Enable falling edge trigger on the RTC Alarm associated EXTI line.
   * @retval None.
   */
 #define __HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief  Disable falling edge trigger on the RTC Alarm associated Exti line.
+  * @brief  Disable falling edge trigger on the RTC Alarm associated EXTI line.
   * @retval None.
   */
-#define __HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~(RTC_EXTI_LINE_ALARM_EVENT))
+#define __HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief  Enable rising edge trigger on the RTC Alarm associated Exti line.
+  * @brief  Enable rising edge trigger on the RTC Alarm associated EXTI line.
   * @retval None.
   */
 #define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief  Disable rising edge trigger on the RTC Alarm associated Exti line.
+  * @brief  Disable rising edge trigger on the RTC Alarm associated EXTI line.
   * @retval None.
   */
-#define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~(RTC_EXTI_LINE_ALARM_EVENT))
+#define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief  Enable rising & falling edge trigger on the RTC Alarm associated Exti line.
+  * @brief  Enable rising & falling edge trigger on the RTC Alarm associated EXTI line.
   * @retval None.
   */
-#define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE();
+#define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_FALLING_EDGE() do {                                             \
+                                                               __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE();  \
+                                                               __HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE(); \
+                                                             } while(0U)
 
 /**
-  * @brief  Disable rising & falling edge trigger on the RTC Alarm associated Exti line.
+  * @brief  Disable rising & falling edge trigger on the RTC Alarm associated EXTI line.
   * @retval None.
   */
-#define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE();
+#define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_FALLING_EDGE() do {                                              \
+                                                                __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE();  \
+                                                                __HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE(); \
+                                                              } while(0U)
 
 /**
-  * @brief Check whether the RTC Alarm associated Exti line interrupt flag is set or not.
+  * @brief Check whether the RTC Alarm associated EXTI line interrupt flag is set or not.
   * @retval Line Status.
   */
 #define __HAL_RTC_ALARM_EXTI_GET_FLAG()              (EXTI->PR & RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief Clear the RTC Alarm associated Exti line flag.
+  * @brief Clear the RTC Alarm associated EXTI line flag.
   * @retval None.
   */
 #define __HAL_RTC_ALARM_EXTI_CLEAR_FLAG()            (EXTI->PR = RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief Generate a Software interrupt on RTC Alarm associated Exti line.
+  * @brief Generate a Software interrupt on RTC Alarm associated EXTI line.
   * @retval None.
   */
 #define __HAL_RTC_ALARM_EXTI_GENERATE_SWIT()         (EXTI->SWIER |= RTC_EXTI_LINE_ALARM_EVENT)
@@ -657,10 +678,11 @@
   * @}
   */
 
-/* Include RTC HAL Extension module */
+/* Include RTC HAL Extended module */
 #include "stm32f7xx_hal_rtc_ex.h"
 
 /* Exported functions --------------------------------------------------------*/
+
 /** @addtogroup RTC_Exported_Functions
   * @{
   */
@@ -671,8 +693,8 @@
 /* Initialization and de-initialization functions  ****************************/
 HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc);
 HAL_StatusTypeDef HAL_RTC_DeInit(RTC_HandleTypeDef *hrtc);
-void       HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc);
-void       HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc);
+void              HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc);
+void              HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc);
 
 /* Callbacks Register/UnRegister functions  ***********************************/
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
@@ -691,11 +713,6 @@
 HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format);
 HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);
 HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);
-void              HAL_RTC_DST_Add1Hour(RTC_HandleTypeDef *hrtc);
-void              HAL_RTC_DST_Sub1Hour(RTC_HandleTypeDef *hrtc);
-void              HAL_RTC_DST_SetStoreOperation(RTC_HandleTypeDef *hrtc);
-void              HAL_RTC_DST_ClearStoreOperation(RTC_HandleTypeDef *hrtc);
-uint32_t          HAL_RTC_DST_ReadStoreOperation(RTC_HandleTypeDef *hrtc);
 /**
   * @}
   */
@@ -708,9 +725,9 @@
 HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format);
 HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm);
 HAL_StatusTypeDef HAL_RTC_GetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format);
-void                HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc);
-HAL_StatusTypeDef   HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
-void         HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc);
+void              HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc);
+HAL_StatusTypeDef HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
+void              HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc);
 /**
   * @}
   */
@@ -719,7 +736,14 @@
   * @{
   */
 /* Peripheral Control functions ***********************************************/
-HAL_StatusTypeDef   HAL_RTC_WaitForSynchro(RTC_HandleTypeDef* hrtc);
+HAL_StatusTypeDef   HAL_RTC_WaitForSynchro(RTC_HandleTypeDef *hrtc);
+
+/* RTC Daylight Saving Time functions *****************************************/
+void              HAL_RTC_DST_Add1Hour(RTC_HandleTypeDef *hrtc);
+void              HAL_RTC_DST_Sub1Hour(RTC_HandleTypeDef *hrtc);
+void              HAL_RTC_DST_SetStoreOperation(RTC_HandleTypeDef *hrtc);
+void              HAL_RTC_DST_ClearStoreOperation(RTC_HandleTypeDef *hrtc);
+uint32_t          HAL_RTC_DST_ReadStoreOperation(RTC_HandleTypeDef *hrtc);
 /**
   * @}
   */
@@ -740,23 +764,38 @@
 /* Private types -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private constants ---------------------------------------------------------*/
+
 /** @defgroup RTC_Private_Constants RTC Private Constants
   * @{
   */
 /* Masks Definition */
-#define RTC_TR_RESERVED_MASK    0x007F7F7FU
-#define RTC_DR_RESERVED_MASK    0x00FFFF3FU
+#define RTC_TR_RESERVED_MASK    ((uint32_t)(RTC_TR_HT  | RTC_TR_HU  | \
+                                            RTC_TR_MNT | RTC_TR_MNU | \
+                                            RTC_TR_ST  | RTC_TR_SU  | \
+                                            RTC_TR_PM))
+#define RTC_DR_RESERVED_MASK    ((uint32_t)(RTC_DR_YT | RTC_DR_YU | \
+                                            RTC_DR_MT | RTC_DR_MU | \
+                                            RTC_DR_DT | RTC_DR_DU | \
+                                            RTC_DR_WDU))
 #define RTC_INIT_MASK           0xFFFFFFFFU
-#define RTC_RSF_MASK            0xFFFFFF5FU
+#define RTC_RSF_MASK            ((uint32_t)~(RTC_ISR_INIT | RTC_ISR_RSF))
+#define RTC_FLAGS_MASK          ((uint32_t)(RTC_FLAG_INITF   | RTC_FLAG_INITS  | \
+                                            RTC_FLAG_ALRAF   | RTC_FLAG_ALRAWF | \
+                                            RTC_FLAG_ALRBF   | RTC_FLAG_ALRBWF | \
+                                            RTC_FLAG_WUTF    | RTC_FLAG_WUTWF  | \
+                                            RTC_FLAG_RECALPF | RTC_FLAG_SHPF   | \
+                                            RTC_FLAG_TSF     | RTC_FLAG_TSOVF  | \
+                                            RTC_FLAG_RSF     | RTC_TAMPER_FLAGS_MASK))
 
 #define RTC_TIMEOUT_VALUE       1000U
 
-#define RTC_EXTI_LINE_ALARM_EVENT             EXTI_IMR_IM17  /*!< External interrupt line 17 Connected to the RTC Alarm event */
+#define RTC_EXTI_LINE_ALARM_EVENT  EXTI_IMR_IM17  /*!< External interrupt line 17 Connected to the RTC Alarm event */
 /**
   * @}
   */
 
 /* Private macros ------------------------------------------------------------*/
+
 /** @defgroup RTC_Private_Macros RTC Private Macros
   * @{
   */
@@ -764,66 +803,87 @@
 /** @defgroup RTC_IS_RTC_Definitions RTC Private macros to check input parameters
   * @{
   */
-#define IS_RTC_HOUR_FORMAT(__FORMAT__) (((__FORMAT__) == RTC_HOURFORMAT_12) || \
-                                        ((__FORMAT__) == RTC_HOURFORMAT_24))
-#define IS_RTC_OUTPUT_POL(__POL__)     (((__POL__) == RTC_OUTPUT_POLARITY_HIGH) || \
-                                        ((__POL__) == RTC_OUTPUT_POLARITY_LOW))
-#define IS_RTC_OUTPUT_TYPE(__TYPE__)   (((__TYPE__) == RTC_OUTPUT_TYPE_OPENDRAIN) || \
-                                        ((__TYPE__) == RTC_OUTPUT_TYPE_PUSHPULL))
-#define IS_RTC_ASYNCH_PREDIV(__PREDIV__)   ((__PREDIV__) <= 0x7FU)
-#define IS_RTC_SYNCH_PREDIV(__PREDIV__)    ((__PREDIV__) <= 0x7FFFU)
-#define IS_RTC_HOUR12(__HOUR__)            (((__HOUR__) > 0U) && ((__HOUR__) <= 12U))
-#define IS_RTC_HOUR24(__HOUR__)            ((__HOUR__) <= 23U)
-#define IS_RTC_MINUTES(__MINUTES__)        ((__MINUTES__) <= 59U)
-#define IS_RTC_SECONDS(__SECONDS__)        ((__SECONDS__) <= 59U)
-#define IS_RTC_HOURFORMAT12(__PM__)  (((__PM__) == RTC_HOURFORMAT12_AM) || ((__PM__) == RTC_HOURFORMAT12_PM))
-#define IS_RTC_DAYLIGHT_SAVING(__SAVE__) (((__SAVE__) == RTC_DAYLIGHTSAVING_SUB1H) || \
-                                          ((__SAVE__) == RTC_DAYLIGHTSAVING_ADD1H) || \
-                                          ((__SAVE__) == RTC_DAYLIGHTSAVING_NONE))
-#define IS_RTC_STORE_OPERATION(__OPERATION__) (((__OPERATION__) == RTC_STOREOPERATION_RESET) || \
-                                               ((__OPERATION__) == RTC_STOREOPERATION_SET))
-#define IS_RTC_FORMAT(__FORMAT__) (((__FORMAT__) == RTC_FORMAT_BIN) || ((__FORMAT__) == RTC_FORMAT_BCD))
-#define IS_RTC_YEAR(__YEAR__)              ((__YEAR__) <= 99U)
-#define IS_RTC_MONTH(__MONTH__)            (((__MONTH__) >= 1U) && ((__MONTH__) <= 12U))
-#define IS_RTC_DATE(__DATE__)              (((__DATE__) >= 1U) && ((__DATE__) <= 31U))
-#define IS_RTC_WEEKDAY(__WEEKDAY__) (((__WEEKDAY__) == RTC_WEEKDAY_MONDAY)    || \
-                                     ((__WEEKDAY__) == RTC_WEEKDAY_TUESDAY)   || \
-                                     ((__WEEKDAY__) == RTC_WEEKDAY_WEDNESDAY) || \
-                                     ((__WEEKDAY__) == RTC_WEEKDAY_THURSDAY)  || \
-                                     ((__WEEKDAY__) == RTC_WEEKDAY_FRIDAY)    || \
-                                     ((__WEEKDAY__) == RTC_WEEKDAY_SATURDAY)  || \
-                                     ((__WEEKDAY__) == RTC_WEEKDAY_SUNDAY))
+#define IS_RTC_HOUR_FORMAT(FORMAT)     (((FORMAT) == RTC_HOURFORMAT_12) || \
+                                        ((FORMAT) == RTC_HOURFORMAT_24))
 
-#define IS_RTC_ALARM_DATE_WEEKDAY_DATE(__DATE__) (((__DATE__) >0U) && ((__DATE__) <= 31U))
-#define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(__WEEKDAY__) (((__WEEKDAY__) == RTC_WEEKDAY_MONDAY)    || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_TUESDAY)   || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_WEDNESDAY) || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_THURSDAY)  || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_FRIDAY)    || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_SATURDAY)  || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_SUNDAY))
-#define IS_RTC_ALARM_DATE_WEEKDAY_SEL(__SEL__) (((__SEL__) == RTC_ALARMDATEWEEKDAYSEL_DATE) || \
-                                                ((__SEL__) == RTC_ALARMDATEWEEKDAYSEL_WEEKDAY))
-#define IS_RTC_ALARM_MASK(__MASK__)  (((__MASK__) & 0x7F7F7F7FU) == (uint32_t)RESET)
-#define IS_RTC_ALARM(__ALARM__)      (((__ALARM__) == RTC_ALARM_A) || ((__ALARM__) == RTC_ALARM_B))
-#define IS_RTC_ALARM_SUB_SECOND_VALUE(__VALUE__) ((__VALUE__) <= 0x00007FFFU)
-#define IS_RTC_ALARM_SUB_SECOND_MASK(__MASK__)   (((__MASK__) == RTC_ALARMSUBSECONDMASK_ALL) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_1) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_2) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_3) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_4) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_5) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_6) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_7) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_8) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_9) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_10) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_11) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_12) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_13) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_NONE))
+#define IS_RTC_OUTPUT(OUTPUT) (((OUTPUT) == RTC_OUTPUT_DISABLE) || \
+                               ((OUTPUT) == RTC_OUTPUT_ALARMA)  || \
+                               ((OUTPUT) == RTC_OUTPUT_ALARMB)  || \
+                               ((OUTPUT) == RTC_OUTPUT_WAKEUP))
 
+#define IS_RTC_OUTPUT_POL(POL) (((POL) == RTC_OUTPUT_POLARITY_HIGH) || \
+                                ((POL) == RTC_OUTPUT_POLARITY_LOW))
+
+#define IS_RTC_OUTPUT_TYPE(TYPE) (((TYPE) == RTC_OUTPUT_TYPE_OPENDRAIN) || \
+                                  ((TYPE) == RTC_OUTPUT_TYPE_PUSHPULL))
+
+#define IS_RTC_ASYNCH_PREDIV(PREDIV)   ((PREDIV) <= 0x7FU)
+#define IS_RTC_SYNCH_PREDIV(PREDIV)    ((PREDIV) <= 0x7FFFU)
+
+#define IS_RTC_HOUR12(HOUR)            (((HOUR) > 0U) && ((HOUR) <= 12U))
+#define IS_RTC_HOUR24(HOUR)            ((HOUR) <= 23U)
+#define IS_RTC_MINUTES(MINUTES)        ((MINUTES) <= 59U)
+#define IS_RTC_SECONDS(SECONDS)        ((SECONDS) <= 59U)
+
+#define IS_RTC_HOURFORMAT12(PM)  (((PM) == RTC_HOURFORMAT12_AM) || \
+                                  ((PM) == RTC_HOURFORMAT12_PM))
+
+#define IS_RTC_DAYLIGHT_SAVING(SAVE) (((SAVE) == RTC_DAYLIGHTSAVING_SUB1H) || \
+                                      ((SAVE) == RTC_DAYLIGHTSAVING_ADD1H) || \
+                                      ((SAVE) == RTC_DAYLIGHTSAVING_NONE))
+
+#define IS_RTC_STORE_OPERATION(OPERATION) (((OPERATION) == RTC_STOREOPERATION_RESET) || \
+                                           ((OPERATION) == RTC_STOREOPERATION_SET))
+
+#define IS_RTC_FORMAT(FORMAT) (((FORMAT) == RTC_FORMAT_BIN) || ((FORMAT) == RTC_FORMAT_BCD))
+
+#define IS_RTC_YEAR(YEAR)              ((YEAR) <= 99U)
+#define IS_RTC_MONTH(MONTH)            (((MONTH) >= 1U) && ((MONTH) <= 12U))
+#define IS_RTC_DATE(DATE)              (((DATE) >= 1U) && ((DATE) <= 31U))
+
+#define IS_RTC_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_WEEKDAY_MONDAY)    || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_TUESDAY)   || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_WEDNESDAY) || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_THURSDAY)  || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_FRIDAY)    || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_SATURDAY)  || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_SUNDAY))
+
+#define IS_RTC_ALARM_DATE_WEEKDAY_DATE(DATE) (((DATE) > 0U) && ((DATE) <= 31U))
+
+#define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_WEEKDAY_MONDAY)    || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_TUESDAY)   || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_WEDNESDAY) || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_THURSDAY)  || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_FRIDAY)    || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_SATURDAY)  || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_SUNDAY))
+
+#define IS_RTC_ALARM_DATE_WEEKDAY_SEL(SEL) (((SEL) == RTC_ALARMDATEWEEKDAYSEL_DATE) || \
+                                            ((SEL) == RTC_ALARMDATEWEEKDAYSEL_WEEKDAY))
+
+#define IS_RTC_ALARM_MASK(MASK)  (((MASK) & ((uint32_t)~RTC_ALARMMASK_ALL)) == 0U)
+
+#define IS_RTC_ALARM(ALARM)      (((ALARM) == RTC_ALARM_A) || ((ALARM) == RTC_ALARM_B))
+
+#define IS_RTC_ALARM_SUB_SECOND_VALUE(VALUE) ((VALUE) <= RTC_ALRMASSR_SS)
+
+#define IS_RTC_ALARM_SUB_SECOND_MASK(MASK)   (((MASK) == RTC_ALARMSUBSECONDMASK_ALL)     || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_1)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_2)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_3)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_4)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_5)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_6)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_7)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_8)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_9)  || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_10) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_11) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_12) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_13) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14)    || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_NONE))
 /**
   * @}
   */
@@ -833,12 +893,14 @@
   */
 
 /* Private functions ---------------------------------------------------------*/
+
 /** @defgroup RTC_Private_Functions RTC Private Functions
   * @{
   */
-HAL_StatusTypeDef  RTC_EnterInitMode(RTC_HandleTypeDef* hrtc);
-uint8_t            RTC_ByteToBcd2(uint8_t Value);
-uint8_t            RTC_Bcd2ToByte(uint8_t Value);
+HAL_StatusTypeDef  RTC_EnterInitMode(RTC_HandleTypeDef *hrtc);
+HAL_StatusTypeDef  RTC_ExitInitMode(RTC_HandleTypeDef *hrtc);
+uint8_t            RTC_ByteToBcd2(uint8_t number);
+uint8_t            RTC_Bcd2ToByte(uint8_t number);
 /**
   * @}
   */
@@ -855,5 +917,4 @@
 }
 #endif
 
-#endif /* __STM32F7xx_HAL_RTC_H */
-
+#endif /* STM32F7xx_HAL_RTC_H */
diff --git a/Inc/stm32f7xx_hal_rtc_ex.h b/Inc/stm32f7xx_hal_rtc_ex.h
index 7415b95..e545b84 100644
--- a/Inc/stm32f7xx_hal_rtc_ex.h
+++ b/Inc/stm32f7xx_hal_rtc_ex.h
@@ -2,7 +2,7 @@
   ******************************************************************************
   * @file    stm32f7xx_hal_rtc_ex.h
   * @author  MCD Application Team
-  * @brief   Header file of RTC HAL Extension module.
+  * @brief   Header file of RTC HAL Extended module.
   ******************************************************************************
   * @attention
   *
@@ -14,17 +14,18 @@
   * If no LICENSE file comes with this software, it is provided AS-IS.
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F7xx_HAL_RTC_EX_H
-#define __STM32F7xx_HAL_RTC_EX_H
+#ifndef STM32F7xx_HAL_RTC_EX_H
+#define STM32F7xx_HAL_RTC_EX_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
 /* Includes ------------------------------------------------------------------*/
+
 #include "stm32f7xx_hal_def.h"
 
 /** @addtogroup STM32F7xx_HAL_Driver
@@ -33,119 +34,120 @@
 
 /** @addtogroup RTCEx
   * @{
-  */ 
+  */
 
-/* Exported types ------------------------------------------------------------*/ 
+/* Exported types ------------------------------------------------------------*/
+
 /** @defgroup RTCEx_Exported_Types RTCEx Exported Types
   * @{
   */
 
-/** 
-  * @brief  RTC Tamper structure definition  
+/**
+  * @brief  RTC Tamper structure definition
   */
-typedef struct 
+typedef struct
 {
   uint32_t Tamper;                      /*!< Specifies the Tamper Pin.
-                                             This parameter can be a value of @ref  RTCEx_Tamper_Pins_Definitions */
-  
+                                             This parameter can be a value of @ref RTCEx_Tamper_Pin_Definitions */
+
   uint32_t Interrupt;                   /*!< Specifies the Tamper Interrupt.
-                                             This parameter can be a value of @ref  RTCEx_Tamper_Interrupt_Definitions */                                  
-                                             
+                                             This parameter can be a value of @ref RTCEx_Tamper_Interrupt_Definitions */
+
   uint32_t Trigger;                     /*!< Specifies the Tamper Trigger.
-                                             This parameter can be a value of @ref  RTCEx_Tamper_Trigger_Definitions */
-                                             
+                                             This parameter can be a value of @ref RTCEx_Tamper_Trigger_Definitions */
+
   uint32_t NoErase;                     /*!< Specifies the Tamper no erase mode.
-                                             This parameter can be a value of @ref  RTCEx_Tamper_EraseBackUp_Definitions */
+                                             This parameter can be a value of @ref RTCEx_Tamper_EraseBackUp_Definitions */
 
   uint32_t MaskFlag;                     /*!< Specifies the Tamper Flag masking.
                                              This parameter can be a value of @ref RTCEx_Tamper_MaskFlag_Definitions   */
 
   uint32_t Filter;                      /*!< Specifies the RTC Filter Tamper.
                                              This parameter can be a value of @ref RTCEx_Tamper_Filter_Definitions */
-  
+
   uint32_t SamplingFrequency;           /*!< Specifies the sampling frequency.
                                              This parameter can be a value of @ref RTCEx_Tamper_Sampling_Frequencies_Definitions */
-                                      
+
   uint32_t PrechargeDuration;           /*!< Specifies the Precharge Duration .
-                                             This parameter can be a value of @ref RTCEx_Tamper_Pin_Precharge_Duration_Definitions */ 
- 
+                                             This parameter can be a value of @ref RTCEx_Tamper_Pin_Precharge_Duration_Definitions */
+
   uint32_t TamperPullUp;                /*!< Specifies the Tamper PullUp .
-                                             This parameter can be a value of @ref RTCEx_Tamper_Pull_UP_Definitions */           
- 
+                                             This parameter can be a value of @ref RTCEx_Tamper_Pull_Up_Definitions */
+
   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the TimeStampOnTamperDetection.
-                                             This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */                      
-}RTC_TamperTypeDef;
+                                             This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */
+} RTC_TamperTypeDef;
 /**
   * @}
   */
 
 /* Exported constants --------------------------------------------------------*/
+
 /** @defgroup RTCEx_Exported_Constants RTCEx Exported Constants
   * @{
   */
 
-/** @defgroup RTCEx_Output_selection_Definitions RTCEx Output selection Definitions 
-  * @{
-  */ 
-#define RTC_OUTPUT_DISABLE             ((uint32_t)0x00000000U)
-#define RTC_OUTPUT_ALARMA              ((uint32_t)0x00200000U)
-#define RTC_OUTPUT_ALARMB              ((uint32_t)0x00400000U)
-#define RTC_OUTPUT_WAKEUP              ((uint32_t)0x00600000U)
-/**
-  * @}
-  */ 
-  
-/** @defgroup RTCEx_Backup_Registers_Definitions RTC Backup Registers Definitions
+/** @defgroup RTCEx_Backup_Registers_Definitions RTCEx Backup Registers Definitions
   * @{
   */
-#define RTC_BKP_DR0                       ((uint32_t)0x00000000U)
-#define RTC_BKP_DR1                       ((uint32_t)0x00000001U)
-#define RTC_BKP_DR2                       ((uint32_t)0x00000002U)
-#define RTC_BKP_DR3                       ((uint32_t)0x00000003U)
-#define RTC_BKP_DR4                       ((uint32_t)0x00000004U)
-#define RTC_BKP_DR5                       ((uint32_t)0x00000005U)
-#define RTC_BKP_DR6                       ((uint32_t)0x00000006U)
-#define RTC_BKP_DR7                       ((uint32_t)0x00000007U)
-#define RTC_BKP_DR8                       ((uint32_t)0x00000008U)
-#define RTC_BKP_DR9                       ((uint32_t)0x00000009U)
-#define RTC_BKP_DR10                      ((uint32_t)0x0000000AU)
-#define RTC_BKP_DR11                      ((uint32_t)0x0000000BU)
-#define RTC_BKP_DR12                      ((uint32_t)0x0000000CU)
-#define RTC_BKP_DR13                      ((uint32_t)0x0000000DU)
-#define RTC_BKP_DR14                      ((uint32_t)0x0000000EU)
-#define RTC_BKP_DR15                      ((uint32_t)0x0000000FU)
-#define RTC_BKP_DR16                      ((uint32_t)0x00000010U)
-#define RTC_BKP_DR17                      ((uint32_t)0x00000011U)
-#define RTC_BKP_DR18                      ((uint32_t)0x00000012U)
-#define RTC_BKP_DR19                      ((uint32_t)0x00000013U)
-#define RTC_BKP_DR20                      ((uint32_t)0x00000014U)
-#define RTC_BKP_DR21                      ((uint32_t)0x00000015U)
-#define RTC_BKP_DR22                      ((uint32_t)0x00000016U)
-#define RTC_BKP_DR23                      ((uint32_t)0x00000017U)
-#define RTC_BKP_DR24                      ((uint32_t)0x00000018U)
-#define RTC_BKP_DR25                      ((uint32_t)0x00000019U)
-#define RTC_BKP_DR26                      ((uint32_t)0x0000001AU)
-#define RTC_BKP_DR27                      ((uint32_t)0x0000001BU)
-#define RTC_BKP_DR28                      ((uint32_t)0x0000001CU)
-#define RTC_BKP_DR29                      ((uint32_t)0x0000001DU)
-#define RTC_BKP_DR30                      ((uint32_t)0x0000001EU)
-#define RTC_BKP_DR31                      ((uint32_t)0x0000001FU)
+#define RTC_BKP_DR0                       0x00000000U
+#define RTC_BKP_DR1                       0x00000001U
+#define RTC_BKP_DR2                       0x00000002U
+#define RTC_BKP_DR3                       0x00000003U
+#define RTC_BKP_DR4                       0x00000004U
+#define RTC_BKP_DR5                       0x00000005U
+#define RTC_BKP_DR6                       0x00000006U
+#define RTC_BKP_DR7                       0x00000007U
+#define RTC_BKP_DR8                       0x00000008U
+#define RTC_BKP_DR9                       0x00000009U
+#define RTC_BKP_DR10                      0x0000000AU
+#define RTC_BKP_DR11                      0x0000000BU
+#define RTC_BKP_DR12                      0x0000000CU
+#define RTC_BKP_DR13                      0x0000000DU
+#define RTC_BKP_DR14                      0x0000000EU
+#define RTC_BKP_DR15                      0x0000000FU
+#define RTC_BKP_DR16                      0x00000010U
+#define RTC_BKP_DR17                      0x00000011U
+#define RTC_BKP_DR18                      0x00000012U
+#define RTC_BKP_DR19                      0x00000013U
+#define RTC_BKP_DR20                      0x00000014U
+#define RTC_BKP_DR21                      0x00000015U
+#define RTC_BKP_DR22                      0x00000016U
+#define RTC_BKP_DR23                      0x00000017U
+#define RTC_BKP_DR24                      0x00000018U
+#define RTC_BKP_DR25                      0x00000019U
+#define RTC_BKP_DR26                      0x0000001AU
+#define RTC_BKP_DR27                      0x0000001BU
+#define RTC_BKP_DR28                      0x0000001CU
+#define RTC_BKP_DR29                      0x0000001DU
+#define RTC_BKP_DR30                      0x0000001EU
+#define RTC_BKP_DR31                      0x0000001FU
 /**
   * @}
-  */ 
+  */
 
-/** @defgroup RTCEx_Time_Stamp_Edges_definitions RTCEx Time Stamp Edges definitions 
+/** @defgroup RTCEx_Timestamp_Edges_Definitions RTCEx Timestamp Edges Definitions
   * @{
-  */ 
-#define RTC_TIMESTAMPEDGE_RISING          ((uint32_t)0x00000000U)
-#define RTC_TIMESTAMPEDGE_FALLING         ((uint32_t)0x00000008U)
+  */
+#define RTC_TIMESTAMPEDGE_RISING          0x00000000U
+#define RTC_TIMESTAMPEDGE_FALLING         RTC_CR_TSEDGE
 /**
   * @}
   */
-  
-/** @defgroup RTCEx_Tamper_Pins_Definitions RTCEx Tamper Pins Definitions 
+
+/** @defgroup RTCEx_Timestamp_Pin_Selection RTC Timestamp Pin Selection
   * @{
-  */ 
+  */
+#define RTC_TIMESTAMPPIN_DEFAULT            0x00000000U
+#define RTC_TIMESTAMPPIN_POS1               RTC_OR_TSINSEL_0
+#define RTC_TIMESTAMPPIN_POS2               RTC_OR_TSINSEL_1
+/**
+  * @}
+  */
+
+/** @defgroup RTCEx_Tamper_Pin_Definitions RTCEx Tamper Pins Definitions
+  * @{
+  */
 #define RTC_TAMPER_1                    RTC_TAMPCR_TAMP1E
 #define RTC_TAMPER_2                    RTC_TAMPCR_TAMP2E
 #define RTC_TAMPER_3                    RTC_TAMPCR_TAMP3E
@@ -153,43 +155,41 @@
   * @}
   */
 
+/** @defgroup RTCEx_Tamper_Pin_Selection RTC tamper Pins Selection
+  * @{
+  */
+#define RTC_TAMPERPIN_DEFAULT               0x00000000U
+/**
+  * @}
+  */
+
 /** @defgroup RTCEx_Tamper_Interrupt_Definitions RTCEx Tamper Interrupt Definitions
   * @{
   */
-#define RTC_TAMPER1_INTERRUPT                RTC_TAMPCR_TAMP1IE
-#define RTC_TAMPER2_INTERRUPT                RTC_TAMPCR_TAMP2IE
-#define RTC_TAMPER3_INTERRUPT                RTC_TAMPCR_TAMP3IE
-#define RTC_ALL_TAMPER_INTERRUPT             RTC_TAMPCR_TAMPIE
+#define RTC_IT_TAMP                       RTC_TAMPCR_TAMPIE   /*!< Enable global Tamper Interrupt           */
+#define RTC_IT_TAMP1                      RTC_TAMPCR_TAMP1IE  /*!< Enable Tamper 1 Interrupt                */
+#define RTC_IT_TAMP2                      RTC_TAMPCR_TAMP2IE  /*!< Enable Tamper 2 Interrupt                */
+#define RTC_IT_TAMP3                      RTC_TAMPCR_TAMP3IE  /*!< Enable Tamper 3 Interrupt                */
 /**
   * @}
   */
 
-/** @defgroup RTCEx_TimeStamp_Pin_Selection RTCEx TimeStamp Pin Selection
+/** @defgroup RTCEx_Tamper_Trigger_Definitions RTCEx Tamper Triggers Definitions
   * @{
-  */ 
-#define RTC_TIMESTAMPPIN_DEFAULT            ((uint32_t)0x00000000U)
-#define RTC_TIMESTAMPPIN_POS1               ((uint32_t)0x00000002U)
-#define RTC_TIMESTAMPPIN_POS2               ((uint32_t)0x00000004U)
-/**
-  * @}
-  */ 
-
-/** @defgroup RTCEx_Tamper_Trigger_Definitions RTCEx Tamper Trigger Definitions 
-  * @{
-  */ 
-#define RTC_TAMPERTRIGGER_RISINGEDGE       ((uint32_t)0x00000000U)
-#define RTC_TAMPERTRIGGER_FALLINGEDGE      ((uint32_t)0x00000002U)
+  */
+#define RTC_TAMPERTRIGGER_RISINGEDGE       0x00000000U
+#define RTC_TAMPERTRIGGER_FALLINGEDGE      RTC_TAMPCR_TAMP1TRG
 #define RTC_TAMPERTRIGGER_LOWLEVEL         RTC_TAMPERTRIGGER_RISINGEDGE
-#define RTC_TAMPERTRIGGER_HIGHLEVEL        RTC_TAMPERTRIGGER_FALLINGEDGE 
+#define RTC_TAMPERTRIGGER_HIGHLEVEL        RTC_TAMPERTRIGGER_FALLINGEDGE
 /**
   * @}
-  */  
+  */
 
-  /** @defgroup RTCEx_Tamper_EraseBackUp_Definitions RTCEx Tamper EraseBackUp Definitions
-* @{
-*/
-#define RTC_TAMPER_ERASE_BACKUP_ENABLE               ((uint32_t)0x00000000U)
-#define RTC_TAMPER_ERASE_BACKUP_DISABLE              ((uint32_t)0x00020000U)
+/** @defgroup RTCEx_Tamper_EraseBackUp_Definitions RTCEx Tamper EraseBackUp Definitions
+  * @{
+  */
+#define RTC_TAMPER_ERASE_BACKUP_ENABLE             0x00000000U
+#define RTC_TAMPER_ERASE_BACKUP_DISABLE            RTC_TAMPCR_TAMP1NOERASE
 /**
   * @}
   */
@@ -197,222 +197,452 @@
 /** @defgroup RTCEx_Tamper_MaskFlag_Definitions RTCEx Tamper MaskFlag Definitions
   * @{
   */
-#define RTC_TAMPERMASK_FLAG_DISABLE                ((uint32_t)0x00000000U)
-#define RTC_TAMPERMASK_FLAG_ENABLE                 ((uint32_t)0x00040000U)
-/**
-  * @}
-  */
-  
-/** @defgroup RTCEx_Tamper_Filter_Definitions RTCEx Tamper Filter Definitions 
-  * @{
-  */ 
-#define RTC_TAMPERFILTER_DISABLE   ((uint32_t)0x00000000U)  /*!< Tamper filter is disabled */
-
-#define RTC_TAMPERFILTER_2SAMPLE   ((uint32_t)0x00000800U)  /*!< Tamper is activated after 2 
-                                                                consecutive samples at the active level */
-#define RTC_TAMPERFILTER_4SAMPLE   ((uint32_t)0x00001000U)  /*!< Tamper is activated after 4 
-                                                                consecutive samples at the active level */
-#define RTC_TAMPERFILTER_8SAMPLE   ((uint32_t)0x00001800U)  /*!< Tamper is activated after 8 
-                                                                consecutive samples at the active leve. */
+#define RTC_TAMPERMASK_FLAG_DISABLE                0x00000000U
+#define RTC_TAMPERMASK_FLAG_ENABLE                 RTC_TAMPCR_TAMP1MF
 /**
   * @}
   */
 
-/** @defgroup RTCEx_Tamper_Sampling_Frequencies_Definitions RTCEx Tamper Sampling Frequencies Definitions 
+/** @defgroup RTCEx_Tamper_Filter_Definitions RTCEx Tamper Filter Definitions
   * @{
   */
-#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768  ((uint32_t)0x00000000U)  /*!< Each of the tamper inputs are sampled
-                                                                             with a frequency =  RTCCLK / 32768 */
-#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384  ((uint32_t)0x00000100U)  /*!< Each of the tamper inputs are sampled
-                                                                             with a frequency =  RTCCLK / 16384 */
-#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192   ((uint32_t)0x00000200U)  /*!< Each of the tamper inputs are sampled
-                                                                             with a frequency =  RTCCLK / 8192  */
-#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096   ((uint32_t)0x00000300U)  /*!< Each of the tamper inputs are sampled
-                                                                             with a frequency =  RTCCLK / 4096  */
-#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048   ((uint32_t)0x00000400U)  /*!< Each of the tamper inputs are sampled
-                                                                             with a frequency =  RTCCLK / 2048  */
-#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024   ((uint32_t)0x00000500U)  /*!< Each of the tamper inputs are sampled
-                                                                             with a frequency =  RTCCLK / 1024  */
-#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512    ((uint32_t)0x00000600U)  /*!< Each of the tamper inputs are sampled
-                                                                             with a frequency =  RTCCLK / 512   */
-#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256    ((uint32_t)0x00000700U)  /*!< Each of the tamper inputs are sampled
-                                                                             with a frequency =  RTCCLK / 256   */
+#define RTC_TAMPERFILTER_DISABLE   0x00000000U             /*!< Tamper filter is disabled */
+
+#define RTC_TAMPERFILTER_2SAMPLE   RTC_TAMPCR_TAMPFLT_0    /*!< Tamper is activated after 2
+                                                                 consecutive samples at the active level */
+#define RTC_TAMPERFILTER_4SAMPLE   RTC_TAMPCR_TAMPFLT_1    /*!< Tamper is activated after 4
+                                                                 consecutive samples at the active level */
+#define RTC_TAMPERFILTER_8SAMPLE   RTC_TAMPCR_TAMPFLT      /*!< Tamper is activated after 8
+                                                                 consecutive samples at the active level */
+#define RTC_TAMPERFILTER_MASK      RTC_TAMPCR_TAMPFLT      /*!< Masking all bits except those of
+                                                                 field TAMPFLT                           */
 /**
   * @}
   */
 
-/** @defgroup RTCEx_Tamper_Pin_Precharge_Duration_Definitions RTCEx Tamper Pin Precharge Duration Definitions 
+/** @defgroup RTCEx_Tamper_Sampling_Frequencies_Definitions RTCEx Tamper Sampling Frequencies Definitions
   * @{
-  */ 
-#define RTC_TAMPERPRECHARGEDURATION_1RTCCLK ((uint32_t)0x00000000U)  /*!< Tamper pins are pre-charged before 
-                                                                         sampling during 1 RTCCLK cycle */
-#define RTC_TAMPERPRECHARGEDURATION_2RTCCLK ((uint32_t)0x00002000U)  /*!< Tamper pins are pre-charged before 
-                                                                         sampling during 2 RTCCLK cycles */
-#define RTC_TAMPERPRECHARGEDURATION_4RTCCLK ((uint32_t)0x00004000U)  /*!< Tamper pins are pre-charged before 
-                                                                         sampling during 4 RTCCLK cycles */
-#define RTC_TAMPERPRECHARGEDURATION_8RTCCLK ((uint32_t)0x00006000U)  /*!< Tamper pins are pre-charged before 
-                                                                         sampling during 8 RTCCLK cycles */
-/**
-  * @}
   */
-  
-/** @defgroup RTCEx_Tamper_TimeStampOnTamperDetection_Definitions RTCEx Tamper TimeStampOnTamperDetection Definitions
-  * @{
-  */ 
-#define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE  ((uint32_t)RTC_TAMPCR_TAMPTS)  /*!< TimeStamp on Tamper Detection event saved        */
-#define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE ((uint32_t)0x00000000U)        /*!< TimeStamp on Tamper Detection event is not saved */                                                                      
-/**
-  * @}
-  */
-  
-/** @defgroup  RTCEx_Tamper_Pull_UP_Definitions RTCEx Tamper Pull UP Definitions
-  * @{
-  */ 
-#define RTC_TAMPER_PULLUP_ENABLE  ((uint32_t)0x00000000U)            /*!< TimeStamp on Tamper Detection event saved        */
-#define RTC_TAMPER_PULLUP_DISABLE ((uint32_t)RTC_TAMPCR_TAMPPUDIS)   /*!< TimeStamp on Tamper Detection event is not saved */                                                                  
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768  0x00000000U                                     /*!< Each of the tamper inputs are sampled
+                                                                                                      with a frequency =  RTCCLK / 32768 */
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384  RTC_TAMPCR_TAMPFREQ_0                           /*!< Each of the tamper inputs are sampled
+                                                                                                      with a frequency =  RTCCLK / 16384 */
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192   RTC_TAMPCR_TAMPFREQ_1                           /*!< Each of the tamper inputs are sampled
+                                                                                                      with a frequency =  RTCCLK / 8192  */
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096   (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_1) /*!< Each of the tamper inputs are sampled
+                                                                                                      with a frequency =  RTCCLK / 4096  */
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048   RTC_TAMPCR_TAMPFREQ_2                           /*!< Each of the tamper inputs are sampled
+                                                                                                      with a frequency =  RTCCLK / 2048  */
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024   (RTC_TAMPCR_TAMPFREQ_0 | RTC_TAMPCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
+                                                                                                      with a frequency =  RTCCLK / 1024  */
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512    (RTC_TAMPCR_TAMPFREQ_1 | RTC_TAMPCR_TAMPFREQ_2) /*!< Each of the tamper inputs are sampled
+                                                                                                      with a frequency =  RTCCLK / 512   */
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256    RTC_TAMPCR_TAMPFREQ                             /*!< Each of the tamper inputs are sampled
+                                                                                                      with a frequency =  RTCCLK / 256   */
+#define RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK      RTC_TAMPCR_TAMPFREQ                             /*!< Masking all bits except those of
+                                                                                                      field TAMPFREQ                     */
 /**
   * @}
   */
 
-/** @defgroup RTCEx_Wakeup_Timer_Definitions RTCEx Wakeup Timer Definitions 
+/** @defgroup RTCEx_Tamper_Pin_Precharge_Duration_Definitions RTCEx Tamper Pin Precharge Duration Definitions
   * @{
-  */ 
-#define RTC_WAKEUPCLOCK_RTCCLK_DIV16        ((uint32_t)0x00000000U)
-#define RTC_WAKEUPCLOCK_RTCCLK_DIV8         ((uint32_t)0x00000001U)
-#define RTC_WAKEUPCLOCK_RTCCLK_DIV4         ((uint32_t)0x00000002U)
-#define RTC_WAKEUPCLOCK_RTCCLK_DIV2         ((uint32_t)0x00000003U)
-#define RTC_WAKEUPCLOCK_CK_SPRE_16BITS      ((uint32_t)0x00000004U)
-#define RTC_WAKEUPCLOCK_CK_SPRE_17BITS      ((uint32_t)0x00000006U)
+  */
+#define RTC_TAMPERPRECHARGEDURATION_1RTCCLK     0x00000000U             /*!< Tamper pins are pre-charged before
+                                                                              sampling during 1 RTCCLK cycle  */
+#define RTC_TAMPERPRECHARGEDURATION_2RTCCLK     RTC_TAMPCR_TAMPPRCH_0   /*!< Tamper pins are pre-charged before
+                                                                              sampling during 2 RTCCLK cycles */
+#define RTC_TAMPERPRECHARGEDURATION_4RTCCLK     RTC_TAMPCR_TAMPPRCH_1   /*!< Tamper pins are pre-charged before
+                                                                              sampling during 4 RTCCLK cycles */
+#define RTC_TAMPERPRECHARGEDURATION_8RTCCLK     RTC_TAMPCR_TAMPPRCH     /*!< Tamper pins are pre-charged before
+                                                                              sampling during 8 RTCCLK cycles */
+#define RTC_TAMPERPRECHARGEDURATION_MASK        RTC_TAMPCR_TAMPPRCH     /*!< Masking all bits except those of
+                                                                              field TAMPPRCH                  */
 /**
   * @}
-  */ 
+  */
 
-/** @defgroup RTCEx_Smooth_calib_period_Definitions RTCEx Smooth calib period Definitions 
+/** @defgroup  RTCEx_Tamper_Pull_Up_Definitions RTCEx Tamper Pull Up Definitions
   * @{
-  */ 
-#define RTC_SMOOTHCALIB_PERIOD_32SEC   ((uint32_t)0x00000000U)  /*!< If RTCCLK = 32768 Hz, Smooth calibration
-                                                                    period is 32s,  else 2exp20 RTCCLK seconds */
-#define RTC_SMOOTHCALIB_PERIOD_16SEC   ((uint32_t)0x00002000U)  /*!< If RTCCLK = 32768 Hz, Smooth calibration 
-                                                                    period is 16s, else 2exp19 RTCCLK seconds */
-#define RTC_SMOOTHCALIB_PERIOD_8SEC    ((uint32_t)0x00004000U)  /*!< If RTCCLK = 32768 Hz, Smooth calibration 
-                                                                    period is 8s, else 2exp18 RTCCLK seconds */                                        
+  */
+#define RTC_TAMPER_PULLUP_ENABLE  0x00000000U           /*!< Tamper pins are pre-charged before sampling     */
+#define RTC_TAMPER_PULLUP_DISABLE RTC_TAMPCR_TAMPPUDIS   /*!< Tamper pins are not pre-charged before sampling */
+#define RTC_TAMPER_PULLUP_MASK    RTC_TAMPCR_TAMPPUDIS   /*!< Masking all bits except bit TAMPPUDIS           */
 /**
   * @}
-  */ 
+  */
 
-/** @defgroup RTCEx_Smooth_calib_Plus_pulses_Definitions RTCEx Smooth calib Plus pulses Definitions 
+/** @defgroup RTCEx_Tamper_TimeStampOnTamperDetection_Definitions RTCEx Tamper TimeStamp On Tamper Detection Definitions
   * @{
-  */ 
-#define RTC_SMOOTHCALIB_PLUSPULSES_SET    ((uint32_t)0x00008000U)  /*!< The number of RTCCLK pulses added  
-                                                                       during a X -second window = Y - CALM[8:0] 
-                                                                       with Y = 512, 256, 128 when X = 32, 16, 8 */
-#define RTC_SMOOTHCALIB_PLUSPULSES_RESET  ((uint32_t)0x00000000U)  /*!< The number of RTCCLK pulses subbstited
-                                                                       during a 32-second window = CALM[8:0] */
+  */
+#define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE  RTC_TAMPCR_TAMPTS  /*!< TimeStamp on Tamper Detection event saved        */
+#define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE 0x00000000U       /*!< TimeStamp on Tamper Detection event is not saved */
+#define RTC_TIMESTAMPONTAMPERDETECTION_MASK    RTC_TAMPCR_TAMPTS  /*!< Masking all bits except bit TAMPTS               */
+/**
+  * @}
+  */
+
+/** @defgroup RTCEx_Wakeup_Timer_Definitions RTCEx Wakeup Timer Definitions
+  * @{
+  */
+#define RTC_WAKEUPCLOCK_RTCCLK_DIV16        0x00000000U
+#define RTC_WAKEUPCLOCK_RTCCLK_DIV8         RTC_CR_WUCKSEL_0
+#define RTC_WAKEUPCLOCK_RTCCLK_DIV4         RTC_CR_WUCKSEL_1
+#define RTC_WAKEUPCLOCK_RTCCLK_DIV2         (RTC_CR_WUCKSEL_0 | RTC_CR_WUCKSEL_1)
+#define RTC_WAKEUPCLOCK_CK_SPRE_16BITS      RTC_CR_WUCKSEL_2
+#define RTC_WAKEUPCLOCK_CK_SPRE_17BITS      (RTC_CR_WUCKSEL_1 | RTC_CR_WUCKSEL_2)
+/**
+  * @}
+  */
+
+/** @defgroup RTCEx_Smooth_calib_period_Definitions RTCEx Smooth Calib Period Definitions
+  * @{
+  */
+#define RTC_SMOOTHCALIB_PERIOD_32SEC   0x00000000U      /*!< If RTCCLK = 32768 Hz, smooth calibration
+                                                              period is 32s, otherwise 2^20 RTCCLK pulses */
+#define RTC_SMOOTHCALIB_PERIOD_16SEC   RTC_CALR_CALW16  /*!< If RTCCLK = 32768 Hz, smooth calibration
+                                                              period is 16s, otherwise 2^19 RTCCLK pulses */
+#define RTC_SMOOTHCALIB_PERIOD_8SEC    RTC_CALR_CALW8   /*!< If RTCCLK = 32768 Hz, smooth calibration
+                                                              period is 8s, otherwise 2^18 RTCCLK pulses  */
+/**
+  * @}
+  */
+
+/** @defgroup RTCEx_Smooth_calib_Plus_pulses_Definitions RTCEx Smooth Calib Plus Pulses Definitions
+  * @{
+  */
+#define RTC_SMOOTHCALIB_PLUSPULSES_SET    RTC_CALR_CALP           /*!< The number of RTCCLK pulses added
+                                                                        during a X -second window = Y - CALM[8:0]
+                                                                        with Y = 512, 256, 128 when X = 32, 16, 8 */
+#define RTC_SMOOTHCALIB_PLUSPULSES_RESET  0x00000000U             /*!< The number of RTCCLK pulses subbstited
+                                                                        during a 32-second window = CALM[8:0] */
 /**
   * @}
   */
 
 /** @defgroup RTCEx_Add_1_Second_Parameter_Definitions RTCEx Add 1 Second Parameter Definitions
   * @{
-  */ 
-#define RTC_SHIFTADD1S_RESET      ((uint32_t)0x00000000U)
-#define RTC_SHIFTADD1S_SET        ((uint32_t)0x80000000U)
+  */
+#define RTC_SHIFTADD1S_RESET      0x00000000U
+#define RTC_SHIFTADD1S_SET        RTC_SHIFTR_ADD1S
 /**
   * @}
   */
 
- /** @defgroup RTCEx_Calib_Output_selection_Definitions RTCEx Calib Output selection Definitions
+/** @defgroup RTCEx_Calib_Output_selection_Definitions RTCEx Calib Output Selection Definitions
   * @{
-  */ 
-#define RTC_CALIBOUTPUT_512HZ            ((uint32_t)0x00000000U) 
-#define RTC_CALIBOUTPUT_1HZ              ((uint32_t)0x00080000U)
+  */
+#define RTC_CALIBOUTPUT_512HZ            0x00000000U
+#define RTC_CALIBOUTPUT_1HZ              RTC_CR_COSEL
 /**
   * @}
-  */ 
-  
+  */
+
 /**
   * @}
-  */ 
-  
+  */
+
 /* Exported macros -----------------------------------------------------------*/
+
 /** @defgroup RTCEx_Exported_Macros RTCEx Exported Macros
   * @{
   */
 
+/* ---------------------------------WAKEUPTIMER-------------------------------*/
+
+/** @defgroup RTCEx_WakeUp_Timer RTCEx WakeUp Timer
+  * @{
+  */
+
 /**
   * @brief  Enable the RTC WakeUp Timer peripheral.
   * @param  __HANDLE__ specifies the RTC handle.
   * @retval None
   */
-#define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__)                     ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
+#define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
 
 /**
-  * @brief  Disable the RTC WakeUp Timer peripheral.
+  * @brief  Disable the RTC Wakeup Timer peripheral.
   * @param  __HANDLE__ specifies the RTC handle.
   * @retval None
   */
-#define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__)                    ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
+#define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__)                     ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
 
 /**
-  * @brief  Enable the RTC WakeUpTimer interrupt.
+  * @brief  Enable the RTC Wakeup Timer interrupt.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be enabled or disabled.
+  * @param  __INTERRUPT__ specifies the RTC Wakeup Timer interrupt sources to be enabled or disabled.
   *         This parameter can be:
-  *            @arg RTC_IT_WUT: WakeUpTimer interrupt
+  *            @arg RTC_IT_WUT: Wakeup Timer interrupt
   * @retval None
   */
 #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
 
 /**
-  * @brief  Disable the RTC WakeUpTimer interrupt.
+  * @brief  Disable the RTC Wakeup Timer interrupt.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be enabled or disabled.
+  * @param  __INTERRUPT__ specifies the RTC Wakeup Timer interrupt sources to be enabled or disabled.
   *         This parameter can be:
-  *            @arg RTC_IT_WUT: WakeUpTimer interrupt
+  *            @arg RTC_IT_WUT: Wakeup Timer interrupt
   * @retval None
   */
 #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
 
 /**
-  * @brief  Check whether the specified RTC WakeUpTimer interrupt has occurred or not.
+  * @brief  Check whether the specified RTC Wakeup Timer interrupt has occurred or not.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to check.
+  * @param  __INTERRUPT__ specifies the RTC Wakeup Timer interrupt to check.
   *         This parameter can be:
-  *            @arg RTC_IT_WUT:  WakeUpTimer interrupt
+  *            @arg RTC_IT_WUT: Wakeup Timer interrupt
   * @retval None
   */
-#define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__)       (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 4)) != RESET) ? SET : RESET)
+#define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__)          (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__) >> 4U)) != 0U) ? 1U : 0U)
 
 /**
-  * @brief  Check whether the specified RTC Wake Up timer interrupt has been enabled or not.
+  * @brief  Check whether the specified RTC Wakeup timer interrupt has been enabled or not.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __INTERRUPT__ specifies the RTC Wake Up timer interrupt sources to check.
+  * @param  __INTERRUPT__ specifies the RTC Wakeup timer interrupt sources to check.
   *         This parameter can be:
-  *            @arg RTC_IT_WUT:  WakeUpTimer interrupt
+  *            @arg RTC_IT_WUT: WakeUpTimer interrupt
   * @retval None
   */
-#define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)   (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
+#define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)   (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
 
 /**
-  * @brief  Get the selected RTC WakeUpTimer's flag status.
+  * @brief  Get the selected RTC Wakeup Timer's flag status.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC WakeUpTimer Flag is pending or not.
+  * @param  __FLAG__ specifies the RTC Wakeup Timer flag to check.
   *          This parameter can be:
-  *             @arg RTC_FLAG_WUTF
-  *             @arg RTC_FLAG_WUTWF
+  *             @arg RTC_FLAG_WUTF: Wakeup Timer interrupt flag
+  *             @arg RTC_FLAG_WUTWF: Wakeup Timer 'write allowed' flag
   * @retval None
   */
-#define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)   (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)
+#define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)          (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U)? 1U : 0U)
 
 /**
-  * @brief  Clear the RTC Wake Up timer's pending flags.
+  * @brief  Clear the RTC Wakeup timer's pending flags.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC WakeUpTimer Flag to clear.
+  * @param  __FLAG__ specifies the RTC Wakeup Timer Flag to clear.
   *         This parameter can be:
-  *            @arg RTC_FLAG_WUTF
+  *             @arg RTC_FLAG_WUTF: Wakeup Timer interrupt Flag
   * @retval None
   */
-#define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))    
+#define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__)            ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
+
+/**
+  * @brief  Enable interrupt on the RTC Wakeup Timer associated EXTI line.
+  * @retval None
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()       (EXTI->IMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief  Disable interrupt on the RTC Wakeup Timer associated EXTI line.
+  * @retval None
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT()      (EXTI->IMR &= ~RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief  Enable event on the RTC Wakeup Timer associated EXTI line.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT()    (EXTI->EMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief  Disable event on the RTC Wakeup Timer associated EXTI line.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT()   (EXTI->EMR &= ~RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief  Enable falling edge trigger on the RTC Wakeup Timer associated EXTI line.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief  Disable falling edge trigger on the RTC Wakeup Timer associated EXTI line.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief  Enable rising edge trigger on the RTC Wakeup Timer associated EXTI line.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief  Disable rising edge trigger on the RTC Wakeup Timer associated EXTI line.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief  Enable rising & falling edge trigger on the RTC Wakeup Timer associated EXTI line.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() do {                                                   \
+                                                                     __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();  \
+                                                                     __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE(); \
+                                                                   } while(0U)
+
+/**
+  * @brief  Disable rising & falling edge trigger on the RTC Wakeup Timer associated EXTI line.
+  * This parameter can be:
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() do {                                                    \
+                                                                      __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();  \
+                                                                      __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE(); \
+                                                                    } while(0U)
+
+/**
+  * @brief Check whether the RTC Wakeup Timer associated EXTI line interrupt flag is set or not.
+  * @retval Line Status.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG()              (EXTI->PR & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief Clear the RTC Wakeup Timer associated EXTI line flag.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()            (EXTI->PR = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @brief Generate a Software interrupt on the RTC Wakeup Timer associated EXTI line.
+  * @retval None.
+  */
+#define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT()         (EXTI->SWIER |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
+
+/**
+  * @}
+  */
+
+/* ---------------------------------TIMESTAMP---------------------------------*/
+
+/** @defgroup RTCEx_Timestamp RTCEx Timestamp
+  * @{
+  */
+
+/**
+  * @brief  Enable the RTC Timestamp peripheral.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @retval None
+  */
+#define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__)                        ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
+
+/**
+  * @brief  Disable the RTC Timestamp peripheral.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @retval None
+  */
+#define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
+
+/**
+  * @brief  Enable the RTC Timestamp interrupt.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __INTERRUPT__ specifies the RTC Timestamp interrupt sources to be enabled or disabled.
+  *         This parameter can be:
+  *            @arg RTC_IT_TS: TimeStamp interrupt
+  * @retval None
+  */
+#define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__)      ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
+
+/**
+  * @brief  Disable the RTC Timestamp interrupt.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __INTERRUPT__ specifies the RTC Timestamp interrupt sources to be enabled or disabled.
+  *         This parameter can be:
+  *            @arg RTC_IT_TS: TimeStamp interrupt
+  * @retval None
+  */
+#define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__)     ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
+
+/**
+  * @brief  Check whether the specified RTC Timestamp interrupt has occurred or not.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __INTERRUPT__ specifies the RTC Timestamp interrupt to check.
+  *         This parameter can be:
+  *            @arg RTC_IT_TS: TimeStamp interrupt
+  * @retval None
+  */
+#define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__)         (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__) >> 4U)) != 0U) ? 1U : 0U)
+
+/**
+  * @brief  Check whether the specified RTC Timestamp interrupt has been enabled or not.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __INTERRUPT__ specifies the RTC Timestamp interrupt source to check.
+  *         This parameter can be:
+  *            @arg RTC_IT_TS: TimeStamp interrupt
+  * @retval None
+  */
+#define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
+
+/**
+  * @brief  Get the selected RTC Timestamp's flag status.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __FLAG__ specifies the RTC Timestamp flag to check.
+  *         This parameter can be:
+  *            @arg RTC_FLAG_TSF: Timestamp interrupt flag
+  *            @arg RTC_FLAG_TSOVF: Timestamp overflow flag
+  * @retval None
+  */
+#define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)            (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U)? 1U : 0U)
+
+/**
+  * @brief  Clear the RTC Timestamp's pending flags.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __FLAG__ specifies the RTC Timestamp flag to clear.
+  *         This parameter can be:
+  *            @arg RTC_FLAG_TSF: Timestamp interrupt flag
+  *            @arg RTC_FLAG_TSOVF: Timestamp overflow flag
+  * @retval None
+  */
+#define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)          ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
+
+/**
+  * @brief  Enable the RTC internal TimeStamp peripheral.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @retval None
+  */
+#define __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_ITSE))
+
+/**
+  * @brief  Disable the RTC internal TimeStamp peripheral.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @retval None
+  */
+#define __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ITSE))
+
+/**
+  * @brief  Get the selected RTC Internal Timestamp's flag status.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __FLAG__ specifies the RTC Internal Timestamp flag is pending or not.
+  *         This parameter can be:
+  *            @arg RTC_FLAG_ITSF: Internal Timestamp interrupt flag
+  * @retval None
+  */
+#define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)    (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U) ? 1U : 0U)
+
+/**
+  * @brief  Clear the RTC Internal Timestamp's pending flags.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __FLAG__ specifies the RTC Internal Timestamp flag to clear.
+  *          This parameter can be:
+  *            @arg RTC_FLAG_ITSF: Internal Timestamp interrupt flag
+  * @retval None
+  */
+#define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)  ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& 0x0003FFFFU)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
+
+/**
+  * @}
+  */
+
+/* ---------------------------------TAMPER------------------------------------*/
+
+/** @defgroup RTCEx_Tamper RTCEx Tamper
+  * @{
+  */
 
 /**
   * @brief  Enable the RTC Tamper1 input detection.
@@ -457,368 +687,229 @@
 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__)                        ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP3E))
 
 /**
+  * @brief  Enable the RTC Tamper interrupt.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __INTERRUPT__ specifies the RTC Tamper interrupt sources to be enabled.
+  *          This parameter can be any combination of the following values:
+  *            @arg RTC_IT_TAMP: Tamper global interrupt
+  *            @arg RTC_IT_TAMP1: Tamper 1 interrupt
+  *            @arg RTC_IT_TAMP2: Tamper 2 interrupt
+  *            @arg RTC_IT_TAMP3: Tamper 3 interrupt
+  * @retval None
+  */
+#define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__)        ((__HANDLE__)->Instance->TAMPCR |= (__INTERRUPT__))
+
+/**
+  * @brief  Disable the RTC Tamper interrupt.
+  * @param  __HANDLE__ specifies the RTC handle.
+  * @param  __INTERRUPT__ specifies the RTC Tamper interrupt sources to be disabled.
+  *         This parameter can be any combination of the following values:
+  *            @arg RTC_IT_TAMP: Tamper global interrupt
+  *            @arg RTC_IT_TAMP1: Tamper 1 interrupt
+  *            @arg RTC_IT_TAMP2: Tamper 2 interrupt
+  *            @arg RTC_IT_TAMP3: Tamper 3 interrupt
+  * @retval None
+  */
+#define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__)       ((__HANDLE__)->Instance->TAMPCR &= ~(__INTERRUPT__))
+
+/**
   * @brief  Check whether the specified RTC Tamper interrupt has occurred or not.
   * @param  __HANDLE__ specifies the RTC handle.
   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt to check.
   *         This parameter can be:
-  *            @arg  RTC_IT_TAMP: All tampers interrupts
-  *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
-  *            @arg  RTC_IT_TAMP2: Tamper2 interrupt
-  *            @arg  RTC_IT_TAMP3: Tamper3 interrupt
+  *            @arg RTC_IT_TAMP1: Tamper 1 interrupt
+  *            @arg RTC_IT_TAMP2: Tamper 2 interrupt
+  *            @arg RTC_IT_TAMP3: Tamper 3 interrupt
   * @retval None
   */
-#define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__)           (((__INTERRUPT__) == RTC_IT_TAMP1) ? (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 3)) != RESET) ? SET : RESET) : \
-                                                                      ((__INTERRUPT__) == RTC_IT_TAMP2) ? (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 5)) != RESET) ? SET : RESET) : \
-                                                                                                          (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 7)) != RESET) ? SET : RESET))
+#define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__)       (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__) >> 4U)) != 0U) ? 1U : 0U)
 
 /**
   * @brief  Check whether the specified RTC Tamper interrupt has been enabled or not.
   * @param  __HANDLE__ specifies the RTC handle.
   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt source to check.
   *         This parameter can be:
-  *            @arg  RTC_IT_TAMP: All tampers interrupts
-  *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
-  *            @arg  RTC_IT_TAMP2: Tamper2 interrupt
-  *            @arg  RTC_IT_TAMP3: Tamper3 interrupt
+  *            @arg RTC_IT_TAMP: Tamper global interrupt
+  *            @arg RTC_IT_TAMP1: Tamper 1 interrupt
+  *            @arg RTC_IT_TAMP2: Tamper 2 interrupt
+  *            @arg RTC_IT_TAMP3: Tamper 3 interrupt
   * @retval None
   */
-#define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)    (((((__HANDLE__)->Instance->TAMPCR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
+#define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->TAMPCR) & (__INTERRUPT__)) != 0U) ? 1U : 0U)
 
 /**
   * @brief  Get the selected RTC Tamper's flag status.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC Tamper Flag is pending or not.
+  * @param  __FLAG__ specifies the RTC Tamper flag to be checked.
   *          This parameter can be:
-  *             @arg RTC_FLAG_TAMP1F: Tamper1 flag
-  *             @arg RTC_FLAG_TAMP2F: Tamper2 flag
-  *             @arg RTC_FLAG_TAMP3F: Tamper3 flag
+  *             @arg RTC_FLAG_TAMP1F: Tamper 1 interrupt flag
+  *             @arg RTC_FLAG_TAMP2F: Tamper 2 interrupt flag
+  *             @arg RTC_FLAG_TAMP3F: Tamper 3 interrupt flag
   * @retval None
   */
-#define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)        (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)
+#define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)               (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U)? 1U : 0U)
 
 /**
   * @brief  Clear the RTC Tamper's pending flags.
   * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC Tamper Flag sources to clear.
+  * @param  __FLAG__ specifies the RTC Tamper Flag to clear.
   *          This parameter can be:
-  *             @arg RTC_FLAG_TAMP1F: Tamper1 flag
-  *             @arg RTC_FLAG_TAMP2F: Tamper2 flag
-  *             @arg RTC_FLAG_TAMP3F: Tamper3 flag
+  *             @arg RTC_FLAG_TAMP1F: Tamper 1 interrupt flag
+  *             @arg RTC_FLAG_TAMP2F: Tamper 2 interrupt flag
+  *             @arg RTC_FLAG_TAMP3F: Tamper 3 interrupt flag
   * @retval None
   */
-#define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
+#define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)         ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
+/**
+  * @}
+  */
+
+/* --------------------------TAMPER/TIMESTAMP---------------------------------*/
+/** @defgroup RTCEx_Tamper_Timestamp EXTI RTC Tamper Timestamp EXTI
+  * @{
+  */
 
 /**
-  * @brief  Enable the RTC TimeStamp peripheral.
-  * @param  __HANDLE__ specifies the RTC handle.
+  * @brief  Enable interrupt on the RTC Tamper and Timestamp associated EXTI line.
   * @retval None
   */
-#define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()        (EXTI->IMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Disable the RTC TimeStamp peripheral.
-  * @param  __HANDLE__ specifies the RTC handle.
+  * @brief  Disable interrupt on the RTC Tamper and Timestamp associated EXTI line.
   * @retval None
   */
-#define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()       (EXTI->IMR &= ~RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Enable the RTC TimeStamp interrupt.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt sources to be enabled or disabled.
-  *         This parameter can be:
-  *            @arg RTC_IT_TS: TimeStamp interrupt
-  * @retval None
+  * @brief  Enable event on the RTC Tamper and Timestamp associated EXTI line.
+  * @retval None.
   */
-#define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__)     ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT()    (EXTI->EMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Disable the RTC TimeStamp interrupt.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt sources to be enabled or disabled. 
-  *         This parameter can be:
-  *            @arg RTC_IT_TS: TimeStamp interrupt
-  * @retval None
+  * @brief  Disable event on the RTC Tamper and Timestamp associated EXTI line.
+  * @retval None.
   */
-#define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT()   (EXTI->EMR &= ~RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Check whether the specified RTC TimeStamp interrupt has occurred or not.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt sources to check.
-  *         This parameter can be:
-  *            @arg RTC_IT_TS: TimeStamp interrupt
-  * @retval None
+  * @brief  Enable falling edge trigger on the RTC Tamper and Timestamp associated EXTI line.
+  * @retval None.
   */
-#define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__)        (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 4)) != RESET) ? SET : RESET)
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Check whether the specified RTC Time Stamp interrupt has been enabled or not.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __INTERRUPT__ specifies the RTC Time Stamp interrupt source to check.
-  *         This parameter can be:
-  *            @arg RTC_IT_TS: TimeStamp interrupt
-  * @retval None
+  * @brief  Disable falling edge trigger on the RTC Tamper and Timestamp associated EXTI line.
+  * @retval None.
   */
-#define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Get the selected RTC TimeStamp's flag status.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC TimeStamp Flag is pending or not.
-  *         This parameter can be:
-  *            @arg RTC_FLAG_TSF
-  *            @arg RTC_FLAG_TSOVF
-  * @retval None
+  * @brief  Enable rising edge trigger on the RTC Tamper and Timestamp associated EXTI line.
+  * @retval None.
   */
-#define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)     (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Clear the RTC Time Stamp's pending flags.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC Alarm Flag sources to clear.
-  *          This parameter can be:
-  *             @arg RTC_FLAG_TSF
-  *             @arg RTC_FLAG_TSOVF
-  * @retval None
+  * @brief  Disable rising edge trigger on the RTC Tamper and Timestamp associated EXTI line.
+  * @retval None.
   */
-#define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Enable the RTC internal TimeStamp peripheral.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @retval None
+  * @brief  Enable rising & falling edge trigger on the RTC Tamper and Timestamp associated EXTI line.
+  * @retval None.
   */
-#define __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_ITSE))
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE() do {                                                        \
+                                                                          __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();  \
+                                                                          __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE(); \
+                                                                        } while(0U)
 
 /**
-  * @brief  Disable the RTC internal TimeStamp peripheral.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @retval None
+  * @brief  Disable rising & falling edge trigger on the RTC Tamper and Timestamp associated EXTI line.
+  * This parameter can be:
+  * @retval None.
   */
-#define __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ITSE))
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE() do {                                                         \
+                                                                           __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE();  \
+                                                                           __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE(); \
+                                                                         } while(0U)
 
 /**
-  * @brief  Get the selected RTC Internal Time Stamp's flag status.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC Internal Time Stamp Flag is pending or not.
-  *         This parameter can be:
-  *            @arg RTC_FLAG_ITSF
-  * @retval None
+  * @brief Check whether the RTC Tamper and Timestamp associated EXTI line interrupt flag is set or not.
+  * @retval Line Status.
   */
-#define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)    (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()         (EXTI->PR & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
-  * @brief  Clear the RTC Internal Time Stamp's pending flags.
-  * @param  __HANDLE__ specifies the RTC handle.
-  * @param  __FLAG__ specifies the RTC Internal Time Stamp Flag source to clear.
-  *          This parameter can be:
-  *             @arg RTC_FLAG_ITSF
-  * @retval None
+  * @brief Clear the RTC Tamper and Timestamp associated EXTI line flag.
+  * @retval None.
   */
-#define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)  ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& 0x0003FFFF)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()       (EXTI->PR = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
+
+/**
+  * @brief Generate a Software interrupt on the RTC Tamper and Timestamp associated EXTI line
+  * @retval None.
+  */
+#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()    (EXTI->SWIER |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
+/**
+  * @}
+  */
+
+/* ------------------------------CALIBRATION----------------------------------*/
+
+/** @defgroup RTCEx_Calibration RTCEx Calibration
+  * @{
+  */
 
 /**
   * @brief  Enable the RTC calibration output.
   * @param  __HANDLE__ specifies the RTC handle.
   * @retval None
   */
-#define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
+#define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__)                 ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
 
 /**
   * @brief  Disable the calibration output.
   * @param  __HANDLE__ specifies the RTC handle.
   * @retval None
   */
-#define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
+#define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
 
 /**
   * @brief  Enable the clock reference detection.
   * @param  __HANDLE__ specifies the RTC handle.
   * @retval None
   */
-#define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
+#define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__)                 ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
 
 /**
   * @brief  Disable the clock reference detection.
   * @param  __HANDLE__ specifies the RTC handle.
   * @retval None
   */
-#define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
+#define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
 
 /**
   * @brief  Get the selected RTC shift operation's flag status.
   * @param  __HANDLE__ specifies the RTC handle.
   * @param  __FLAG__ specifies the RTC shift operation Flag is pending or not.
   *          This parameter can be:
-  *             @arg RTC_FLAG_SHPF
+  *             @arg RTC_FLAG_SHPF: Shift pending flag
   * @retval None
   */
-#define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__)         (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)
-
+#define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__)                (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != 0U)? 1U : 0U)
 /**
-  * @brief  Enable interrupt on the RTC WakeUp Timer associated Exti line.
-  * @retval None
+  * @}
   */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()       (EXTI->IMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
-
-/**
-  * @brief  Disable interrupt on the RTC WakeUp Timer associated Exti line.
-  * @retval None
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT()      (EXTI->IMR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
-
-/**
-  * @brief  Enable event on the RTC WakeUp Timer associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT()    (EXTI->EMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
-
-/**
-  * @brief  Disable event on the RTC WakeUp Timer associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT()   (EXTI->EMR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
-
-/**
-  * @brief  Enable falling edge trigger on the RTC WakeUp Timer associated Exti line. 
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
-
-/**
-  * @brief  Disable falling edge trigger on the RTC WakeUp Timer associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
-
-/**
-  * @brief  Enable rising edge trigger on the RTC WakeUp Timer associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
-
-/**
-  * @brief  Disable rising edge trigger on the RTC WakeUp Timer associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
-
-/**
-  * @brief  Enable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE();
-
-/**
-  * @brief  Disable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.
-  * This parameter can be:
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE();
-
-/**
-  * @brief Check whether the RTC WakeUp Timer associated Exti line interrupt flag is set or not.
-  * @retval Line Status.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG()              (EXTI->PR & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
-
-/**
-  * @brief Clear the RTC WakeUp Timer associated Exti line flag.
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()            (EXTI->PR = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
-
-/**
-  * @brief Generate a Software interrupt on the RTC WakeUp Timer associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT()         (EXTI->SWIER |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
-
-/**
-  * @brief  Enable interrupt on the RTC Tamper and Timestamp associated Exti line.
-  * @retval None
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()        (EXTI->IMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
-
-/**
-  * @brief  Disable interrupt on the RTC Tamper and Timestamp associated Exti line.
-  * @retval None
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()       (EXTI->IMR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
-
-/**
-  * @brief  Enable event on the RTC Tamper and Timestamp associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT()    (EXTI->EMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
-
-/**
-  * @brief  Disable event on the RTC Tamper and Timestamp associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT()   (EXTI->EMR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
-
-/**
-  * @brief  Enable falling edge trigger on the RTC Tamper and Timestamp associated Exti line. 
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
-
-/**
-  * @brief  Disable falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
-
-/**
-  * @brief  Enable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
-
-/**
-  * @brief  Disable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
-
-/**
-  * @brief  Enable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE();
-
-/**
-  * @brief  Disable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
-  * This parameter can be:
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE();
-
-/**
-  * @brief Check whether the RTC Tamper and Timestamp associated Exti line interrupt flag is set or not.
-  * @retval Line Status.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()         (EXTI->PR & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
-
-/**
-  * @brief Clear the RTC Tamper and Timestamp associated Exti line flag.
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()       (EXTI->PR = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
-
-/**
-  * @brief Generate a Software interrupt on the RTC Tamper and Timestamp associated Exti line
-  * @retval None.
-  */
-#define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()    (EXTI->SWIER |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
 
 /**
   * @}
   */
 
 /* Exported functions --------------------------------------------------------*/
+
 /** @defgroup RTCEx_Exported_Functions RTCEx Exported Functions
   * @{
   */
@@ -826,17 +917,16 @@
 /** @addtogroup RTCEx_Exported_Functions_Group1
   * @{
   */
-
-/* RTC TimeStamp and Tamper functions *****************************************/
-HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
-HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);
+/* RTC Timestamp and Tamper functions *****************************************/
+HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t RTC_TimeStampEdge, uint32_t RTC_TimeStampPin);
+HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t RTC_TimeStampEdge, uint32_t RTC_TimeStampPin);
 HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);
 HAL_StatusTypeDef HAL_RTCEx_SetInternalTimeStamp(RTC_HandleTypeDef *hrtc);
 HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTimeStamp(RTC_HandleTypeDef *hrtc);
 HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format);
 
-HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef* sTamper);
-HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef* sTamper);
+HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
+HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);
 void              HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc);
 
@@ -855,10 +945,10 @@
 /** @addtogroup RTCEx_Exported_Functions_Group2
   * @{
   */
-/* RTC Wake-up functions ******************************************************/
+/* RTC Wakeup functions ******************************************************/
 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
-uint32_t          HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
+HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
 uint32_t          HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc);
 void              HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc);
 void              HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc);
@@ -870,11 +960,11 @@
 /** @addtogroup RTCEx_Exported_Functions_Group3
   * @{
   */
-/* Extension Control functions ************************************************/
+/* Extended Control functions ************************************************/
 void              HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);
 uint32_t          HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);
 
-HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmouthCalibMinusPulsesValue);
+HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue);
 HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);
 HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);
 HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc);
@@ -889,40 +979,52 @@
 /** @addtogroup RTCEx_Exported_Functions_Group4
   * @{
   */
-/* Extension RTC features functions *******************************************/
-void              HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc); 
+/* Extended RTC features functions *******************************************/
+void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc);
 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
 /**
   * @}
-  */ 
+  */
 
 /**
   * @}
-  */ 
-/* Private types -------------------------------------------------------------*/ 
+  */
+
+/* Private types -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private constants ---------------------------------------------------------*/
+
 /** @defgroup RTCEx_Private_Constants RTCEx Private Constants
   * @{
   */
-#define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT  ((uint32_t)EXTI_IMR_IM21)  /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */                                               
-#define RTC_EXTI_LINE_WAKEUPTIMER_EVENT       ((uint32_t)EXTI_IMR_IM22)  /*!< External interrupt line 22 Connected to the RTC Wake-up event */  
+#define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT  EXTI_IMR_IM21  /*!< External interrupt line 21 Connected to the RTC Tamper and Timestamp event */
+#define RTC_EXTI_LINE_WAKEUPTIMER_EVENT       EXTI_IMR_IM22  /*!< External interrupt line 22 Connected to the RTC Wakeup event */
 /**
   * @}
   */
 
-/* Private constants ---------------------------------------------------------*/
 /** @defgroup RTCEx_Private_Constants RTCEx Private Constants
   * @{
   */
 /* Masks Definition */
-#define RTC_TAMPCR_TAMPXE     ((uint32_t) (RTC_TAMPCR_TAMP3E | RTC_TAMPCR_TAMP2E | RTC_TAMPCR_TAMP1E))
-#define RTC_TAMPCR_TAMPXIE    ((uint32_t) (RTC_TAMPER1_INTERRUPT | RTC_TAMPER2_INTERRUPT | RTC_TAMPER3_INTERRUPT | RTC_ALL_TAMPER_INTERRUPT))
+#define RTC_TAMPER_ENABLE_BITS_MASK         ((uint32_t) (RTC_TAMPER_1 | \
+                                                         RTC_TAMPER_2 | \
+                                                         RTC_TAMPER_3))
+
+#define RTC_TAMPER_FLAGS_MASK               ((uint32_t) (RTC_FLAG_TAMP1F | \
+                                                         RTC_FLAG_TAMP2F | \
+                                                         RTC_FLAG_TAMP3F))
+
+#define RTC_TAMPER_IT_ENABLE_BITS_MASK      ((uint32_t) (RTC_IT_TAMP1 | \
+                                                         RTC_IT_TAMP2 | \
+                                                         RTC_IT_TAMP3 | \
+                                                         RTC_IT_TAMP))
 /**
   * @}
   */
-  
-/* Private macros ------------------------------------------------------------*/   
+
+/* Private macros ------------------------------------------------------------*/
+
 /** @defgroup RTCEx_Private_Macros RTCEx Private Macros
   * @{
   */
@@ -930,67 +1032,90 @@
 /** @defgroup RTCEx_IS_RTC_Definitions Private macros to check input parameters
   * @{
   */
-#define IS_RTC_OUTPUT(__OUTPUT__)      (((__OUTPUT__) == RTC_OUTPUT_DISABLE) || \
-                                        ((__OUTPUT__) == RTC_OUTPUT_ALARMA)  || \
-                                        ((__OUTPUT__) == RTC_OUTPUT_ALARMB)  || \
-                                        ((__OUTPUT__) == RTC_OUTPUT_WAKEUP))
-#define IS_RTC_BKP(__BKP__)               ((__BKP__) < (uint32_t) RTC_BKP_NUMBER)
-#define IS_TIMESTAMP_EDGE(__EDGE__) (((__EDGE__) == RTC_TIMESTAMPEDGE_RISING) || \
-                                     ((__EDGE__) == RTC_TIMESTAMPEDGE_FALLING))
-#define IS_RTC_TAMPER(__TAMPER__)   ((((__TAMPER__) & ((uint32_t)(0xFFFFFFFFU ^ RTC_TAMPCR_TAMPXE))) == 0x00U) && ((__TAMPER__) != (uint32_t)RESET))
+#define IS_RTC_BKP(BKP)     ((BKP) < (uint32_t) RTC_BKP_NUMBER)
 
-#define IS_RTC_TAMPER_INTERRUPT(__INTERRUPT__)  ((((__INTERRUPT__) & (uint32_t)(0xFFFFFFFFU ^ RTC_TAMPCR_TAMPXIE)) == 0x00U) && ((__INTERRUPT__) != (uint32_t)RESET))
+#define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \
+                                 ((EDGE) == RTC_TIMESTAMPEDGE_FALLING))
 
-#define IS_RTC_TIMESTAMP_PIN(__PIN__) (((__PIN__) == RTC_TIMESTAMPPIN_DEFAULT) || \
-                                       ((__PIN__) == RTC_TIMESTAMPPIN_POS1)  || \
-                                       ((__PIN__) == RTC_TIMESTAMPPIN_POS2))
-#define IS_RTC_TAMPER_TRIGGER(__TRIGGER__) (((__TRIGGER__) == RTC_TAMPERTRIGGER_RISINGEDGE) || \
-                                        ((__TRIGGER__) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \
-                                        ((__TRIGGER__) == RTC_TAMPERTRIGGER_LOWLEVEL) || \
-                                        ((__TRIGGER__) == RTC_TAMPERTRIGGER_HIGHLEVEL))
-#define IS_RTC_TAMPER_ERASE_MODE(__MODE__)             (((__MODE__) == RTC_TAMPER_ERASE_BACKUP_ENABLE) || \
-                                                        ((__MODE__) == RTC_TAMPER_ERASE_BACKUP_DISABLE))
-#define IS_RTC_TAMPER_MASKFLAG_STATE(__STATE__)     (((__STATE__) == RTC_TAMPERMASK_FLAG_ENABLE) || \
-                                                     ((__STATE__) == RTC_TAMPERMASK_FLAG_DISABLE))
-#define IS_RTC_TAMPER_FILTER(__FILTER__)  (((__FILTER__) == RTC_TAMPERFILTER_DISABLE) || \
-                                       ((__FILTER__) == RTC_TAMPERFILTER_2SAMPLE) || \
-                                       ((__FILTER__) == RTC_TAMPERFILTER_4SAMPLE) || \
-                                       ((__FILTER__) == RTC_TAMPERFILTER_8SAMPLE))
-#define IS_RTC_TAMPER_SAMPLING_FREQ(__FREQ__) (((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
-                                           ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
-                                           ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
-                                           ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
-                                           ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
-                                           ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
-                                           ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512)  || \
-                                           ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
-#define IS_RTC_TAMPER_PRECHARGE_DURATION(__DURATION__) (((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
-                                                    ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
-                                                    ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
-                                                    ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
-#define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(__DETECTION__) (((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
-                                                              ((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
-#define IS_RTC_TAMPER_PULLUP_STATE(__STATE__) (((__STATE__) == RTC_TAMPER_PULLUP_ENABLE) || \
-                                       ((__STATE__) == RTC_TAMPER_PULLUP_DISABLE))
-#define IS_RTC_WAKEUP_CLOCK(__CLOCK__) (((__CLOCK__) == RTC_WAKEUPCLOCK_RTCCLK_DIV16)       || \
-                                    ((__CLOCK__) == RTC_WAKEUPCLOCK_RTCCLK_DIV8)    || \
-                                    ((__CLOCK__) == RTC_WAKEUPCLOCK_RTCCLK_DIV4)    || \
-                                    ((__CLOCK__) == RTC_WAKEUPCLOCK_RTCCLK_DIV2)    || \
-                                    ((__CLOCK__) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
-                                    ((__CLOCK__) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
+#define IS_RTC_TAMPER(TAMPER) ((((TAMPER) & ((uint32_t)~RTC_TAMPER_ENABLE_BITS_MASK)) == 0x00U) && ((TAMPER) != 0U))
 
-#define IS_RTC_WAKEUP_COUNTER(__COUNTER__)  ((__COUNTER__) <= 0xFFFF)
-#define IS_RTC_SMOOTH_CALIB_PERIOD(__PERIOD__) (((__PERIOD__) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
-                                                ((__PERIOD__) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
-                                                ((__PERIOD__) == RTC_SMOOTHCALIB_PERIOD_8SEC))
-#define IS_RTC_SMOOTH_CALIB_PLUS(__PLUS__) (((__PLUS__) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
-                                            ((__PLUS__) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
-#define  IS_RTC_SMOOTH_CALIB_MINUS(__VALUE__) ((__VALUE__) <= 0x000001FF)
-#define IS_RTC_SHIFT_ADD1S(__SEL__) (((__SEL__) == RTC_SHIFTADD1S_RESET) || \
-                                     ((__SEL__) == RTC_SHIFTADD1S_SET))
-#define IS_RTC_SHIFT_SUBFS(__FS__) ((__FS__) <= 0x00007FFF)
-#define IS_RTC_CALIB_OUTPUT(__OUTPUT__)  (((__OUTPUT__) == RTC_CALIBOUTPUT_512HZ) || \
-                                          ((__OUTPUT__) == RTC_CALIBOUTPUT_1HZ))
+#define IS_RTC_TAMPER_PIN(PIN) ((PIN) == RTC_TAMPERPIN_DEFAULT)
+
+#define IS_RTC_TIMESTAMP_PIN(PIN) (((PIN) == RTC_TIMESTAMPPIN_DEFAULT) || \
+                                   ((PIN) == RTC_TIMESTAMPPIN_POS1)    || \
+                                   ((PIN) == RTC_TIMESTAMPPIN_POS2))
+
+#define IS_RTC_TAMPER_INTERRUPT(INTERRUPT) ((((INTERRUPT) & ((uint32_t)~RTC_TAMPER_IT_ENABLE_BITS_MASK  )) == 0x00U) && ((INTERRUPT) != 0U))
+
+#define IS_RTC_TAMPER_TRIGGER(TRIGGER) (((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE)  || \
+                                        ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \
+                                        ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL)    || \
+                                        ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))
+
+#define IS_RTC_TAMPER_ERASE_MODE(MODE)          (((MODE) == RTC_TAMPER_ERASE_BACKUP_ENABLE) || \
+                                                 ((MODE) == RTC_TAMPER_ERASE_BACKUP_DISABLE))
+
+#define IS_RTC_TAMPER_MASKFLAG_STATE(STATE)     (((STATE) == RTC_TAMPERMASK_FLAG_ENABLE) || \
+                                                 ((STATE) == RTC_TAMPERMASK_FLAG_DISABLE))
+
+#define IS_RTC_TAMPER_FILTER(FILTER)  (((FILTER) == RTC_TAMPERFILTER_DISABLE) || \
+                                       ((FILTER) == RTC_TAMPERFILTER_2SAMPLE) || \
+                                       ((FILTER) == RTC_TAMPERFILTER_4SAMPLE) || \
+                                       ((FILTER) == RTC_TAMPERFILTER_8SAMPLE))
+
+#define IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(FILTER, TRIGGER)                  \
+                        (  (  ((FILTER) != RTC_TAMPERFILTER_DISABLE)          \
+                           && (  ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL)    \
+                              || ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))) \
+                        || (  ((FILTER) == RTC_TAMPERFILTER_DISABLE)          \
+                           && (  ((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE)  \
+                              || ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE))))
+
+#define IS_RTC_TAMPER_SAMPLING_FREQ(FREQ) (((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
+                                           ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
+                                           ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
+                                           ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
+                                           ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
+                                           ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
+                                           ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512)  || \
+                                           ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
+
+#define IS_RTC_TAMPER_PRECHARGE_DURATION(DURATION) (((DURATION) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
+                                                    ((DURATION) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
+                                                    ((DURATION) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
+                                                    ((DURATION) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
+
+#define IS_RTC_TAMPER_PULLUP_STATE(STATE) (((STATE) == RTC_TAMPER_PULLUP_ENABLE) || \
+                                           ((STATE) == RTC_TAMPER_PULLUP_DISABLE))
+
+#define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(DETECTION) (((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
+                                                              ((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
+
+#define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16)   || \
+                                    ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8)    || \
+                                    ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4)    || \
+                                    ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2)    || \
+                                    ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
+                                    ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
+
+#define IS_RTC_WAKEUP_COUNTER(COUNTER)  ((COUNTER) <= RTC_WUTR_WUT)
+
+#define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
+                                            ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
+                                            ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC))
+
+#define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
+                                        ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
+
+#define  IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= RTC_CALR_CALM)
+
+#define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \
+                                 ((SEL) == RTC_SHIFTADD1S_SET))
+
+#define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= RTC_SHIFTR_SUBFS)
+
+#define IS_RTC_CALIB_OUTPUT(OUTPUT)  (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \
+                                      ((OUTPUT) == RTC_CALIBOUTPUT_1HZ))
 /**
   * @}
   */
@@ -1001,7 +1126,7 @@
 
 /**
   * @}
-  */ 
+  */
 
 /**
   * @}
@@ -1011,5 +1136,4 @@
 }
 #endif
 
-#endif /* __STM32F7xx_HAL_RTC_EX_H */
-
+#endif /* STM32F7xx_HAL_RTC_EX_H */
diff --git a/Inc/stm32f7xx_hal_smartcard.h b/Inc/stm32f7xx_hal_smartcard.h
index 4faa812..45b17b1 100644
--- a/Inc/stm32f7xx_hal_smartcard.h
+++ b/Inc/stm32f7xx_hal_smartcard.h
@@ -1121,8 +1121,8 @@
   * @{
   */
 
-HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard);
-uint32_t                   HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard);
+HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(const SMARTCARD_HandleTypeDef *hsmartcard);
+uint32_t                   HAL_SMARTCARD_GetError(const SMARTCARD_HandleTypeDef *hsmartcard);
 
 /**
   * @}
diff --git a/Inc/stm32f7xx_hal_spdifrx.h b/Inc/stm32f7xx_hal_spdifrx.h
index 4d7593d..b6ae283 100644
--- a/Inc/stm32f7xx_hal_spdifrx.h
+++ b/Inc/stm32f7xx_hal_spdifrx.h
@@ -21,7 +21,7 @@
 #define STM32F7xx_HAL_SPDIFRX_H
 
 #ifdef __cplusplus
- extern "C" {
+extern "C" {
 #endif
 
 /* Includes ------------------------------------------------------------------*/
@@ -123,7 +123,7 @@
 typedef struct __SPDIFRX_HandleTypeDef
 #else
 typedef struct
-#endif
+#endif /* USE_HAL_SPDIFRX_REGISTER_CALLBACKS */
 {
   SPDIFRX_TypeDef            *Instance;    /* SPDIFRX registers base address */
 
@@ -167,8 +167,8 @@
   void (*CxHalfCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);   /*!< SPDIFRX Control flow half completed callback */
   void (*CxCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);       /*!< SPDIFRX Control flow completed callback */
   void (*ErrorCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);        /*!< SPDIFRX error callback */
-  void (* MspInitCallback)( struct __SPDIFRX_HandleTypeDef * hspdif);   /*!< SPDIFRX Msp Init callback  */
-  void (* MspDeInitCallback)( struct __SPDIFRX_HandleTypeDef * hspdif); /*!< SPDIFRX Msp DeInit callback  */
+  void (* MspInitCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);     /*!< SPDIFRX Msp Init callback  */
+  void (* MspDeInitCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);   /*!< SPDIFRX Msp DeInit callback  */
 #endif /* USE_HAL_SPDIFRX_REGISTER_CALLBACKS */
 
 } SPDIFRX_HandleTypeDef;
@@ -189,12 +189,12 @@
   HAL_SPDIFRX_ERROR_CB_ID     = 0x04U,    /*!< SPDIFRX error callback */
   HAL_SPDIFRX_MSPINIT_CB_ID   = 0x05U,    /*!< SPDIFRX Msp Init callback ID     */
   HAL_SPDIFRX_MSPDEINIT_CB_ID = 0x06U     /*!< SPDIFRX Msp DeInit callback ID   */
-}HAL_SPDIFRX_CallbackIDTypeDef;
+} HAL_SPDIFRX_CallbackIDTypeDef;
 
 /**
   * @brief  HAL SPDIFRX Callback pointer definition
   */
-typedef  void (*pSPDIFRX_CallbackTypeDef)(SPDIFRX_HandleTypeDef * hspdif); /*!< pointer to an SPDIFRX callback function */
+typedef  void (*pSPDIFRX_CallbackTypeDef)(SPDIFRX_HandleTypeDef *hspdif);  /*!< pointer to an SPDIFRX callback function */
 #endif /* USE_HAL_SPDIFRX_REGISTER_CALLBACKS */
 
 /* Exported constants --------------------------------------------------------*/
@@ -267,8 +267,8 @@
   */
 
 /** @defgroup SPDIFRX_V_Mask SPDIFRX Validity Mask
-* @{
-*/
+  * @{
+  */
 #define SPDIFRX_VALIDITYMASK_OFF    ((uint32_t)0x00000000U)
 #define SPDIFRX_VALIDITYMASK_ON     ((uint32_t)SPDIFRX_CR_VMSK)
 /**
@@ -368,10 +368,10 @@
   */
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
 #define __HAL_SPDIFRX_RESET_HANDLE_STATE(__HANDLE__) do{\
-                                                      (__HANDLE__)->State = HAL_SPDIFRX_STATE_RESET;\
-                                                      (__HANDLE__)->MspInitCallback = NULL;\
-                                                      (__HANDLE__)->MspDeInitCallback = NULL;\
-                                                     }while(0)
+                                                         (__HANDLE__)->State = HAL_SPDIFRX_STATE_RESET;\
+                                                         (__HANDLE__)->MspInitCallback = NULL;\
+                                                         (__HANDLE__)->MspDeInitCallback = NULL;\
+                                                       }while(0)
 #else
 #define __HAL_SPDIFRX_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPDIFRX_STATE_RESET)
 #endif /* USE_HAL_SPDIFRX_REGISTER_CALLBACKS */
@@ -410,7 +410,8 @@
   * @retval None
   */
 #define __HAL_SPDIFRX_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR |= (__INTERRUPT__))
-#define __HAL_SPDIFRX_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR &= (uint16_t)(~(__INTERRUPT__)))
+#define __HAL_SPDIFRX_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->IMR\
+                                                             &= (uint16_t)(~(__INTERRUPT__)))
 
 /** @brief  Checks if the specified SPDIFRX interrupt source is enabled or disabled.
   * @param  __HANDLE__    specifies the SPDIFRX Handle.
@@ -425,7 +426,8 @@
   *            @arg SPDIFRX_IT_IFEIE
   * @retval The new state of __IT__ (TRUE or FALSE).
   */
-#define __HAL_SPDIFRX_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IMR & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
+#define __HAL_SPDIFRX_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->IMR\
+                                                                  & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
 
 /** @brief  Checks whether the specified SPDIFRX flag is set or not.
   * @param  __HANDLE__  specifies the SPDIFRX Handle.
@@ -442,7 +444,8 @@
   *            @arg SPDIFRX_FLAG_TERR
   * @retval The new state of __FLAG__ (TRUE or FALSE).
   */
-#define __HAL_SPDIFRX_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__)) ? SET : RESET)
+#define __HAL_SPDIFRX_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->SR)\
+                                                        & (__FLAG__)) == (__FLAG__)) ? SET : RESET)
 
 /** @brief  Clears the specified SPDIFRX SR flag, in setting the proper IFCR register bit.
   * @param  __HANDLE__    specifies the USART Handle.
@@ -471,15 +474,17 @@
   */
 /* Initialization/de-initialization functions  **********************************/
 HAL_StatusTypeDef HAL_SPDIFRX_Init(SPDIFRX_HandleTypeDef *hspdif);
-HAL_StatusTypeDef HAL_SPDIFRX_DeInit (SPDIFRX_HandleTypeDef *hspdif);
+HAL_StatusTypeDef HAL_SPDIFRX_DeInit(SPDIFRX_HandleTypeDef *hspdif);
 void HAL_SPDIFRX_MspInit(SPDIFRX_HandleTypeDef *hspdif);
 void HAL_SPDIFRX_MspDeInit(SPDIFRX_HandleTypeDef *hspdif);
 HAL_StatusTypeDef HAL_SPDIFRX_SetDataFormat(SPDIFRX_HandleTypeDef *hspdif, SPDIFRX_SetDataFormatTypeDef  sDataFormat);
 
 /* Callbacks Register/UnRegister functions  ***********************************/
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
-HAL_StatusTypeDef HAL_SPDIFRX_RegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID, pSPDIFRX_CallbackTypeDef pCallback);
-HAL_StatusTypeDef HAL_SPDIFRX_UnRegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID);
+HAL_StatusTypeDef HAL_SPDIFRX_RegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID,
+                                               pSPDIFRX_CallbackTypeDef pCallback);
+HAL_StatusTypeDef HAL_SPDIFRX_UnRegisterCallback(SPDIFRX_HandleTypeDef *hspdif,
+                                                 HAL_SPDIFRX_CallbackIDTypeDef CallbackID);
 #endif /* USE_HAL_SPDIFRX_REGISTER_CALLBACKS */
 /**
   * @}
@@ -489,9 +494,11 @@
   * @{
   */
 /* I/O operation functions  ***************************************************/
- /* Blocking mode: Polling */
-HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout);
-HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout);
+/* Blocking mode: Polling */
+HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size,
+                                              uint32_t Timeout);
+HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size,
+                                                 uint32_t Timeout);
 
 /* Non-Blocking mode: Interrupt */
 HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow_IT(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size);
@@ -517,8 +524,8 @@
   * @{
   */
 /* Peripheral Control and State functions  ************************************/
-HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef const * const hspdif);
-uint32_t HAL_SPDIFRX_GetError(SPDIFRX_HandleTypeDef const * const hspdif);
+HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef const *const hspdif);
+uint32_t HAL_SPDIFRX_GetError(SPDIFRX_HandleTypeDef const *const hspdif);
 /**
   * @}
   */
@@ -534,39 +541,39 @@
   * @{
   */
 #define IS_SPDIFRX_INPUT_SELECT(INPUT)      (((INPUT) == SPDIFRX_INPUT_IN1) || \
-                                            ((INPUT) == SPDIFRX_INPUT_IN2)  || \
-                                            ((INPUT) == SPDIFRX_INPUT_IN3)  || \
-                                            ((INPUT) == SPDIFRX_INPUT_IN0))
+                                             ((INPUT) == SPDIFRX_INPUT_IN2)  || \
+                                             ((INPUT) == SPDIFRX_INPUT_IN3)  || \
+                                             ((INPUT) == SPDIFRX_INPUT_IN0))
 
 #define IS_SPDIFRX_MAX_RETRIES(RET)         (((RET) == SPDIFRX_MAXRETRIES_NONE) || \
-                                            ((RET) == SPDIFRX_MAXRETRIES_3)     || \
-                                            ((RET) == SPDIFRX_MAXRETRIES_15)    || \
-                                            ((RET) == SPDIFRX_MAXRETRIES_63))
+                                             ((RET) == SPDIFRX_MAXRETRIES_3)     || \
+                                             ((RET) == SPDIFRX_MAXRETRIES_15)    || \
+                                             ((RET) == SPDIFRX_MAXRETRIES_63))
 
 #define IS_SPDIFRX_WAIT_FOR_ACTIVITY(VAL)   (((VAL) == SPDIFRX_WAITFORACTIVITY_ON) || \
-                                            ((VAL) == SPDIFRX_WAITFORACTIVITY_OFF))
+                                             ((VAL) == SPDIFRX_WAITFORACTIVITY_OFF))
 
 #define IS_PREAMBLE_TYPE_MASK(VAL)          (((VAL) == SPDIFRX_PREAMBLETYPEMASK_ON) || \
-                                            ((VAL) == SPDIFRX_PREAMBLETYPEMASK_OFF))
+                                             ((VAL) == SPDIFRX_PREAMBLETYPEMASK_OFF))
 
 #define IS_VALIDITY_MASK(VAL)               (((VAL) == SPDIFRX_VALIDITYMASK_OFF) || \
-                                            ((VAL) == SPDIFRX_VALIDITYMASK_ON))
+                                             ((VAL) == SPDIFRX_VALIDITYMASK_ON))
 
 #define IS_PARITY_ERROR_MASK(VAL)           (((VAL) == SPDIFRX_PARITYERRORMASK_OFF) || \
-                                            ((VAL) == SPDIFRX_PARITYERRORMASK_ON))
+                                             ((VAL) == SPDIFRX_PARITYERRORMASK_ON))
 
 #define IS_SPDIFRX_CHANNEL(CHANNEL)         (((CHANNEL) == SPDIFRX_CHANNEL_A) || \
-                                            ((CHANNEL) == SPDIFRX_CHANNEL_B))
+                                             ((CHANNEL) == SPDIFRX_CHANNEL_B))
 
 #define IS_SPDIFRX_DATA_FORMAT(FORMAT)      (((FORMAT) == SPDIFRX_DATAFORMAT_LSB) || \
-                                            ((FORMAT) == SPDIFRX_DATAFORMAT_MSB)  || \
-                                            ((FORMAT) == SPDIFRX_DATAFORMAT_32BITS))
+                                             ((FORMAT) == SPDIFRX_DATAFORMAT_MSB)  || \
+                                             ((FORMAT) == SPDIFRX_DATAFORMAT_32BITS))
 
 #define IS_STEREO_MODE(MODE)                (((MODE) == SPDIFRX_STEREOMODE_DISABLE) || \
-                                            ((MODE) == SPDIFRX_STEREOMODE_ENABLE))
+                                             ((MODE) == SPDIFRX_STEREOMODE_ENABLE))
 
 #define IS_CHANNEL_STATUS_MASK(VAL)         (((VAL) == SPDIFRX_CHANNELSTATUS_ON) || \
-                                            ((VAL) == SPDIFRX_CHANNELSTATUS_OFF))
+                                             ((VAL) == SPDIFRX_CHANNELSTATUS_OFF))
 
 /**
   * @}
@@ -594,4 +601,4 @@
 #endif
 
 
-#endif /* __STM32F7xx_HAL_SPDIFRX_H */
+#endif /* STM32F7xx_HAL_SPDIFRX_H */
diff --git a/Inc/stm32f7xx_hal_tim.h b/Inc/stm32f7xx_hal_tim.h
index 940c1d2..64d6ee1 100644
--- a/Inc/stm32f7xx_hal_tim.h
+++ b/Inc/stm32f7xx_hal_tim.h
@@ -737,6 +737,15 @@
   * @}
   */
 
+/** @defgroup TIM_CC_DMA_Request CCx DMA request selection
+  * @{
+  */
+#define TIM_CCDMAREQUEST_CC                 0x00000000U                         /*!< CCx DMA request sent when capture or compare match event occurs */
+#define TIM_CCDMAREQUEST_UPDATE             TIM_CR2_CCDS                        /*!< CCx DMA requests sent when update event occurs */
+/**
+  * @}
+  */
+
 /** @defgroup TIM_Flag_definition TIM Flag Definition
   * @{
   */
@@ -777,16 +786,16 @@
 /** @defgroup TIM_Clock_Source TIM Clock Source
   * @{
   */
-#define TIM_CLOCKSOURCE_ETRMODE2    TIM_SMCR_ETPS_1      /*!< External clock source mode 2                          */
 #define TIM_CLOCKSOURCE_INTERNAL    TIM_SMCR_ETPS_0      /*!< Internal clock source                                 */
+#define TIM_CLOCKSOURCE_ETRMODE1    TIM_TS_ETRF          /*!< External clock source mode 1 (ETRF)                   */
+#define TIM_CLOCKSOURCE_ETRMODE2    TIM_SMCR_ETPS_1      /*!< External clock source mode 2                          */
+#define TIM_CLOCKSOURCE_TI1ED       TIM_TS_TI1F_ED       /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */
+#define TIM_CLOCKSOURCE_TI1         TIM_TS_TI1FP1        /*!< External clock source mode 1 (TTI1FP1)                */
+#define TIM_CLOCKSOURCE_TI2         TIM_TS_TI2FP2        /*!< External clock source mode 1 (TTI2FP2)                */
 #define TIM_CLOCKSOURCE_ITR0        TIM_TS_ITR0          /*!< External clock source mode 1 (ITR0)                   */
 #define TIM_CLOCKSOURCE_ITR1        TIM_TS_ITR1          /*!< External clock source mode 1 (ITR1)                   */
 #define TIM_CLOCKSOURCE_ITR2        TIM_TS_ITR2          /*!< External clock source mode 1 (ITR2)                   */
 #define TIM_CLOCKSOURCE_ITR3        TIM_TS_ITR3          /*!< External clock source mode 1 (ITR3)                   */
-#define TIM_CLOCKSOURCE_TI1ED       TIM_TS_TI1F_ED       /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */
-#define TIM_CLOCKSOURCE_TI1         TIM_TS_TI1FP1        /*!< External clock source mode 1 (TTI1FP1)                */
-#define TIM_CLOCKSOURCE_TI2         TIM_TS_TI2FP2        /*!< External clock source mode 1 (TTI2FP2)                */
-#define TIM_CLOCKSOURCE_ETRMODE1    TIM_TS_ETRF          /*!< External clock source mode 1 (ETRF)                   */
 /**
   * @}
   */
@@ -1699,6 +1708,17 @@
     TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
   }while(0)
 
+/** @brief  Select the Capture/compare DMA request source.
+  * @param  __HANDLE__ specifies the TIM Handle.
+  * @param  __CCDMA__ specifies Capture/compare DMA request source
+  *          This parameter can be one of the following values:
+  *            @arg TIM_CCDMAREQUEST_CC: CCx DMA request generated on Capture/Compare event
+  *            @arg TIM_CCDMAREQUEST_UPDATE: CCx DMA request generated on Update event
+  * @retval None
+  */
+#define __HAL_TIM_SELECT_CCDMAREQUEST(__HANDLE__, __CCDMA__)    \
+  MODIFY_REG((__HANDLE__)->Instance->CR2, TIM_CR2_CCDS, (__CCDMA__))
+
 /**
   * @}
   */
@@ -1783,7 +1803,7 @@
                                             ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
 
 #define IS_TIM_UIFREMAP_MODE(__MODE__)     (((__MODE__) == TIM_UIFREMAP_DISABLE) || \
-                                            ((__MODE__) == TIM_UIFREMAP_ENALE))
+                                            ((__MODE__) == TIM_UIFREMAP_ENABLE))
 
 #define IS_TIM_CLOCKDIVISION_DIV(__DIV__)  (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
                                             ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
@@ -1843,20 +1863,23 @@
 #define IS_TIM_OPM_CHANNELS(__CHANNEL__)   (((__CHANNEL__) == TIM_CHANNEL_1) || \
                                             ((__CHANNEL__) == TIM_CHANNEL_2))
 
+#define IS_TIM_PERIOD(__HANDLE__, __PERIOD__) \
+  ((IS_TIM_32B_COUNTER_INSTANCE(((__HANDLE__)->Instance)) == 0U) ? (((__PERIOD__) > 0U) && ((__PERIOD__) <= 0x0000FFFFU)) : ((__PERIOD__) > 0U))
+
 #define IS_TIM_COMPLEMENTARY_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \
                                                     ((__CHANNEL__) == TIM_CHANNEL_2) || \
                                                     ((__CHANNEL__) == TIM_CHANNEL_3))
 
 #define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \
+                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1) || \
                                        ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \
-                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0)     || \
-                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1)     || \
-                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2)     || \
-                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3)     || \
                                        ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED)    || \
                                        ((__CLOCK__) == TIM_CLOCKSOURCE_TI1)      || \
                                        ((__CLOCK__) == TIM_CLOCKSOURCE_TI2)      || \
-                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1))
+                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0)     || \
+                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1)     || \
+                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2)     || \
+                                       ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3))
 
 #define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED)    || \
                                             ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \
@@ -1965,13 +1988,13 @@
                                    ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM1) || \
                                    ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM2))
 
-#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \
-                                                 ((__SELECTION__) == TIM_TS_ITR1) || \
-                                                 ((__SELECTION__) == TIM_TS_ITR2) || \
-                                                 ((__SELECTION__) == TIM_TS_ITR3) || \
+#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0)    || \
+                                                 ((__SELECTION__) == TIM_TS_ITR1)    || \
+                                                 ((__SELECTION__) == TIM_TS_ITR2)    || \
+                                                 ((__SELECTION__) == TIM_TS_ITR3)    || \
                                                  ((__SELECTION__) == TIM_TS_TI1F_ED) || \
-                                                 ((__SELECTION__) == TIM_TS_TI1FP1) || \
-                                                 ((__SELECTION__) == TIM_TS_TI2FP2) || \
+                                                 ((__SELECTION__) == TIM_TS_TI1FP1)  || \
+                                                 ((__SELECTION__) == TIM_TS_TI2FP2)  || \
                                                  ((__SELECTION__) == TIM_TS_ETRF))
 
 #define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \
diff --git a/Inc/stm32f7xx_hal_uart.h b/Inc/stm32f7xx_hal_uart.h
index 650edd4..f32ca19 100644
--- a/Inc/stm32f7xx_hal_uart.h
+++ b/Inc/stm32f7xx_hal_uart.h
@@ -186,7 +186,7 @@
 /**
   * @brief HAL UART Reception type definition
   * @note  HAL UART Reception type value aims to identify which type of Reception is ongoing.
-  *        It is expected to admit following values :
+  *        This parameter can be a value of @ref UART_Reception_Type_Values :
   *           HAL_UART_RECEPTION_STANDARD         = 0x00U,
   *           HAL_UART_RECEPTION_TOIDLE           = 0x01U,
   *           HAL_UART_RECEPTION_TORTO            = 0x02U,
@@ -195,6 +195,17 @@
 typedef uint32_t HAL_UART_RxTypeTypeDef;
 
 /**
+  * @brief HAL UART Rx Event type definition
+  * @note  HAL UART Rx Event type value aims to identify which type of Event has occurred
+  *        leading to call of the RxEvent callback.
+  *        This parameter can be a value of @ref UART_RxEvent_Type_Values :
+  *           HAL_UART_RXEVENT_TC                 = 0x00U,
+  *           HAL_UART_RXEVENT_HT                 = 0x01U,
+  *           HAL_UART_RXEVENT_IDLE               = 0x02U,
+  */
+typedef uint32_t HAL_UART_RxEventTypeTypeDef;
+
+/**
   * @brief  UART handle Structure definition
   */
 typedef struct __UART_HandleTypeDef
@@ -221,6 +232,8 @@
 
   __IO HAL_UART_RxTypeTypeDef ReceptionType;         /*!< Type of ongoing reception          */
 
+  __IO HAL_UART_RxEventTypeTypeDef RxEventType;      /*!< Type of Rx Event                   */
+
   void (*RxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */
 
   void (*TxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */
@@ -782,7 +795,7 @@
   * @}
   */
 
-/** @defgroup UART_RECEPTION_TYPE_Values  UART Reception type values
+/** @defgroup UART_Reception_Type_Values  UART Reception type values
   * @{
   */
 #define HAL_UART_RECEPTION_STANDARD          (0x00000000U)             /*!< Standard reception                       */
@@ -793,6 +806,16 @@
   * @}
   */
 
+/** @defgroup UART_RxEvent_Type_Values  UART RxEvent type values
+  * @{
+  */
+#define HAL_UART_RXEVENT_TC                  (0x00000000U)             /*!< RxEvent linked to Transfer Complete event */
+#define HAL_UART_RXEVENT_HT                  (0x00000001U)             /*!< RxEvent linked to Half Transfer event     */
+#define HAL_UART_RXEVENT_IDLE                (0x00000002U)             /*!< RxEvent linked to IDLE event              */
+/**
+  * @}
+  */
+
 /**
   * @}
   */
@@ -1585,8 +1608,8 @@
   */
 
 /* Peripheral State and Errors functions  **************************************************/
-HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart);
-uint32_t              HAL_UART_GetError(UART_HandleTypeDef *huart);
+HAL_UART_StateTypeDef HAL_UART_GetState(const UART_HandleTypeDef *huart);
+uint32_t              HAL_UART_GetError(const UART_HandleTypeDef *huart);
 
 /**
   * @}
diff --git a/Inc/stm32f7xx_hal_uart_ex.h b/Inc/stm32f7xx_hal_uart_ex.h
index e831e6b..a2ad876 100644
--- a/Inc/stm32f7xx_hal_uart_ex.h
+++ b/Inc/stm32f7xx_hal_uart_ex.h
@@ -130,7 +130,7 @@
 HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart);
 HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart);
 
-#endif/* USART_CR1_UESM */
+#endif /* USART_CR1_UESM */
 #if defined(USART_CR3_UCESM)
 HAL_StatusTypeDef HAL_UARTEx_EnableClockStopMode(UART_HandleTypeDef *huart);
 HAL_StatusTypeDef HAL_UARTEx_DisableClockStopMode(UART_HandleTypeDef *huart);
@@ -144,6 +144,8 @@
 HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
 
+HAL_UART_RxEventTypeTypeDef HAL_UARTEx_GetRxEventType(UART_HandleTypeDef *huart);
+
 
 /**
   * @}
diff --git a/Inc/stm32f7xx_hal_usart.h b/Inc/stm32f7xx_hal_usart.h
index 7af5c52..e0e8447 100644
--- a/Inc/stm32f7xx_hal_usart.h
+++ b/Inc/stm32f7xx_hal_usart.h
@@ -806,7 +806,8 @@
   */
 
 /* IO operation functions *****************************************************/
-HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const 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, const uint8_t *pTxData, uint8_t *pRxData,
                                             uint16_t Size, uint32_t Timeout);
@@ -843,8 +844,8 @@
   */
 
 /* Peripheral State and Error functions ***************************************/
-HAL_USART_StateTypeDef HAL_USART_GetState(USART_HandleTypeDef *husart);
-uint32_t               HAL_USART_GetError(USART_HandleTypeDef *husart);
+HAL_USART_StateTypeDef HAL_USART_GetState(const USART_HandleTypeDef *husart);
+uint32_t               HAL_USART_GetError(const USART_HandleTypeDef *husart);
 
 /**
   * @}
diff --git a/Inc/stm32f7xx_ll_cortex.h b/Inc/stm32f7xx_ll_cortex.h
index 8e2184f..bb589ab 100644
--- a/Inc/stm32f7xx_ll_cortex.h
+++ b/Inc/stm32f7xx_ll_cortex.h
@@ -164,6 +164,8 @@
 #define LL_MPU_TEX_LEVEL0                  (0x00U << MPU_RASR_TEX_Pos) /*!< b000 for TEX bits */
 #define LL_MPU_TEX_LEVEL1                  (0x01U << MPU_RASR_TEX_Pos) /*!< b001 for TEX bits */
 #define LL_MPU_TEX_LEVEL2                  (0x02U << MPU_RASR_TEX_Pos) /*!< b010 for TEX bits */
+
+/* Legacy Define */
 #define LL_MPU_TEX_LEVEL4                  (0x04U << MPU_RASR_TEX_Pos) /*!< b100 for TEX bits */
 /**
   * @}
@@ -572,7 +574,7 @@
   *           or @ref LL_MPU_REGION_SIZE_1GB or @ref LL_MPU_REGION_SIZE_2GB or @ref LL_MPU_REGION_SIZE_4GB
   *         @arg @ref LL_MPU_REGION_NO_ACCESS or @ref LL_MPU_REGION_PRIV_RW or @ref LL_MPU_REGION_PRIV_RW_URO or @ref LL_MPU_REGION_FULL_ACCESS
   *           or @ref LL_MPU_REGION_PRIV_RO or @ref LL_MPU_REGION_PRIV_RO_URO
-  *         @arg @ref LL_MPU_TEX_LEVEL0 or @ref LL_MPU_TEX_LEVEL1 or @ref LL_MPU_TEX_LEVEL2 or @ref LL_MPU_TEX_LEVEL4
+  *         @arg @ref LL_MPU_TEX_LEVEL0 or @ref LL_MPU_TEX_LEVEL1 or @ref LL_MPU_TEX_LEVEL2
   *         @arg @ref LL_MPU_INSTRUCTION_ACCESS_ENABLE or  @ref LL_MPU_INSTRUCTION_ACCESS_DISABLE
   *         @arg @ref LL_MPU_ACCESS_SHAREABLE or @ref LL_MPU_ACCESS_NOT_SHAREABLE
   *         @arg @ref LL_MPU_ACCESS_CACHEABLE or @ref LL_MPU_ACCESS_NOT_CACHEABLE
diff --git a/Inc/stm32f7xx_ll_fmc.h b/Inc/stm32f7xx_ll_fmc.h
index 4f704ab..250ecca 100644
--- a/Inc/stm32f7xx_ll_fmc.h
+++ b/Inc/stm32f7xx_ll_fmc.h
@@ -597,11 +597,13 @@
   * @}
   */
 
+#if defined(FMC_BCR1_WFDIS)
 /** @defgroup FMC_Write_FIFO FMC Write FIFO
   * @{
   */
 #define FMC_WRITE_FIFO_DISABLE                  FMC_BCR1_WFDIS
 #define FMC_WRITE_FIFO_ENABLE                   (0x00000000U)
+#endif /* FMC_BCR1_WFDIS */
 /**
   * @}
   */
diff --git a/Inc/stm32f7xx_ll_rtc.h b/Inc/stm32f7xx_ll_rtc.h
index f040517..64dfa8c 100644
--- a/Inc/stm32f7xx_ll_rtc.h
+++ b/Inc/stm32f7xx_ll_rtc.h
@@ -17,8 +17,8 @@
   */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __STM32F7xx_LL_RTC_H
-#define __STM32F7xx_LL_RTC_H
+#ifndef STM32F7xx_LL_RTC_H
+#define STM32F7xx_LL_RTC_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -45,7 +45,7 @@
   */
 /* Masks Definition */
 #define RTC_INIT_MASK                 0xFFFFFFFFU
-#define RTC_RSF_MASK                  0xFFFFFF5FU
+#define RTC_RSF_MASK                  ((uint32_t)~(RTC_ISR_INIT | RTC_ISR_RSF))
 
 /* Write protection defines */
 #define RTC_WRITE_PROTECTION_DISABLE  ((uint8_t)0xFFU)
@@ -86,19 +86,19 @@
 {
   uint32_t HourFormat;   /*!< Specifies the RTC Hours Format.
                               This parameter can be a value of @ref RTC_LL_EC_HOURFORMAT
-                              
+
                               This feature can be modified afterwards using unitary function
                               @ref LL_RTC_SetHourFormat(). */
 
   uint32_t AsynchPrescaler; /*!< Specifies the RTC Asynchronous Predivider value.
                               This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F
-                              
+
                               This feature can be modified afterwards using unitary function
                               @ref LL_RTC_SetAsynchPrescaler(). */
 
   uint32_t SynchPrescaler;  /*!< Specifies the RTC Synchronous Predivider value.
                               This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7FFF
-                              
+
                               This feature can be modified afterwards using unitary function
                               @ref LL_RTC_SetSynchPrescaler(). */
 } LL_RTC_InitTypeDef;
@@ -166,8 +166,8 @@
   uint32_t AlarmMask;            /*!< Specifies the RTC Alarm Masks.
                                       This parameter can be a value of @ref RTC_LL_EC_ALMA_MASK for ALARM A or @ref RTC_LL_EC_ALMB_MASK for ALARM B.
 
-                                      This feature can be modified afterwards using unitary function @ref LL_RTC_ALMA_SetMask() for ALARM A 
-                                      or @ref LL_RTC_ALMB_SetMask() for ALARM B
+                                      This feature can be modified afterwards using unitary function @ref LL_RTC_ALMA_SetMask() for ALARM A
+                                      or @ref LL_RTC_ALMB_SetMask() for ALARM B.
                                  */
 
   uint32_t AlarmDateWeekDaySel;  /*!< Specifies the RTC Alarm is on day or WeekDay.
@@ -204,8 +204,8 @@
 /** @defgroup RTC_LL_EC_FORMAT FORMAT
   * @{
   */
-#define LL_RTC_FORMAT_BIN                  0x000000000U /*!< Binary data format */
-#define LL_RTC_FORMAT_BCD                  0x000000001U /*!< BCD data format */
+#define LL_RTC_FORMAT_BIN                  0x00000000U /*!< Binary data format */
+#define LL_RTC_FORMAT_BCD                  0x00000001U /*!< BCD data format */
 /**
   * @}
   */
@@ -385,11 +385,11 @@
 /** @defgroup RTC_LL_EC_ALMB_MASK  ALARMB MASK
   * @{
   */
-#define LL_RTC_ALMB_MASK_NONE              0x00000000U             /*!< No masks applied on Alarm B*/
+#define LL_RTC_ALMB_MASK_NONE              0x00000000U             /*!< No masks applied on Alarm B                */
 #define LL_RTC_ALMB_MASK_DATEWEEKDAY       RTC_ALRMBR_MSK4         /*!< Date/day do not care in Alarm B comparison */
-#define LL_RTC_ALMB_MASK_HOURS             RTC_ALRMBR_MSK3         /*!< Hours do not care in Alarm B comparison */
-#define LL_RTC_ALMB_MASK_MINUTES           RTC_ALRMBR_MSK2         /*!< Minutes do not care in Alarm B comparison */
-#define LL_RTC_ALMB_MASK_SECONDS           RTC_ALRMBR_MSK1         /*!< Seconds do not care in Alarm B comparison */
+#define LL_RTC_ALMB_MASK_HOURS             RTC_ALRMBR_MSK3         /*!< Hours do not care in Alarm B comparison    */
+#define LL_RTC_ALMB_MASK_MINUTES           RTC_ALRMBR_MSK2         /*!< Minutes do not care in Alarm B comparison  */
+#define LL_RTC_ALMB_MASK_SECONDS           RTC_ALRMBR_MSK1         /*!< Seconds do not care in Alarm B comparison  */
 #define LL_RTC_ALMB_MASK_ALL               (RTC_ALRMBR_MSK4 | RTC_ALRMBR_MSK3 | RTC_ALRMBR_MSK2 | RTC_ALRMBR_MSK1) /*!< Masks all */
 /**
   * @}
@@ -452,7 +452,6 @@
   * @}
   */
 
-#if defined(RTC_TAMPCR_TAMPPRCH)
 /** @defgroup RTC_LL_EC_TAMPER_DURATION  TAMPER DURATION
   * @{
   */
@@ -463,9 +462,7 @@
 /**
   * @}
   */
-#endif /* RTC_TAMPCR_TAMPPRCH */
 
-#if defined(RTC_TAMPCR_TAMPFLT)
 /** @defgroup RTC_LL_EC_TAMPER_FILTER  TAMPER FILTER
   * @{
   */
@@ -476,9 +473,7 @@
 /**
   * @}
   */
-#endif /* RTC_TAMPCR_TAMPFLT */
 
-#if defined(RTC_TAMPCR_TAMPFREQ)
 /** @defgroup RTC_LL_EC_TAMPER_SAMPLFREQDIV  TAMPER SAMPLING FREQUENCY DIVIDER
   * @{
   */
@@ -493,14 +488,13 @@
 /**
   * @}
   */
-#endif /* RTC_TAMPCR_TAMPFREQ */
 
 /** @defgroup RTC_LL_EC_TAMPER_ACTIVELEVEL  TAMPER ACTIVE LEVEL
   * @{
   */
-#define LL_RTC_TAMPER_ACTIVELEVEL_TAMP1    RTC_TAMPCR_TAMP1TRG /*!< RTC_TAMP1 input falling edge (if TAMPFLT = 00) or staying high (if TAMPFLT != 00) triggers a tamper detection event*/
-#define LL_RTC_TAMPER_ACTIVELEVEL_TAMP2    RTC_TAMPCR_TAMP2TRG /*!< RTC_TAMP2 input falling edge (if TAMPFLT = 00) or staying high (if TAMPFLT != 00) triggers a tamper detection event*/
-#define LL_RTC_TAMPER_ACTIVELEVEL_TAMP3    RTC_TAMPCR_TAMP3TRG /*!< RTC_TAMP3 input falling edge (if TAMPFLT = 00) or staying high (if TAMPFLT != 00) triggers a tamper detection event*/
+#define LL_RTC_TAMPER_ACTIVELEVEL_TAMP1    RTC_TAMPCR_TAMP1TRG /*!< RTC_TAMP1 input falling edge (if TAMPFLT = 00) or staying high (if TAMPFLT != 00) triggers a tamper detection event */
+#define LL_RTC_TAMPER_ACTIVELEVEL_TAMP2    RTC_TAMPCR_TAMP2TRG /*!< RTC_TAMP2 input falling edge (if TAMPFLT = 00) or staying high (if TAMPFLT != 00) triggers a tamper detection event */
+#define LL_RTC_TAMPER_ACTIVELEVEL_TAMP3    RTC_TAMPCR_TAMP3TRG /*!< RTC_TAMP3 input falling edge (if TAMPFLT = 00) or staying high (if TAMPFLT != 00) triggers a tamper detection event */
 /**
   * @}
   */
@@ -526,7 +520,6 @@
 #define LL_RTC_BKP_DR2                     0x00000002U
 #define LL_RTC_BKP_DR3                     0x00000003U
 #define LL_RTC_BKP_DR4                     0x00000004U
-#if RTC_BKP_NUMBER > 5
 #define LL_RTC_BKP_DR5                     0x00000005U
 #define LL_RTC_BKP_DR6                     0x00000006U
 #define LL_RTC_BKP_DR7                     0x00000007U
@@ -538,16 +531,10 @@
 #define LL_RTC_BKP_DR13                    0x0000000DU
 #define LL_RTC_BKP_DR14                    0x0000000EU
 #define LL_RTC_BKP_DR15                    0x0000000FU
-#endif /* RTC_BKP_NUMBER > 5 */
-
-#if RTC_BKP_NUMBER > 16
 #define LL_RTC_BKP_DR16                    0x00000010U
 #define LL_RTC_BKP_DR17                    0x00000011U
 #define LL_RTC_BKP_DR18                    0x00000012U
 #define LL_RTC_BKP_DR19                    0x00000013U
-#endif /* RTC_BKP_NUMBER > 16 */
-
-#if RTC_BKP_NUMBER > 20
 #define LL_RTC_BKP_DR20                    0x00000014U
 #define LL_RTC_BKP_DR21                    0x00000015U
 #define LL_RTC_BKP_DR22                    0x00000016U
@@ -560,7 +547,6 @@
 #define LL_RTC_BKP_DR29                    0x0000001DU
 #define LL_RTC_BKP_DR30                    0x0000001EU
 #define LL_RTC_BKP_DR31                    0x0000001FU
-#endif /* RTC_BKP_NUMBER > 20 */
 /**
   * @}
   */
@@ -575,7 +561,7 @@
   * @}
   */
 
-/** @defgroup RTC_LL_EC_CALIB_INSERTPULSE  Calibration pulse insertion 
+/** @defgroup RTC_LL_EC_CALIB_INSERTPULSE  Calibration pulse insertion
   * @{
   */
 #define LL_RTC_CALIB_INSERTPULSE_NONE      0x00000000U           /*!< No RTCCLK pulses are added */
@@ -594,6 +580,15 @@
   * @}
   */
 
+/** @defgroup RTC_LL_EC_TSINSEL  TIMESTAMP mapping
+  * @{
+  */
+#define LL_RTC_TimeStampPin_Default        0x00000000U           /*!< Use RTC_AF1 as TIMESTAMP */
+#define LL_RTC_TimeStampPin_Pos1           RTC_OR_TSINSEL        /*!< Use RTC_AF2 as TIMESTAMP */
+/**
+  * @}
+  */
+
 /**
   * @}
   */
@@ -922,7 +917,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsShadowRegBypassEnabled(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->CR, RTC_CR_BYPSHAD) == (RTC_CR_BYPSHAD));
+  return ((READ_BIT(RTCx->CR, RTC_CR_BYPSHAD) == (RTC_CR_BYPSHAD)) ? 1UL : 0UL);
 }
 
 /**
@@ -1128,7 +1123,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_TIME_GetMinute(RTC_TypeDef *RTCx)
 {
-  return (uint32_t)(READ_BIT(RTCx->TR, (RTC_TR_MNT | RTC_TR_MNU))>> RTC_TR_MNU_Pos);
+  return (uint32_t)(READ_BIT(RTCx->TR, (RTC_TR_MNT | RTC_TR_MNU)) >> RTC_TR_MNU_Pos);
 }
 
 /**
@@ -1189,12 +1184,12 @@
   */
 __STATIC_INLINE void LL_RTC_TIME_Config(RTC_TypeDef *RTCx, uint32_t Format12_24, uint32_t Hours, uint32_t Minutes, uint32_t Seconds)
 {
-  uint32_t temp = 0U;
+  uint32_t temp;
 
-  temp = Format12_24                                                                                    | \
-         (((Hours & 0xF0U) << (RTC_TR_HT_Pos - 4U)) | ((Hours & 0x0FU) << RTC_TR_HU_Pos))     | \
+  temp = Format12_24                                                                            | \
+         (((Hours   & 0xF0U) << (RTC_TR_HT_Pos  - 4U)) | ((Hours & 0x0FU) << RTC_TR_HU_Pos))    | \
          (((Minutes & 0xF0U) << (RTC_TR_MNT_Pos - 4U)) | ((Minutes & 0x0FU) << RTC_TR_MNU_Pos)) | \
-         (((Seconds & 0xF0U) << (RTC_TR_ST_Pos - 4U)) | ((Seconds & 0x0FU) << RTC_TR_SU_Pos));
+         (((Seconds & 0xF0U) << (RTC_TR_ST_Pos  - 4U)) | ((Seconds & 0x0FU) << RTC_TR_SU_Pos));
   MODIFY_REG(RTCx->TR, (RTC_TR_PM | RTC_TR_HT | RTC_TR_HU | RTC_TR_MNT | RTC_TR_MNU | RTC_TR_ST | RTC_TR_SU), temp);
 }
 
@@ -1217,12 +1212,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_TIME_Get(RTC_TypeDef *RTCx)
 {
-  uint32_t temp = 0U;
-  
-  temp = READ_BIT(RTCx->TR, (RTC_TR_HT | RTC_TR_HU | RTC_TR_MNT | RTC_TR_MNU | RTC_TR_ST | RTC_TR_SU));
-  return (uint32_t)((((((temp & RTC_TR_HT) >> RTC_TR_HT_Pos) << 4U) | ((temp & RTC_TR_HU) >> RTC_TR_HU_Pos)) << RTC_OFFSET_HOUR) |  \
-                    (((((temp & RTC_TR_MNT) >> RTC_TR_MNT_Pos) << 4U) | ((temp & RTC_TR_MNU) >> RTC_TR_MNU_Pos)) << RTC_OFFSET_MINUTE) | \
-                    ((((temp & RTC_TR_ST) >> RTC_TR_ST_Pos) << 4U) | ((temp & RTC_TR_SU) >> RTC_TR_SU_Pos)));
+  return (uint32_t)(READ_BIT(RTCx->TR, (RTC_TR_HT | RTC_TR_HU | RTC_TR_MNT | RTC_TR_MNU | RTC_TR_ST | RTC_TR_SU)));
 }
 
 /**
@@ -1257,7 +1247,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_TIME_IsDayLightStoreEnabled(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->CR, RTC_CR_BKP) == (RTC_CR_BKP));
+  return ((READ_BIT(RTCx->CR, RTC_CR_BKP) == (RTC_CR_BKP)) ? 1UL : 0UL);
 }
 
 /**
@@ -1285,17 +1275,18 @@
 }
 
 /**
-  * @brief  Get Sub second value in the synchronous prescaler counter.
+  * @brief  Get subseconds value in the synchronous prescaler counter.
   * @note  You can use both SubSeconds value and SecondFraction (PREDIV_S through
   *        LL_RTC_GetSynchPrescaler function) terms returned to convert Calendar
   *        SubSeconds value in second fraction ratio with time unit following
   *        generic formula:
-  *          ==> Seconds fraction ratio * time_unit= [(SecondFraction-SubSeconds)/(SecondFraction+1)] * time_unit
+  *          ==> Seconds fraction ratio * time_unit =
+  *                 [(SecondFraction-SubSeconds)/(SecondFraction+1)] * time_unit
   *        This conversion can be performed only if no shift operation is pending
   *        (ie. SHFP=0) when PREDIV_S >= SS.
   * @rmtoll SSR          SS            LL_RTC_TIME_GetSubSecond
   * @param  RTCx RTC Instance
-  * @retval Sub second value (number between 0 and 65535)
+  * @retval Subseconds value (number between 0 and 65535)
   */
 __STATIC_INLINE uint32_t LL_RTC_TIME_GetSubSecond(RTC_TypeDef *RTCx)
 {
@@ -1449,7 +1440,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_DATE_GetMonth(RTC_TypeDef *RTCx)
 {
-  return (uint32_t)((READ_BIT(RTCx->DR, (RTC_DR_MT | RTC_DR_MU)))>> RTC_DR_MU_Pos);
+  return (uint32_t)((READ_BIT(RTCx->DR, (RTC_DR_MT | RTC_DR_MU))) >> RTC_DR_MU_Pos);
 }
 
 /**
@@ -1519,12 +1510,12 @@
   */
 __STATIC_INLINE void LL_RTC_DATE_Config(RTC_TypeDef *RTCx, uint32_t WeekDay, uint32_t Day, uint32_t Month, uint32_t Year)
 {
-  uint32_t temp = 0U;
+  uint32_t temp;
 
-  temp = (WeekDay << RTC_DR_WDU_Pos)                                                        | \
-         (((Year & 0xF0U) << (RTC_DR_YT_Pos - 4U)) | ((Year & 0x0FU) << RTC_DR_YU_Pos))   | \
+  temp = (  WeekDay                                                    << RTC_DR_WDU_Pos) | \
+         (((Year  & 0xF0U) << (RTC_DR_YT_Pos - 4U)) | ((Year  & 0x0FU) << RTC_DR_YU_Pos)) | \
          (((Month & 0xF0U) << (RTC_DR_MT_Pos - 4U)) | ((Month & 0x0FU) << RTC_DR_MU_Pos)) | \
-         (((Day & 0xF0U) << (RTC_DR_DT_Pos - 4U)) | ((Day & 0x0FU) << RTC_DR_DU_Pos));
+         (((Day   & 0xF0U) << (RTC_DR_DT_Pos - 4U)) | ((Day   & 0x0FU) << RTC_DR_DU_Pos));
 
   MODIFY_REG(RTCx->DR, (RTC_DR_WDU | RTC_DR_MT | RTC_DR_MU | RTC_DR_DT | RTC_DR_DU | RTC_DR_YT | RTC_DR_YU), temp);
 }
@@ -1547,13 +1538,14 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_DATE_Get(RTC_TypeDef *RTCx)
 {
-  uint32_t temp = 0U;
-  
+  uint32_t temp;
+
   temp = READ_BIT(RTCx->DR, (RTC_DR_WDU | RTC_DR_MT | RTC_DR_MU | RTC_DR_DT | RTC_DR_DU | RTC_DR_YT | RTC_DR_YU));
-  return (uint32_t)((((temp & RTC_DR_WDU) >> RTC_DR_WDU_Pos) << RTC_OFFSET_WEEKDAY) | \
-                    (((((temp & RTC_DR_DT) >> RTC_DR_DT_Pos) << 4U) | ((temp & RTC_DR_DU) >> RTC_DR_DU_Pos)) << RTC_OFFSET_DAY) | \
-                    (((((temp & RTC_DR_MT) >> RTC_DR_MT_Pos) << 4U) | ((temp & RTC_DR_MU) >> RTC_DR_MU_Pos)) << RTC_OFFSET_MONTH) | \
-                    ((((temp & RTC_DR_YT) >> RTC_DR_YT_Pos) << 4U) | ((temp & RTC_DR_YU) >> RTC_DR_YU_Pos)));
+
+  return (uint32_t)((((temp &              RTC_DR_WDU) >> RTC_DR_WDU_Pos) << RTC_OFFSET_WEEKDAY) | \
+                    (((temp & (RTC_DR_DT | RTC_DR_DU)) >> RTC_DR_DU_Pos)  << RTC_OFFSET_DAY)     | \
+                    (((temp & (RTC_DR_MT | RTC_DR_MU)) >> RTC_DR_MU_Pos)  << RTC_OFFSET_MONTH)   | \
+                     ((temp & (RTC_DR_YT | RTC_DR_YU)) >> RTC_DR_YU_Pos));
 }
 
 /**
@@ -1768,7 +1760,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_ALMA_GetHour(RTC_TypeDef *RTCx)
 {
-  return (uint32_t)(( READ_BIT(RTCx->ALRMAR, (RTC_ALRMAR_HT | RTC_ALRMAR_HU))) >> RTC_ALRMAR_HU_Pos);
+  return (uint32_t)((READ_BIT(RTCx->ALRMAR, (RTC_ALRMAR_HT | RTC_ALRMAR_HU))) >> RTC_ALRMAR_HU_Pos);
 }
 
 /**
@@ -1847,11 +1839,12 @@
   */
 __STATIC_INLINE void LL_RTC_ALMA_ConfigTime(RTC_TypeDef *RTCx, uint32_t Format12_24, uint32_t Hours, uint32_t Minutes, uint32_t Seconds)
 {
-  uint32_t temp = 0U;
+  uint32_t temp;
 
-  temp = Format12_24 | (((Hours & 0xF0U) << (RTC_ALRMAR_HT_Pos - 4U)) | ((Hours & 0x0FU) << RTC_ALRMAR_HU_Pos))    | \
+  temp = Format12_24                                                                                    | \
+         (((Hours   & 0xF0U) << (RTC_ALRMAR_HT_Pos  - 4U)) | ((Hours   & 0x0FU) << RTC_ALRMAR_HU_Pos))  | \
          (((Minutes & 0xF0U) << (RTC_ALRMAR_MNT_Pos - 4U)) | ((Minutes & 0x0FU) << RTC_ALRMAR_MNU_Pos)) | \
-         (((Seconds & 0xF0U) << (RTC_ALRMAR_ST_Pos - 4U)) | ((Seconds & 0x0FU) << RTC_ALRMAR_SU_Pos));
+         (((Seconds & 0xF0U) << (RTC_ALRMAR_ST_Pos  - 4U)) | ((Seconds & 0x0FU) << RTC_ALRMAR_SU_Pos));
 
   MODIFY_REG(RTCx->ALRMAR, RTC_ALRMAR_PM | RTC_ALRMAR_HT | RTC_ALRMAR_HU | RTC_ALRMAR_MNT | RTC_ALRMAR_MNU | RTC_ALRMAR_ST | RTC_ALRMAR_SU, temp);
 }
@@ -1875,7 +1868,8 @@
 }
 
 /**
-  * @brief  Set Alarm A Mask the most-significant bits starting at this bit
+  * @brief  Mask the most-significant bits of the subseconds field starting from
+  *         the bit specified in parameter Mask
   * @note This register can be written only when ALRAE is reset in RTC_CR register,
   *       or in initialization mode.
   * @rmtoll ALRMASSR     MASKSS        LL_RTC_ALMA_SetSubSecondMask
@@ -1889,7 +1883,7 @@
 }
 
 /**
-  * @brief  Get Alarm A Mask the most-significant bits starting at this bit
+  * @brief  Get Alarm A subseconds mask
   * @rmtoll ALRMASSR     MASKSS        LL_RTC_ALMA_GetSubSecondMask
   * @param  RTCx RTC Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0xF
@@ -1900,7 +1894,7 @@
 }
 
 /**
-  * @brief  Set Alarm A Sub seconds value
+  * @brief  Set Alarm A subseconds value
   * @rmtoll ALRMASSR     SS            LL_RTC_ALMA_SetSubSecond
   * @param  RTCx RTC Instance
   * @param  Subsecond Value between Min_Data=0x00 and Max_Data=0x7FFF
@@ -1912,7 +1906,7 @@
 }
 
 /**
-  * @brief  Get Alarm A Sub seconds value
+  * @brief  Get Alarm A subseconds value
   * @rmtoll ALRMASSR     SS            LL_RTC_ALMA_GetSubSecond
   * @param  RTCx RTC Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0x7FFF
@@ -2028,7 +2022,7 @@
   */
 __STATIC_INLINE void LL_RTC_ALMB_SetDay(RTC_TypeDef *RTCx, uint32_t Day)
 {
-  MODIFY_REG(RTC->ALRMBR, (RTC_ALRMBR_DT | RTC_ALRMBR_DU),
+  MODIFY_REG(RTCx->ALRMBR, (RTC_ALRMBR_DT | RTC_ALRMBR_DU),
              (((Day & 0xF0U) << (RTC_ALRMBR_DT_Pos - 4U)) | ((Day & 0x0FU) << RTC_ALRMBR_DU_Pos)));
 }
 
@@ -2042,7 +2036,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_ALMB_GetDay(RTC_TypeDef *RTCx)
 {
-  return (uint32_t)(( READ_BIT(RTCx->ALRMBR, (RTC_ALRMBR_DT | RTC_ALRMBR_DU))) >> RTC_ALRMBR_DU_Pos);
+  return (uint32_t)((READ_BIT(RTCx->ALRMBR, (RTC_ALRMBR_DT | RTC_ALRMBR_DU))) >> RTC_ALRMBR_DU_Pos);
 }
 
 /**
@@ -2213,13 +2207,14 @@
   */
 __STATIC_INLINE void LL_RTC_ALMB_ConfigTime(RTC_TypeDef *RTCx, uint32_t Format12_24, uint32_t Hours, uint32_t Minutes, uint32_t Seconds)
 {
-  uint32_t temp = 0U;
+  uint32_t temp;
 
-  temp = Format12_24 | (((Hours & 0xF0U) << (RTC_ALRMBR_HT_Pos - 4U)) | ((Hours & 0x0FU) << RTC_ALRMBR_HU_Pos))    | \
+  temp = Format12_24                                                                                    | \
+         (((Hours   & 0xF0U) << (RTC_ALRMBR_HT_Pos  - 4U)) | ((Hours   & 0x0FU) << RTC_ALRMBR_HU_Pos))  | \
          (((Minutes & 0xF0U) << (RTC_ALRMBR_MNT_Pos - 4U)) | ((Minutes & 0x0FU) << RTC_ALRMBR_MNU_Pos)) | \
-         (((Seconds & 0xF0U) << (RTC_ALRMBR_ST_Pos - 4U)) | ((Seconds & 0x0FU) << RTC_ALRMBR_SU_Pos));
+         (((Seconds & 0xF0U) << (RTC_ALRMBR_ST_Pos  - 4U)) | ((Seconds & 0x0FU) << RTC_ALRMBR_SU_Pos));
 
-  MODIFY_REG(RTCx->ALRMBR, RTC_ALRMBR_PM| RTC_ALRMBR_HT | RTC_ALRMBR_HU | RTC_ALRMBR_MNT | RTC_ALRMBR_MNU | RTC_ALRMBR_ST | RTC_ALRMBR_SU, temp);
+  MODIFY_REG(RTCx->ALRMBR, RTC_ALRMBR_PM | RTC_ALRMBR_HT | RTC_ALRMBR_HU | RTC_ALRMBR_MNT | RTC_ALRMBR_MNU | RTC_ALRMBR_ST | RTC_ALRMBR_SU, temp);
 }
 
 /**
@@ -2241,7 +2236,8 @@
 }
 
 /**
-  * @brief  Set Alarm B Mask the most-significant bits starting at this bit
+  * @brief  Mask the most-significant bits of the subseconds field starting from
+  *         the bit specified in parameter Mask
   * @note This register can be written only when ALRBE is reset in RTC_CR register,
   *       or in initialization mode.
   * @rmtoll ALRMBSSR     MASKSS        LL_RTC_ALMB_SetSubSecondMask
@@ -2255,7 +2251,7 @@
 }
 
 /**
-  * @brief  Get Alarm B Mask the most-significant bits starting at this bit
+  * @brief  Get Alarm B subseconds mask
   * @rmtoll ALRMBSSR     MASKSS        LL_RTC_ALMB_GetSubSecondMask
   * @param  RTCx RTC Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0xF
@@ -2266,7 +2262,7 @@
 }
 
 /**
-  * @brief  Set Alarm B Sub seconds value
+  * @brief  Set Alarm B subseconds value
   * @rmtoll ALRMBSSR     SS            LL_RTC_ALMB_SetSubSecond
   * @param  RTCx RTC Instance
   * @param  Subsecond Value between Min_Data=0x00 and Max_Data=0x7FFF
@@ -2278,7 +2274,7 @@
 }
 
 /**
-  * @brief  Get Alarm B Sub seconds value
+  * @brief  Get Alarm B subseconds value
   * @rmtoll ALRMBSSR     SS            LL_RTC_ALMB_GetSubSecond
   * @param  RTCx RTC Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0x7FFF
@@ -2519,7 +2515,7 @@
 }
 
 /**
-  * @brief  Get time-stamp sub second value
+  * @brief  Get time-stamp subseconds value
   * @rmtoll TSSSR        SS            LL_RTC_TS_GetSubSecond
   * @param  RTCx RTC Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0xFFFF
@@ -2554,6 +2550,35 @@
 #endif /* RTC_TAMPCR_TAMPTS */
 
 /**
+  * @brief  Set timestamp Pin
+  * @rmtoll TAMPCR       TSINSEL      LL_RTC_TS_SetPin
+  * @param  RTCx RTC Instance
+  * @param  TSPin specifies the RTC Timestamp Pin.
+  *          This parameter can be one of the following values:
+  *            @arg LL_RTC_TimeStampPin_Default: RTC_AF1 is used as RTC Timestamp Pin.
+  *            @arg LL_RTC_TimeStampPin_Pos1: RTC_AF2 is used as RTC Timestamp Pin.
+  * @retval None
+  */
+__STATIC_INLINE void LL_RTC_TS_SetPin(RTC_TypeDef *RTCx, uint32_t TSPin)
+{
+  MODIFY_REG(RTCx->OR, RTC_OR_TSINSEL, TSPin);
+}
+
+/**
+  * @brief  Get timestamp Pin
+  * @rmtoll TAMPCR       TSINSEL      LL_RTC_TS_GetPin
+  * @param  RTCx RTC Instance
+  * @retval Returned value can be one of the following values:
+  *            @arg LL_RTC_TimeStampPin_Default: RTC_AF1 is used as RTC Timestamp Pin.
+  *            @arg LL_RTC_TimeStampPin_Pos1: RTC_AF2 is used as RTC Timestamp Pin.
+  * @retval None
+  */
+__STATIC_INLINE uint32_t LL_RTC_TS_GetPin(RTC_TypeDef *RTCx)
+{
+  return (uint32_t)(READ_BIT(RTCx->OR, RTC_OR_TSINSEL));
+}
+
+/**
   * @}
   */
 
@@ -2568,10 +2593,10 @@
   *         TAMPCR       TAMP3E        LL_RTC_TAMPER_Enable
   * @param  RTCx RTC Instance
   * @param  Tamper This parameter can be a combination of the following values:
-  *         @arg @ref LL_RTC_TAMPER_1 
-  *         @arg @ref LL_RTC_TAMPER_2 
-  *         @arg @ref LL_RTC_TAMPER_3 
-  *         
+  *         @arg @ref LL_RTC_TAMPER_1
+  *         @arg @ref LL_RTC_TAMPER_2
+  *         @arg @ref LL_RTC_TAMPER_3
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_TAMPER_Enable(RTC_TypeDef *RTCx, uint32_t Tamper)
@@ -2586,10 +2611,10 @@
   *         TAMPCR       TAMP3E        LL_RTC_TAMPER_Disable
   * @param  RTCx RTC Instance
   * @param  Tamper This parameter can be a combination of the following values:
-  *         @arg @ref LL_RTC_TAMPER_1 
-  *         @arg @ref LL_RTC_TAMPER_2 
-  *         @arg @ref LL_RTC_TAMPER_3 
-  *         
+  *         @arg @ref LL_RTC_TAMPER_1
+  *         @arg @ref LL_RTC_TAMPER_2
+  *         @arg @ref LL_RTC_TAMPER_3
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_TAMPER_Disable(RTC_TypeDef *RTCx, uint32_t Tamper)
@@ -2605,10 +2630,10 @@
   *         TAMPCR       TAMP3MF       LL_RTC_TAMPER_EnableMask
   * @param  RTCx RTC Instance
   * @param  Mask This parameter can be a combination of the following values:
-  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER1 
-  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER2 
-  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER3 
-  *         
+  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER1
+  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER2
+  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER3
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_TAMPER_EnableMask(RTC_TypeDef *RTCx, uint32_t Mask)
@@ -2623,10 +2648,10 @@
   *         TAMPCR       TAMP3MF       LL_RTC_TAMPER_DisableMask
   * @param  RTCx RTC Instance
   * @param  Mask This parameter can be a combination of the following values:
-  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER1 
-  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER2 
-  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER3 
-  *         
+  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER1
+  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER2
+  *         @arg @ref LL_RTC_TAMPER_MASK_TAMPER3
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_TAMPER_DisableMask(RTC_TypeDef *RTCx, uint32_t Mask)
@@ -2641,10 +2666,10 @@
   *         TAMPCR       TAMP3NOERASE  LL_RTC_TAMPER_EnableEraseBKP
   * @param  RTCx RTC Instance
   * @param  Tamper This parameter can be a combination of the following values:
-  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER1 
-  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER2 
-  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER3 
-  *         
+  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER1
+  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER2
+  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER3
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_TAMPER_EnableEraseBKP(RTC_TypeDef *RTCx, uint32_t Tamper)
@@ -2659,10 +2684,10 @@
   *         TAMPCR       TAMP3NOERASE  LL_RTC_TAMPER_DisableEraseBKP
   * @param  RTCx RTC Instance
   * @param  Tamper This parameter can be a combination of the following values:
-  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER1 
-  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER2 
-  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER3 
-  *         
+  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER1
+  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER2
+  *         @arg @ref LL_RTC_TAMPER_NOERASE_TAMPER3
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_TAMPER_DisableEraseBKP(RTC_TypeDef *RTCx, uint32_t Tamper)
@@ -2670,7 +2695,6 @@
   SET_BIT(RTCx->TAMPCR, Tamper);
 }
 
-#if defined(RTC_TAMPCR_TAMPPUDIS)
 /**
   * @brief  Disable RTC_TAMPx pull-up disable (Disable precharge of RTC_TAMPx pins)
   * @rmtoll TAMPCR       TAMPPUDIS     LL_RTC_TAMPER_DisablePullUp
@@ -2692,9 +2716,7 @@
 {
   CLEAR_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMPPUDIS);
 }
-#endif /* RTC_TAMPCR_TAMPPUDIS */
 
-#if defined(RTC_TAMPCR_TAMPPRCH)
 /**
   * @brief  Set RTC_TAMPx precharge duration
   * @rmtoll TAMPCR       TAMPPRCH      LL_RTC_TAMPER_SetPrecharge
@@ -2725,9 +2747,7 @@
 {
   return (uint32_t)(READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMPPRCH));
 }
-#endif /* RTC_TAMPCR_TAMPPRCH */
 
-#if defined(RTC_TAMPCR_TAMPFLT)
 /**
   * @brief  Set RTC_TAMPx filter count
   * @rmtoll TAMPCR       TAMPFLT       LL_RTC_TAMPER_SetFilterCount
@@ -2758,9 +2778,7 @@
 {
   return (uint32_t)(READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMPFLT));
 }
-#endif /* RTC_TAMPCR_TAMPFLT */
 
-#if defined(RTC_TAMPCR_TAMPFREQ)
 /**
   * @brief  Set Tamper sampling frequency
   * @rmtoll TAMPCR       TAMPFREQ      LL_RTC_TAMPER_SetSamplingFreq
@@ -2799,7 +2817,6 @@
 {
   return (uint32_t)(READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMPFREQ));
 }
-#endif /* RTC_TAMPCR_TAMPFREQ */
 
 /**
   * @brief  Enable Active level for Tamper input
@@ -2808,10 +2825,10 @@
   *         TAMPCR       TAMP3TRG      LL_RTC_TAMPER_EnableActiveLevel
   * @param  RTCx RTC Instance
   * @param  Tamper This parameter can be a combination of the following values:
-  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP1 
-  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP2 
-  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP3 
-  *         
+  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP1
+  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP2
+  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP3
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_TAMPER_EnableActiveLevel(RTC_TypeDef *RTCx, uint32_t Tamper)
@@ -2826,10 +2843,10 @@
   *         TAMPCR       TAMP3TRG      LL_RTC_TAMPER_DisableActiveLevel
   * @param  RTCx RTC Instance
   * @param  Tamper This parameter can be a combination of the following values:
-  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP1 
-  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP2 
-  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP3 
-  *         
+  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP1
+  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP2
+  *         @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_TAMP3
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_TAMPER_DisableActiveLevel(RTC_TypeDef *RTCx, uint32_t Tamper)
@@ -2877,13 +2894,13 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_WAKEUP_IsEnabled(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->CR, RTC_CR_WUTE) == (RTC_CR_WUTE));
+  return ((READ_BIT(RTCx->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) ? 1UL : 0UL);
 }
 
 /**
   * @brief  Select Wakeup clock
   * @note   Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
-  * @note Bit can be written only when RTC_CR WUTE bit = 0 and RTC_ISR WUTWF bit = 1
+  * @note   Bit can be written only when RTC_CR WUTE bit = 0 and RTC_ISR WUTWF bit = 1
   * @rmtoll CR           WUCKSEL       LL_RTC_WAKEUP_SetClock
   * @param  RTCx RTC Instance
   * @param  WakeupClock This parameter can be one of the following values:
@@ -2919,7 +2936,7 @@
 
 /**
   * @brief  Set Wakeup auto-reload value
-  * @note Bit can be written only when WUTWF is set to 1 in RTC_ISR
+  * @note   Bit can be written only when WUTWF is set to 1 in RTC_ISR
   * @rmtoll WUTR         WUT           LL_RTC_WAKEUP_SetAutoReload
   * @param  RTCx RTC Instance
   * @param  Value Value between Min_Data=0x00 and Max_Data=0xFFFF
@@ -2991,13 +3008,13 @@
   */
 __STATIC_INLINE void LL_RTC_BAK_SetRegister(RTC_TypeDef *RTCx, uint32_t BackupRegister, uint32_t Data)
 {
-  uint32_t tmp = 0U;
+  uint32_t temp;
 
-  tmp = (uint32_t)(&(RTCx->BKP0R));
-  tmp += (BackupRegister * 4U);
+  temp = (uint32_t)(&(RTCx->BKP0R));
+  temp += (BackupRegister * 4U);
 
   /* Write the specified register */
-  *(__IO uint32_t *)tmp = (uint32_t)Data;
+  *(__IO uint32_t *)temp = (uint32_t)Data;
 }
 
 /**
@@ -3041,13 +3058,13 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_BAK_GetRegister(RTC_TypeDef *RTCx, uint32_t BackupRegister)
 {
-  uint32_t tmp = 0U;
+  uint32_t temp;
 
-  tmp = (uint32_t)(&(RTCx->BKP0R));
-  tmp += (BackupRegister * 4U);
+  temp = (uint32_t)(&(RTCx->BKP0R));
+  temp += (BackupRegister * 4U);
 
   /* Read the specified register */
-  return (*(__IO uint32_t *)tmp);
+  return (*(__IO uint32_t *)temp);
 }
 
 /**
@@ -3068,6 +3085,7 @@
   *         @arg @ref LL_RTC_CALIB_OUTPUT_NONE
   *         @arg @ref LL_RTC_CALIB_OUTPUT_1HZ
   *         @arg @ref LL_RTC_CALIB_OUTPUT_512HZ
+  *
   * @retval None
   */
 __STATIC_INLINE void LL_RTC_CAL_SetOutputFreq(RTC_TypeDef *RTCx, uint32_t Frequency)
@@ -3084,6 +3102,7 @@
   *         @arg @ref LL_RTC_CALIB_OUTPUT_NONE
   *         @arg @ref LL_RTC_CALIB_OUTPUT_1HZ
   *         @arg @ref LL_RTC_CALIB_OUTPUT_512HZ
+  *
   */
 __STATIC_INLINE uint32_t LL_RTC_CAL_GetOutputFreq(RTC_TypeDef *RTCx)
 {
@@ -3093,7 +3112,7 @@
 /**
   * @brief  Insert or not One RTCCLK pulse every 2exp11 pulses (frequency increased by 488.5 ppm)
   * @note   Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
-  * @note Bit can be written only when RECALPF is set to 0 in RTC_ISR
+  * @note   Bit can be written only when RECALPF is set to 0 in RTC_ISR
   * @rmtoll CALR         CALP          LL_RTC_CAL_SetPulse
   * @param  RTCx RTC Instance
   * @param  Pulse This parameter can be one of the following values:
@@ -3114,11 +3133,11 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_CAL_IsPulseInserted(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->CALR, RTC_CALR_CALP) == (RTC_CALR_CALP));
+  return ((READ_BIT(RTCx->CALR, RTC_CALR_CALP) == (RTC_CALR_CALP)) ? 1UL : 0UL);
 }
 
 /**
-  * @brief  Set the calibration cycle period
+  * @brief  Set smooth calibration cycle period
   * @note   Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
   * @note   Bit can be written only when RECALPF is set to 0 in RTC_ISR
   * @rmtoll CALR         CALW8         LL_RTC_CAL_SetPeriod\n
@@ -3136,7 +3155,7 @@
 }
 
 /**
-  * @brief  Get the calibration cycle period
+  * @brief  Get smooth calibration cycle period
   * @rmtoll CALR         CALW8         LL_RTC_CAL_GetPeriod\n
   *         CALR         CALW16        LL_RTC_CAL_GetPeriod
   * @param  RTCx RTC Instance
@@ -3151,7 +3170,7 @@
 }
 
 /**
-  * @brief  Set Calibration minus
+  * @brief  Set smooth Calibration minus
   * @note   Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
   * @note   Bit can be written only when RECALPF is set to 0 in RTC_ISR
   * @rmtoll CALR         CALM          LL_RTC_CAL_SetMinus
@@ -3165,7 +3184,7 @@
 }
 
 /**
-  * @brief  Get Calibration minus
+  * @brief  Get smooth Calibration minus
   * @rmtoll CALR         CALM          LL_RTC_CAL_GetMinus
   * @param  RTCx RTC Instance
   * @retval Value between Min_Data=0x00 and Max_Data= 0x1FF
@@ -3191,7 +3210,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ITS(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_ITSF) == (RTC_ISR_ITSF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_ITSF) == (RTC_ISR_ITSF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3202,7 +3221,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RECALP(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_RECALPF) == (RTC_ISR_RECALPF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_RECALPF) == (RTC_ISR_RECALPF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3213,7 +3232,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP3(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_TAMP3F) == (RTC_ISR_TAMP3F));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_TAMP3F) == (RTC_ISR_TAMP3F)) ? 1UL : 0UL);
 }
 
 /**
@@ -3224,7 +3243,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP2(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_TAMP2F) == (RTC_ISR_TAMP2F));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_TAMP2F) == (RTC_ISR_TAMP2F)) ? 1UL : 0UL);
 }
 
 /**
@@ -3235,7 +3254,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP1(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_TAMP1F) == (RTC_ISR_TAMP1F));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_TAMP1F) == (RTC_ISR_TAMP1F)) ? 1UL : 0UL);
 }
 
 /**
@@ -3246,7 +3265,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TSOV(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_TSOVF) == (RTC_ISR_TSOVF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_TSOVF) == (RTC_ISR_TSOVF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3257,7 +3276,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TS(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_TSF) == (RTC_ISR_TSF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_TSF) == (RTC_ISR_TSF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3268,7 +3287,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_WUT(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_WUTF) == (RTC_ISR_WUTF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_WUTF) == (RTC_ISR_WUTF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3279,7 +3298,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRB(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_ALRBF) == (RTC_ISR_ALRBF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_ALRBF) == (RTC_ISR_ALRBF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3290,7 +3309,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRA(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_ALRAF) == (RTC_ISR_ALRAF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_ALRAF) == (RTC_ISR_ALRAF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3400,7 +3419,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INIT(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_INITF) == (RTC_ISR_INITF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_INITF) == (RTC_ISR_INITF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3411,7 +3430,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RS(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_RSF) == (RTC_ISR_RSF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_RSF) == (RTC_ISR_RSF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3433,7 +3452,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INITS(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_INITS) == (RTC_ISR_INITS));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_INITS) == (RTC_ISR_INITS)) ? 1UL : 0UL);
 }
 
 /**
@@ -3444,7 +3463,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_SHP(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_SHPF) == (RTC_ISR_SHPF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_SHPF) == (RTC_ISR_SHPF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3455,7 +3474,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_WUTW(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_WUTWF) == (RTC_ISR_WUTWF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_WUTWF) == (RTC_ISR_WUTWF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3466,7 +3485,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRBW(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_ALRBWF) == (RTC_ISR_ALRBWF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_ALRBWF) == (RTC_ISR_ALRBWF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3477,7 +3496,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRAW(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->ISR, RTC_ISR_ALRAWF) == (RTC_ISR_ALRAWF));
+  return ((READ_BIT(RTCx->ISR, RTC_ISR_ALRAWF) == (RTC_ISR_ALRAWF)) ? 1UL : 0UL);
 }
 
 /**
@@ -3680,7 +3699,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TS(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->CR, RTC_CR_TSIE) == (RTC_CR_TSIE));
+  return ((READ_BIT(RTCx->CR, RTC_CR_TSIE) == (RTC_CR_TSIE)) ? 1UL : 0UL);
 }
 
 /**
@@ -3691,7 +3710,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_WUT(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->CR, RTC_CR_WUTIE) == (RTC_CR_WUTIE));
+  return ((READ_BIT(RTCx->CR, RTC_CR_WUTIE) == (RTC_CR_WUTIE)) ? 1UL : 0UL);
 }
 
 /**
@@ -3702,7 +3721,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALRB(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->CR, RTC_CR_ALRBIE) == (RTC_CR_ALRBIE));
+  return ((READ_BIT(RTCx->CR, RTC_CR_ALRBIE) == (RTC_CR_ALRBIE)) ? 1UL : 0UL);
 }
 
 /**
@@ -3713,7 +3732,7 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALRA(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->CR, RTC_CR_ALRAIE) == (RTC_CR_ALRAIE));
+  return ((READ_BIT(RTCx->CR, RTC_CR_ALRAIE) == (RTC_CR_ALRAIE)) ? 1UL : 0UL);
 }
 
 /**
@@ -3724,8 +3743,8 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP3(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->TAMPCR,
-                   RTC_TAMPCR_TAMP3IE) == (RTC_TAMPCR_TAMP3IE));
+  return ((READ_BIT(RTCx->TAMPCR,
+                    RTC_TAMPCR_TAMP3IE) == (RTC_TAMPCR_TAMP3IE)) ? 1UL : 0UL);
 }
 
 /**
@@ -3736,8 +3755,8 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP2(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->TAMPCR,
-                   RTC_TAMPCR_TAMP2IE) == (RTC_TAMPCR_TAMP2IE));
+  return ((READ_BIT(RTCx->TAMPCR,
+                    RTC_TAMPCR_TAMP2IE) == (RTC_TAMPCR_TAMP2IE)) ? 1UL : 0UL);
 
 }
 
@@ -3749,8 +3768,8 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP1(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->TAMPCR,
-                   RTC_TAMPCR_TAMP1IE) == (RTC_TAMPCR_TAMP1IE));
+  return ((READ_BIT(RTCx->TAMPCR,
+                    RTC_TAMPCR_TAMP1IE) == (RTC_TAMPCR_TAMP1IE)) ? 1UL : 0UL);
 }
 
 /**
@@ -3761,8 +3780,8 @@
   */
 __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP(RTC_TypeDef *RTCx)
 {
-  return (READ_BIT(RTCx->TAMPCR,
-                   RTC_TAMPCR_TAMPIE) == (RTC_TAMPCR_TAMPIE));
+  return ((READ_BIT(RTCx->TAMPCR,
+                    RTC_TAMPCR_TAMPIE) == (RTC_TAMPCR_TAMPIE)) ? 1UL : 0UL);
 }
 
 /**
@@ -3812,5 +3831,4 @@
 }
 #endif
 
-#endif /* __STM32F7xx_LL_RTC_H */
-
+#endif /* STM32F7xx_LL_RTC_H */
diff --git a/Inc/stm32f7xx_ll_tim.h b/Inc/stm32f7xx_ll_tim.h
index 9293033..b25056a 100644
--- a/Inc/stm32f7xx_ll_tim.h
+++ b/Inc/stm32f7xx_ll_tim.h
@@ -3564,10 +3564,10 @@
   * @brief  Set the polarity of the break signal for the timer break input.
   * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether
   *       or not a timer instance allows for break input selection.
-  * @rmtoll AF1          BKINE          LL_TIM_SetBreakInputSourcePolarity\n
-  *         AF1          BKDFBKE        LL_TIM_SetBreakInputSourcePolarity\n
-  *         AF2          BK2INE         LL_TIM_SetBreakInputSourcePolarity\n
-  *         AF2          BK2DFBKE       LL_TIM_SetBreakInputSourcePolarity
+  * @rmtoll AF1          BKINP          LL_TIM_SetBreakInputSourcePolarity\n
+  *         AF1          BKDFBKP        LL_TIM_SetBreakInputSourcePolarity\n
+  *         AF2          BK2INP         LL_TIM_SetBreakInputSourcePolarity\n
+  *         AF2          BK2DFBKP       LL_TIM_SetBreakInputSourcePolarity
   * @param  TIMx Timer instance
   * @param  BreakInput This parameter can be one of the following values:
   *         @arg @ref LL_TIM_BREAK_INPUT_BKIN
diff --git a/Inc/stm32f7xx_ll_usart.h b/Inc/stm32f7xx_ll_usart.h
index ec70a5d..b51a3db 100644
--- a/Inc/stm32f7xx_ll_usart.h
+++ b/Inc/stm32f7xx_ll_usart.h
@@ -575,7 +575,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabled(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabled(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL);
 }
@@ -618,7 +618,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledInStopMode(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledInStopMode(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_UESM) == (USART_CR1_UESM)) ? 1UL : 0UL);
 }
@@ -654,7 +654,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsClockEnabledInStopMode(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsClockEnabledInStopMode(const USART_TypeDef *USARTx)
 {
   return (READ_BIT(USARTx->CR3, USART_CR3_UCESM) == (USART_CR3_UCESM));
 }
@@ -734,7 +734,7 @@
   *         @arg @ref LL_USART_DIRECTION_TX
   *         @arg @ref LL_USART_DIRECTION_TX_RX
   */
-__STATIC_INLINE uint32_t LL_USART_GetTransferDirection(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetTransferDirection(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_RE | USART_CR1_TE));
 }
@@ -768,7 +768,7 @@
   *         @arg @ref LL_USART_PARITY_EVEN
   *         @arg @ref LL_USART_PARITY_ODD
   */
-__STATIC_INLINE uint32_t LL_USART_GetParity(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetParity(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE));
 }
@@ -795,7 +795,7 @@
   *         @arg @ref LL_USART_WAKEUP_IDLELINE
   *         @arg @ref LL_USART_WAKEUP_ADDRESSMARK
   */
-__STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_WAKE));
 }
@@ -826,7 +826,7 @@
   *         @arg @ref LL_USART_DATAWIDTH_8B
   *         @arg @ref LL_USART_DATAWIDTH_9B
   */
-__STATIC_INLINE uint32_t LL_USART_GetDataWidth(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetDataWidth(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_M));
 }
@@ -859,7 +859,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledMuteMode(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledMuteMode(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_MME) == (USART_CR1_MME)) ? 1UL : 0UL);
 }
@@ -886,7 +886,7 @@
   *         @arg @ref LL_USART_OVERSAMPLING_16
   *         @arg @ref LL_USART_OVERSAMPLING_8
   */
-__STATIC_INLINE uint32_t LL_USART_GetOverSampling(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetOverSampling(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_OVER8));
 }
@@ -918,7 +918,7 @@
   *         @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT
   *         @arg @ref LL_USART_LASTCLKPULSE_OUTPUT
   */
-__STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBCL));
 }
@@ -949,7 +949,7 @@
   *         @arg @ref LL_USART_PHASE_1EDGE
   *         @arg @ref LL_USART_PHASE_2EDGE
   */
-__STATIC_INLINE uint32_t LL_USART_GetClockPhase(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetClockPhase(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPHA));
 }
@@ -980,7 +980,7 @@
   *         @arg @ref LL_USART_POLARITY_LOW
   *         @arg @ref LL_USART_POLARITY_HIGH
   */
-__STATIC_INLINE uint32_t LL_USART_GetClockPolarity(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetClockPolarity(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPOL));
 }
@@ -1047,7 +1047,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR2, USART_CR2_CLKEN) == (USART_CR2_CLKEN)) ? 1UL : 0UL);
 }
@@ -1078,7 +1078,7 @@
   *         @arg @ref LL_USART_STOPBITS_1_5
   *         @arg @ref LL_USART_STOPBITS_2
   */
-__STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_STOP));
 }
@@ -1139,7 +1139,7 @@
   *         @arg @ref LL_USART_TXRX_STANDARD
   *         @arg @ref LL_USART_TXRX_SWAPPED
   */
-__STATIC_INLINE uint32_t LL_USART_GetTXRXSwap(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetTXRXSwap(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_SWAP));
 }
@@ -1166,7 +1166,7 @@
   *         @arg @ref LL_USART_RXPIN_LEVEL_STANDARD
   *         @arg @ref LL_USART_RXPIN_LEVEL_INVERTED
   */
-__STATIC_INLINE uint32_t LL_USART_GetRXPinLevel(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetRXPinLevel(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_RXINV));
 }
@@ -1193,7 +1193,7 @@
   *         @arg @ref LL_USART_TXPIN_LEVEL_STANDARD
   *         @arg @ref LL_USART_TXPIN_LEVEL_INVERTED
   */
-__STATIC_INLINE uint32_t LL_USART_GetTXPinLevel(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetTXPinLevel(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_TXINV));
 }
@@ -1222,7 +1222,7 @@
   *         @arg @ref LL_USART_BINARY_LOGIC_POSITIVE
   *         @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE
   */
-__STATIC_INLINE uint32_t LL_USART_GetBinaryDataLogic(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetBinaryDataLogic(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_DATAINV));
 }
@@ -1253,7 +1253,7 @@
   *         @arg @ref LL_USART_BITORDER_LSBFIRST
   *         @arg @ref LL_USART_BITORDER_MSBFIRST
   */
-__STATIC_INLINE uint32_t LL_USART_GetTransferBitOrder(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetTransferBitOrder(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_MSBFIRST));
 }
@@ -1292,7 +1292,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledAutoBaud(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledAutoBaud(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR2, USART_CR2_ABREN) == (USART_CR2_ABREN)) ? 1UL : 0UL);
 }
@@ -1360,7 +1360,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledRxTimeout(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledRxTimeout(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR2, USART_CR2_RTOEN) == (USART_CR2_RTOEN)) ? 1UL : 0UL);
 }
@@ -1404,7 +1404,7 @@
   * @param  USARTx USART Instance
   * @retval Address of the USART node (Value between Min_Data=0 and Max_Data=255)
   */
-__STATIC_INLINE uint32_t LL_USART_GetNodeAddress(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetNodeAddress(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADD) >> USART_CR2_ADD_Pos);
 }
@@ -1417,7 +1417,7 @@
   *         @arg @ref LL_USART_ADDRESS_DETECT_4B
   *         @arg @ref LL_USART_ADDRESS_DETECT_7B
   */
-__STATIC_INLINE uint32_t LL_USART_GetNodeAddressLen(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetNodeAddressLen(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADDM7));
 }
@@ -1506,7 +1506,7 @@
   *         @arg @ref LL_USART_HWCONTROL_CTS
   *         @arg @ref LL_USART_HWCONTROL_RTS_CTS
   */
-__STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE));
 }
@@ -1539,7 +1539,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_ONEBIT) == (USART_CR3_ONEBIT)) ? 1UL : 0UL);
 }
@@ -1572,7 +1572,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL);
 }
@@ -1607,7 +1607,7 @@
   *         @arg @ref LL_USART_WAKEUP_ON_STARTBIT
   *         @arg @ref LL_USART_WAKEUP_ON_RXNE
   */
-__STATIC_INLINE uint32_t LL_USART_GetWKUPType(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetWKUPType(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_WUS));
 }
@@ -1662,7 +1662,7 @@
   *         @arg @ref LL_USART_OVERSAMPLING_8
   * @retval Baud Rate
   */
-__STATIC_INLINE uint32_t LL_USART_GetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling)
+__STATIC_INLINE uint32_t LL_USART_GetBaudRate(const USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling)
 {
   uint32_t usartdiv;
   uint32_t brrresult = 0x0U;
@@ -1709,7 +1709,7 @@
   * @param  USARTx USART Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0x00FFFFFF
   */
-__STATIC_INLINE uint32_t LL_USART_GetRxTimeout(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetRxTimeout(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->RTOR, USART_RTOR_RTO));
 }
@@ -1732,7 +1732,7 @@
   * @param  USARTx USART Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0xFF
   */
-__STATIC_INLINE uint32_t LL_USART_GetBlockLength(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetBlockLength(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->RTOR, USART_RTOR_BLEN) >> USART_RTOR_BLEN_Pos);
 }
@@ -1779,7 +1779,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIrda(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIrda(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_IREN) == (USART_CR3_IREN)) ? 1UL : 0UL);
 }
@@ -1810,7 +1810,7 @@
   *         @arg @ref LL_USART_IRDA_POWER_NORMAL
   *         @arg @ref LL_USART_PHASE_2EDGE
   */
-__STATIC_INLINE uint32_t LL_USART_GetIrdaPowerMode(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetIrdaPowerMode(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_IRLP));
 }
@@ -1839,7 +1839,7 @@
   * @param  USARTx USART Instance
   * @retval Irda prescaler value (Value between Min_Data=0x00 and Max_Data=0xFF)
   */
-__STATIC_INLINE uint32_t LL_USART_GetIrdaPrescaler(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetIrdaPrescaler(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC));
 }
@@ -1886,7 +1886,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcardNACK(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcardNACK(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_NACK) == (USART_CR3_NACK)) ? 1UL : 0UL);
 }
@@ -1925,7 +1925,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcard(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcard(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_SCEN) == (USART_CR3_SCEN)) ? 1UL : 0UL);
 }
@@ -1957,7 +1957,7 @@
   * @param  USARTx USART Instance
   * @retval Smartcard Auto-Retry Count value (Value between Min_Data=0 and Max_Data=7)
   */
-__STATIC_INLINE uint32_t LL_USART_GetSmartcardAutoRetryCount(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetSmartcardAutoRetryCount(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_SCARCNT) >> USART_CR3_SCARCNT_Pos);
 }
@@ -1986,7 +1986,7 @@
   * @param  USARTx USART Instance
   * @retval Smartcard prescaler value (Value between Min_Data=0 and Max_Data=31)
   */
-__STATIC_INLINE uint32_t LL_USART_GetSmartcardPrescaler(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetSmartcardPrescaler(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC));
 }
@@ -2015,7 +2015,7 @@
   * @param  USARTx USART Instance
   * @retval Smartcard Guard time value (Value between Min_Data=0x00 and Max_Data=0xFF)
   */
-__STATIC_INLINE uint32_t LL_USART_GetSmartcardGuardTime(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetSmartcardGuardTime(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_GT) >> USART_GTPR_GT_Pos);
 }
@@ -2062,7 +2062,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledHalfDuplex(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledHalfDuplex(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_HDSEL) == (USART_CR3_HDSEL)) ? 1UL : 0UL);
 }
@@ -2101,7 +2101,7 @@
   *         @arg @ref LL_USART_LINBREAK_DETECT_10B
   *         @arg @ref LL_USART_LINBREAK_DETECT_11B
   */
-__STATIC_INLINE uint32_t LL_USART_GetLINBrkDetectionLen(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetLINBrkDetectionLen(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBDL));
 }
@@ -2140,7 +2140,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledLIN(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledLIN(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR2, USART_CR2_LINEN) == (USART_CR2_LINEN)) ? 1UL : 0UL);
 }
@@ -2175,7 +2175,7 @@
   * @param  USARTx USART Instance
   * @retval Time value expressed on 5 bits ([4:0] bits) : Value between Min_Data=0 and Max_Data=31
   */
-__STATIC_INLINE uint32_t LL_USART_GetDEDeassertionTime(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetDEDeassertionTime(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_DEDT) >> USART_CR1_DEDT_Pos);
 }
@@ -2202,7 +2202,7 @@
   * @param  USARTx USART Instance
   * @retval Time value expressed on 5 bits ([4:0] bits) : Value between Min_Data=0 and Max_Data=31
   */
-__STATIC_INLINE uint32_t LL_USART_GetDEAssertionTime(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetDEAssertionTime(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_DEAT) >> USART_CR1_DEAT_Pos);
 }
@@ -2241,7 +2241,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledDEMode(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledDEMode(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_DEM) == (USART_CR3_DEM)) ? 1UL : 0UL);
 }
@@ -2272,7 +2272,7 @@
   *         @arg @ref LL_USART_DE_POLARITY_HIGH
   *         @arg @ref LL_USART_DE_POLARITY_LOW
   */
-__STATIC_INLINE uint32_t LL_USART_GetDESignalPolarity(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_GetDESignalPolarity(const USART_TypeDef *USARTx)
 {
   return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_DEP));
 }
@@ -2575,7 +2575,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_PE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_PE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_PE) == (USART_ISR_PE)) ? 1UL : 0UL);
 }
@@ -2586,7 +2586,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_FE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_FE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_FE) == (USART_ISR_FE)) ? 1UL : 0UL);
 }
@@ -2597,7 +2597,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_NE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_NE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_NE) == (USART_ISR_NE)) ? 1UL : 0UL);
 }
@@ -2608,7 +2608,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ORE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ORE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_ORE) == (USART_ISR_ORE)) ? 1UL : 0UL);
 }
@@ -2619,7 +2619,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_IDLE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_IDLE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_IDLE) == (USART_ISR_IDLE)) ? 1UL : 0UL);
 }
@@ -2630,7 +2630,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_RXNE) == (USART_ISR_RXNE)) ? 1UL : 0UL);
 }
@@ -2641,7 +2641,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TC(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TC(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_TC) == (USART_ISR_TC)) ? 1UL : 0UL);
 }
@@ -2652,7 +2652,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TXE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TXE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_TXE) == (USART_ISR_TXE)) ? 1UL : 0UL);
 }
@@ -2665,7 +2665,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_LBD(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_LBD(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_LBDF) == (USART_ISR_LBDF)) ? 1UL : 0UL);
 }
@@ -2678,7 +2678,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_nCTS(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_nCTS(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_CTSIF) == (USART_ISR_CTSIF)) ? 1UL : 0UL);
 }
@@ -2691,7 +2691,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CTS(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CTS(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_CTS) == (USART_ISR_CTS)) ? 1UL : 0UL);
 }
@@ -2702,7 +2702,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RTO(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RTO(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_RTOF) == (USART_ISR_RTOF)) ? 1UL : 0UL);
 }
@@ -2715,7 +2715,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_EOB(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_EOB(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_EOBF) == (USART_ISR_EOBF)) ? 1UL : 0UL);
 }
@@ -2728,7 +2728,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABRE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABRE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_ABRE) == (USART_ISR_ABRE)) ? 1UL : 0UL);
 }
@@ -2741,7 +2741,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABR(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABR(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_ABRF) == (USART_ISR_ABRF)) ? 1UL : 0UL);
 }
@@ -2752,7 +2752,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_BUSY(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_BUSY(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_BUSY) == (USART_ISR_BUSY)) ? 1UL : 0UL);
 }
@@ -2763,7 +2763,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CM(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CM(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_CMF) == (USART_ISR_CMF)) ? 1UL : 0UL);
 }
@@ -2774,7 +2774,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_SBK(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_SBK(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_SBKF) == (USART_ISR_SBKF)) ? 1UL : 0UL);
 }
@@ -2785,7 +2785,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_RWU) == (USART_ISR_RWU)) ? 1UL : 0UL);
 }
@@ -2800,7 +2800,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_WKUP(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_WKUP(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_WUF) == (USART_ISR_WUF)) ? 1UL : 0UL);
 }
@@ -2813,7 +2813,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TEACK(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TEACK(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_TEACK) == (USART_ISR_TEACK)) ? 1UL : 0UL);
 }
@@ -2825,12 +2825,12 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_REACK(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_REACK(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_REACK) == (USART_ISR_REACK)) ? 1UL : 0UL);
 }
 
-#endif/* USART_ISR_REACK */
+#endif /* USART_ISR_REACK */
 #if defined(USART_TCBGT_SUPPORT)
 /* Function available only on devices supporting Transmit Complete before Guard Time feature */
 /**
@@ -2839,7 +2839,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TCBGT(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TCBGT(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->ISR, USART_ISR_TCBGT) == (USART_ISR_TCBGT)) ? 1UL : 0UL);
 }
@@ -3345,7 +3345,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_IDLE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_IDLE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_IDLEIE) == (USART_CR1_IDLEIE)) ? 1UL : 0UL);
 }
@@ -3356,7 +3356,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RXNE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RXNE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_RXNEIE) == (USART_CR1_RXNEIE)) ? 1U : 0U);
 }
@@ -3367,7 +3367,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_TCIE) == (USART_CR1_TCIE)) ? 1UL : 0UL);
 }
@@ -3378,7 +3378,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TXE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TXE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_TXEIE) == (USART_CR1_TXEIE)) ? 1U : 0U);
 }
@@ -3389,7 +3389,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_PE(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_PE(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_PEIE) == (USART_CR1_PEIE)) ? 1UL : 0UL);
 }
@@ -3400,7 +3400,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CM(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CM(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_CMIE) == (USART_CR1_CMIE)) ? 1UL : 0UL);
 }
@@ -3411,7 +3411,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RTO(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RTO(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_RTOIE) == (USART_CR1_RTOIE)) ? 1UL : 0UL);
 }
@@ -3424,7 +3424,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_EOB(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_EOB(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR1, USART_CR1_EOBIE) == (USART_CR1_EOBIE)) ? 1UL : 0UL);
 }
@@ -3437,7 +3437,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_LBD(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_LBD(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR2, USART_CR2_LBDIE) == (USART_CR2_LBDIE)) ? 1UL : 0UL);
 }
@@ -3448,7 +3448,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_ERROR(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_ERROR(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_EIE) == (USART_CR3_EIE)) ? 1UL : 0UL);
 }
@@ -3461,7 +3461,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)) ? 1UL : 0UL);
 }
@@ -3476,7 +3476,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_WKUP(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_WKUP(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_WUFIE) == (USART_CR3_WUFIE)) ? 1UL : 0UL);
 }
@@ -3493,7 +3493,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TCBGT(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TCBGT(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_TCBGTIE) == (USART_CR3_TCBGTIE)) ? 1UL : 0UL);
 }
@@ -3535,7 +3535,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_RX(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_RX(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_DMAR) == (USART_CR3_DMAR)) ? 1UL : 0UL);
 }
@@ -3568,7 +3568,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_TX(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_TX(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_DMAT) == (USART_CR3_DMAT)) ? 1UL : 0UL);
 }
@@ -3601,7 +3601,7 @@
   * @param  USARTx USART Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_USART_IsEnabledDMADeactOnRxErr(USART_TypeDef *USARTx)
+__STATIC_INLINE uint32_t LL_USART_IsEnabledDMADeactOnRxErr(const USART_TypeDef *USARTx)
 {
   return ((READ_BIT(USARTx->CR3, USART_CR3_DDRE) == (USART_CR3_DDRE)) ? 1UL : 0UL);
 }
@@ -3616,7 +3616,7 @@
   *         @arg @ref LL_USART_DMA_REG_DATA_RECEIVE
   * @retval Address of data register
   */
-__STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(USART_TypeDef *USARTx, uint32_t Direction)
+__STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(const USART_TypeDef *USARTx, uint32_t Direction)
 {
   uint32_t data_reg_addr;
 
@@ -3648,7 +3648,7 @@
   * @param  USARTx USART Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0xFF
   */
-__STATIC_INLINE uint8_t LL_USART_ReceiveData8(USART_TypeDef *USARTx)
+__STATIC_INLINE uint8_t LL_USART_ReceiveData8(const USART_TypeDef *USARTx)
 {
   return (uint8_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR) & 0xFFU);
 }
@@ -3659,7 +3659,7 @@
   * @param  USARTx USART Instance
   * @retval Value between Min_Data=0x00 and Max_Data=0x1FF
   */
-__STATIC_INLINE uint16_t LL_USART_ReceiveData9(USART_TypeDef *USARTx)
+__STATIC_INLINE uint16_t LL_USART_ReceiveData9(const USART_TypeDef *USARTx)
 {
   return (uint16_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR));
 }
@@ -3765,10 +3765,10 @@
 /** @defgroup USART_LL_EF_Init Initialization and de-initialization functions
   * @{
   */
-ErrorStatus LL_USART_DeInit(USART_TypeDef *USARTx);
-ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, LL_USART_InitTypeDef *USART_InitStruct);
+ErrorStatus LL_USART_DeInit(const USART_TypeDef *USARTx);
+ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, const LL_USART_InitTypeDef *USART_InitStruct);
 void        LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct);
-ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, LL_USART_ClockInitTypeDef *USART_ClockInitStruct);
+ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, const LL_USART_ClockInitTypeDef *USART_ClockInitStruct);
 void        LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct);
 /**
   * @}
diff --git a/Inc/stm32f7xx_ll_usb.h b/Inc/stm32f7xx_ll_usb.h
index f9d5b0b..abce1d1 100644
--- a/Inc/stm32f7xx_ll_usb.h
+++ b/Inc/stm32f7xx_ll_usb.h
@@ -71,6 +71,7 @@
   HC_IDLE = 0,
   HC_XFRC,
   HC_HALTED,
+  HC_ACK,
   HC_NAK,
   HC_NYET,
   HC_STALL,
@@ -131,6 +132,9 @@
   uint8_t   is_stall;             /*!< Endpoint stall condition
                                        This parameter must be a number between Min_Data = 0 and Max_Data = 1    */
 
+  uint8_t   is_iso_incomplete;    /*!< Endpoint isoc condition
+                                       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_LL_EP_Type                   */
 
@@ -190,7 +194,7 @@
 
   uint8_t   *xfer_buff;         /*!< Pointer to transfer buffer.                                                */
 
-  uint32_t  XferSize;             /*!< OTG Channel transfer size.                                                   */
+  uint32_t  XferSize;             /*!< OTG Channel transfer size.                                               */
 
   uint32_t  xfer_len;           /*!< Current transfer length.                                                   */
 
@@ -426,7 +430,7 @@
 
 #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 /* USB_HS_PHYC */
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
 #define EP_ADDR_MSK                            0xFU
@@ -479,6 +483,7 @@
 void             *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len);
 HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
 HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
+HAL_StatusTypeDef USB_EPStopXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
 HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address);
 HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx);
 HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx);
@@ -488,6 +493,7 @@
 uint8_t           USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx);
 uint32_t          USB_GetMode(USB_OTG_GlobalTypeDef *USBx);
 uint32_t          USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx);
+uint32_t          USB_ReadChInterrupts(USB_OTG_GlobalTypeDef *USBx, uint8_t chnum);
 uint32_t          USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx);
 uint32_t          USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum);
 uint32_t          USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx);
diff --git a/README.md b/README.md
index 6b41c3f..c901741 100644
--- a/README.md
+++ b/README.md
@@ -27,16 +27,7 @@
 
 ## Compatibility information
 
-In this table, you can find the successive versions of this HAL-LL Driver component, in line with the corresponding versions of the full MCU package:
-
-It is **crucial** that you use a consistent set of versions for the CMSIS Core - CMSIS Device - HAL, as mentioned in this table.
-
-HAL Driver F7  | CMSIS Device F7 | CMSIS Core     | Was delivered in the full MCU package
--------------- | --------------- | -------------- | -------------------------------------
-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)
+It is **crucial** that you use a consistent set of versions for the CMSIS Core - CMSIS Device - HAL, as mentioned in [this](https://htmlpreview.github.io/?https://github.com/STMicroelectronics/STM32CubeF7/blob/master/Release_Notes.html) release note.
 
 The full **STM32CubeF7** MCU package is available [here](https://github.com/STMicroelectronics/STM32CubeF7).
 
diff --git a/Release_Notes.html b/Release_Notes.html
index ba654a5..c5c2ef0 100644
--- a/Release_Notes.html
+++ b/Release_Notes.html
@@ -1,17699 +1,1438 @@
-<!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">
+<link rel="File-List" href="Release_Notes_for_STM32F45x_StdPeriph_Driver_files/filelist.xml">
+<link rel="Edit-Time-Data" href="Release_Notes_for_STM32F45x_StdPeriph_Driver_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>STMicroelectronics</o:Author> <o:LastAuthor>Raouf Hosni</o:LastAuthor> <o:Revision>39</o:Revision> <o:TotalTime>137</o:TotalTime> <o:Created>2009-02-27T19:26:00Z</o:Created> <o:LastSaved>2010-10-15T11:07:00Z</o:LastSaved> <o:Pages>3</o:Pages> <o:Words>973</o:Words> <o:Characters>5548</o:Characters> <o:Company>STMicroelectronics</o:Company> <o:Lines>46</o:Lines> <o:Paragraphs>13</o:Paragraphs> <o:CharactersWithSpaces>6508</o:CharactersWithSpaces> <o:Version>12.00</o:Version> </o:DocumentProperties> </xml><![endif]-->
+
+
+
+<link rel="themeData" href="Release_Notes_for_STM32F45x_StdPeriph_Driver_files/themedata.thmx">
+<link rel="colorSchemeMapping" href="Release_Notes_for_STM32F45x_StdPeriph_Driver_files/colorschememapping.xml"><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>110</w:Zoom> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting/> <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:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <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" LatentStyleCount="267"> <w:LsdException Locked="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="99" Name="No List"/> <w:LsdException Locked="false" Priority="99" 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" Priority="99" 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:LatentStyles> </xml><![endif]-->
+
 <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>
-    <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>
-  <w:TrackFormatting/>
-  <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:SplitPgBreakAndParaMark/>
-  </w:Compatibility>
-  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
-  <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" QFormat="true" Name="heading 2"/>
-  <w:LsdException Locked="false" Priority="9" 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:Helvetica;
-	panose-1:2 11 6 4 2 2 2 2 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:-536858881 -1073711013 9 0 511 0;}
+/* 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-family:"Cambria Math";
+panose-1:2 4 5 3 5 4 6 3 2 4;
+mso-font-charset:1;
+mso-generic-font-family:roman;
+mso-font-format:other;
+mso-font-pitch:variable;
+mso-font-signature:0 0 0 0 0 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:3 0 0 0 1 0;}
+{font-family:Calibri;
+panose-1:2 15 5 2 2 2 4 3 2 4;
+mso-font-charset:0;
+mso-generic-font-family:swiss;
+mso-font-pitch:variable;
+mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:-536858881 -1073732485 9 0 511 0;}
+{font-family:Tahoma;
+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:1627400839 -2147483648 8 0 66047 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-qformat:yes;
-	mso-style-parent:"";
-	margin:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;}
+{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:536871559 0 0 0 415 0;}
+/* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+{mso-style-unhide:no;
+mso-style-qformat:yes;
+mso-style-parent:"";
+margin:0in;
+margin-bottom:.0001pt;
+mso-pagination:widow-orphan;
+font-size:12.0pt;
+font-family:"Times New Roman","serif";
+mso-fareast-font-family:"Times New Roman";}
 h1
-	{mso-style-priority:9;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-style-link:"Heading 1 Char";
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	mso-outline-level:1;
-	font-size:24.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	font-weight:bold;}
+{mso-style-unhide:no;
+mso-style-qformat:yes;
+mso-style-link:"Heading 1 Char";
+mso-margin-top-alt:auto;
+margin-right:0in;
+mso-margin-bottom-alt:auto;
+margin-left:0in;
+mso-pagination:widow-orphan;
+mso-outline-level:1;
+font-size:24.0pt;
+font-family:"Times New Roman","serif";
+mso-fareast-font-family:"Times New Roman";
+mso-fareast-theme-font:minor-fareast;
+font-weight:bold;}
 h2
-	{mso-style-priority:9;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-style-link:"Heading 2 Char";
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	mso-outline-level:2;
-	font-size:18.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	font-weight:bold;}
+{mso-style-unhide:no;
+mso-style-qformat:yes;
+mso-style-link:"Heading 2 Char";
+mso-style-next:Normal;
+margin-top:12.0pt;
+margin-right:0in;
+margin-bottom:3.0pt;
+margin-left:0in;
+mso-pagination:widow-orphan;
+page-break-after:avoid;
+mso-outline-level:2;
+font-size:14.0pt;
+font-family:"Arial","sans-serif";
+mso-fareast-font-family:"Times New Roman";
+mso-fareast-theme-font:minor-fareast;
+font-weight:bold;
+font-style:italic;}
 h3
-	{mso-style-priority:9;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-style-link:"Heading 3 Char";
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	mso-outline-level:3;
-	font-size:13.5pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	font-weight:bold;}
+{mso-style-unhide:no;
+mso-style-qformat:yes;
+mso-style-link:"Heading 3 Char";
+mso-margin-top-alt:auto;
+margin-right:0in;
+mso-margin-bottom-alt:auto;
+margin-left:0in;
+mso-pagination:widow-orphan;
+mso-outline-level:3;
+font-size:13.5pt;
+font-family:"Times New Roman","serif";
+mso-fareast-font-family:"Times New Roman";
+mso-fareast-theme-font:minor-fareast;
+font-weight:bold;}
 a:link, span.MsoHyperlink
-	{mso-style-noshow:yes;
-	mso-style-priority:99;
-	color:blue;
-	text-decoration:underline;
-	text-underline:single;}
+{mso-style-unhide:no;
+color:blue;
+text-decoration:underline;
+text-underline:single;}
 a:visited, span.MsoHyperlinkFollowed
-	{mso-style-noshow:yes;
-	mso-style-priority:99;
-	color:blue;
-	text-decoration:underline;
-	text-underline:single;}
+{mso-style-unhide:no;
+color:blue;
+text-decoration:underline;
+text-underline:single;}
 p
-	{mso-style-noshow:yes;
-	mso-style-priority:99;
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;}
+{mso-style-unhide:no;
+mso-margin-top-alt:auto;
+margin-right:0in;
+mso-margin-bottom-alt:auto;
+margin-left:0in;
+mso-pagination:widow-orphan;
+font-size:12.0pt;
+font-family:"Times New Roman","serif";
+mso-fareast-font-family:"Times New Roman";}
+p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
+{mso-style-unhide:no;
+mso-style-link:"Balloon Text Char";
+margin:0in;
+margin-bottom:.0001pt;
+mso-pagination:widow-orphan;
+font-size:8.0pt;
+font-family:"Tahoma","sans-serif";
+mso-fareast-font-family:"Times New Roman";}
 span.Heading1Char
-	{mso-style-name:"Heading 1 Char";
-	mso-style-priority:9;
-	mso-style-unhide:no;
-	mso-style-locked:yes;
-	mso-style-link:"Heading 1";
-	mso-ansi-font-size:16.0pt;
-	mso-bidi-font-size:16.0pt;
-	font-family:"Calibri Light",sans-serif;
-	mso-ascii-font-family:"Calibri Light";
-	mso-ascii-theme-font:major-latin;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:major-fareast;
-	mso-hansi-font-family:"Calibri Light";
-	mso-hansi-theme-font:major-latin;
-	mso-bidi-font-family:"Times New Roman";
-	mso-bidi-theme-font:major-bidi;
-	color:#2F5496;
-	mso-themecolor:accent1;
-	mso-themeshade:191;}
+{mso-style-name:"Heading 1 Char";
+mso-style-unhide:no;
+mso-style-locked:yes;
+mso-style-link:"Heading 1";
+mso-ansi-font-size:14.0pt;
+mso-bidi-font-size:14.0pt;
+font-family:"Cambria","serif";
+mso-ascii-font-family:Cambria;
+mso-ascii-theme-font:major-latin;
+mso-fareast-font-family:"Times New Roman";
+mso-fareast-theme-font:major-fareast;
+mso-hansi-font-family:Cambria;
+mso-hansi-theme-font:major-latin;
+mso-bidi-font-family:"Times New Roman";
+mso-bidi-theme-font:major-bidi;
+color:#365F91;
+mso-themecolor:accent1;
+mso-themeshade:191;
+font-weight:bold;}
 span.Heading2Char
-	{mso-style-name:"Heading 2 Char";
-	mso-style-noshow:yes;
-	mso-style-priority:9;
-	mso-style-unhide:no;
-	mso-style-locked:yes;
-	mso-style-link:"Heading 2";
-	mso-ansi-font-size:13.0pt;
-	mso-bidi-font-size:13.0pt;
-	font-family:"Calibri Light",sans-serif;
-	mso-ascii-font-family:"Calibri Light";
-	mso-ascii-theme-font:major-latin;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:major-fareast;
-	mso-hansi-font-family:"Calibri Light";
-	mso-hansi-theme-font:major-latin;
-	mso-bidi-font-family:"Times New Roman";
-	mso-bidi-theme-font:major-bidi;
-	color:#2F5496;
-	mso-themecolor:accent1;
-	mso-themeshade:191;}
+{mso-style-name:"Heading 2 Char";
+mso-style-unhide:no;
+mso-style-locked:yes;
+mso-style-link:"Heading 2";
+mso-ansi-font-size:13.0pt;
+mso-bidi-font-size:13.0pt;
+font-family:"Cambria","serif";
+mso-ascii-font-family:Cambria;
+mso-ascii-theme-font:major-latin;
+mso-fareast-font-family:"Times New Roman";
+mso-fareast-theme-font:major-fareast;
+mso-hansi-font-family:Cambria;
+mso-hansi-theme-font:major-latin;
+mso-bidi-font-family:"Times New Roman";
+mso-bidi-theme-font:major-bidi;
+color:#4F81BD;
+mso-themecolor:accent1;
+font-weight:bold;}
 span.Heading3Char
-	{mso-style-name:"Heading 3 Char";
-	mso-style-noshow:yes;
-	mso-style-priority:9;
-	mso-style-unhide:no;
-	mso-style-locked:yes;
-	mso-style-link:"Heading 3";
-	mso-ansi-font-size:12.0pt;
-	mso-bidi-font-size:12.0pt;
-	font-family:"Calibri Light",sans-serif;
-	mso-ascii-font-family:"Calibri Light";
-	mso-ascii-theme-font:major-latin;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:major-fareast;
-	mso-hansi-font-family:"Calibri Light";
-	mso-hansi-theme-font:major-latin;
-	mso-bidi-font-family:"Times New Roman";
-	mso-bidi-theme-font:major-bidi;
-	color:#1F3763;
-	mso-themecolor:accent1;
-	mso-themeshade:127;}
-p.msonormal0, li.msonormal0, div.msonormal0
-	{mso-style-name:msonormal;
-	mso-style-noshow:yes;
-	mso-style-priority:99;
-	mso-style-unhide:no;
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman",serif;
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;}
-span.grame
-	{mso-style-name:grame;
-	mso-style-unhide:no;}
-span.apple-converted-space
-	{mso-style-name:apple-converted-space;
-	mso-style-unhide:no;}
+{mso-style-name:"Heading 3 Char";
+mso-style-unhide:no;
+mso-style-locked:yes;
+mso-style-link:"Heading 3";
+mso-ansi-font-size:12.0pt;
+mso-bidi-font-size:12.0pt;
+font-family:"Cambria","serif";
+mso-ascii-font-family:Cambria;
+mso-ascii-theme-font:major-latin;
+mso-fareast-font-family:"Times New Roman";
+mso-fareast-theme-font:major-fareast;
+mso-hansi-font-family:Cambria;
+mso-hansi-theme-font:major-latin;
+mso-bidi-font-family:"Times New Roman";
+mso-bidi-theme-font:major-bidi;
+color:#4F81BD;
+mso-themecolor:accent1;
+font-weight:bold;}
+span.BalloonTextChar
+{mso-style-name:"Balloon Text Char";
+mso-style-unhide:no;
+mso-style-locked:yes;
+mso-style-link:"Balloon Text";
+mso-ansi-font-size:8.0pt;
+mso-bidi-font-size:8.0pt;
+font-family:"Tahoma","sans-serif";
+mso-ascii-font-family:Tahoma;
+mso-hansi-font-family:Tahoma;
+mso-bidi-font-family:Tahoma;}
 .MsoChpDefault
-	{mso-style-type:export-only;
-	mso-default-props:yes;
-	font-size:10.0pt;
-	mso-ansi-font-size:10.0pt;
-	mso-bidi-font-size:10.0pt;}
+{mso-style-type:export-only;
+mso-default-props:yes;
+font-size:10.0pt;
+mso-ansi-font-size:10.0pt;
+mso-bidi-font-size:10.0pt;}
 @page WordSection1
-	{size:595.3pt 841.9pt;
-	margin:70.85pt 70.85pt 70.85pt 70.85pt;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
+{size:8.5in 11.0in;
+margin:1.0in 1.25in 1.0in 1.25in;
+mso-header-margin:.5in;
+mso-footer-margin:.5in;
+mso-paper-source:0;}
 div.WordSection1
-	{page:WordSection1;}
- /* List Definitions */
- @list l0
-	{mso-list-id:358629234;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-1415297392 -1638238070 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
+{page:WordSection1;}
+/* List Definitions */
+@list l0
+{mso-list-id:62067358;
+mso-list-template-ids:-174943062;}
 @list l0:level1
-	{mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-fareast-font-family:Verdana;
-	mso-bidi-font-family:Verdana;}
+{mso-level-number-format:bullet;
+mso-level-text:\F0B7;
+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:alpha-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
+{mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l0:level3
-	{mso-level-number-format:roman-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:right;
-	text-indent:-9.0pt;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l0:level4
-	{mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l0:level5
-	{mso-level-number-format:alpha-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l0:level6
-	{mso-level-number-format:roman-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:right;
-	text-indent:-9.0pt;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l0:level7
-	{mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l0:level8
-	{mso-level-number-format:alpha-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l0:level9
-	{mso-level-number-format:roman-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:right;
-	text-indent:-9.0pt;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1
-	{mso-list-id:429201773;
-	mso-list-template-ids:719721268;}
+{mso-list-id:128015942;
+mso-list-template-ids:-90681214;}
 @list l1:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1: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";}
+{mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l1:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l2
-	{mso-list-id:466047289;
-	mso-list-template-ids:1610394334;}
+{mso-list-id:216556000;
+mso-list-template-ids:925924412;}
 @list l2:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-number-format:bullet;
+mso-level-text:\F0B7;
+mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;
+mso-ansi-font-size:10.0pt;
+font-family:Symbol;}
 @list l2: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";}
+{mso-level-number-format:bullet;
+mso-level-text:\F0B7;
+mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;
+mso-ansi-font-size:10.0pt;
+font-family:Symbol;}
 @list l2:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l2:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l2:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l2:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l2:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l2:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l2:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l3
-	{mso-list-id:531573733;
-	mso-list-template-ids:1244939168;}
+{mso-list-id:562446694;
+mso-list-template-ids:913898366;}
 @list l3:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-number-format:bullet;
+mso-level-text:\F0B7;
+mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;
+mso-ansi-font-size:10.0pt;
+font-family:Symbol;}
 @list l3: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";}
+{mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l3:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l3:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l3:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l3:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l3:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l3:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l3:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4
-	{mso-list-id:556866975;
-	mso-list-template-ids:707933250;}
+{mso-list-id:797802132;
+mso-list-template-ids:-1971191336;}
 @list l4:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4: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";}
+{mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l4:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5
-	{mso-list-id:646518921;
-	mso-list-template-ids:206763582;}
+{mso-list-id:907304066;
+mso-list-template-ids:1969781532;}
 @list l5:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5: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";}
+{mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l5:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l6
-	{mso-list-id:663703915;
-	mso-list-template-ids:1745237468;}
+{mso-list-id:1050613616;
+mso-list-template-ids:-1009886748;}
 @list l6:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-number-format:bullet;
+mso-level-text:\F0B7;
+mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;
+mso-ansi-font-size:10.0pt;
+font-family:Symbol;}
 @list l6: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";}
+{mso-level-number-format:bullet;
+mso-level-text:\F0B7;
+mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;
+mso-ansi-font-size:10.0pt;
+font-family:Symbol;}
 @list l6:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l6:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l6:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l6:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l6:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l6:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l6:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l7
-	{mso-list-id:831408695;
-	mso-list-template-ids:-404974048;}
+{mso-list-id:1234970193;
+mso-list-template-ids:2055904002;}
 @list l7:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-number-format:bullet;
+mso-level-text:\F0B7;
+mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;
+mso-ansi-font-size:10.0pt;
+font-family:Symbol;}
 @list l7: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";}
+{mso-level-number-format:bullet;
+mso-level-text:\F0B7;
+mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;
+mso-ansi-font-size:10.0pt;
+font-family:Symbol;}
 @list l7:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l7:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l7:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l7:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l7:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l7:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l7:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8
-	{mso-list-id:878010821;
-	mso-list-template-ids:1023445118;}
+{mso-list-id:1846092290;
+mso-list-template-ids:-768590846;}
 @list l8:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-start-at:2;
+mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8: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";}
+{mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l8:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9
-	{mso-list-id:1115900613;
-	mso-list-template-ids:1605773156;}
+{mso-list-id:1894656566;
+mso-list-template-ids:1199983812;}
 @list l9:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
+{mso-level-start-at:2;
+mso-level-tab-stop:.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9: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";}
+{mso-level-tab-stop:1.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:1.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:2.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:3.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.0in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 @list l9:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l10
-	{mso-list-id:1230111023;
-	mso-list-template-ids:432953824;}
-@list l10:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l10: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 l10:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l10:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l10:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l10:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l10:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l10:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l10:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l11
-	{mso-list-id:1234969512;
-	mso-list-template-ids:450535058;}
-@list l11:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l11: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 l11:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l11:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l11:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l11:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l11:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l11:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l11:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l12
-	{mso-list-id:1424497553;
-	mso-list-template-ids:-1955066704;}
-@list l12:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l12: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 l12:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l12:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l12:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l12:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l12:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l12:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l12:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l13
-	{mso-list-id:1538663558;
-	mso-list-template-ids:-987702170;}
-@list l13:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l13: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 l13:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l13:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l13:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l13:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l13:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l13:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l13:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l14
-	{mso-list-id:1574007809;
-	mso-list-template-ids:505186936;}
-@list l14:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l14: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 l14:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l14:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l14:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l14:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l14:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l14:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l14:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l15
-	{mso-list-id:1602297654;
-	mso-list-template-ids:584060508;}
-@list l15:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l15: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 l15:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l15:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l15:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l15:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l15:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l15:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l15:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l16
-	{mso-list-id:1602907091;
-	mso-list-template-ids:-1415529306;}
-@list l16:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l16: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 l16:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l16:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l16:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l16:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l16:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l16:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l16:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l17
-	{mso-list-id:1611203363;
-	mso-list-template-ids:136240022;}
-@list l17:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l17: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 l17:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l17:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l17:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l17:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l17:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l17:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l17:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l18
-	{mso-list-id:1668634458;
-	mso-list-template-ids:-1075182280;}
-@list l18:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l18: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 l18:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l18:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l18:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l18:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l18:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l18:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l18:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l19
-	{mso-list-id:1761825669;
-	mso-list-template-ids:-1575575900;}
-@list l19:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l19: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 l19:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l19:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l19:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l19:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l19:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l19:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l19:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l20
-	{mso-list-id:1895971313;
-	mso-list-template-ids:456063288;}
-@list l20:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0B7;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Symbol;}
-@list l20: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 l20:level3
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:1.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l20:level4
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l20:level5
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:2.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l20:level6
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l20:level7
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:3.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l20:level8
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
-@list l20:level9
-	{mso-level-number-format:bullet;
-	mso-level-text:\F0A7;
-	mso-level-tab-stop:4.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	mso-ansi-font-size:10.0pt;
-	font-family:Wingdings;}
+{mso-level-tab-stop:4.5in;
+mso-level-number-position:left;
+text-indent:-.25in;}
 ol
-	{margin-bottom:0in;}
+{margin-bottom:0in;}
 ul
-	{margin-bottom:0in;}
+{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;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman",serif;}
-</style>
-<![endif]-->
-    <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 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;
+</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-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman","serif";} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="7170"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]-->
+<meta content="MCD Application Team" name="author"></head>
+<body link="blue" vlink="blue">
+<div class="WordSection1">
+<p class="MsoNormal"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"><o:p>&nbsp;</o:p></span></p>
+<div align="center">
+<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"><span style="font-size: 8pt; font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; 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;,&quot;sans-serif&quot;; color: rgb(51, 102, 255);">Release
+Notes for STM32F7xx HAL Drivers</span><span style="font-size: 20pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;;"><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;,&quot;sans-serif&quot;; 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;,&quot;sans-serif&quot;; color: black;"><img style="border: 0px solid ; width: 171px; height: 126px;" alt="" id="_x0000_i1026" src="_htmresc/st_logo.png"></span><span style="font-size: 10pt;"><o:p></o:p></span></p>
+</td>
+</tr>
+</tbody>
+</table>
+<p class="MsoNormal"><span style="font-family: &quot;Arial&quot;,&quot;sans-serif&quot;; display: none;"><o:p>&nbsp;</o:p></span><span lang="fr"><font face="Arial">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.</font> </span></p>
+<table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" width="900">
+<tbody>
+<tr>
+<td style="padding: 0in;" valign="top">
+<h2 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;"><a name="History"></a><span style="font-size: 12pt; color: white;">Update History</span>
+            </h2><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 241px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.3.0/ 10-June-2022</span></h3><p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in; font-size: 11pt; font-family: Arial,sans-serif; line-height: 16.8667px; color: rgb(0, 32, 82); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; width: 1416px;"><b><u><span style="font-size: 10pt; font-family: Verdana,sans-serif; color: black;">Main Changes<br></span></u></b></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">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;
 
-                                      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:
 
-                                    &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;
+<ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">General updates to fix
+     known defects and enhancements implementation.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">HAL ETH</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"> Entire receive process reworked.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Resolve the problem of received data corruption.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Implement transmission in interrupt mode.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Handle one interrupt for multiple transmitted packets.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Implement APIs to handle PTP feature.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Implement APIs to handle Timestamp feature.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Add support of receive buffer unavailable.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update HAL_ETH_IRQHandler() to handle receive buffer unavailable.</span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">HAL &nbsp;EXTI</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">Fix computation of pExtiConfig-&gt;GPIOSel in HAL_EXTI_GetConfigLine() API.</span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">HAL TIM</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">Manage
+      configuration of the Capture/compare DMA request source.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">Add
+      related new exported constants (TIM_CCDMAREQUEST_CC,
+      TIM_CCDMAREQUEST_UPDATE).</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">Create a
+      new macro __HAL_TIM_SELECT_CCDMAREQUEST() allowing to program the
+      TIMx_CR2.CCDS bitfield.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">LTDC HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Update
+      HAL_LTDC_DeInit() to fix MCU Hang up during LCD turn OFF.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">QSPI HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Update
+      HAL_QSPI_Abort() and&nbsp; HAL_QSPI_Abort_IT() APIs to check on QSPI BUSY
+      flag status before executing the abort procedure.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">DSI HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Align
+      DSI ULPS entry and exit sequences with the reference manual.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">RTC BKP HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Use
+      bits definitions from CMSIS Device header file instead of hard-coded
+      values.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Wrap
+      comments to be 80-character long and correct typos.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Move
+      constants RTC_IT_TAMP. from hal_rtc.h to hal_rtc_ex.h.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Gather
+      all instructions related to exiting the init mode into new function
+      RTC_ExitInitMode().</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Add new
+      macro
+      assert_param(IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(sTamper-&gt;Filter,
+      sTamper-&gt;Trigger)) to check tamper filtering is disabled in case
+      tamper events are triggered on signal edges.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Rework
+      functions HAL_RTCEx_SetTamper() and HAL_RTCEx_SetTamper_IT() to:</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Write
+       in TAMPCR register in one single access instead of two.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Deactivate
+       selected TAMPER's interrupt (besides global TAMPER interrupt).</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Avoid
+       activating global TAMPER interrupt.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Avoid
+       modifying user structure sTamper.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Avoid
+       overwriting TAMPCR register's content on successive calls to the
+       function.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li></ul></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">TIM LL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Update
+      __LL_TIM_CALC_PSC() macro to round up the evaluated value when the
+      fractional part of the division is greater than 0.5.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">CAN HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Removal
+      of never reached code.</span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">CEC HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Better performance by removing multiple volatile reads or writes in interrupt handler.</span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">I2C HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Timeout
+      issue using HAL MEM interface through FreeRTOS.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">I2C_IsErrorOccurred does not return error if timeout is detected.</span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">The ADDRF flag is cleared too early when the restart is received but the direction has changed.<br></span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">NOR HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">FMC_WRITE_OPERATION_DISABLE
+      for NOR cause Hardfault for Read operations.</span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">UART HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Removal of HAL_LOCK/HAL_UNLOCK calls in HAL UART Tx and Rx APIs.</span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">SDMMC HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">SDIO_PowerState_ON()
+API call moved after __HAL_MMC_ENABLE() to ensure MMC clock is enabled
+before the call to HAL_Delay() from within SDIO_PowerState_ON().</span></li></ul><li class="MsoNormal" style="color: rgb(0, 32, 82);"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(17, 17, 17);" lang="EN-US">USB OTG HAL</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="disc"><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">PCD:
+      add handling of USB OUT Endpoint disable interrupt.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">PCD:
+      fix device IN endpoint isoc incomplete transfer interrupt handling.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">PCD:
+      fix USB device Isoc OUT Endpoint incomplete transfer interrupt handling.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Fix
+      handling of ODDFRM bit in OTG_HCCHARx for HCD isochronous IN transactions.</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: windowtext;" lang="EN-US">Fix
+      received data length counting when DMA is enabled.</span><span style="color: windowtext;" lang="EN-US"></span><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;" lang="EN-US"><o:p></o:p></span></li></ul></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_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;
+<h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 241px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.10/ 22-November-2021</span></h3><p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in; font-size: 11pt; font-family: Arial,sans-serif; line-height: 16.8667px; color: rgb(0, 32, 82); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; width: 1416px;"><b><u><span style="font-size: 10pt; font-family: Verdana,sans-serif; color: black;">Main Changes<br></span></u></b></p><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font-size: medium; font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" type="disc"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">General updates to fix known defects and enhancements implementation.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">HAL GPIO</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Optimize assertion control for GPIO Pull mode in HAL_GPIO_Init<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Fix unexpected detection by reordering EXTI config.<o:p></o:p></span></li></ul><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL EXTI</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL DMA</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL ADC</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL/LL RNG</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update LL_RNG_DeInit() API to avoid “unused variable” warnings.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Update HAL_RNG_GenerateRandomNumber() API<o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="square"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL/LL RTC</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Correct month management in IS_LL_RTC_MONTH() macro.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Fix wrong reference to RTCx.<o:p></o:p></span></li></ul><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL LPTIM</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL/LL TIM</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL UART</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Improve header description of UART_WaitOnFlagUntilTimeout() function<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Add const qualifier for read only pointers.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL/LL USART</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Improve header description of USART_WaitOnFlagUntilTimeout() function.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Add const qualifier for read only pointers.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Fix compilation warnings generated with ARMV6 compiler.<o:p></o:p></span></li></ul><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL IRDA</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Improve header description of IRDA_WaitOnFlagUntilTimeout() function<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Add const qualifier for read only pointers.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL SMARTCARD</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Improve header description of SMARTCARD_WaitOnFlagUntilTimeout() function<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Add const qualifier for read only pointers.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL/LL SPI</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Updated to fix MISRA-C 2012 Rule-13.2.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL SMBUS</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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 style="margin-bottom: 0in;" type="square"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Add flush on TX register.<o:p></o:p></span></li></ul></ul><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL I2C</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update to handle errors in polling mode.<o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="square"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Fix written reserved bit 28 in I2C_CR2 register.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL CAN</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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 style="margin-bottom: 0in;" type="square"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL DSI</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL QSPI</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Fix compilation warning with GCC V9.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">LL FMC</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">General refactoring and clean-up.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update to avoid “unused variable” warnings.<o:p></o:p></span></li></ul><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL SRAM</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">General refactoring and clean-up.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL NAND</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">General refactoring and clean-up.<o:p></o:p></span></li></ul><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL NOR</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">General refactoring and clean-up.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update address calculation in HAL_NOR_ProgramBuffer() API<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Apply adequate commands according to the command set field value<o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="square"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">command set 1 for Micron JS28F512P33.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">command set 2 for Micron M29W128G and Cypress S29GL128P.<o:p></o:p></span></li></ul><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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 style="margin-bottom: 0in;" type="square"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_Init()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_Read_ID()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_ReturnToReadMode()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_Read()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_Program()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_ReadBuffer()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_ProgramBuffer()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_Erase_Block()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_Erase_Chip()<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL_NOR_GetStatus()<o:p></o:p></span></li></ul><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL/LL SDMMC</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Take in account the voltage range in the CMD1 command.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Add new LL function to have correct response for MMC driver.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update the driver to have all fields correctly initialized.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL SD</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL/LL USB</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">&nbsp;update<o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Remove non required 200ms delay during host initialization.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update to avoid resetting host channel direction during channel halt.<o:p></o:p></span></li><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" 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="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><b><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL IWDG</span></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><o:p></o:p></span></li><ul style="margin-bottom: 0in;" type="circle"><li class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: normal; color: rgb(17, 17, 17);"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Add LSI startup time in default IWDG timeout calculation (HAL_IWDG_DEFAULT_TIMEOUT).</span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 241px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.9/ 12-February-2021</span></h3><p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 0.25in; font-size: 11pt; font-family: Arial,sans-serif; line-height: 16.8667px; color: rgb(0, 32, 82); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><b><u><span style="font-size: 10pt; font-family: Verdana,sans-serif; color: black;">Main Changes</span></u></b><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><br></span></p><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font-size: medium; font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; margin-top: 0in;" type="disc"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 11pt; font-family: Arial,sans-serif; line-height: 16.8667px; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">General updates to fix known defects and enhancements<span>&nbsp;</span><span class="grame">implementation</span></span></li></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 241px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.8/ 13-February-2020</span></h3>
+            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b><u><span style="color: black; font-family: Verdana; font-size: 10pt;">Main Changes</span></u></b></p>
+            <ul style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; margin-top: 0cm; margin-bottom: 0in; word-spacing: 0px; white-space: normal;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates  to fix known defects and enhancements implementation</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><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="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;"><o:p></o:p></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update&nbsp;GPIO
+      initialization sequence<b>&nbsp;</b>to avoid unwanted pulse on GPIO Pin's</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><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="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;"><o:p></o:p></span></li><ul><li class="MsoNormal" style="color: black; margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update
+      HAL_I2C_EV_IRQHandler() API to fix I2C send break issue&nbsp;</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Add
+       additional check on hi2c-&gt;hdmatx,
+       hdmatx-&gt;XferCpltCallback,&nbsp;hi2c-&gt;hdmarx,
+       hdmarx-&gt;XferCpltCallback in I2C_Master_SB() API to
+       avoid&nbsp;enabling DMA request&nbsp;when IT mode is used.</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update
+      HAL_I2C_ER_IRQHandler() API to fix acknowledge failure issue with
+      I2C&nbsp;memory IT processes</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">&nbsp;Add&nbsp;stop
+       condition generation&nbsp;when&nbsp;NACK occurs.</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update&nbsp;HAL_I2C_Init()
+      API to force software reset before setting new I2C configuration</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update
+      HAL I2C processes to report ErrorCode&nbsp;when wrong I2C start condition
+      occurs</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">&nbsp;Add
+       new&nbsp;ErrorCode define: HAL_I2C_WRONG_START</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">&nbsp;Set&nbsp;ErrorCode
+       parameter in&nbsp;I2C handle to&nbsp;HAL_I2C_WRONG_START</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update&nbsp;I2C_DMAXferCplt(),
+      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="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Add
+       additional check on hi2c-&gt;hdmtx and hi2c-&gt;hdmarx before
+       resetting&nbsp;DMA Tx/Rx complete callback</span></li></ul></ul></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">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;
+<ul style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; margin-top: 0cm; margin-bottom: 0in; word-spacing: 0px; white-space: normal;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL ADC </span>Update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add "ADC_INTERNAL_NONE" channel to disable the VBAT &amp; TSVREFE channel.</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL DCMI </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add DCMI_SyncUnmaskTypeDef structure and HAL_DCMI_ConfigSyncUnmask() API to manage embedded synchronization delimiters unmasks</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL EXTI</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">General update to enhance HAL EXTI driver robustness&nbsp;</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add additional assert check on EXTI config lines</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update to compute EXTI line mask before read/write access to EXTI registers</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update EXTI callbacks management to be compliant with reference manual: only one PR register for rising and falling interrupts.</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update
+parameters in EXTI_HandleTypeDef structure: merge HAL EXTI
+RisingCallback and FallingCallback in only one PendingCallback.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Remove HAL_EXTI_RISING_CB_ID and HAL_EXTI_FALLING_CB_ID values from EXTI_CallbackIDTypeDef enumeration.</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update HAL_EXTI_IRQHandler() API to serve interrupts correctly.</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update to compute EXTI line mask before handle EXTI interrupt.</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update to support GPIO port interrupts:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add new "GPIOSel" parameter in EXTI_ConfigTypeDef structure</span></li></ul></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL HASH&nbsp;</span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="MsoNormal" style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;"></span></span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;"></span>Null pointer on handler "hhash" is now checked before accessing structure member "hhash-&gt;Init.DataType" in the following API:</span></li></ul><ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_Init()</span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Following <span style="font-weight: bold;">interrupt-based</span>
+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></li></ul><ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_SHA1_Accmlt_IT()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_MD5_Accmlt_IT()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASHEx_SHA224_Accmlt_IT()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASHEx_SHA256_Accmlt_IT()</span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Following <span style="font-weight: bold;">aliases</span> have been added (just <span style="font-weight: bold;">for clarity sake</span>) as they shall be used at the <span style="font-weight: bold;">end</span> of the computation of a multi-buffers message and not at the start:</span></li></ul><ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_SHA1_Accmlt_End() to be used instead of HAL_HASH_SHA1_Start()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_MD5_Accmlt_End() to be used instead of HAL_HASH_MD5_Start()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_SHA1_Accmlt_End_IT() to be used instead of HAL_HASH_SHA1_Start_IT()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_MD5_Accmlt_End_IT() to be used instead of HAL_HASH_MD5_Start_IT()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASHEx_SHA224_Accmlt_End() to be used instead of HAL_HASHEx_SHA224_Start()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASHEx_SHA256_Accmlt_End() to be used instead of HAL_HASHEx_SHA256_Start()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASHEx_SHA224_Accmlt_End_IT() to be used instead of HAL_HASHEx_SHA224_Start_IT()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASHEx_SHA256_Accmlt_End_IT() to be used instead of HAL_HASHEx_SHA256_Start_IT()</span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">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_<span style="font-weight: bold;">Accmlt</span>_End() could not be named HAL_HASHEx_SHA256_<span style="font-weight: bold;">Accumulate</span>_End(). Otherwise the name would have conflicted with HAL_HASHEx_SHA256_<span style="font-weight: bold;">Accumulate</span>_End_IT()). In order to have aligned names following APIs have been renamed:</span></li></ul><ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_MD5_Accumulate() renamed HAL_HASH_MD5_Accmlt()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_SHA1_Accumulate() renamed HAL_HASH_SHA1_Accmlt()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASHEx_SHA224_Accumulate() renamed HAL_HASHEx_SHA224_Accmlt()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASHEx_SHA256_Accumulate() renamed HAL_HASHEx_SHA256_Accmlt()</span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HASH <span style="font-weight: bold;">handler</span> state is <span style="font-weight: bold;">no more</span> reset to HAL_HASH_STATE_READY <span style="font-weight: bold;">once DMA has been started</span> in the following APIs:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_MD5_Start_DMA()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HMAC_MD5_Start_DMA()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HASH_SHA1_Start_DMA()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_HMAC_SHA1_Start_DMA()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HASH <span style="font-weight: bold;">phase</span> state is now set to HAL_HASH_PHASE_READY<span style="font-weight: bold;"> once the digest has been read</span> in the following APIs:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HASH_IT()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HMAC_Processing()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HASH_Start()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HASH_Finish()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Case of a large buffer scattered around in memory each piece of which is <span style="font-weight: bold;">not</span> necessarily a <span style="font-weight: bold;">multiple of 4</span> bytes in length.</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">In
+section "##### How to use this driver #####", sub-section "*** Remarks
+on message length ***" added to provide recommendations to follow in
+such case.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">No modification of the driver as the root-cause is at design-level.<br></span></li></ul></ul></ul><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span><ul style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; margin-top: 0cm; margin-bottom: 0in; word-spacing: 0px; white-space: normal;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-weight: bold;"></span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;"><span style="font-weight: bold;">HAL SDMMC&nbsp;</span></span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Fix&nbsp;typo in "FileFormatGroup" parameter in the HAL_MMC_CardCSDTypeDef and HAL_SD_CardCSDTypeDef structures.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Fix an improve handle state and error management</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Rename the defined MMC card capacity type to be more meaningful:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update <span style="font-weight: bold;">MMC_HIGH_VOLTAGE_CARD</span> to <span style="font-weight: bold;">MMC LOW_CAPACITY_CARD</span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update <span style="font-weight: bold;">MMC_DUAL_VOLTAGE_CRAD</span> to <span style="font-weight: bold;">MMC_HIGH_CAPACITY_CARD</span></span></li></ul></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL QSPI </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Remove Lock mechanism from HAL_QSPI_Init() and HAL_QSPI_DeInit() APIs</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b style="color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;,serif; font-size: 16px; font-style: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL LPTIM<span>&nbsp;</span></span></b><span style="color: rgb(0, 0, 0); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: 10pt; font-family: Verdana,sans-serif;">update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Add a polling mechanism to check on&nbsp;</span><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">LPTIM_FLAG_XXOK</span><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><span>&nbsp;</span>flags in different API&nbsp;</span><span style="font-size: 10pt; font-family: Verdana,sans-serif;"></span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Add&nbsp;LPTIM_WaitForFlag()<span>&nbsp;</span></span><span style="font-size: 10pt; font-family: Verdana,sans-serif;">API<span>&nbsp;</span></span><span style="font-size: 10pt; font-family: Verdana,sans-serif;">to wait for flag set.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Perform new checks on HAL_LPTIM_STATE_TIMEOUT.</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Workaround to fix MCU slack in sleep mode<br></span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Update __HAL_LPTIM_DISABLE () macro used to disable LPTIM HW instance</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Remove the LPTIM_CR_ENABLE bit clear.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Add a new API&nbsp; LPTIM_Disable() defined in&nbsp; hal_lptim.c</span></li></ul></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Update __HAL_LPTIM_RESET_HANDLE_STATE(__HANDLE__) macro by adding a specific .... when using callback register</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">__HAL_LPTIM_ENABLE</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Remove usseless check on LPTIM2 in the LL driver since F7 support only one instance of LPTIM.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Update the&nbsp; LL_LPTIM_DISABLE() API used to disable LPTIM HW instance</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Move API definition to ll_lptim.c</span></li></ul></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><b style="color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;,serif; font-size: 16px; font-style: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL&nbsp;TIM<span>&nbsp;</span></span></b><span style="color: rgb(0, 0, 0); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: 10pt; font-family: Verdana,sans-serif;">update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,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 delay</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">_</span><span style="color: rgb(0, 0, 0); font-family: Verdana,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; display: inline ! important; float: none;">_HAL_TIM_ENABLE_OCxFAST() and __HAL_TIM_DISABLE_OCxFAST().</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="color: rgb(0, 0, 0); font-family: Verdana,sans-serif; font-size: 13.3333px; font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; display: inline ! important; float: none;">U</span><span style="color: rgb(0, 0, 0); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: 10pt; font-family: Verdana,sans-serif;">pdate Encoder interface mode to keep&nbsp;</span><span style="color: rgb(0, 0, 0); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: 10pt; font-family: Verdana,sans-serif;">TIM_CCER_CCxNP bits low</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Add&nbsp;</span><span style="font-size: 10pt; font-family: Verdana,sans-serif;">TIM_ENCODERINPUTPOLARITY_RISING and TIM_ENCODERINPUTPOLARITY_FALLING</span><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><span>&nbsp;</span>definitions to determine encoder input polarity.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Add<span>&nbsp;</span></span><span style="font-size: 10pt; font-family: Verdana,sans-serif;">IS_TIM_ENCODERINPUT_POLARITY()</span><span style="font-size: 10pt; font-family: Verdana,sans-serif;"><span>&nbsp;</span>macro to check&nbsp;the encoder input polarity.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Update HAL_TIM_Encoder_Init() API&nbsp;</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Replace IS_TIM_IC_POLARITY() macro by IS_TIM_ENCODERINPUT_POLARITY() macro.</span></li></ul></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Correct wrong
+      instance parameter check in encoder mode<o:p></o:p></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><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
+        interface :&nbsp;<o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Start()<o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Stop()<o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Start_IT()<o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Stop_IT()<o:p></o:p></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><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 mode :&nbsp;<o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Start_DMA()<o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_Stop_DMA()<o:p></o:p></span></li></ul></ul></ul></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">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><ul><li><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
+      HAL_TIMEx_MasterConfigSynchronization() API to avoid functional errors
+      and&nbsp;assert fails when using some TIM instances as input trigger.<o:p></o:p></span></li></ul></ul><ul style="margin-top: 0cm;" type="disc"><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Replace&nbsp;IS_TIM_SYNCHRO_INSTANCE()
+       macro by IS_TIM_MASTER_INSTANCE() macro.&nbsp;<o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add&nbsp;IS_TIM_SLAVE_INSTANCE()
+       macro to&nbsp;check on TIM_SMCR_MSM bit.<o:p></o:p></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Provide new
+      API&nbsp;to set and clear UIFREMAP<o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><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><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_UIFREMAP_DISABLE<o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_UIFREMAP_ENABLE<o:p></o:p></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new macro
+       in HAL driver to enable and desable the&nbsp; Update Interrupt Flag
+       Remap<o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;__HAL_TIM_UIFREMAP_ENABLE()<o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_TIM_UIFREMAP_DISABLE()/__HAL_TIM_GET_UIFCPY
+        macro<o:p></o:p></span></li></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><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 not&nbsp;<o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the
+        __HAL_TIM_GET_UIFCPY() macro in the HAL driver<o:p></o:p></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
+        LL_TIM_IsActiveUIFCPY() API in the LL driver<o:p></o:p></span></li></ul></ul></ul><ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><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></ul><ul style="margin-top: 0cm;" type="disc"><ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IS_TIM_UIFREMAP_MODE()<o:p></o:p></span></li></ul></ul></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove usseless
+      define in the LL driver&nbsp;<o:p></o:p></span></li></ul><ul style="margin-top: 0cm;" type="disc"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIMx_AF1_BKINE
+       / TIMx_AF1_BKDFBKE / &nbsp;TIMx_AF2_BK2INE / &nbsp;TIMx_AF2_BK2DFBKE /
+       &nbsp;TIMx_AF2_BK2INP</span></li></ul></ul></ul><span style="font-size: 10pt; font-family: Verdana,sans-serif;"></span><ul style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; margin-top: 0cm; margin-bottom: 0in; word-spacing: 0px; white-space: normal;" type="square"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><b style="color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;,serif; font-size: 16px; font-style: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">HAL&nbsp;</span></b><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;"><span style="font-weight: bold;">SMARTCARD</span> update</span><span style="color: rgb(0, 0, 0); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: 10pt; font-family: Verdana,sans-serif;"></span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;"></span><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Update SMARTCARD_SetConfig() API.</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Split HAL_RCC_GetPCLK1Freq() and
+HAL_RCC_GetPCLK2Freq() macros from the BRR calculation.</span></li></ul></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black; font-weight: bold;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">HAL&nbsp;</span><b style="color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;,serif; font-size: 16px; font-style: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;"></span></b><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;"><span style="font-weight: bold;">IRDA&nbsp;</span><span style="font-weight: normal;">update</span></span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Update IRDA_SetConfig() API&nbsp;</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Split HAL_RCC_GetPCLK1Freq() and
+HAL_RCC_GetPCLK2Freq() macros from the IRDA_DIV_SAMPLING16() macro.</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Update some API desciption</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_Transmit() /&nbsp;HAL_IRDA_Transmit_IT()</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">HAL_IRDA_Receive() /&nbsp;HAL_IRDA_Receive_IT()</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_Transmit_DMA() / HAL_IRDA_Receive_DMA()</span></li></ul></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><b><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">HAL RCC </span></b><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Update the HAL_RCC_ClockConfig() and HAL_RCC_DeInit() API to don't overwrite the custom tick priority</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Update HAL_RCC_OscConfig() API to don't return HAL_ERROR if request repeats the current PLL configuration</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><b><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL USART</span></b><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Add support to the Receiver Timeout Interrupt in the
+HAL_USART_IRQHandler</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Update some API desciption&nbsp;</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      &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;
+<p class="MsoNormal" style="margin: 2pt 0cm; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">HAL_USART_Transmit() /&nbsp;HAL_USART_Transmit_IT()&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"></span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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:
 
-                                      &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;
 
-                                      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="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">HAL_USART_Receive() /&nbsp;HAL_USART_Receive_IT()&nbsp;</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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:
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">HAL_USART_TransmitReceive() /&nbsp;HAL_USART_TransmitReceive_IT()&nbsp;</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">HAL_USART_Transmit_DMA() / HAL_USART_Receive_DMA() / HAL_USART_TransmitReceive_DMA()</span></p></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Update USART_SetConfig() API&nbsp;</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Split HAL_RCC_GetPCLK1Freq() and
+HAL_RCC_GetPCLK2Freq() macros from the USART_DIV_SAMPLING8() macro</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Support Stop Mode functionalities in the USART
+driver&nbsp;&nbsp;</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Add &nbsp;definition of USART_ISR_REACK USART,&nbsp;
+receive enable acknowledge flag in the HAL driver</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Add new flag definition in the LL driver&nbsp;</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      &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;
 
-                                      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;
 
-                                      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:
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_ICR_WUCF&nbsp; Wakeup from Stop mode flag&nbsp;</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      &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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_ISR_WUF Wakeup from Stop mode flag&nbsp;</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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:
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_ISR_REACK Receive enable acknowledge flag&nbsp;</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_CR3_WUFIE Wakeup from Stop mode interrupt enable</span></p></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">Add new definition of the different event which
+activates the&nbsp;wakeup from Stop mode flag</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;">LL_ </span><span style="font-size: 10pt; line-height: 106%; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">USART_WAKEUP_ON_ADDRESS</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      &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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_WAKEUP_ON_STARTBIT</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                        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:
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_WAKEUP_ON_RXNE</span></p></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      &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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Add new API in LL driver to support stop mode</span></p></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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:
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_EnableInStopMode() to enable the USART in stop mode</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      &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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_DisableInStopMode() to disable the USART in stop mode</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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:
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_IsEnabledInStopMode() to check if the USART is enabled or not
+in the stop mode</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      &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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_EnableClockInStopMode() to enable the USART clock in the stop
+mode</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_DisableClockInStopMode() to disable the USART clock in the stop
+mode</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_IsClockEnabledInStopMode() to check whether USART clock are
+enabled or not in the stop mode</span></p></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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:
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Add new API in LL driver to manage event relisted to Wake UP Interrupt
+Flag</span></p></li></ul><ul><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      &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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_SetWKUPType() to select the event type for Wake UP Interrupt
+Flag</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_GetWKUPType() to get&nbsp; the event type for Wake UP Interrupt
+Flag</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_IsActiveFlag_WKUP() to Check if the USART Wake Up from stop
+mode Flag is set or not</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_IsActiveFlag_REACK() to Check if the USART Receive Enable
+Acknowledge Flag is set or not</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_ClearFlag_WKUP() Clear Wake Up from stop mode Flag</span></p></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Add new API in LL driver to manage wake up from stop interruption</span></p></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_EnableIT_WKUP() to Enable Wake Up from Stop Mode Interrupt</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;">
 
-                                      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;
+<p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_DisableIT_WKUP() to Disable Wake Up from Stop Mode Interrupt</span></p></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><p class="MsoNormal" style="margin: 2pt 0cm 2pt 18pt; text-indent: -18pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">LL_USART_IsEnabledIT_WKUP() to Check if the USART Wake Up from Stop Mode
+Interrupt is enabled or not</span></p></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></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;Add handling USB host babble error interrupt</span></li><li class="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></li><li class="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></li><li class="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 deactivation</span></li></ul></ul>
+<b style="color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;,serif; font-size: 16px; font-style: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;"></span></b><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 241px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.7/ 08-February-2019</span></h3>
+            <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b><u><span style="color: black; font-family: Verdana; font-size: 10pt;">Main Changes</span></u></b></p>
+            <ul style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; margin-top: 0cm; margin-bottom: 0in; word-spacing: 0px; white-space: normal;" type="square">
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates  to fix known defects and enhancements implementation</span></li>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates  to fix CodeSonar compilation warnings</span></li>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates  to fix SW4STM32 compilation errors under Linux</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">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;
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates to fix the user manual .chm files</span></li>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add support of HAL callback registration feature</span></li>
+            </ul>
+            <b><u><span style="color: black; font-family: Verdana; font-size: 10pt;"></span></u></b>                   
+            <ul style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; margin-top: 0cm; margin-bottom: 0in; word-spacing: 0px; white-space: normal;" type="square">
+<li class="MsoNormal" style="margin: 4.5pt 0in; color: black; font-family: &quot;Times New Roman&quot;,serif; font-size: 12pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new<span class="Apple-converted-space"> </span><span style="font-weight: bold;">HAL EXTI</span><span class="Apple-converted-space"> </span>driver</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; color: black; font-family: &quot;Times New Roman&quot;,serif; font-size: 12pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">The following changes done on the HAL drivers require an update on the application code based on older HAL versions</span></span></li><ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Rework of HAL CRYP driver<span style="font-weight: bold;"> (compatibility break) </span></span><br><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US"></span></li>
+                <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL CRYP driver has been redesigned with new API'</span><span style="font-family: Verdana; font-size: 10pt;">s, to bypass limitations on data Encryption/Decryption management present with previous HAL CRYP driver version.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; color: black; font-family: &quot;Times New Roman&quot;,serif; font-size: 12pt;"><span style="font-family: Verdana; font-size: 10pt;">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></li><li class="MsoNormal" style="margin: 4.5pt 0in; color: black; font-family: &quot;Times New Roman&quot;,serif; font-size: 12pt;"><span style="font-family: Verdana; font-size: 10pt;">The legacy HAL CRYP driver is no longer supported.</span></li>
+                </ul>
+</ul>
+            </ul>
+            <ul style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; margin-top: 0cm; margin-bottom: 0in; word-spacing: 0px; white-space: normal;" type="square">
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL/LL Generic </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add support of <span style="font-weight: bold;">HAL callback registration</span> feature</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">The feature disabled by default is available for the following HAL drivers:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt; font-weight: bold;">ADC, CAN, CEC, CRYP, DAC, DCMI, DFSDM, DMA2D, DSI, ETH, HASH, HCD, I2C, SMBUS, UART,
+USART, IRDA, JPEG, SMARTCARD, LPTIM, LTDC, MDIOS, MMC, NAND, NOR, PCD,
+QSPI, RNG, RTC, SAI, SD, SDRAM, SRAM, SPDIFRX, SPI, I2S, TIM </span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">and</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt; font-weight: bold;"> WWDG</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt; font-weight: bold;"><br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">The feature may be enabled individually per HAL <span style="font-style: italic;">PPP</span> driver by setting the corresponding definition USE_HAL_<span style="font-style: italic;">PPP</span>_REGISTER_CALLBACKS
+to&nbsp;1U in stm32f7xx_hal_conf.h project configuration file (template
+file stm32f7xx_hal_conf_template.h available from&nbsp;
+Drivers/STM32F7xx_HAL_Driver/Inc)</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Once
+enabled , the user application may resort to HAL_PPP_RegisterCallback()
+to register specific callback function(s) and unregister it(them) with
+HAL_<span style="font-style: italic;">PPP</span>_UnRegisterCallback().</span></li></ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates  to fix MISRA 2012 compilation errors</span><br><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span></li>
+                <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_IS_BIT_SET()/HAL_IS_BIT_CLR() macros implementation update</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">"stdio.h" include updated with "stddef.h"</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">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;
+                
+</ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL GPIO</span> Update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_GPIO_TogglePin() API implementation update: to improve robustness<br>
+</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_GPIO_DeInit() API update to ensure clear all GPIO EXTI pending interrupts.</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">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;
+            </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">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;
+            <ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; line-height: normal; margin-top: 0cm;" type="square"></ul><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; line-height: normal; margin-top: 0cm;" type="square">
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL CRYP</span> update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">The CRYP_InitTypeDef </span>is no more supported, changed by <span style="font-weight: bold;">CRYP_ConfigTypedef</span> to allow changing parameters <br>
+using HAL_CRYP_setConfig() API without reinitialize the CRYP IP using the HAL_CRYP_Init() API</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">New parameters added in the <span style="font-weight: bold;">CRYP_ConfigTypeDef</span> structure: <span style="font-weight: bold;">B0</span> and <span style="font-weight: bold;">DataWidthUnit</span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Input data size parameter is added in the <span style="font-weight: bold;">CRYP_HandleTypeDef</span> structure<span style="font-weight: bold;"></span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add new APIs to manage the CRYP configuration:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">&nbsp;</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYP_SetConfig()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYP_GetConfig()</span></li></ul>
+              </ul>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add new APIs to manage the Key derivation:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYPEx_EnableAutoKeyDerivation()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYPEx_DisableAutoKeyDerivation()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add new APIs to encrypt and decrypt data:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYP_Encypt()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYP_Decypt()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYP_Encypt_IT()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYP_Decypt_IT()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYP_Encypt_DMA()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYP_Decypt_DMA()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add new APIs to generate TAG:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYPEx_AES<span style="font-weight: bold;">GCM</span>_GenerateAuthTAG()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_CRYPEx_AES<span style="font-weight: bold;">CCM</span>_GenerateAuthTAG()</span></li></ul>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL I2C</span> update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">I2C API changes for </span><span style="font-family: Verdana; font-size: 10pt;">MISRA-C 2012 compliancy:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Rename</span><span style="font-family: Verdana; font-size: 10pt;"> HAL_I2C_Master_Sequential_Transmit_IT() to </span><span style="font-family: Verdana; font-size: 10pt;">HAL_I2C_Master_Seq_Transmit_IT()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Rename </span><span style="font-family: Verdana; font-size: 10pt;">HAL_I2C_Master_Sequentiel_Receive_IT() to </span><span style="font-family: Verdana; font-size: 10pt;">HAL_I2C_Master_Seq_Receive_IT()</span><br><span style="font-family: Verdana; font-size: 10pt;"></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Rename </span><span style="font-family: Verdana; font-size: 10pt;">HAL_I2C_Slave_Sequentiel_Transmit_IT() to </span><span style="font-family: Verdana; font-size: 10pt;">HAL_I2C_Slave_Seq_Transmit_IT() </span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Rename </span><span style="font-family: Verdana; font-size: 10pt;">HAL_I2C_Slave_Sequentiel_Receive_DMA() to </span><span style="font-family: Verdana; font-size: 10pt;">HAL_I2C_Slave_Seq_Receive_DMA()</span></li></ul><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US">Add support of I2C repeated start feature in DMA Mode:</span></li><ul><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US">With the following new API's<br></span></li></ul><ul><ul><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US">HAL_I2C_Master_Seq_Transmit_DMA()</span></li></ul><ul><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US"> HAL_I2C_Master_Seq_Receive_DMA()</span></li></ul><ul><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US">HAL_I2C_Slave_Seq_Transmit_DMA()</span></li></ul><ul><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US">HAL_I2C_Slave_Seq_Receive_DMA()</span></li></ul></ul><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US">Add new I2C transfer options to easy manage the sequential transfers<br></span></li><ul><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US">I2C_OTHER_FRAME</span></li><li><span style="font-family: &quot;Verdana&quot;,sans-serif; font-size: 10pt;" lang="EN-US">I2C_OTHER_AND_LAST_FRAME</span></li></ul>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">LL&nbsp; RCC </span>update</span></li>
+              <ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update LL_RCC_GetSAIClockFreq() API to return the right frequency according to the SAI clock source</span></li>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL RNG </span>update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update to manage RNG error code: </span><br><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add ErrorCode parameter in HAL RNG Handler structure</span></li>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add HAL_RNG_GetError() API<br>
+</span></li>
+</ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL Lock/Unlock mecanism update  </span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span></li>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">LL ADC </span>update<br>
+                </span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Fix </span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">VREFINT/TEMPSENSOR </span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">calibration address registers for STM32F74x/75x/F76/F77 devices</span></li>
+                <ul>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">Note</span>: For STM32F72/F73 the issue will be fixed in next release<br>
+</span></li>
+                </ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_ADC_Start(), </span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_ADC_Start_IT() and </span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_ADC_Start_DMA() update to prevention from starting ADC2 or ADC3 once multimode is enabled</span></li>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL DFSDM&nbsp; </span>update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">General updates to be compliant with DFSDM bits naming used in CMSIS files.</span></li>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL CAN&nbsp; </span>update</span></li>
+              <ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update possible values list for FilterActivation parameter in CAN_FilterTypeDef structure</span></li>
+                <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">CAN_FILTER_ENABLE instead of ENABLE<br></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">CAN_FILTER_DISABLE</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"> instead of DISABLE</span></li>
+                </ul>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL CEC&nbsp; </span>update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update HAL CEC State management method:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Remove HAL_CEC_StateTypeDef structure parameters</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add new defines for CEC states</span></li></ul>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA2D&nbsp; </span>update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Remove unused DMA2D_ColorTypeDef structure to be compliant with MISRAC 2012 Rule 2.3</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">General </span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">update to use dedicated defines for DMA2D_BACKGROUND_LAYER and DMA2D_FOREGROUND_LAYER instead of numerical values: 0/1.</span></li>
+              </ul>
+<ul></ul>
+            </ul>
+            <span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span>
+            <ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; line-height: normal; margin-top: 0cm;" type="square">
+              <ul>
+              </ul></ul>
+            <span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span>
+            <ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; line-height: normal; margin-top: 0cm;" type="square"></ul>
+            <span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span>
+            <ul style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; margin-top: 0cm; margin-bottom: 0in; word-spacing: 0px; white-space: normal;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL/LL RTC</span> update</span></li>
+              <ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL/ LL drivers optimization</span></li>
+                <ul>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL driver: remove unused variables</span></li>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">LL driver: getter APIs optimization</span></li>
+                </ul>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL JPEG </span>update</span></li>
+              <ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update parameters type in JPEG_ConfTypeDef structure to be aligned with 32-bits<br>
+                  </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">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;
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL SPI </span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">update</span></li>
+              <ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Overall rework of the driver for a more efficient&nbsp;implementation</span></li>
+              </ul>
+              <ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add the following new macros:</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span></li>
+                <ul>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">SPI</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">_CHECK_FLAG() <br>
+</span></li>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">SPI</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">_CHECK_IT_SOURCE() <br>
+</span></li>
+                </ul>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Add HAL_SPIEx_FlushRxFifo() API to flush the SPI FIFO RX.<br>
+                  </span></li>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Update HAL_SPI_Abort() to fix abort issue in SPI TX or Rx mode only </span></li>
+                <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Update </span><span style="font-family: Verdana; font-size: 10pt;">HAL_</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">SPI</span><span style="font-family: Verdana; font-size: 10pt;">_Transmit()/</span><span style="font-family: Verdana; font-size: 10pt;">HAL_SPI</span><span style="font-family: Verdana; font-size: 10pt;">_</span><span style="font-family: Verdana; font-size: 10pt;">Receive()</span><span style="font-family: Verdana; font-size: 10pt;"> API's to fix memory overflow issue.</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">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;
+                
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL I2S </span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Overall rework of the driver for a more efficient&nbsp;implementation</span></li>
+              </ul>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add the following new macros:</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">I2S</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">_CHECK_FLAG()</span></li>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">I2S</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">_CHECK_IT_SOURCE()</span></li>
+</ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Update </span><span style="font-family: Verdana; font-size: 10pt;">HAL_</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">I2S</span><span style="font-family: Verdana; font-size: 10pt;">_Transmit()/</span><span style="font-family: Verdana; font-size: 10pt;">HAL_</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">I2S</span><span style="font-family: Verdana; font-size: 10pt;">_</span><span style="font-family: Verdana; font-size: 10pt;">Receive()</span><span style="font-family: Verdana; font-size: 10pt;"> API's to fix memory overflow issue.</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">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:
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL/LL TIM </span>update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Move the following TIM structures from </span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">stm32f4xx_hal_tim_ex.h</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"> into stm32f4xx_hal_tim.h<br></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">TIM_MasterConfigTypeDef</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">TIM_BreakDeadTimeConfigTypeDef</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add new TIM Callbacks API's:</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_TIM_PeriodElapsedHalfCpltCallback()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_TIM_IC_CaptureHalfCpltCallback()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_TIM_PWM_PulseFinishedHalfCpltCallback()</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_TIM_TriggerHalfCpltCallback()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">TIM API changes for </span><span style="font-family: Verdana; font-size: 10pt;">MISRA-C 2012 compliancy:</span></li>
+              </ul>
+              <ul>
+<ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Rename</span><span style="font-family: Verdana; font-size: 10pt;"> </span><span style="font-family: Verdana; font-size: 10pt;">HAL_TIM_SlaveConfigSynchronization</span><span style="font-family: Verdana; font-size: 10pt;"> to HAL_TIM_SlaveConfigSynchro</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Rename</span><span style="font-family: Verdana; font-size: 10pt;"> </span><span style="font-family: Verdana; font-size: 10pt;">HAL_TIM_SlaveConfigSynchronization</span><span style="font-family: Verdana; font-size: 10pt;">_IT to HAL_TIM_SlaveConfigSynchro_IT</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Rename HAL_TIMEx_ConfigCommutationEvent to HAL_TIMEx_ConfigCommutEvent</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Rename HAL_TIMEx_ConfigCommutationEvent_IT to HAL_TIMEx_ConfigCommutEvent_IT</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Rename HAL_TIMEx_ConfigCommutationEvent_DMA to HAL_TIMEx_ConfigCommutEvent_DMA</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Rename HAL_TIMEx_CommutationCallback to HAL_TIMEx_CommutCallback</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Rename HAL_TIMEx_DMACommutationCplt to TIMEx_DMACommutationCplt</span></li></ul>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL UART </span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Overall rework of the driver for a more efficient&nbsp;implementation</span></li>
+              </ul>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Add the following UART API's in stm32f7xx_hal_uart_ex.c:</span></li>
+                <ul>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">&nbsp;HAL_RS485Ex_Init()</span></li>
+                  <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">HAL_MultiProcessorEx_AddressLength_Set()<br>
+                    </span></li>
+                </ul>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">HAL/LL USB</span> update</span></li>
 
-                                      &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;
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Rework USB interrupt handler and improve HS DMA support in Device mode</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Fix BCD handling for OTG instance in device mode</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">cleanup reference to low speed in device mode</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">allow writing TX FIFO in case of transfer length is equal to available space in the TX FIFO</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Fix Toggle OUT interrupt channel in host mode</span></li>
+              </ul>
+              <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"><span style="font-weight: bold;">LL IWDG </span>update</span></li>
+              <ul>
+<li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;">Update LL inline macros to use IWDGx parameter instead of IWDG instance defined in CMSIS device</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">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;
+</ul>
+            <span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; font-size: 10pt;"></span>
+<h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 241px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.6 / 29-June-2018</span></h3><p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt; font-size: medium; font-family: &quot;Times New Roman&quot;,serif; color: rgb(0, 0, 0); font-style: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><b><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes</span></u></b></p><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; line-height: normal; margin-top: 0cm;" type="square"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update to support STM32F730xx and STM32F750xx value lines</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA<span>&nbsp;</span></span>update</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">DMA_CHANNEL_8 to DMA_CHANNEL_15 are also defined in case of&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">STM32F730xx (</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">same&nbsp;features as STM32F733xx line</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">)</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL FLASH<span>&nbsp;</span></span>update</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add support of<span>&nbsp;</span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">STM32F730xx with 4 FLash sectors of 16KB each</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add support of<span>&nbsp;</span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">STM32F750xx with 2 FLash sectors of 32KB each</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">.</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL GPIO<span>&nbsp;</span></span>update</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add support of&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">STM32F730xx value line : same&nbsp;features as STM32F733xx line</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add support of&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">STM32F750xx value line : same&nbsp;features as STM32F756xx&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">line</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL RCC<span>&nbsp;</span></span>update</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add support of&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">STM32F730xx value line : same&nbsp;features as STM32F733xx&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">line</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add support of&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">STM32F750xx value line : same&nbsp;features as STM32F756xx&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">line</span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 241px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.5 / 02-February-2018</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin-top: 0cm;" type="square"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates to fix known defects and enhancements implementation</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL&nbsp;</span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add new macro to get variable aligned on 32-bytes, required for cache maintenance purpose</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update UNUSED() macro implementation to avoid GCC warning</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">The warning is detected when the UNUSED() macro is called from C++ file</span></li></ul></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SAI </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_SAI_DMAStop() and HAL_SAI_Abort() process to fix the lock/unlock audio issue </span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL PWR </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update
+HAL_PWR_EnterSLEEPMode() and HAL_PWR_EnterSTOPMode() APIs to ensure
+that all instructions finished before entering STOP mode. </span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL HCD </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add new callback to be used to handle usb device connection/disconnection</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_HCD_PortEnabled_Callback()</span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_HCD_PortDisabled_Callback()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update to prevent reactivate host interrrupt channel<br></span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 241px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.4 / 22-December-2017</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin-top: 0cm;" type="square"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates to fix known defects and enhancements implementation</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">The following changes done on the HAL drivers require an update on the application code based on older HAL versions</span></span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black; font-weight: bold;"><span style="font-size: 10pt; font-family: Verdana;">Rework of HAL CAN driver (compatibility break)&nbsp;</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana;">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></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana;">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></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana;">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></li></ul></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL&nbsp;</span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL driver to allow user to change systick period to 1ms , 10 ms or 100 ms :</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add the following API's :&nbsp;&nbsp;</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_GetTickPrio() : Returns a tick priority.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_SetTickFreq() : Sets new tick&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">frequency.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_GetTickFreq() : Returns tick frequency.</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add HAL_TickFreqTypeDef enumeration for the different Tick Frequencies : 10 Hz , 100 Hz and 1KHz (default).</span></li></ul></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CAN </span>update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">Fields of CAN_InitTypeDef structure are reworked:</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana;">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></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_Init() is split into both HAL_CAN_Init() and HAL_CAN_Start() API's</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_Transmit()
+is replaced by HAL_CAN_AddTxMessage() to place Tx Request, then
+HAL_CAN_GetTxMailboxesFreeLevel() for polling until completion.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_Transmit_IT()
+is replaced by HAL_CAN_ActivateNotification() to enable transmit IT, then
+HAL_CAN_</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">AddTxMessage</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">() for place Tx request.</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US"></span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_Receive()
+is replaced by HAL_CAN_GetRxFifoFillLevel() for polling until
+reception, then HAL_CAN_GetRxMessage() <br>to get Rx message.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_Receive_IT()
+is replaced by HAL_CAN_</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">ActivateNotification</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">()&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">to enable receive IT, then
+HAL_CAN</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">_GetRxMessage()<br></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US"> in the receivecallback to get Rx message</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_Slepp() is renamed as HAL_CAN_RequestSleep()</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_TxCpltCallback() is split into HAL_CAN_TxMailbox0CompleteCallback(), </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_TxMailbox1CompleteCallback() and&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_TxMailbox2CompleteCallback().</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_RxCpltCallback is split into HAL_CAN_RxFifo0MsgPendingCallback() and </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_CAN_RxFifo1MsgPendingCallback().</span></li></ul><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">More complete "How to use the new driver" is detailed in the driver header section itself.</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;" lang="EN-US">HAL RCC&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">update</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" type="square"><ul style="margin-top: 0cm;" 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;" lang="EN-US">Add new LL macro </span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" 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;" lang="EN-US">LL_RCC_PLL_SetMainSource()
+        allowing to configure PLL clock source</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><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;" lang="EN-US">Add new HAL macros</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" 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;" lang="EN-US">__HAL_RCC_GET_RTC_SOURCE()
+        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;" lang="EN-US">__HAL_RCC_GET_RTC_HSE_PRESCALER()
+        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;" lang="EN-US">Ensure reset of CIR and CSR
+       registers when issuing HAL_RCC_DeInit()/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;" lang="EN-US">Update HAL_RCC_GetSysClockFreq()
+       to avoid risk of rounding error which may leads to a wrong returned
+       value.</span><span style="font-size: 7pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US">&nbsp;</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update HAL_RCC_DeInit()
+       &nbsp;and LL_RCC_DeInit() APIs to</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><ul style="margin-top: 0cm;" 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;" lang="EN-US">Be able to return HAL/LL
+        status</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Add checks for HSI, PLL and
+        PLLI2S &nbsp;ready before modifying RCC CFGR registers</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Clear all interrupt flags</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Initialize systick interrupt
+        period</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;" lang="EN-US">HAL DMA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span lang="fr"><font face="Courier New" size="2"></font></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Add clean of callbacks in HAL_DMA_DeInit()&nbsp;API</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Fix wrong DMA_FLAG_FEIFO_4 and DMA_FLAGDMAEIFO_4 defines values&nbsp;</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;" lang="EN-US">HAL I2C </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update Interface APIs headers to remove confusing message about device address</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update </span><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">I2C_WaitOnRXNEFlagUntilTimeout() to resolve a race condition between STOPF and RXNE Flags</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif;" lang="EN-US"><o:p></o:p></span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;" lang="EN-US">Update&nbsp;I2C_TransferConfig() to fix wrong bit management</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">LL USART<span>&nbsp;</span></span>update</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add assert macros to check USART BaudRate register</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;" lang="EN-US">HAL ETH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">update</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;" lang="EN-US">Do{..} While(0)&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">insured </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">in&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">multi statement macros</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"> :</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;" lang="EN-US">__HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER()&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">__HAL_ETH_WAKEUP_EXTI_DISABLE_FALLINGRISING_TRIGGER()</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"> <br></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US"></span></li></ul></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL FLASH<span>&nbsp;</span></span>update</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_FLASH_Unlock() update to return state error when the FLASH is already unlocked</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL GPIO<span> </span></span>update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add missing define of GPIO_PIN_2 in GPIOK_PIN_AVAILABLE list</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL PCD<span> </span></span>update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Do{..} While(0) &nbsp;insured in multi statement macros</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">LL UTILS<span> </span></span>update</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">stm32f7xx_</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">ll_utils.h : Update LL_GetPackageType command to return uint32_t instead of uint16_t</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL TIM<span> </span></span>update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">stm32f7xx_hal_tim_ex.c : Update HAL_TIMEx_ConfigBreakDeadTime API to avoid to block timer behavior when <br>remains in the state HAL_TIM_STATE_BUSY.</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">stm32f7xx_hal_tim.h :&nbsp;</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">Fix __HAL_TIM_SET_PRESCALER() macro</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">Fix typos in some exported macros description&nbsp;</span></li></ul></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">LL FMC<span> </span></span>update</span></li><ul style="margin-bottom: 0in;"><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_SDRAM_SendCommand() API: </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Remove the&nbsp;timeout</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"> check</span></li></ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">HAL NAND<span> </span></span>update</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: &quot;Times New Roman&quot;,serif; color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Fix wrong check for NAND status</span></li></ul></ul>
+<h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.3 / 25-August-2017</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates 
+to fix known defects and enhancements implementation</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Remove Date and Version from header files</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update HAL drivers to refer to the new&nbsp;CMSIS bit position defines instead of usage the </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">POSITION_VAL() macro</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CAN </span>update</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;" lang="EN-US">Add missing unlock in HAL_CAN_Receive_IT() process</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DCMI </span>update</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;" lang="EN-US">HAL DCMI driver clean-up: remove non referenced callback APIs: HAL_DCMI_VsyncCallback() and HAL_DCMI_HsyncCallback()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL&nbsp;DFSDM </span>update</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;" lang="EN-US">Fix cast issue on APIs that return signed integer value (uint32_t)&nbsp;</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA </span>update</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;" lang="EN-US">HAL DMA driver clean-up: remove non referenced callback APIs: HAL_DMA_CleanCallbacks()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL FLASH </span>update</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;" lang="EN-US">FLASH_Program_DoubleWord() API: Replace 64-bit accesses with 2 double words operations</span></li></ul></ul><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL Generic </span>update</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;" lang="EN-US">Update assert_param() macro definition to be in line with stm32_ll_utils.c driver</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL GPIO </span>update</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;" lang="EN-US">GPIOK_PIN_AVAILABLE() assert macro update to allow possibility to configure GPIO_PIN_2</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL LTDC </span>update</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;" lang="EN-US">Rename HAL_LTDC_LineEvenCallback() API to&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">HAL_LTDC_LineEven<span style="font-weight: bold;">t</span>Callback()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL PCD </span>update</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;" lang="EN-US">Update HAL_PCD_IRQHandler() API to fix&nbsp;transfer issues when </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">USB HS is used with DMA&nbsp;enabled</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL RCC </span>update</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;" lang="EN-US">Update HAL_RCC_GetOscConfig() API to:</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;" lang="EN-US">set PLLR in the RCC_OscInitStruct</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">check on null pointer<br></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;" lang="EN-US">Update HAL_RCC_ClockConfig() API to:</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;" lang="EN-US">check on null pointer</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">optimize&nbsp;code size by updating the handling method of the SWS bits</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">update
+to use&nbsp; __HAL_FLASH_GET_LATENCY() flash macro instead of using
+direct register access to&nbsp;LATENCY bits in FLASH ACR register</span><span lang="fr">. </span></li></ul></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SAI </span>update</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;" lang="EN-US">Update HAL_SAI_DMAStop() API to flush fifo after disabling&nbsp;SAI</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL TIM </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_TIMEx_ConfigBreakInput() API to&nbsp;support BKINP/BKIN2P polarity bits.<br></span></li></ul></ul><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL DMA </span>update</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;" lang="EN-US">Update
+SET_BIT() access to LIFCR and HIFCR registers by WRITE_REG() to avoid
+read access that is not allowed when clearing DMA flags</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL I2C </span>update</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;" lang="EN-US">Update LL_I2C_Init() API to avoid enabling own address1 when OwnAddress1 parameter value in the I2C_InitStruct is equal to 0.</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL TIM </span>update</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;" lang="EN-US">Update LL_TIM_EnableUpdateEvent() API to clear UDIS bit in CR1 register instead of setting it.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update LL_TIM_DisableUpdateEvent() API </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">to set UDIS bit in CR1 register instead of clearing it.</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL USB </span>update</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;" lang="EN-US">Update USB_EP0StartXfer() API to fix&nbsp;transfer issues when </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">USB HS is used with DMA&nbsp;enabled</span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.2 / 14-April-2017</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-bottom: 0in; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates 
+to fix known defects and enhancements implementation</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CAN </span>update</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;" lang="EN-US">Add
+      management of&nbsp;overrun error.&nbsp;</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Allow
+      possibility to receive messages from the 2 RX FIFOs in parallel via
+      interrupt.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Fix&nbsp;message
+      lost issue with specific sequence of transmit requests.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Handle
+      transmission failure with error callback, when NART is enabled.</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;" lang="EN-US">Add __HAL_CAN_CANCEL_TRANSMIT() call to abort transmission when
+      timeout is reached</span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.1 / 24-March-2017</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="color: rgb(0, 0, 0); font-family: Verdana; font-size: 13.3333px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; display: inline ! important; float: none;">Update CHM UserManuals to support LL drivers</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates 
+to fix known defects and enhancements implementation</span></li></ul><ul style="margin-top: 0cm;" type="square"><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_DMA_Init() function to adjust the compatibility check between FIFO threshold and burst configuration</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL MMC </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_MMC_InitCard() function with proper initialization sequence adding a delay after MMC clock enable</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update MMC_DMAError() function ignore DMA FIFO error as not impacting the data transfer</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SD </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_SD_InitCard() function with proper initialization sequence adding a delay after SD clock enable</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update SD_DMAError() function ignore DMA FIFO error as not impacting the data transfer<br></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL NAND </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_NAND_Address_Inc() function implementation for proper plane number check</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;"></span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL SDMMC </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update SDMMC_DATATIMEOUT value with appropriate value needed by reading and writing operations of SD and MMC cards</span><span style="font-size: 10pt; font-family: 'Segoe UI'; color: rgb(0, 0, 0); direction: ltr;" dir="ltr"></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL RTC </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">LL_RTC_TIME_Get() and LL_RTC_DATE_Get() inline macros optimization</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL ADC </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Fix wrong ADC group injected sequence configuration</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">LL_ADC_INJ_SetSequencerRanks()
+and LL_ADC_INJ_GetSequencerRanks() API's update to take in
+consideration the ADC number of conversions</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update the&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">defined values for</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"> ADC group injected seqencer ranks&nbsp;<br></span></li></ul></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.0 / 30-December-2016</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Official release to add the support of <span style="font-weight: bold;">STM32F722xx, STM32F723xx, STM32F732xx</span> <span style="font-weight: bold;">and STM32F733xx</span> devices</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="color: rgb(0, 0, 0); font-family: Verdana; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: bold; letter-spacing: normal; line-height: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; display: inline ! important; float: none;">Add Low Layer drivers allowing performance and footprint optimization</span></li><ul><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-size: 10pt; font-family: Verdana;">Low
+Layer drivers APIs provide register level programming: require deep
+knowledge of peripherals described in STM32F7xx Reference Manuals</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="color: rgb(0, 0, 0); font-family: Verdana; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; display: inline ! important; float: none;">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></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-size: 10pt; font-family: Verdana;">Low Layer drivers APIs are implemented as static inline function in new<span class="Apple-converted-space">&nbsp;</span><span style="font-style: italic;">Inc/stm32f7xx_ll_ppp.h</span><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></span><span style="font-size: 10pt; font-family: Verdana;"><span style="font-style: italic;">stm32f7xx_ll_ppp.h</span><span class="Apple-converted-space">&nbsp;</span>file must be included in user code.</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates 
+to fix known defects and enhancements implementation</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new HAL <span style="font-weight: bold;">MMC</span> and <span style="font-weight: bold;">SMBUS</span> drivers</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL Cortex</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Move HAL_MPU_Disable() and HAL_MPU_Enable() from stm32f7xx_hal_cortex.h to stm32f7xx_hal_cortex.c</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Clear the whole MPU control register in&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_MPU_Disable() API</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CRYP</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add support of AES</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add a check on DMA stream instance in HAL_DMA_DeInit() API</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL ETH</span> update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Fix wrong definitions in driver header file stm32f7_hal_eth.h</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL FLASH</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Support OTP program operation</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add the support of PCROP feature</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update the clearing of error flags</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL I2C</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Align driver source code with other STM32 families<br></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL JPEG</span> update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update the output data management when&nbsp;HAL_JPEG_Pause() is performed during the last data sending</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL RCC </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Enable PWR only if necessary for LSE configuration in HAL_RCC_OscConfig() API</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename RCC_LPTIM1CLKSOURCE_PCLK define to RCC_LPTIM1CLKSOURCE_PCLK1</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename RCC_DFSDM1CLKSOURCE_PCLK define to RCC_DFSDM1CLKSOURCE_PCLK2<br></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SPI</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Clear RX FIFO at the end of each transaction</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL UART</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Remove </span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">USART_CR2_LINEN bit </span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">clearing&nbsp;when initializing in synchronous mode</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL USB</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add support of embedded USB PHY Controller</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add support of Battery Charging Detector (BCD) feature</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL SDMMC</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add new SDMMC_CmdSDEraseStartAdd, SDMMC_CmdSDEraseEndAdd, SDMMC_CmdOpCondition and SDMMC_CmdSwitch functions</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL USB</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update PENA bit clearing in OTG_HPRT0 register</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">The following changes done on the HAL drivers require an update on the 
+application code based on older HAL versions</span></span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SD</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Overall rework of the driver for a more efficient&nbsp;implementation</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Modify initialization API and structures</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Modify Read / Write sequences: separate transfer process and SD Cards state management&nbsp;</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Adding interrupt mode for Read / Write operations</span></li></ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Update the HAL_SD_IRQHandler function by optimizing the management of interrupt errors<br></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Refer to the following example to identify the changes: BSP example and USB_Device/MSC_Standalone application</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL TIM</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add new AutoReloadPreload field in TIM_Base_InitTypeDef structure</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Refer to the TIM examples to identify the changes</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">&nbsp;</span></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL NAND</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Modify NAND_AddressTypeDef, NAND_DeviceConfigTypeDef and NAND_HandleTypeDef structures fields</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add new HAL_NAND_ConfigDevice API<br></span></li></ul></ul></ul><b style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px;"><span style="font-family: Verdana; color: black; font-size: 10pt;"></span></b><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.1.1 / 01-July-2016</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-top: 0cm;" type="square"><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA</span> update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update HAL_DMA_PollForTransfer() function implementation to&nbsp;avoid early TIMEOUT error.</span> </li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL JPEG</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_JPEG_ConfigEncoding() function to properly set the ImageHeight and ImageWidth</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SPI</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update SPI_DMATransmitReceiveCplt() function to properly handle the CRC and avoid conditional statement duplication<br></span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 200px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.1.0 / 22-April-2016</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Official release to add the support of <span style="font-weight: bold;">STM32F765xx, STM32F767xx, STM32F768xx, STM32F769xx, STM32F777xx, STM32F778xx</span> <span style="font-weight: bold;">and STM32F779xx</span> devices<br></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates 
+to fix known defects and enhancements implementation</span></li><li class="MsoNormal" style="margin: 4.5pt 0in; font-size: 12pt; font-family: 'Times New Roman',serif; color: black;"><span style="font-size: 10pt; font-family: Verdana,sans-serif;">Add new HAL drivers for<span class="Apple-converted-space"> </span><span style="font-weight: bold;">DFSDM, DSI<span class="Apple-converted-space">, JPEG </span></span>and<span class="Apple-converted-space"> </span><span style="font-weight: bold;">MDIOS<span class="Apple-converted-space"> </span></span>peripherals</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Enhance HAL delay and timebase implementation</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">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><span style="color: rgb(0, 0, 0); font-family: Verdana,sans-serif; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; display: inline ! important; float: none;">and FreeRTOS-based applications</span></li></ul></ul><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">The following changes done on the HAL drivers require an update on the 
+application code based on HAL V1.0.4</span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;">HAL UART, USART, IRDA, SMARTCARD, SPI, I2C,&nbsp;QSPI </span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span>(referenced as <span style="font-style: italic;">PPP</span> here below)<span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span>drivers</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add PPP error management during DMA process. This requires the following updates on&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">user application:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Configure and enable 
+the PPP IRQ in HAL_PPP_MspInit() function<br></span></li></ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">In </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">stm32f7xx_it.c file, 
+</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">PPP_IRQHandler() 
+function: </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">add a call to 
+HAL_PPP_IRQHandler() function</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add and customize 
+the Error Callback API: HAL_PPP_ErrorCallback()<br></span></li></ul></ul></ul></ul>
+<ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;">HAL I2C</span><span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span> (referenced as <span style="font-style: italic;">PPP</span> here below)<span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span>drivers:</span>
+<ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update to avoid waiting on </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">STOPF/BTF/AF flag under DMA ISR by using the </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">PPP end of transfer interrupt in the </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">DMA transfer process.</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"> This requires the following updates on&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">user application</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Configure and enable 
+the PPP IRQ in HAL_PPP_MspInit() function<br></span></li></ul></ul>
+<ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">In </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">stm32f7xx_it.c file, 
+</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">PPP_IRQHandler() 
+function: </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">add a call to 
+HAL_PPP_IRQHandler() function</span></li></ul></ul></li></ul></ul>
+<ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;">HAL IWDG</span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span>driver: rework overall driver for better implementation</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Remove&nbsp;</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_IWDG_Start(), </span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_IWDG_MspInit() and </span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_IWDG_GetState()&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">APIs</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;">HAL WWDG</span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span>driver: rework overall driver for better implementation</span>
+<ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Remove HAL_WWDG_Start(), </span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_WWDG_Start_IT(),</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"> 
+HAL_WWDG_MspDeInit() and </span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_WWDG_GetState() APIs&nbsp;</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Update the&nbsp;</span><span style="font-family: 'Calibri',sans-serif; font-size: 11pt;" lang="EN-US"></span><span style="font-family: 'Calibri',sans-serif; font-size: 11pt;" lang="EN-US"></span><span style="font-family: 'Calibri',sans-serif; font-size: 11pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Calibri',sans-serif; font-size: 11pt;" lang="EN-US">HAL_WWDG_Refresh</span><span style="font-family: 'Calibri',sans-serif; font-size: 11pt;" lang="EN-US">(WWDG_HandleTypeDef *hwwdg, uint32_t counter) &nbsp;function and API &nbsp;by removing the &nbsp;"counter" parameter</span><span style="font-family: 'Calibri',sans-serif; font-size: 11pt;" lang="EN-US"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span></span></li></ul></li></ul></ul><ul style="margin-top: 0cm;" type="square"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;">HAL QSPI driver: </span>&nbsp;Enhance the DMA transmit process by&nbsp;using&nbsp;PPP TC interrupt instead of waiting on TC flag under DMA ISR.&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">This requires the following updates on&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">user application</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Configure and enable 
+the QSPI&nbsp;IRQ in HAL_QSPI_MspInit() function</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">In </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">stm32f7xx_it.c file, </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">QSPI_IRQHandler() 
+function: </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">add a call to 
+HAL_QSPI_IRQHandler() function</span></li></ul></ul></ul>
+<ul style="margin-bottom: 0in; list-style-type: square;"><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;">HAL CEC driver: </span>&nbsp;Overall driver rework with compatibility break versus previous HAL version</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Remove HAL CEC polling Process functions: HAL_CEC_Transmit() and HAL_CEC_Receive()</span><span style="font-family: 'Times New Roman',serif; font-size: 12pt;" lang="EN-US"><o:p></o:p></span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Remove
+HAL CEC receive interrupt process function&nbsp;HAL_CEC_Receive_IT()
+and enable the "receive" &nbsp;mode during the Init phase</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Rename&nbsp;HAL_CEC_GetReceivedFrameSize() funtion to&nbsp;HAL_CEC_GetLastReceivedFrameSize()<br></span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add new HAL APIs: HAL_CEC_SetDeviceAddress() and  
+HAL_CEC_ChangeRxBuffer()</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Remove the&nbsp;<span></span>'InitiatorAddress' field from the&nbsp;CEC_InitTypeDef 
+structure&nbsp;and manage it&nbsp;as a parameter in the HAL_CEC_Transmit_IT() function</span><span style="font-family: 'Times New Roman',serif; font-size: 12pt;" lang="EN-US"><o:p></o:p></span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add new parameter 'RxFrameSize' in HAL_CEC_RxCpltCallback() function</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Move CEC Rx buffer pointer&nbsp;from CEC_HandleTypeDef structure to 
+CEC_InitTypeDef structure</span></li></ul></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CAN</span> update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add the support of CAN3</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CEC</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Overall driver rework with&nbsp;break of compatibility with HAL 
+V1.0.4<br></span></li></ul><ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Remove the HAL CEC polling Process: HAL_CEC_Transmit() and HAL_CEC_Receive()</span><span style="font-family: 'Times New Roman',serif; font-size: 12pt;" lang="EN-US"><o:p></o:p></span></li></ul></ul></ul>
+<ul style="margin-top: 0cm;" type="disc"><ul style="margin-top: 0cm;" type="circle"><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Remove the HAL CEC receive interrupt process (HAL_CEC_Receive_IT()) and manage the "Receive" mode enable within the Init phase</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Rename HAL_CEC_GetReceivedFrameSize() function to&nbsp;HAL_CEC_GetLastReceivedFrameSize() function<br></span></li></ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add new HAL APIs: HAL_CEC_SetDeviceAddress() and  
+HAL_CEC_ChangeRxBuffer()</span></li></ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Remove the&nbsp;<span></span>'InitiatorAddress' field from the&nbsp;CEC_InitTypeDef 
+structure&nbsp;and manage it&nbsp;as a parameter in the HAL_CEC_Transmit_IT() function</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span></li></ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add new parameter 'RxFrameSize' in HAL_CEC_RxCpltCallback() function</span><span style="font-family: 'Times New Roman',serif; font-size: 12pt;" lang="EN-US"><o:p></o:p></span></li></ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Move CEC Rx buffer pointer&nbsp;from CEC_HandleTypeDef structure to 
+CEC_InitTypeDef structure</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"> <o:p></o:p></span></li></ul></ul></ul>
+<ul style="text-transform: none; margin-top: 0cm; text-indent: 0px; letter-spacing: normal; font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: medium; line-height: normal; font-size-adjust: none; font-stretch: normal; white-space: normal; margin-bottom: 0in; color: rgb(0, 0, 0); word-spacing: 0px;" type="square"><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update driver to implement the new CEC state machine: </span></li></ul><ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add new&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">"rxState"</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"> field in 
+CEC_HandleTypeDef structure to provide the </span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">CEC 
+</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">state 
+information related to Rx Operations</span></li></ul><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename "state" 
+field in CEC_HandleTypeDef structure to "gstate": CEC </span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">state information 
+related to global Handle management and Tx Operations</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update CEC process 
+to manage the new CEC states.</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; color: black; font-size: 10pt;" lang="EN-US">Update __HAL_CEC_RESET_HANDLE_STATE() macro to handle the new CEC 
+state parameters (gState, rxState)</span><br></li></ul></ul></ul><ul style="margin-bottom: 0in; list-style-type: square;"><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA</span> update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add
+new APIs HAL_DMA_RegisterCallback() and HAL_DMA_UnRegisterCallback to
+register/unregister the different callbacks identified by
+the enum typedef HAL_DMA_CallbackIDTypeDef</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new API HAL_DMA_Abort_IT() to abort DMA transfer under interrupt context<br></span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">The new registered Abort callback is called when DMA transfer abortion is completed</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add the check of 
+compatibility between FIFO threshold level and size of the memory burst in the 
+HAL_DMA_Init() API</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new Error Codes: 
+HAL_DMA_ERROR_PARAM, HAL_DMA_ERROR_NO_XFER and 
+HAL_DMA_ERROR_NOT_SUPPORTED</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Remove all DMA states 
+related to MEM0/MEM1 in HAL_DMA_StateTypeDef</span><span style="font-family: 'Helvetica',sans-serif; color: rgb(98, 98, 98); font-size: 9.5pt;" lang="EN-US"><o:p></o:p></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA2D</span> update&nbsp;</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update the 
+HAL_DMA2D_DeInit() function to:</span>
+<ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; list-style-type: square; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Abort transfer in case 
+of ongoing DMA2D transfer</span></li></ul>
+<ul><li><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Reset DMA2D control 
+registers</span></li></ul></li><li><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update 
+HAL_DMA2D_Abort() to disable DMA2D interrupts after stopping transfer</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Optimize 
+HAL_DMA2D_IRQHandler() by reading status registers only once</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update 
+HAL_DMA2D_ProgramLineEvent() function to:</span>
+<ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Return HAL error state 
+in case of wrong line value</span></li></ul>
+<ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Enable line interrupt 
+after setting the line watermark configuration</span></li></ul></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new HAL_DMA2D_CLUTLoad() and </span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_DMA2D_CLUTLoad_IT()</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"> 
+functions to start DMA2D CLUT loading</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_DMA2D_CLUTLoading_Abort() 
+function to abort the DMA2D CLUT loading</span></li></ul><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_DMA2D_CLUTLoading_Suspend() 
+function to suspend the DMA2D CLUT loading</span></li></ul><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_DMA2D_CLUTLoading_Resume() 
+function to resume the DMA2D CLUT loading</span></li></ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new DMA2D dead time 
+management:</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_DMA2D_EnableDeadTime() 
+function to enable DMA2D dead time feature</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_DMA2D_DisableDeadTime() 
+function to disable DMA2D dead time feature</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_DMA2D_ConfigDeadTime() 
+function to configure dead time</span></li></ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update the name of 
+DMA2D Input/Output color mode defines to be more clear for user (DMA2D_INPUT_XXX 
+for input layers Colors, DMA2D_OUTPUT_XXX for output framebuffer 
+Colors)</span></li></ul></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">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;
+<ul style="margin-top: 0cm;" type="square"><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DCMI</span> update&nbsp;</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Rename DCMI_DMAConvCplt 
+to DCMI_DMAXferCplt</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_DCMI_Start_DMA() function to&nbsp;</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Enable the DCMI peripheral</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new timeout 
+implementation based on cpu cycles for DCMI stop</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add HAL_DCMI_Suspend() 
+function to suspend DCMI capture</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add HAL_DCMI_Resume() 
+function to resume capture after DCMI suspend</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update lock mechanism 
+for DCMI process</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update HAL_DCMI_IRQHandler() function to:</span>
+<ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add error management in 
+case DMA errors through XferAbortCallback() and 
+HAL_DMA_Abort_IT()</span></li></ul>
+<ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Optimize code by using 
+direct register read</span></li></ul></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">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="font-family: Verdana,sans-serif; font-size: 10pt;"></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL FLASH</span> update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add the support of Dual BANK feature</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add __HAL_FLASH_CALC_BOOT_BASE_ADR() macro to calculate the FLASH Boot Base Adress</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Move Flash total sector define to CMSIS header files</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL FMC</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update FMC_NORSRAM_Init() to remove the Burst access mode configuration</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update FMC_SDRAM_Timing_Init() to fix initialization issue when configuring 2 SDRAM banks<br></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL HCD</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HCD_Port_IRQHandler() to be compliant with new Time base implementation</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><b><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL 
+I2C</span></b><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">update</span>
+<ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add the support of I2C fast mode plus (FM+)</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Update </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">Polling management:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;" lang="EN-US">The Timeout value must be estimated for the overall process duration: the Timeout measurement is cumulative<br></span></li></ul></ul>
+<ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add the management of Abort service:&nbsp;Abort DMA transfer through interrupt</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">In the case of Master Abort IT transfer usage:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add&nbsp;new user HAL_I2C_AbortCpltCallback() to inform user of the end of abort process</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">A new abort state is defined in the </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_I2C_StateTypeDef </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">structure</span></li></ul></ul></ul>
+<ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">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></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Configure and enable the I2C IRQ in HAL_I2C_MspInit() function</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">In stm32f7xx_it.c file, I2C_IRQHandler() function: add a call to HAL_I2C_IRQHandler() function</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add and customize the Error Callback API: HAL_I2C_ErrorCallback()</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Refer to the I2C_EEPROM or I2C_TwoBoards_ComDMA project examples usage of the API<br></span></li></ul></ul><ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add the support of&nbsp;I2C repeated start feature:</span>
+<ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">With the following new APIs<br></span></li></ul>
+<ul><ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_I2C_Master_Sequential_Transmit_IT()</span>
+</li><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_Master_Sequential_Receive_IT()</span>
+</li><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_Master_Abort_IT()</span>
+</li><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_Slave_Sequential_Transmit_IT()</span>
+</li><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_Slave_Sequential_Receive_IT()</span>
+</li><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_EnableListen_IT()</span>
+</li><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_DisableListen_IT()</span></li></ul></ul>
+<ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add new user callbacks:</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"><br></span></li></ul>
+<ul><ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_ListenCpltCallback()</span></li></ul><ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_AddrCallback()</span></li></ul></ul>
+</li><li><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Several 
+updates on HAL I2C driver to implement the new I2C state machine: </span>
+<ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add new API to get the&nbsp;</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C mode: 
+HAL_</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">I2C_GetMode()</span>
+</li><li><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update&nbsp;</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">I2C process to 
+manage the new&nbsp;</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">I2C states</span></li></ul></li></ul>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL IWDG</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Overall rework of the driver for a more efficient&nbsp;implementation</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Remove the following APIs:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_IWDG_Start()</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_IWDG_MspInit()</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_IWDG_GetState()</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Update implementation:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_IWDG_Init() : this function insures the configuration and the start of the IWDG counter</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_IWDG_Refresh() : this function insures the reload of the IWDG counter</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Refer to the following example to identify the changes: IWDG_Example<br></span></li></ul></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL LPTIM </span>update</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;"></span></span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">Update </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_LPTIM_TimeOut_Start_IT() and HAL_LPTIM_Counter_Start_IT( ) APIs 
+to configure WakeUp Timer EXTI interrupt to be able to wakeup MCU from low power 
+mode by </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">pressing the EXTI line </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US"></span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">Update </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;" lang="EN-US">HAL_LPTIM_TimeOut_Stop_IT() and HAL_LPTIM_Counter_Stop_IT( ) APIs to 
+disable WakeUp Timer EXTI interrupt </span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL LTDC </span>update</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update 
+HAL_LTDC_IRQHandler() to manage the case of reload interrupt</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add LTDC extension driver needed with DSI</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add HAL_LTDC_SetPitch() function for pitch reconfiguration</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new callback API 
+HAL_LTDC_ReloadEventCallback()</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add HAL_LTDC_Reload() 
+to configure LTDC reload feature</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new No Reload LTDC 
+variant APIs<br></span>
+<ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_ConfigLayer_NoReload() 
+to configure the LTDC Layer according to the specified without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_SetWindowSize_NoReload() 
+to set the LTDC window size without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_SetWindowPosition_NoReload() 
+to set the LTDC window position without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_SetPixelFormat_NoReload() 
+to reconfigure the pixel format without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_SetAlpha_NoReload() 
+to reconfigure the layer alpha value without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_SetAddress_NoReload() 
+to reconfigure the frame buffer Address without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_SetPitch_NoReload() 
+to reconfigure the pitch for specific cases</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_ConfigColorKeying_NoReload() 
+to configure the color keying without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_EnableColorKeying_NoReload() 
+to enable the color keying without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_DisableColorKeying_NoReload() 
+to disable the color keying without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_EnableCLUT_NoReload() 
+to enable the color lookup table without reloading</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_LTDC_DisableCLUT_NoReload() 
+to disable the color lookup table without 
+reloading</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="text-decoration: underline; font-style: italic;">Note:</span>
+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_Reload”<br></span></li></ul></li></ul></ul>
+<ul style="margin-top: 0cm;" type="square"><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL NOR</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Update NOR_ADDR_SHIFT macro implementation</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL PCD</span> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_PCD_IRQHandler() to get HCLK frequency before setting TRDT value</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL QSPI </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update to manage QSPI error management during DMA process</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Improve the DMA transmit process by using QSPI TC interrupt instead of waiting loop on TC flag under DMA ISR</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">These two improvements require the following updates on user application:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Configure and enable the QSPI IRQ in HAL_QSPI_MspInit() function</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">In stm32f7xx_it.c file, QSPI_IRQHandler() function: add a call to HAL_QSPI_IRQHandler() function</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add and customize the Error Callback API: HAL_QSPI_ErrorCallback()</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add
+the management of non-blocking transfer abort service:&nbsp;HAL_QSPI_Abort_IT(). In
+this case the user must:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add new callback HAL_QSPI_AbortCpltCallback() to inform user at the end of abort process</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">A new value of State in the HAL_QSPI_StateTypeDef provides the current state during the abort phase</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Polling management update:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">The Timeout value user must be estimated for the overall process duration: the Timeout measurement is cumulative.&nbsp;</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Refer to the following examples, which describe the changes:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">QSPI_ReadWrite_DMA</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">QSPI_MemoryMapped</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">QSPI_ExecuteInPlace<br></span></li></ul></ul></ul><ul style="margin-top: 0cm;" type="square"><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add two new APIs for the QSPI fifo threshold:</span><span style="font-family: 'Times New Roman',serif; font-size: 12pt;" lang="EN-US"><o:p></o:p></span>
+<ul style="margin-top: 0cm;" type="circle"><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_QSPI_SetFifoThreshold(): configure the FIFO threshold of 
+the QSPI</span><span style="font-family: 'Times New Roman',serif; font-size: 12pt;" lang="EN-US"><o:p></o:p></span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL_QSPI_GetFifoThreshold(): give the current FIFO 
+threshold</span><span style="font-family: 'Times New Roman',serif; font-size: 12pt;" lang="EN-US"><o:p></o:p></span></li></ul>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Fix wrong data size management in HAL_QSPI_Receive_DMA()</span><span style="font-family: 'Times New Roman',serif; font-size: 12pt;" lang="EN-US"><o:p></o:p></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL RCC </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_RCC_PeriphCLKConfig() function to adjust the SystemCoreClock</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Optimize HAL_RCC_ClockConfig() function code</span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">O</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">ptimize internal oscillators and PLL startup times</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL RTC </span>update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_RTC_GetTime() with proper 'SubSeconds' and 'SecondFraction' management</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SAI </span>update&nbsp;</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update SAI state in case of TIMEOUT error within the </span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">HAL_SAI_Transmit() / HAL_SAI_Receive()</span>
+</li></ul><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update HAL_SAI_IRQHandler:</span>
+<ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add error management in 
+case DMA errors through XferAbortCallback() and HAL_DMA_Abort_IT()</span>
+</li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add error management in 
+case of IT</span></li></ul></li></ul><ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Move
+SAI_BlockSynchroConfig() and SAI_GetInputClock() functions to
+stm32f7xx_hal_sai.c/.h files (extension files are kept empty for
+projects compatibility reason)</span></li></ul></ul>
+<ul style="margin-top: 0cm;" type="square"><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SPDIFRX </span>update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Overall driver update for wait on flag management optimization <br></span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SPI </span>update</span><b><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US"></span></b></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Overall driver optimization to improve performance in polling/interrupt mode to reach maximum peripheral frequency</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Polling mode:</span>
+</li><ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Replace the use of SPI_WaitOnFlagUnitTimeout() function by "if" 
+statement to check on RXNE/TXE flage while transferring 
+data</span></li></ul></ul></ul></ul>
+<ul style="margin-top: 0cm;" type="square"><ul><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">&nbsp;Interrupt mode:</span></li><ul><li><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Minimize access on SPI registers</span>
+</li></ul></ul><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">All modes:</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add the USE_SPI_CRC switch to minimize the number of statements when CRC calculation is disabled</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update&nbsp;timeout management to check on global processes</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update error code management in all processes</span></li></ul></ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update DMA process:<o:p></o:p></span>
+<ul style="margin-bottom: 0in;"><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add the management of SPI peripheral errors during DMA process. This requires the following updates in
+the user application:</span></li><ul><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Configure and enable the SPI IRQ in HAL_SPI_MspInit() function</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">In stm32f7xx_it.c file, SPI_IRQHandler() function: add a call to HAL_SPI_IRQHandler() function</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Add and customize the Error Callback API: HAL_SPI_ErrorCallback()</span></li><li style="margin: 4.5pt 0in; font-family: 'Times New Roman',serif; color: black; font-size: 12pt;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Refer to the following example which describe the changes: SPI_FullDuplex_ComDMA<br></span></li></ul></ul>
+</li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL TIM </span>update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_TIM_ConfigOCrefClear() function for proper configuration of the SMCR register</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Add new function HAL_TIMEx_ConfigBreakInput() to configure the break input source</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><b><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">HAL UART, USART, SMARTCARD and IRDA </span></b><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"></span>(referenced as <span style="font-style: italic;">PPP</span> here below)<span style="font-style: italic;"></span></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-style: italic;"> </span></span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">update<b><o:p></o:p></b></span> 
+</li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Update Polling management:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">The user Timeout value&nbsp;must be estimated for the overall process duration: the Timeout measurement is cumulative</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update DMA process:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"></span><span style="font-family: Verdana,sans-serif; font-size: 10pt;">Update the m</span><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">anagement of PPP peripheral errors during DMA process. This requires the following updates in user application:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Configure and enable the PPP IRQ in HAL_PPP_MspInit() function</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">In stm32f7xx_it.c file, PPP_IRQHandler() function: add a call to HAL_PPP_IRQHandler() function</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana',sans-serif; font-size: 10pt;" lang="EN-US">Add and customize the Error Callback API: HAL_PPP_ErrorCallback()<br></span></li></ul></ul></ul></ul><ul style="margin-top: 0cm;" type="square"><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL WWDG </span>update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Overall rework of the driver for more efficient implementation</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Remove the following APIs:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_Start()</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_Start_IT()</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_MspDeInit()</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_GetState()</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update implementation:</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_Init()</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">A&nbsp;new parameter in the Init Structure:&nbsp;EWIMode</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_MspInit()</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_Refresh()&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">This function insures the reload of the counter</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">The "counter" parameter has been removed</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_IRQHandler()</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_WWDG_EarlyWakeupCallback() is the new prototype of HAL_WWDG_WakeupCallback()<br></span></li></ul></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Refer to the following example to identify the changes: WWDG_Example</span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 180px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.4 / 09-December-2015</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL Generic </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL 
+weak empty callbacks to prevent unused argument compilation warnings with some 
+compilers by calling the following line:</span>
+</li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">UNUSED(hppp);</span></li></ul></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL ETH</span> update&nbsp;</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_ETH_Init() function to add timeout on the Software reset management<br></span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 180px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.3 / 13-November-2015</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates 
+to fix known defects and enhancements implementation</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;"></span></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;"><span style="font-weight: bold;">One change done on the HAL CRYP requires an update on 
+the application code based on HAL V1.0.2</span></span>
+</li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update 
+HAL_CRYP_DESECB_Decrypt() API to invert pPlainData and pCypherData 
+parameters</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL Generic </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL 
+weak empty callbacks to prevent unused argument compilation warnings with some 
+compilers by calling the following line:</span>
+</li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">UNUSED(hppp);</span></li></ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Remove references to STM32CubeMX and MicroXplorer from stm32f7xx_hal_msp_template.c file<br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL ADC</span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;"> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">Replace ADC_CHANNEL_TEMPSENSOR definition from ADC_CHANNEL_16 to ADC_CHANNEL_18 </span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">&nbsp;</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">Update HAL ADC driver state machine for code efficiency</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;" lang="EN-US">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></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CORTEX </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span>
+</li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Remove duplication 
+for __HAL_CORTEX_SYSTICKCLK_CONFIG() macro</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CRYP </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_CRYP_DESECB_Decrypt() API to fix the inverted pPlainData and pCypherData parameters issue </span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL FLASH </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update OB_IWDG_STOP_ACTIVE definition</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update OB_RDP_LEVEL_x definition by proper values</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update FLASH_MassErase() function to consider the voltage range parameter in the mass erase configuration <br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL RCC</span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;"> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update values for LSE Drive capability defines</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update PLLN min value 50 instead of 100</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">add RCC_PLLI2SP_DIVx defines for PLLI2SP clock divider</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;" lang="EN-US">Update __HAL_RCC_USB_OTG_FS_CLK_DISABLE() macro to remove the disable of the SYSCFG</span><span style="font-family: Verdana; font-size: 10pt;">&nbsp;</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Update HAL_RCCEx_GetPeriphCLKFreq() function for proper SAI clock configuration<br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SAI </span></span><span style="font-weight: bold;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update for proper management of the external synchronization input selection</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update of&nbsp;HAL_SAI_Init () funciton</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update definition of SAI_Block_SyncExt and SAI_Block_Synchronization groups</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update SAI_SLOTACTIVE_X &nbsp;defines values</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HAL_SAI_Init() function for proper companding mode management</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update SAI_Transmit_ITxxBit() functions to add the check on transfer counter before writing new data to SAIx_DR registers</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update SAI_FillFifo() function to avoid issue when the number of data to transmit is smaller than the FIFO size</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update HAL_SAI_EnableRxMuteMode() function for proper mute management</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update SAI_InitPCM() function to support 24bits configuration</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SD </span></span><span style="font-weight: bold;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update HAL_SD_Get_CardInfo() to properly support high capacity cards</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;"><br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SPDIFRX </span></span><span style="font-weight: bold;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update SPDIFRX_DMARxCplt() function implementation to&nbsp;check on circular mode before disabling the DMA</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL TIM </span></span><span style="font-weight: bold;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update HAL_TIM_ConfigClockSource() function implementation for proper parameters check</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">HAL UART</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Update __HAL_UART_CLEAR_IT macro for proper functionning&nbsp;</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">ll FMC</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">add FMC_PAGE_SIZE_512 define</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">ll SDMMC</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update SDMMC_SetSDMMCReadWaitMode() function for proper functionning</span></li></ul></ul><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 180px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.2 / 21-September-2015</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL Generic </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">stm32f7xx_hal.conf_template.h: update&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">HSE_STARTUP_TIMEOUT</span></li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">stm32f7xx_hal_def.h: update the</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"> quotation marks used in #error"USE_RTOS should be 0 in the current HAL release"</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL DMA</span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;"> update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Overall 
+driver update for code optimization</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">add 
+StreamBaseAddress and StreamIndex new fields in the DMA_HandleTypeDef 
+structure</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">add 
+DMA_Base_Registers private structure</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">add static function 
+DMA_CalcBaseAndBitshift()</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update 
+HAL_DMA_Init() function to use the new added static function</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update 
+HAL_DMA_DeInit() function to optimize clear flag operations</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update 
+HAL_DMA_Start_IT() function to optimize interrupts enable</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update 
+HAL_DMA_PollForTransfer() function to optimize check on flags</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update 
+HAL_DMA_IRQHandler() function to optimize interrupt flag management</span></li></ul></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL ETH&nbsp;</span></span><span style="font-weight: bold;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">remove duplicated macro IS_ETH_RX_MODE()</span><small><span style="font-style: italic;"></span></small></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL GPIO </span></span><span style="font-weight: bold;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename 
+GPIO_SPEED_LOW define to GPIO_SPEED_FREQ_LOW</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename 
+GPIO_SPEED_MEDIUM define to GPIO_SPEED_FREQ_MEDIUM</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename 
+GPIO_SPEED_FAST define to GPIO_SPEED_FREQ_HIGH</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename 
+GPIO_SPEED_HIGH define to GPIO_SPEED_FREQ_VERY_HIGH</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL HASH </span></span><span style="font-weight: bold;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename 
+HAL_HASH_STATETypeDef to HAL_HASH_StateTypeDef</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Rename 
+HAL_HASH_PhaseTypeDef to HAL_HASHPhaseTypeDef</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL RCC </span></span><span style="font-weight: bold;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; font-weight: normal;">update</span><span style="font-weight: bold;"></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update values for LSE Drive capability defines</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update PLLN/PLLI2SN/PLLSAI VCO min value 100MHz instead of 192MHz</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">add __HAL_RCC_MCO1_CONFIG() and </span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">__HAL_RCC_MCO2_CONFIG() macros</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span></li></ul><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update HAL_RCCEx_PeriphCLKConfig() function to reset the Backup domain only if the RTC Clock source selection is modified&nbsp;</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">HAL TIM</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update the implementation of __HAL_TIM_SET_COMPARE() macro</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">remove useless assert() in&nbsp;HAL_TIM_PWM_ConfigChannel(), TIM_OC2_SetConfig() and HAL_TIM_PWM_ConfigChannel() </span><span style="font-family: Verdana; font-size: 10pt;">functions</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">HAL CAN</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">add the clear flag ERRI bit in HAL_CAN_IRQHandler()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">HAL I2S</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update I2S HAL_I2S_Transmit() API&nbsp;to keep the check on busy flag only for the slave</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">HAL QSPI</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Add __HAL_QSPI_CLEAR_FLAG() before QSPI_Config()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">HAL UART</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Remove
+enabling of ERR IT source and PE source from HAL_UART_Transmit_IT() and
+remove the corresponding disabling ERR/PE IT from UART_EndTransmit_IT()</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">HAL PCD</span></span><span style="font-family: Verdana; font-size: 10pt;"> update</span><span style="font-weight: bold;">&nbsp;</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">Clean status phase received interrupt when DMA mode enabled&nbsp;</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">HAL HCD </span></span><span style="font-family: Verdana; font-size: 10pt;">update</span><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;"></span></span><span style="font-weight: bold;"></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update to use local 
+variable in USB Host channel re-activation</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"><span style="font-weight: bold;">ll FMC</span> update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update the define FMC Write FIFO Disable/Enable: FMC_WRITE_FIFO_DISABLE and FMC_WRITE_FIFO_ENABLE</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">remove return HAL_ERROR from FMC_SDRAM_SendCommand() function</span></li></ul></ul><span style="font-family: Verdana; font-size: 10pt;"></span><h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 180px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.1 / 25-June-2015</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana,sans-serif; font-size: 10pt;">General updates 
+to fix known defects and enhancements implementation</span><span style="font-family: Verdana; font-size: 10pt;"></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CRC&nbsp;</span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update __HAL_CRC_SET_IDR() macro implementation to use WRITE_REG() instead of MODIFY_REG()<br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL CEC&nbsp;</span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update timeout management in HAL_CEC_Transmit() and HAL_CEC_Receive() functions</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL Cortex </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update HAL_MPU_ConfigRegion() function to be misra compliant</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL ETH </span>update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Remove 
+duplicated IS_ETH_DUPLEX_MODE() and IS_ETH_RX_MODE() macros</span><span style="font-family: Verdana; font-size: 10pt;"></span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Remove 
+illegal space ETH_MAC_READCONTROLLER_FLUSHING macro</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update 
+ETH_MAC_READCONTROLLER_XXX defined values (XXX can be IDLE, READING_DATA and 
+READING_STATUS)</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL FLASH </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update FLASH_OB_GetRDP() function to return uint8_t &nbsp;instead of FlagStatus</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update OB_RDP_LEVELx definition</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">add __HAL_FLASH_GET_LATENCY() macro</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL HASH </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span><span style="font-family: Verdana; font-size: 10pt;"></span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update
+HASH_DMAXferCplt() and HASHEx_DMAXferCplt() functions to properly
+configure the number of valid bits in last word of the message</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update HAL_HASH_SHA1_Accumulate() function to check on the length of the input buffer</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update
+HAL_HASH_<span style="font-weight: bold; font-style: italic;">MODE</span>_Start_IT() functions (<span style="font-style: italic;"><span style="font-weight: bold;">Mode </span></span><span style="font-weight: bold;"></span>stands for MD5, SHA1, SHA224 and SHA256<span style="font-style: italic;"><span style="font-weight: bold;"> </span></span>) to :</span></li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Fix processing 
+fail for small input buffers</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">to unlock 
+the process and call return HAL_OK at the end of HASH processing to avoid 
+incorrect repeating software</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">properly to manage 
+the HashITCounter efficiency </span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update to call the 
+HAL_HASH_InCpltCallback() at the end of the complete buffer instead 
+of</span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"> 
+every each 512 bits </span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update HASH_IT_DINI and HASH_IT_DCI definition</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update __HAL_HASH_GET_FLAG() macro definition<br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL I2S </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update HAL_I2S_Transmit() function to ensure the waiting on Busy flag in case of slave mode selection</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL RTC </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update HAL_RTCEx_SetWakeUpTimer() and HAL_RTCEx_SetWakeUpTimer_IT() functions to properly check on WUTWF flag</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">rename RTC_TIMESTAMPPIN_PI8 define to RTC_TIMESTAMPPIN_POS1</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">rename RTC_TIMESTAMPPIN_PC1 define to RTC_TIMESTAMPPIN_POS2</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG() macro definition</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update __HAL_RTC_TAMPER_GET_IT() macro definition</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update __HAL_RTC_TAMPER_CLEAR_FLAG() macro definition</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update __HAL_RTC_TIMESTAMP_CLEAR_FLAG() macro definition</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG() macro definition</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">add RTC_TAMPCR_TAMPXE and RTC_TAMPCR_TAMPXIE defines</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL SMARTCARD </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">add SMARTCARD_FLAG_IDLE, SMARTCARD_IT_IDLE and&nbsp; SMARTCARD_CLEAR_IDLEF defines<br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL UART </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update HAL_UART_DMAResume() function to clear overrun flag before resuming the Rx transfer</span></li><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update UART_FLAG_SBKF definition<br></span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">HAL USART </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update HAL_USART_DMAResume() function to </span><span style="font-family: Verdana; font-size: 10pt;">clear overrun flag before resuming the Rx transfer</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL FMC </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span></li><ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;">update NAND timing maximum values</span></li></ul><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;"><span style="font-weight: bold;">LL USB </span></span><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">update</span>
+</li><ul><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">USB_FlushTxFifo API: 
+update to flush all Tx FIFO</span>
+</li><li style="margin-top: 4.5pt; margin-bottom: 4.5pt; color: black;" class="MsoNormal"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt;">Update to use local 
+variable in USB Host channel re-activation</span></li></ul></ul>
+<b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;"></span></u></b>
+<h3 style="background: rgb(51, 102, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt; width: 180px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.0 / 12-May-2015</span></h3>
+<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main
+Changes</span></u></b></p><span style="font-family: Verdana; font-size: 10pt;"></span><span style="font-family: Verdana; font-size: 10pt;"></span><ul style="margin-top: 0cm;" type="square"><li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-family: Verdana; font-size: 10pt;"></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;;"></span><span style="font-family: Verdana; font-size: 10pt;">First official release for</span><span style="font-family: Verdana; font-size: 10pt;"><span style="font-style: italic; font-weight: bold;"> STM32F756xx/746xx/745xx</span> 
+devices</span></li></ul>
+<b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;"></span></u></b>
 
-                                      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>
+<span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;; color: black;"></span>
+<div class="MsoNormal" style="text-align: center;" align="center"><span style="color: black;">
+<hr align="center" size="2" 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;,&quot;sans-serif&quot;; color: black;">For
+complete documentation on </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;;">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><td style="padding: 0in;" valign="top"><br>
+</td></tr></tbody>
+</table>
+<p class="MsoNormal"><span style="font-size: 10pt;"><o:p></o:p></span></p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
+</div>
+</body></html>
\ No newline at end of file
diff --git a/Src/Legacy/stm32f7xx_hal_eth.c b/Src/Legacy/stm32f7xx_hal_eth.c
new file mode 100644
index 0000000..10db42e
--- /dev/null
+++ b/Src/Legacy/stm32f7xx_hal_eth.c
@@ -0,0 +1,2289 @@
+/**
+  ******************************************************************************
+  * @file    stm32f7xx_hal_eth.c
+  * @author  MCD Application Team
+  * @brief   ETH HAL module driver.
+  *          This file provides firmware functions to manage the following
+  *          functionalities of the Ethernet (ETH) peripheral:
+  *           + Initialization and de-initialization functions
+  *           + 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 #####
+  ==============================================================================
+    [..]
+      (#)Declare a ETH_HandleTypeDef handle structure, for example:
+         ETH_HandleTypeDef  heth;
+
+      (#)Fill parameters of Init structure in heth handle
+
+      (#)Call HAL_ETH_Init() API to initialize the Ethernet peripheral (MAC, DMA, ...)
+
+      (#)Initialize the ETH low level resources through the HAL_ETH_MspInit() API:
+          (##) Enable the Ethernet interface clock using
+               (+++) __HAL_RCC_ETHMAC_CLK_ENABLE();
+               (+++) __HAL_RCC_ETHMACTX_CLK_ENABLE();
+               (+++) __HAL_RCC_ETHMACRX_CLK_ENABLE();
+
+          (##) Initialize the related GPIO clocks
+          (##) Configure Ethernet pin-out
+          (##) Configure Ethernet NVIC interrupt (IT mode)
+
+      (#)Initialize Ethernet DMA Descriptors in chain mode and point to allocated buffers:
+          (##) HAL_ETH_DMATxDescListInit(); for Transmission process
+          (##) HAL_ETH_DMARxDescListInit(); for Reception process
+
+      (#)Enable MAC and DMA transmission and reception:
+          (##) HAL_ETH_Start();
+
+      (#)Prepare ETH DMA TX Descriptors and give the hand to ETH DMA to transfer
+         the frame to MAC TX FIFO:
+         (##) HAL_ETH_TransmitFrame();
+
+      (#)Poll for a received frame in ETH RX DMA Descriptors and get received
+         frame parameters
+         (##) HAL_ETH_GetReceivedFrame(); (should be called into an infinite loop)
+
+      (#) Get a received frame when an ETH RX interrupt occurs:
+         (##) HAL_ETH_GetReceivedFrame_IT(); (called in IT mode only)
+
+      (#) Communicate with external PHY device:
+         (##) Read a specific register from the PHY
+              HAL_ETH_ReadPHYRegister();
+         (##) Write data to a specific RHY register:
+              HAL_ETH_WritePHYRegister();
+
+      (#) Configure the Ethernet MAC after ETH peripheral initialization
+          HAL_ETH_ConfigMAC(); all MAC parameters should be filled.
+
+      (#) Configure the Ethernet DMA after ETH peripheral initialization
+          HAL_ETH_ConfigDMA(); all DMA parameters should be filled.
+
+*** Callback registration ***
+  =============================================
+
+  The compilation define  USE_HAL_ETH_REGISTER_CALLBACKS when set to 1
+  allows the user to configure dynamically the driver callbacks.
+  Use Function @ref HAL_ETH_RegisterCallback() to register an interrupt callback.
+
+  Function @ref HAL_ETH_RegisterCallback() allows to register following callbacks:
+    (+) TxCpltCallback   : Tx Complete Callback.
+    (+) RxCpltCallback   : Rx Complete Callback.
+    (+) DMAErrorCallback : DMA Error Callback.
+    (+) MspInitCallback  : MspInit Callback.
+    (+) MspDeInitCallback: MspDeInit Callback.
+
+  This function takes as parameters the HAL peripheral handle, the Callback ID
+  and a pointer to the user callback function.
+
+  Use function @ref HAL_ETH_UnRegisterCallback() to reset a callback to the default
+  weak function.
+  @ref HAL_ETH_UnRegisterCallback takes as parameters the HAL peripheral handle,
+  and the Callback ID.
+  This function allows to reset following callbacks:
+    (+) TxCpltCallback   : Tx Complete Callback.
+    (+) RxCpltCallback   : Rx Complete Callback.
+    (+) DMAErrorCallback : DMA Error Callback.
+    (+) MspInitCallback  : MspInit Callback.
+    (+) MspDeInitCallback: MspDeInit Callback.
+
+  By default, after the HAL_ETH_Init and when the state is HAL_ETH_STATE_RESET
+  all callbacks are set to the corresponding weak functions:
+  examples @ref HAL_ETH_TxCpltCallback(), @ref HAL_ETH_RxCpltCallback().
+  Exception done for MspInit and MspDeInit functions that are
+  reset to the legacy weak function in the HAL_ETH_Init/ @ref HAL_ETH_DeInit only when
+  these callbacks are null (not registered beforehand).
+  if not, MspInit or MspDeInit are not null, the HAL_ETH_Init/ @ref HAL_ETH_DeInit
+  keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
+
+  Callbacks can be registered/unregistered in HAL_ETH_STATE_READY state only.
+  Exception done MspInit/MspDeInit that can be registered/unregistered
+  in HAL_ETH_STATE_READY or HAL_ETH_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_ETH_RegisterCallback() before calling @ref HAL_ETH_DeInit
+  or HAL_ETH_Init function.
+
+  When The compilation define USE_HAL_ETH_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
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f7xx_hal.h"
+
+/** @addtogroup STM32F7xx_HAL_Driver
+  * @{
+  */
+
+/** @defgroup ETH ETH
+  * @brief ETH HAL module driver
+  * @{
+  */
+
+#ifdef HAL_ETH_LEGACY_MODULE_ENABLED
+#if defined (ETH)
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/** @defgroup ETH_Private_Constants ETH Private Constants
+  * @{
+  */
+#define ETH_TIMEOUT_SWRESET                 ((uint32_t)500)
+#define ETH_TIMEOUT_LINKED_STATE          ((uint32_t)5000)
+#define ETH_TIMEOUT_AUTONEGO_COMPLETED    ((uint32_t)5000)
+
+/**
+  * @}
+  */
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/** @defgroup ETH_Private_Functions ETH Private Functions
+  * @{
+  */
+static void ETH_MACDMAConfig(ETH_HandleTypeDef *heth, uint32_t err);
+static void ETH_MACAddressConfig(ETH_HandleTypeDef *heth, uint32_t MacAddr, uint8_t *Addr);
+static void ETH_MACReceptionEnable(ETH_HandleTypeDef *heth);
+static void ETH_MACReceptionDisable(ETH_HandleTypeDef *heth);
+static void ETH_MACTransmissionEnable(ETH_HandleTypeDef *heth);
+static void ETH_MACTransmissionDisable(ETH_HandleTypeDef *heth);
+static void ETH_DMATransmissionEnable(ETH_HandleTypeDef *heth);
+static void ETH_DMATransmissionDisable(ETH_HandleTypeDef *heth);
+static void ETH_DMAReceptionEnable(ETH_HandleTypeDef *heth);
+static void ETH_DMAReceptionDisable(ETH_HandleTypeDef *heth);
+static void ETH_FlushTransmitFIFO(ETH_HandleTypeDef *heth);
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+static void ETH_InitCallbacksToDefault(ETH_HandleTypeDef *heth);
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+/**
+  * @}
+  */
+/* Private functions ---------------------------------------------------------*/
+
+/** @defgroup ETH_Exported_Functions ETH Exported Functions
+  * @{
+  */
+
+/** @defgroup ETH_Exported_Functions_Group1 Initialization and de-initialization functions
+  *  @brief   Initialization and Configuration functions
+  *
+  @verbatim
+  ===============================================================================
+            ##### Initialization and de-initialization functions #####
+  ===============================================================================
+  [..]  This section provides functions allowing to:
+      (+) Initialize and configure the Ethernet peripheral
+      (+) De-initialize the Ethernet peripheral
+
+  @endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Initializes the Ethernet MAC and DMA according to default
+  *         parameters.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef *heth)
+{
+  uint32_t tempreg = 0, phyreg = 0;
+  uint32_t hclk = 60000000;
+  uint32_t tickstart = 0;
+  uint32_t err = ETH_SUCCESS;
+
+  /* Check the ETH peripheral state */
+  if(heth == NULL)
+  {
+    return HAL_ERROR;
+  }
+
+  /* Check parameters */
+  assert_param(IS_ETH_AUTONEGOTIATION(heth->Init.AutoNegotiation));
+  assert_param(IS_ETH_RX_MODE(heth->Init.RxMode));
+  assert_param(IS_ETH_CHECKSUM_MODE(heth->Init.ChecksumMode));
+  assert_param(IS_ETH_MEDIA_INTERFACE(heth->Init.MediaInterface));
+
+  if(heth->State == HAL_ETH_STATE_RESET)
+  {
+    /* Allocate lock resource and initialize it */
+    heth->Lock = HAL_UNLOCKED;
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+    ETH_InitCallbacksToDefault(heth);
+
+    if(heth->MspInitCallback == NULL)
+    {
+      /* Init the low level hardware : GPIO, CLOCK, NVIC. */
+      heth->MspInitCallback = HAL_ETH_MspInit;
+    }
+    heth->MspInitCallback(heth);
+
+#else
+    /* Init the low level hardware : GPIO, CLOCK, NVIC. */
+    HAL_ETH_MspInit(heth);
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+  }
+
+  /* Enable SYSCFG Clock */
+  __HAL_RCC_SYSCFG_CLK_ENABLE();
+
+  /* Select MII or RMII Mode*/
+  SYSCFG->PMC &= ~(SYSCFG_PMC_MII_RMII_SEL);
+  SYSCFG->PMC |= (uint32_t)heth->Init.MediaInterface;
+
+  /* Ethernet Software reset */
+  /* Set the SWR bit: resets all MAC subsystem internal registers and logic */
+  /* After reset all the registers holds their respective reset values */
+  (heth->Instance)->DMABMR |= ETH_DMABMR_SR;
+
+  /* Get tick */
+  tickstart = HAL_GetTick();
+
+  /* Wait for software reset */
+  while (((heth->Instance)->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
+  {
+    /* Check for the Timeout */
+    if((HAL_GetTick() - tickstart ) > ETH_TIMEOUT_SWRESET)
+    {
+      heth->State= HAL_ETH_STATE_TIMEOUT;
+
+      /* Process Unlocked */
+      __HAL_UNLOCK(heth);
+
+      /* Note: The SWR is not performed if the ETH_RX_CLK or the ETH_TX_CLK are
+         not available, please check your external PHY or the IO configuration */
+
+      return HAL_TIMEOUT;
+    }
+  }
+
+  /*-------------------------------- MAC Initialization ----------------------*/
+  /* Get the ETHERNET MACMIIAR value */
+  tempreg = (heth->Instance)->MACMIIAR;
+  /* Clear CSR Clock Range CR[2:0] bits */
+  tempreg &= ETH_MACMIIAR_CR_MASK;
+
+  /* Get hclk frequency value */
+  hclk = HAL_RCC_GetHCLKFreq();
+
+  /* Set CR bits depending on hclk value */
+  if((hclk >= 20000000)&&(hclk < 35000000))
+  {
+    /* CSR Clock Range between 20-35 MHz */
+    tempreg |= (uint32_t)ETH_MACMIIAR_CR_Div16;
+  }
+  else if((hclk >= 35000000)&&(hclk < 60000000))
+  {
+    /* CSR Clock Range between 35-60 MHz */
+    tempreg |= (uint32_t)ETH_MACMIIAR_CR_Div26;
+  }
+  else if((hclk >= 60000000)&&(hclk < 100000000))
+  {
+    /* CSR Clock Range between 60-100 MHz */
+    tempreg |= (uint32_t)ETH_MACMIIAR_CR_Div42;
+  }
+  else if((hclk >= 100000000)&&(hclk < 150000000))
+  {
+    /* CSR Clock Range between 100-150 MHz */
+    tempreg |= (uint32_t)ETH_MACMIIAR_CR_Div62;
+  }
+  else /* ((hclk >= 150000000)&&(hclk <= 216000000)) */
+  {
+    /* CSR Clock Range between 150-216 MHz */
+    tempreg |= (uint32_t)ETH_MACMIIAR_CR_Div102;
+  }
+
+  /* Write to ETHERNET MAC MIIAR: Configure the ETHERNET CSR Clock Range */
+  (heth->Instance)->MACMIIAR = (uint32_t)tempreg;
+
+  /*-------------------- PHY initialization and configuration ----------------*/
+  /* Put the PHY in reset mode */
+  if((HAL_ETH_WritePHYRegister(heth, PHY_BCR, PHY_RESET)) != HAL_OK)
+  {
+    /* In case of write timeout */
+    err = ETH_ERROR;
+
+    /* Config MAC and DMA */
+    ETH_MACDMAConfig(heth, err);
+
+    /* Set the ETH peripheral state to READY */
+    heth->State = HAL_ETH_STATE_READY;
+
+    /* Return HAL_ERROR */
+    return HAL_ERROR;
+  }
+
+  /* Delay to assure PHY reset */
+  HAL_Delay(PHY_RESET_DELAY);
+
+  if((heth->Init).AutoNegotiation != ETH_AUTONEGOTIATION_DISABLE)
+  {
+    /* Get tick */
+    tickstart = HAL_GetTick();
+
+    /* We wait for linked status */
+    do
+    {
+      HAL_ETH_ReadPHYRegister(heth, PHY_BSR, &phyreg);
+
+      /* Check for the Timeout */
+      if((HAL_GetTick() - tickstart ) > ETH_TIMEOUT_LINKED_STATE)
+      {
+        /* In case of write timeout */
+        err = ETH_ERROR;
+
+        /* Config MAC and DMA */
+        ETH_MACDMAConfig(heth, err);
+
+        heth->State= HAL_ETH_STATE_READY;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(heth);
+
+        return HAL_TIMEOUT;
+      }
+    } while (((phyreg & PHY_LINKED_STATUS) != PHY_LINKED_STATUS));
+
+
+    /* Enable Auto-Negotiation */
+    if((HAL_ETH_WritePHYRegister(heth, PHY_BCR, PHY_AUTONEGOTIATION)) != HAL_OK)
+    {
+      /* In case of write timeout */
+      err = ETH_ERROR;
+
+      /* Config MAC and DMA */
+      ETH_MACDMAConfig(heth, err);
+
+      /* Set the ETH peripheral state to READY */
+      heth->State = HAL_ETH_STATE_READY;
+
+      /* Return HAL_ERROR */
+      return HAL_ERROR;
+    }
+
+    /* Get tick */
+    tickstart = HAL_GetTick();
+
+    /* Wait until the auto-negotiation will be completed */
+    do
+    {
+      HAL_ETH_ReadPHYRegister(heth, PHY_BSR, &phyreg);
+
+      /* Check for the Timeout */
+      if((HAL_GetTick() - tickstart ) > ETH_TIMEOUT_AUTONEGO_COMPLETED)
+      {
+        /* In case of write timeout */
+        err = ETH_ERROR;
+
+        /* Config MAC and DMA */
+        ETH_MACDMAConfig(heth, err);
+
+        heth->State= HAL_ETH_STATE_READY;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(heth);
+
+        return HAL_TIMEOUT;
+      }
+
+    } while (((phyreg & PHY_AUTONEGO_COMPLETE) != PHY_AUTONEGO_COMPLETE));
+
+    /* Read the result of the auto-negotiation */
+    if((HAL_ETH_ReadPHYRegister(heth, PHY_SR, &phyreg)) != HAL_OK)
+    {
+      /* In case of write timeout */
+      err = ETH_ERROR;
+
+      /* Config MAC and DMA */
+      ETH_MACDMAConfig(heth, err);
+
+      /* Set the ETH peripheral state to READY */
+      heth->State = HAL_ETH_STATE_READY;
+
+      /* Return HAL_ERROR */
+      return HAL_ERROR;
+    }
+
+    /* Configure the MAC with the Duplex Mode fixed by the auto-negotiation process */
+    if((phyreg & PHY_DUPLEX_STATUS) != (uint32_t)RESET)
+    {
+      /* Set Ethernet duplex mode to Full-duplex following the auto-negotiation */
+      (heth->Init).DuplexMode = ETH_MODE_FULLDUPLEX;
+    }
+    else
+    {
+      /* Set Ethernet duplex mode to Half-duplex following the auto-negotiation */
+      (heth->Init).DuplexMode = ETH_MODE_HALFDUPLEX;
+    }
+    /* Configure the MAC with the speed fixed by the auto-negotiation process */
+    if((phyreg & PHY_SPEED_STATUS) == PHY_SPEED_STATUS)
+    {
+      /* Set Ethernet speed to 10M following the auto-negotiation */
+      (heth->Init).Speed = ETH_SPEED_10M;
+    }
+    else
+    {
+      /* Set Ethernet speed to 100M following the auto-negotiation */
+      (heth->Init).Speed = ETH_SPEED_100M;
+    }
+  }
+  else /* AutoNegotiation Disable */
+  {
+    /* Check parameters */
+    assert_param(IS_ETH_SPEED(heth->Init.Speed));
+    assert_param(IS_ETH_DUPLEX_MODE(heth->Init.DuplexMode));
+
+    /* Set MAC Speed and Duplex Mode */
+    if(HAL_ETH_WritePHYRegister(heth, PHY_BCR, ((uint16_t)((heth->Init).DuplexMode >> 3) |
+                                                (uint16_t)((heth->Init).Speed >> 1))) != HAL_OK)
+    {
+      /* In case of write timeout */
+      err = ETH_ERROR;
+
+      /* Config MAC and DMA */
+      ETH_MACDMAConfig(heth, err);
+
+      /* Set the ETH peripheral state to READY */
+      heth->State = HAL_ETH_STATE_READY;
+
+      /* Return HAL_ERROR */
+      return HAL_ERROR;
+    }
+
+    /* Delay to assure PHY configuration */
+    HAL_Delay(PHY_CONFIG_DELAY);
+  }
+
+  /* Config MAC and DMA */
+  ETH_MACDMAConfig(heth, err);
+
+  /* Set ETH HAL State to Ready */
+  heth->State= HAL_ETH_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  De-Initializes the ETH peripheral.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_DeInit(ETH_HandleTypeDef *heth)
+{
+  /* Set the ETH peripheral state to BUSY */
+  heth->State = HAL_ETH_STATE_BUSY;
+
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+  if(heth->MspDeInitCallback == NULL)
+  {
+    heth->MspDeInitCallback = HAL_ETH_MspDeInit;
+  }
+  /* De-Init the low level hardware : GPIO, CLOCK, NVIC. */
+  heth->MspDeInitCallback(heth);
+#else
+  /* De-Init the low level hardware : GPIO, CLOCK, NVIC. */
+  HAL_ETH_MspDeInit(heth);
+#endif
+
+  /* Set ETH HAL state to Disabled */
+  heth->State= HAL_ETH_STATE_RESET;
+
+  /* Release Lock */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the DMA Tx descriptors in chain mode.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param  DMATxDescTab Pointer to the first Tx desc list
+  * @param  TxBuff Pointer to the first TxBuffer list
+  * @param  TxBuffCount Number of the used Tx desc in the list
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_DMATxDescListInit(ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMATxDescTab, uint8_t *TxBuff, uint32_t TxBuffCount)
+{
+  uint32_t i = 0;
+  ETH_DMADescTypeDef *dmatxdesc;
+
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Set the ETH peripheral state to BUSY */
+  heth->State = HAL_ETH_STATE_BUSY;
+
+  /* Set the DMATxDescToSet pointer with the first one of the DMATxDescTab list */
+  heth->TxDesc = DMATxDescTab;
+
+  /* Fill each DMATxDesc descriptor with the right values */
+  for(i=0; i < TxBuffCount; i++)
+  {
+    /* Get the pointer on the member (i) of the Tx Desc list */
+    dmatxdesc = DMATxDescTab + i;
+
+    /* Set Second Address Chained bit */
+    dmatxdesc->Status = ETH_DMATXDESC_TCH;
+
+    /* Set Buffer1 address pointer */
+    dmatxdesc->Buffer1Addr = (uint32_t)(&TxBuff[i*ETH_TX_BUF_SIZE]);
+
+    if ((heth->Init).ChecksumMode == ETH_CHECKSUM_BY_HARDWARE)
+    {
+      /* Set the DMA Tx descriptors checksum insertion */
+      dmatxdesc->Status |= ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL;
+    }
+
+    /* Initialize the next descriptor with the Next Descriptor Polling Enable */
+    if(i < (TxBuffCount-1))
+    {
+      /* Set next descriptor address register with next descriptor base address */
+      dmatxdesc->Buffer2NextDescAddr = (uint32_t)(DMATxDescTab+i+1);
+    }
+    else
+    {
+      /* For last descriptor, set next descriptor address register equal to the first descriptor base address */
+      dmatxdesc->Buffer2NextDescAddr = (uint32_t) DMATxDescTab;
+    }
+  }
+
+  /* Set Transmit Descriptor List Address Register */
+  (heth->Instance)->DMATDLAR = (uint32_t) DMATxDescTab;
+
+  /* Set ETH HAL State to Ready */
+  heth->State= HAL_ETH_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the DMA Rx descriptors in chain mode.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param  DMARxDescTab Pointer to the first Rx desc list
+  * @param  RxBuff Pointer to the first RxBuffer list
+  * @param  RxBuffCount Number of the used Rx desc in the list
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_DMARxDescListInit(ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount)
+{
+  uint32_t i = 0;
+  ETH_DMADescTypeDef *DMARxDesc;
+
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Set the ETH peripheral state to BUSY */
+  heth->State = HAL_ETH_STATE_BUSY;
+
+  /* Set the Ethernet RxDesc pointer with the first one of the DMARxDescTab list */
+  heth->RxDesc = DMARxDescTab;
+
+  /* Fill each DMARxDesc descriptor with the right values */
+  for(i=0; i < RxBuffCount; i++)
+  {
+    /* Get the pointer on the member (i) of the Rx Desc list */
+    DMARxDesc = DMARxDescTab+i;
+
+    /* Set Own bit of the Rx descriptor Status */
+    DMARxDesc->Status = ETH_DMARXDESC_OWN;
+
+    /* Set Buffer1 size and Second Address Chained bit */
+    DMARxDesc->ControlBufferSize = ETH_DMARXDESC_RCH | ETH_RX_BUF_SIZE;
+
+    /* Set Buffer1 address pointer */
+    DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i*ETH_RX_BUF_SIZE]);
+
+    if((heth->Init).RxMode == ETH_RXINTERRUPT_MODE)
+    {
+      /* Enable Ethernet DMA Rx Descriptor interrupt */
+      DMARxDesc->ControlBufferSize &= ~ETH_DMARXDESC_DIC;
+    }
+
+    /* Initialize the next descriptor with the Next Descriptor Polling Enable */
+    if(i < (RxBuffCount-1))
+    {
+      /* Set next descriptor address register with next descriptor base address */
+      DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab+i+1);
+    }
+    else
+    {
+      /* For last descriptor, set next descriptor address register equal to the first descriptor base address */
+      DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab);
+    }
+  }
+
+  /* Set Receive Descriptor List Address Register */
+  (heth->Instance)->DMARDLAR = (uint32_t) DMARxDescTab;
+
+  /* Set ETH HAL State to Ready */
+  heth->State= HAL_ETH_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Initializes the ETH MSP.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+__weak void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(heth);
+
+  /* NOTE : This function Should not be modified, when the callback is needed,
+  the HAL_ETH_MspInit could be implemented in the user file
+  */
+}
+
+/**
+  * @brief  DeInitializes ETH MSP.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+__weak void HAL_ETH_MspDeInit(ETH_HandleTypeDef *heth)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(heth);
+
+  /* NOTE : This function Should not be modified, when the callback is needed,
+  the HAL_ETH_MspDeInit could be implemented in the user file
+  */
+}
+
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+/**
+  * @brief  Register a User ETH Callback
+  *         To be used instead of the weak predefined callback
+  * @param heth eth handle
+  * @param CallbackID ID of the callback to be registered
+  *        This parameter can be one of the following values:
+  *          @arg @ref HAL_ETH_TX_COMPLETE_CB_ID Tx Complete Callback ID
+  *          @arg @ref HAL_ETH_RX_COMPLETE_CB_ID Rx Complete Callback ID
+  *          @arg @ref HAL_ETH_DMA_ERROR_CB_ID   DMA Error Callback ID
+  *          @arg @ref HAL_ETH_MSPINIT_CB_ID     MspInit callback ID
+  *          @arg @ref HAL_ETH_MSPDEINIT_CB_ID   MspDeInit callback ID
+  * @param pCallback pointer to the Callback function
+  * @retval status
+  */
+HAL_StatusTypeDef HAL_ETH_RegisterCallback(ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID, pETH_CallbackTypeDef pCallback)
+{
+  HAL_StatusTypeDef status = HAL_OK;
+
+  if(pCallback == NULL)
+  {
+    return HAL_ERROR;
+  }
+  /* Process locked */
+  __HAL_LOCK(heth);
+
+  if(heth->State == HAL_ETH_STATE_READY)
+  {
+    switch (CallbackID)
+    {
+    case HAL_ETH_TX_COMPLETE_CB_ID :
+      heth->TxCpltCallback = pCallback;
+      break;
+
+    case HAL_ETH_RX_COMPLETE_CB_ID :
+      heth->RxCpltCallback = pCallback;
+      break;
+
+    case HAL_ETH_DMA_ERROR_CB_ID :
+      heth->DMAErrorCallback = pCallback;
+      break;
+
+    case HAL_ETH_MSPINIT_CB_ID :
+      heth->MspInitCallback = pCallback;
+      break;
+
+    case HAL_ETH_MSPDEINIT_CB_ID :
+      heth->MspDeInitCallback = pCallback;
+      break;
+
+    default :
+      /* Return error status */
+      status =  HAL_ERROR;
+      break;
+    }
+  }
+  else if(heth->State == HAL_ETH_STATE_RESET)
+  {
+    switch (CallbackID)
+    {
+    case HAL_ETH_MSPINIT_CB_ID :
+      heth->MspInitCallback = pCallback;
+      break;
+
+    case HAL_ETH_MSPDEINIT_CB_ID :
+      heth->MspDeInitCallback = pCallback;
+      break;
+
+    default :
+      /* Return error status */
+      status =  HAL_ERROR;
+      break;
+    }
+  }
+  else
+  {
+    /* Return error status */
+    status =  HAL_ERROR;
+  }
+
+  /* Release Lock */
+  __HAL_UNLOCK(heth);
+
+  return status;
+}
+
+/**
+  * @brief  Unregister an ETH Callback
+  *         ETH callabck is redirected to the weak predefined callback
+  * @param heth eth handle
+  * @param CallbackID ID of the callback to be unregistered
+  *        This parameter can be one of the following values:
+  *          @arg @ref HAL_ETH_TX_COMPLETE_CB_ID Tx Complete Callback ID
+  *          @arg @ref HAL_ETH_RX_COMPLETE_CB_ID Rx Complete Callback ID
+  *          @arg @ref HAL_ETH_DMA_ERROR_CB_ID   DMA Error Callback ID
+  *          @arg @ref HAL_ETH_MSPINIT_CB_ID     MspInit callback ID
+  *          @arg @ref HAL_ETH_MSPDEINIT_CB_ID   MspDeInit callback ID
+  * @retval status
+  */
+HAL_StatusTypeDef HAL_ETH_UnRegisterCallback(ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID)
+{
+  HAL_StatusTypeDef status = HAL_OK;
+
+  /* Process locked */
+  __HAL_LOCK(heth);
+
+  if(heth->State == HAL_ETH_STATE_READY)
+  {
+    switch (CallbackID)
+    {
+    case HAL_ETH_TX_COMPLETE_CB_ID :
+      heth->TxCpltCallback = HAL_ETH_TxCpltCallback;
+      break;
+
+    case HAL_ETH_RX_COMPLETE_CB_ID :
+      heth->RxCpltCallback = HAL_ETH_RxCpltCallback;
+      break;
+
+    case HAL_ETH_DMA_ERROR_CB_ID :
+      heth->DMAErrorCallback = HAL_ETH_ErrorCallback;
+      break;
+
+    case HAL_ETH_MSPINIT_CB_ID :
+      heth->MspInitCallback = HAL_ETH_MspInit;
+      break;
+
+    case HAL_ETH_MSPDEINIT_CB_ID :
+      heth->MspDeInitCallback = HAL_ETH_MspDeInit;
+      break;
+
+    default :
+      /* Return error status */
+      status =  HAL_ERROR;
+      break;
+    }
+  }
+  else if(heth->State == HAL_ETH_STATE_RESET)
+  {
+    switch (CallbackID)
+    {
+    case HAL_ETH_MSPINIT_CB_ID :
+      heth->MspInitCallback = HAL_ETH_MspInit;
+      break;
+
+    case HAL_ETH_MSPDEINIT_CB_ID :
+      heth->MspDeInitCallback = HAL_ETH_MspDeInit;
+      break;
+
+    default :
+      /* Return error status */
+      status =  HAL_ERROR;
+      break;
+    }
+  }
+  else
+  {
+    /* Return error status */
+    status =  HAL_ERROR;
+  }
+
+  /* Release Lock */
+  __HAL_UNLOCK(heth);
+
+  return status;
+}
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Exported_Functions_Group2 IO operation functions
+  *  @brief   Data transfers functions
+  *
+  @verbatim
+  ==============================================================================
+                          ##### IO operation functions #####
+  ==============================================================================
+  [..]  This section provides functions allowing to:
+        (+) Transmit a frame
+            HAL_ETH_TransmitFrame();
+        (+) Receive a frame
+            HAL_ETH_GetReceivedFrame();
+            HAL_ETH_GetReceivedFrame_IT();
+        (+) Read from an External PHY register
+            HAL_ETH_ReadPHYRegister();
+        (+) Write to an External PHY register
+            HAL_ETH_WritePHYRegister();
+
+  @endverbatim
+
+  * @{
+  */
+
+/**
+  * @brief  Sends an Ethernet frame.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param  FrameLength Amount of data to be sent
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_TransmitFrame(ETH_HandleTypeDef *heth, uint32_t FrameLength)
+{
+  uint32_t bufcount = 0, size = 0, i = 0;
+
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Set the ETH peripheral state to BUSY */
+  heth->State = HAL_ETH_STATE_BUSY;
+
+  if (FrameLength == 0)
+  {
+    /* Set ETH HAL state to READY */
+    heth->State = HAL_ETH_STATE_READY;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(heth);
+
+    return  HAL_ERROR;
+  }
+
+  /* Check if the descriptor is owned by the ETHERNET DMA (when set) or CPU (when reset) */
+  if(((heth->TxDesc)->Status & ETH_DMATXDESC_OWN) != (uint32_t)RESET)
+  {
+    /* OWN bit set */
+    heth->State = HAL_ETH_STATE_BUSY_TX;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(heth);
+
+    return HAL_ERROR;
+  }
+
+  /* Get the number of needed Tx buffers for the current frame */
+  if (FrameLength > ETH_TX_BUF_SIZE)
+  {
+    bufcount = FrameLength/ETH_TX_BUF_SIZE;
+    if (FrameLength % ETH_TX_BUF_SIZE)
+    {
+      bufcount++;
+    }
+  }
+  else
+  {
+    bufcount = 1;
+  }
+  if (bufcount == 1)
+  {
+    /* Set LAST and FIRST segment */
+    heth->TxDesc->Status |=ETH_DMATXDESC_FS|ETH_DMATXDESC_LS;
+    /* Set frame size */
+    heth->TxDesc->ControlBufferSize = (FrameLength & ETH_DMATXDESC_TBS1);
+    /* Set Own bit of the Tx descriptor Status: gives the buffer back to ETHERNET DMA */
+    heth->TxDesc->Status |= ETH_DMATXDESC_OWN;
+    /* Point to next descriptor */
+    heth->TxDesc= (ETH_DMADescTypeDef *)(heth->TxDesc->Buffer2NextDescAddr);
+  }
+  else
+  {
+    for (i=0; i< bufcount; i++)
+    {
+      /* Clear FIRST and LAST segment bits */
+      heth->TxDesc->Status &= ~(ETH_DMATXDESC_FS | ETH_DMATXDESC_LS);
+
+      if (i == 0)
+      {
+        /* Setting the first segment bit */
+        heth->TxDesc->Status |= ETH_DMATXDESC_FS;
+      }
+
+      /* Program size */
+      heth->TxDesc->ControlBufferSize = (ETH_TX_BUF_SIZE & ETH_DMATXDESC_TBS1);
+
+      if (i == (bufcount-1))
+      {
+        /* Setting the last segment bit */
+        heth->TxDesc->Status |= ETH_DMATXDESC_LS;
+        size = FrameLength - (bufcount-1)*ETH_TX_BUF_SIZE;
+        heth->TxDesc->ControlBufferSize = (size & ETH_DMATXDESC_TBS1);
+      }
+
+      /* Set Own bit of the Tx descriptor Status: gives the buffer back to ETHERNET DMA */
+      heth->TxDesc->Status |= ETH_DMATXDESC_OWN;
+      /* point to next descriptor */
+      heth->TxDesc = (ETH_DMADescTypeDef *)(heth->TxDesc->Buffer2NextDescAddr);
+    }
+  }
+
+  /* When Tx Buffer unavailable flag is set: clear it and resume transmission */
+  if (((heth->Instance)->DMASR & ETH_DMASR_TBUS) != (uint32_t)RESET)
+  {
+    /* Clear TBUS ETHERNET DMA flag */
+    (heth->Instance)->DMASR = ETH_DMASR_TBUS;
+    /* Resume DMA transmission*/
+    (heth->Instance)->DMATPDR = 0;
+  }
+
+  /* Set ETH HAL State to Ready */
+  heth->State = HAL_ETH_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Checks for received frames.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_GetReceivedFrame(ETH_HandleTypeDef *heth)
+{
+  uint32_t framelength = 0;
+
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Check the ETH state to BUSY */
+  heth->State = HAL_ETH_STATE_BUSY;
+
+  /* Check if segment is not owned by DMA */
+  /* (((heth->RxDesc->Status & ETH_DMARXDESC_OWN) == (uint32_t)RESET) && ((heth->RxDesc->Status & ETH_DMARXDESC_LS) != (uint32_t)RESET)) */
+  if(((heth->RxDesc->Status & ETH_DMARXDESC_OWN) == (uint32_t)RESET))
+  {
+    /* Check if last segment */
+    if(((heth->RxDesc->Status & ETH_DMARXDESC_LS) != (uint32_t)RESET))
+    {
+      /* increment segment count */
+      (heth->RxFrameInfos).SegCount++;
+
+      /* Check if last segment is first segment: one segment contains the frame */
+      if ((heth->RxFrameInfos).SegCount == 1)
+      {
+        (heth->RxFrameInfos).FSRxDesc =heth->RxDesc;
+      }
+
+      heth->RxFrameInfos.LSRxDesc = heth->RxDesc;
+
+      /* Get the Frame Length of the received packet: substruct 4 bytes of the CRC */
+      framelength = (((heth->RxDesc)->Status & ETH_DMARXDESC_FL) >> ETH_DMARXDESC_FRAMELENGTHSHIFT) - 4;
+      heth->RxFrameInfos.length = framelength;
+
+      /* Get the address of the buffer start address */
+      heth->RxFrameInfos.buffer = ((heth->RxFrameInfos).FSRxDesc)->Buffer1Addr;
+      /* point to next descriptor */
+      heth->RxDesc = (ETH_DMADescTypeDef*) ((heth->RxDesc)->Buffer2NextDescAddr);
+
+      /* Set HAL State to Ready */
+      heth->State = HAL_ETH_STATE_READY;
+
+      /* Process Unlocked */
+      __HAL_UNLOCK(heth);
+
+      /* Return function status */
+      return HAL_OK;
+    }
+    /* Check if first segment */
+    else if((heth->RxDesc->Status & ETH_DMARXDESC_FS) != (uint32_t)RESET)
+    {
+      (heth->RxFrameInfos).FSRxDesc = heth->RxDesc;
+      (heth->RxFrameInfos).LSRxDesc = NULL;
+      (heth->RxFrameInfos).SegCount = 1;
+      /* Point to next descriptor */
+      heth->RxDesc = (ETH_DMADescTypeDef*) (heth->RxDesc->Buffer2NextDescAddr);
+    }
+    /* Check if intermediate segment */
+    else
+    {
+      (heth->RxFrameInfos).SegCount++;
+      /* Point to next descriptor */
+      heth->RxDesc = (ETH_DMADescTypeDef*) (heth->RxDesc->Buffer2NextDescAddr);
+    }
+  }
+
+  /* Set ETH HAL State to Ready */
+  heth->State = HAL_ETH_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_ERROR;
+}
+
+/**
+  * @brief  Gets the Received frame in interrupt mode.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_GetReceivedFrame_IT(ETH_HandleTypeDef *heth)
+{
+  uint32_t descriptorscancounter = 0;
+
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Set ETH HAL State to BUSY */
+  heth->State = HAL_ETH_STATE_BUSY;
+
+  /* Scan descriptors owned by CPU */
+  while (((heth->RxDesc->Status & ETH_DMARXDESC_OWN) == (uint32_t)RESET) && (descriptorscancounter < ETH_RXBUFNB))
+  {
+    /* Just for security */
+    descriptorscancounter++;
+
+    /* Check if first segment in frame */
+    /* ((heth->RxDesc->Status & ETH_DMARXDESC_FS) != (uint32_t)RESET) && ((heth->RxDesc->Status & ETH_DMARXDESC_LS) == (uint32_t)RESET)) */
+    if((heth->RxDesc->Status & (ETH_DMARXDESC_FS | ETH_DMARXDESC_LS)) == (uint32_t)ETH_DMARXDESC_FS)
+    {
+      heth->RxFrameInfos.FSRxDesc = heth->RxDesc;
+      heth->RxFrameInfos.SegCount = 1;
+      /* Point to next descriptor */
+      heth->RxDesc = (ETH_DMADescTypeDef*) (heth->RxDesc->Buffer2NextDescAddr);
+    }
+    /* Check if intermediate segment */
+    /* ((heth->RxDesc->Status & ETH_DMARXDESC_LS) == (uint32_t)RESET)&& ((heth->RxDesc->Status & ETH_DMARXDESC_FS) == (uint32_t)RESET)) */
+    else if ((heth->RxDesc->Status & (ETH_DMARXDESC_LS | ETH_DMARXDESC_FS)) == (uint32_t)RESET)
+    {
+      /* Increment segment count */
+      (heth->RxFrameInfos.SegCount)++;
+      /* Point to next descriptor */
+      heth->RxDesc = (ETH_DMADescTypeDef*)(heth->RxDesc->Buffer2NextDescAddr);
+    }
+    /* Should be last segment */
+    else
+    {
+      /* Last segment */
+      heth->RxFrameInfos.LSRxDesc = heth->RxDesc;
+
+      /* Increment segment count */
+      (heth->RxFrameInfos.SegCount)++;
+
+      /* Check if last segment is first segment: one segment contains the frame */
+      if ((heth->RxFrameInfos.SegCount) == 1)
+      {
+        heth->RxFrameInfos.FSRxDesc = heth->RxDesc;
+      }
+
+      /* Get the Frame Length of the received packet: substruct 4 bytes of the CRC */
+      heth->RxFrameInfos.length = (((heth->RxDesc)->Status & ETH_DMARXDESC_FL) >> ETH_DMARXDESC_FRAMELENGTHSHIFT) - 4;
+
+      /* Get the address of the buffer start address */
+      heth->RxFrameInfos.buffer =((heth->RxFrameInfos).FSRxDesc)->Buffer1Addr;
+
+      /* Point to next descriptor */
+      heth->RxDesc = (ETH_DMADescTypeDef*) (heth->RxDesc->Buffer2NextDescAddr);
+
+      /* Set HAL State to Ready */
+      heth->State = HAL_ETH_STATE_READY;
+
+      /* Process Unlocked */
+      __HAL_UNLOCK(heth);
+
+      /* Return function status */
+      return HAL_OK;
+    }
+  }
+
+  /* Set HAL State to Ready */
+  heth->State = HAL_ETH_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_ERROR;
+}
+
+/**
+  * @brief  This function handles ETH interrupt request.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval HAL status
+  */
+void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth)
+{
+  /* Frame received */
+  if (__HAL_ETH_DMA_GET_FLAG(heth, ETH_DMA_FLAG_R))
+  {
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+    /*Call registered Receive complete callback*/
+    heth->RxCpltCallback(heth);
+#else
+    /* Receive complete callback */
+    HAL_ETH_RxCpltCallback(heth);
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+     /* Clear the Eth DMA Rx IT pending bits */
+    __HAL_ETH_DMA_CLEAR_IT(heth, ETH_DMA_IT_R);
+
+    /* Set HAL State to Ready */
+    heth->State = HAL_ETH_STATE_READY;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(heth);
+
+  }
+  /* Frame transmitted */
+  else if (__HAL_ETH_DMA_GET_FLAG(heth, ETH_DMA_FLAG_T))
+  {
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+    /*  Call resgistered Transfer complete callback*/
+    heth->TxCpltCallback(heth);
+#else
+    /* Transfer complete callback */
+    HAL_ETH_TxCpltCallback(heth);
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+    /* Clear the Eth DMA Tx IT pending bits */
+    __HAL_ETH_DMA_CLEAR_IT(heth, ETH_DMA_IT_T);
+
+    /* Set HAL State to Ready */
+    heth->State = HAL_ETH_STATE_READY;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(heth);
+  }
+
+  /* Clear the interrupt flags */
+  __HAL_ETH_DMA_CLEAR_IT(heth, ETH_DMA_IT_NIS);
+
+  /* ETH DMA Error */
+  if(__HAL_ETH_DMA_GET_FLAG(heth, ETH_DMA_FLAG_AIS))
+  {
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+    heth->DMAErrorCallback(heth);
+#else
+    /* Ethernet Error callback */
+    HAL_ETH_ErrorCallback(heth);
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+    /* Clear the interrupt flags */
+    __HAL_ETH_DMA_CLEAR_IT(heth, ETH_DMA_FLAG_AIS);
+
+    /* Set HAL State to Ready */
+    heth->State = HAL_ETH_STATE_READY;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(heth);
+  }
+}
+
+/**
+  * @brief  Tx Transfer completed callbacks.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+__weak void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *heth)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(heth);
+
+  /* NOTE : This function Should not be modified, when the callback is needed,
+  the HAL_ETH_TxCpltCallback could be implemented in the user file
+  */
+}
+
+/**
+  * @brief  Rx Transfer completed callbacks.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+__weak void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(heth);
+
+  /* NOTE : This function Should not be modified, when the callback is needed,
+  the HAL_ETH_RxCpltCallback could be implemented in the user file
+  */
+}
+
+/**
+  * @brief  Ethernet transfer error callbacks
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+__weak void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *heth)
+{
+  /* Prevent unused argument(s) compilation warning */
+  UNUSED(heth);
+
+  /* NOTE : This function Should not be modified, when the callback is needed,
+  the HAL_ETH_ErrorCallback could be implemented in the user file
+  */
+}
+
+/**
+  * @brief  Reads a PHY register
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param PHYReg PHY register address, is the index of one of the 32 PHY register.
+  *                This parameter can be one of the following values:
+  *                   PHY_BCR: Transceiver Basic Control Register,
+  *                   PHY_BSR: Transceiver Basic Status Register.
+  *                   More PHY register could be read depending on the used PHY
+  * @param RegValue PHY register value
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t *RegValue)
+{
+  uint32_t tmpreg = 0;
+  uint32_t tickstart = 0;
+
+  /* Check parameters */
+  assert_param(IS_ETH_PHY_ADDRESS(heth->Init.PhyAddress));
+
+  /* Check the ETH peripheral state */
+  if(heth->State == HAL_ETH_STATE_BUSY_RD)
+  {
+    return HAL_BUSY;
+  }
+  /* Set ETH HAL State to BUSY_RD */
+  heth->State = HAL_ETH_STATE_BUSY_RD;
+
+  /* Get the ETHERNET MACMIIAR value */
+  tmpreg = heth->Instance->MACMIIAR;
+
+  /* Keep only the CSR Clock Range CR[2:0] bits value */
+  tmpreg &= ~ETH_MACMIIAR_CR_MASK;
+
+  /* Prepare the MII address register value */
+  tmpreg |=(((uint32_t)heth->Init.PhyAddress << 11) & ETH_MACMIIAR_PA); /* Set the PHY device address   */
+  tmpreg |=(((uint32_t)PHYReg<<6) & ETH_MACMIIAR_MR);                   /* Set the PHY register address */
+  tmpreg &= ~ETH_MACMIIAR_MW;                                           /* Set the read mode            */
+  tmpreg |= ETH_MACMIIAR_MB;                                            /* Set the MII Busy bit         */
+
+  /* Write the result value into the MII Address register */
+  heth->Instance->MACMIIAR = tmpreg;
+
+  /* Get tick */
+  tickstart = HAL_GetTick();
+
+  /* Check for the Busy flag */
+  while((tmpreg & ETH_MACMIIAR_MB) == ETH_MACMIIAR_MB)
+  {
+    /* Check for the Timeout */
+    if((HAL_GetTick() - tickstart ) > PHY_READ_TO)
+    {
+      heth->State= HAL_ETH_STATE_READY;
+
+      /* Process Unlocked */
+      __HAL_UNLOCK(heth);
+
+      return HAL_TIMEOUT;
+    }
+
+    tmpreg = heth->Instance->MACMIIAR;
+  }
+
+  /* Get MACMIIDR value */
+  *RegValue = (uint16_t)(heth->Instance->MACMIIDR);
+
+  /* Set ETH HAL State to READY */
+  heth->State = HAL_ETH_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Writes to a PHY register.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param  PHYReg PHY register address, is the index of one of the 32 PHY register.
+  *          This parameter can be one of the following values:
+  *             PHY_BCR: Transceiver Control Register.
+  *             More PHY register could be written depending on the used PHY
+  * @param  RegValue the value to write
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_WritePHYRegister(ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t RegValue)
+{
+  uint32_t tmpreg = 0;
+  uint32_t tickstart = 0;
+
+  /* Check parameters */
+  assert_param(IS_ETH_PHY_ADDRESS(heth->Init.PhyAddress));
+
+  /* Check the ETH peripheral state */
+  if(heth->State == HAL_ETH_STATE_BUSY_WR)
+  {
+    return HAL_BUSY;
+  }
+  /* Set ETH HAL State to BUSY_WR */
+  heth->State = HAL_ETH_STATE_BUSY_WR;
+
+  /* Get the ETHERNET MACMIIAR value */
+  tmpreg = heth->Instance->MACMIIAR;
+
+  /* Keep only the CSR Clock Range CR[2:0] bits value */
+  tmpreg &= ~ETH_MACMIIAR_CR_MASK;
+
+  /* Prepare the MII register address value */
+  tmpreg |=(((uint32_t)heth->Init.PhyAddress<<11) & ETH_MACMIIAR_PA); /* Set the PHY device address */
+  tmpreg |=(((uint32_t)PHYReg<<6) & ETH_MACMIIAR_MR);                 /* Set the PHY register address */
+  tmpreg |= ETH_MACMIIAR_MW;                                          /* Set the write mode */
+  tmpreg |= ETH_MACMIIAR_MB;                                          /* Set the MII Busy bit */
+
+  /* Give the value to the MII data register */
+  heth->Instance->MACMIIDR = (uint16_t)RegValue;
+
+  /* Write the result value into the MII Address register */
+  heth->Instance->MACMIIAR = tmpreg;
+
+  /* Get tick */
+  tickstart = HAL_GetTick();
+
+  /* Check for the Busy flag */
+  while((tmpreg & ETH_MACMIIAR_MB) == ETH_MACMIIAR_MB)
+  {
+    /* Check for the Timeout */
+    if((HAL_GetTick() - tickstart ) > PHY_WRITE_TO)
+    {
+      heth->State= HAL_ETH_STATE_READY;
+
+      /* Process Unlocked */
+      __HAL_UNLOCK(heth);
+
+      return HAL_TIMEOUT;
+    }
+
+    tmpreg = heth->Instance->MACMIIAR;
+  }
+
+  /* Set ETH HAL State to READY */
+  heth->State = HAL_ETH_STATE_READY;
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Exported_Functions_Group3 Peripheral Control functions
+ *  @brief    Peripheral Control functions
+ *
+@verbatim
+ ===============================================================================
+                  ##### Peripheral Control functions #####
+ ===============================================================================
+    [..]  This section provides functions allowing to:
+      (+) Enable MAC and DMA transmission and reception.
+          HAL_ETH_Start();
+      (+) Disable MAC and DMA transmission and reception.
+          HAL_ETH_Stop();
+      (+) Set the MAC configuration in runtime mode
+          HAL_ETH_ConfigMAC();
+      (+) Set the DMA configuration in runtime mode
+          HAL_ETH_ConfigDMA();
+
+@endverbatim
+  * @{
+  */
+
+ /**
+  * @brief  Enables Ethernet MAC and DMA reception/transmission
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_Start(ETH_HandleTypeDef *heth)
+{
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Set the ETH peripheral state to BUSY */
+  heth->State = HAL_ETH_STATE_BUSY;
+
+  /* Enable transmit state machine of the MAC for transmission on the MII */
+  ETH_MACTransmissionEnable(heth);
+
+  /* Enable receive state machine of the MAC for reception from the MII */
+  ETH_MACReceptionEnable(heth);
+
+  /* Flush Transmit FIFO */
+  ETH_FlushTransmitFIFO(heth);
+
+  /* Start DMA transmission */
+  ETH_DMATransmissionEnable(heth);
+
+  /* Start DMA reception */
+  ETH_DMAReceptionEnable(heth);
+
+  /* Set the ETH state to READY*/
+  heth->State= HAL_ETH_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Stop Ethernet MAC and DMA reception/transmission
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_Stop(ETH_HandleTypeDef *heth)
+{
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Set the ETH peripheral state to BUSY */
+  heth->State = HAL_ETH_STATE_BUSY;
+
+  /* Stop DMA transmission */
+  ETH_DMATransmissionDisable(heth);
+
+  /* Stop DMA reception */
+  ETH_DMAReceptionDisable(heth);
+
+  /* Disable receive state machine of the MAC for reception from the MII */
+  ETH_MACReceptionDisable(heth);
+
+  /* Flush Transmit FIFO */
+  ETH_FlushTransmitFIFO(heth);
+
+  /* Disable transmit state machine of the MAC for transmission on the MII */
+  ETH_MACTransmissionDisable(heth);
+
+  /* Set the ETH state*/
+  heth->State = HAL_ETH_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Set ETH MAC Configuration.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param  macconf MAC Configuration structure
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_ConfigMAC(ETH_HandleTypeDef *heth, ETH_MACInitTypeDef *macconf)
+{
+  uint32_t tmpreg = 0;
+
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Set the ETH peripheral state to BUSY */
+  heth->State= HAL_ETH_STATE_BUSY;
+
+  assert_param(IS_ETH_SPEED(heth->Init.Speed));
+  assert_param(IS_ETH_DUPLEX_MODE(heth->Init.DuplexMode));
+
+  if (macconf != NULL)
+  {
+    /* Check the parameters */
+    assert_param(IS_ETH_WATCHDOG(macconf->Watchdog));
+    assert_param(IS_ETH_JABBER(macconf->Jabber));
+    assert_param(IS_ETH_INTER_FRAME_GAP(macconf->InterFrameGap));
+    assert_param(IS_ETH_CARRIER_SENSE(macconf->CarrierSense));
+    assert_param(IS_ETH_RECEIVE_OWN(macconf->ReceiveOwn));
+    assert_param(IS_ETH_LOOPBACK_MODE(macconf->LoopbackMode));
+    assert_param(IS_ETH_CHECKSUM_OFFLOAD(macconf->ChecksumOffload));
+    assert_param(IS_ETH_RETRY_TRANSMISSION(macconf->RetryTransmission));
+    assert_param(IS_ETH_AUTOMATIC_PADCRC_STRIP(macconf->AutomaticPadCRCStrip));
+    assert_param(IS_ETH_BACKOFF_LIMIT(macconf->BackOffLimit));
+    assert_param(IS_ETH_DEFERRAL_CHECK(macconf->DeferralCheck));
+    assert_param(IS_ETH_RECEIVE_ALL(macconf->ReceiveAll));
+    assert_param(IS_ETH_SOURCE_ADDR_FILTER(macconf->SourceAddrFilter));
+    assert_param(IS_ETH_CONTROL_FRAMES(macconf->PassControlFrames));
+    assert_param(IS_ETH_BROADCAST_FRAMES_RECEPTION(macconf->BroadcastFramesReception));
+    assert_param(IS_ETH_DESTINATION_ADDR_FILTER(macconf->DestinationAddrFilter));
+    assert_param(IS_ETH_PROMISCUOUS_MODE(macconf->PromiscuousMode));
+    assert_param(IS_ETH_MULTICAST_FRAMES_FILTER(macconf->MulticastFramesFilter));
+    assert_param(IS_ETH_UNICAST_FRAMES_FILTER(macconf->UnicastFramesFilter));
+    assert_param(IS_ETH_PAUSE_TIME(macconf->PauseTime));
+    assert_param(IS_ETH_ZEROQUANTA_PAUSE(macconf->ZeroQuantaPause));
+    assert_param(IS_ETH_PAUSE_LOW_THRESHOLD(macconf->PauseLowThreshold));
+    assert_param(IS_ETH_UNICAST_PAUSE_FRAME_DETECT(macconf->UnicastPauseFrameDetect));
+    assert_param(IS_ETH_RECEIVE_FLOWCONTROL(macconf->ReceiveFlowControl));
+    assert_param(IS_ETH_TRANSMIT_FLOWCONTROL(macconf->TransmitFlowControl));
+    assert_param(IS_ETH_VLAN_TAG_COMPARISON(macconf->VLANTagComparison));
+    assert_param(IS_ETH_VLAN_TAG_IDENTIFIER(macconf->VLANTagIdentifier));
+
+    /*------------------------ ETHERNET MACCR Configuration --------------------*/
+    /* Get the ETHERNET MACCR value */
+    tmpreg = (heth->Instance)->MACCR;
+    /* Clear WD, PCE, PS, TE and RE bits */
+    tmpreg &= ETH_MACCR_CLEAR_MASK;
+
+    tmpreg |= (uint32_t)(macconf->Watchdog |
+                         macconf->Jabber |
+                         macconf->InterFrameGap |
+                         macconf->CarrierSense |
+                         (heth->Init).Speed |
+                         macconf->ReceiveOwn |
+                         macconf->LoopbackMode |
+                         (heth->Init).DuplexMode |
+                         macconf->ChecksumOffload |
+                         macconf->RetryTransmission |
+                         macconf->AutomaticPadCRCStrip |
+                         macconf->BackOffLimit |
+                         macconf->DeferralCheck);
+
+    /* Write to ETHERNET MACCR */
+    (heth->Instance)->MACCR = (uint32_t)tmpreg;
+
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg;
+
+    /*----------------------- ETHERNET MACFFR Configuration --------------------*/
+    /* Write to ETHERNET MACFFR */
+    (heth->Instance)->MACFFR = (uint32_t)(macconf->ReceiveAll |
+                                          macconf->SourceAddrFilter |
+                                          macconf->PassControlFrames |
+                                          macconf->BroadcastFramesReception |
+                                          macconf->DestinationAddrFilter |
+                                          macconf->PromiscuousMode |
+                                          macconf->MulticastFramesFilter |
+                                          macconf->UnicastFramesFilter);
+
+     /* Wait until the write operation will be taken into account :
+     at least four TX_CLK/RX_CLK clock cycles */
+     tmpreg = (heth->Instance)->MACFFR;
+     HAL_Delay(ETH_REG_WRITE_DELAY);
+     (heth->Instance)->MACFFR = tmpreg;
+
+     /*--------------- ETHERNET MACHTHR and MACHTLR Configuration ---------------*/
+     /* Write to ETHERNET MACHTHR */
+     (heth->Instance)->MACHTHR = (uint32_t)macconf->HashTableHigh;
+
+     /* Write to ETHERNET MACHTLR */
+     (heth->Instance)->MACHTLR = (uint32_t)macconf->HashTableLow;
+     /*----------------------- ETHERNET MACFCR Configuration --------------------*/
+
+     /* Get the ETHERNET MACFCR value */
+     tmpreg = (heth->Instance)->MACFCR;
+     /* Clear xx bits */
+     tmpreg &= ETH_MACFCR_CLEAR_MASK;
+
+     tmpreg |= (uint32_t)((macconf->PauseTime << 16) |
+                          macconf->ZeroQuantaPause |
+                          macconf->PauseLowThreshold |
+                          macconf->UnicastPauseFrameDetect |
+                          macconf->ReceiveFlowControl |
+                          macconf->TransmitFlowControl);
+
+     /* Write to ETHERNET MACFCR */
+     (heth->Instance)->MACFCR = (uint32_t)tmpreg;
+
+     /* Wait until the write operation will be taken into account :
+     at least four TX_CLK/RX_CLK clock cycles */
+     tmpreg = (heth->Instance)->MACFCR;
+     HAL_Delay(ETH_REG_WRITE_DELAY);
+     (heth->Instance)->MACFCR = tmpreg;
+
+     /*----------------------- ETHERNET MACVLANTR Configuration -----------------*/
+     (heth->Instance)->MACVLANTR = (uint32_t)(macconf->VLANTagComparison |
+                                              macconf->VLANTagIdentifier);
+
+      /* Wait until the write operation will be taken into account :
+      at least four TX_CLK/RX_CLK clock cycles */
+      tmpreg = (heth->Instance)->MACVLANTR;
+      HAL_Delay(ETH_REG_WRITE_DELAY);
+      (heth->Instance)->MACVLANTR = tmpreg;
+  }
+  else /* macconf == NULL : here we just configure Speed and Duplex mode */
+  {
+    /*------------------------ ETHERNET MACCR Configuration --------------------*/
+    /* Get the ETHERNET MACCR value */
+    tmpreg = (heth->Instance)->MACCR;
+
+    /* Clear FES and DM bits */
+    tmpreg &= ~((uint32_t)0x00004800);
+
+    tmpreg |= (uint32_t)(heth->Init.Speed | heth->Init.DuplexMode);
+
+    /* Write to ETHERNET MACCR */
+    (heth->Instance)->MACCR = (uint32_t)tmpreg;
+
+    /* Wait until the write operation will be taken into account:
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg;
+  }
+
+  /* Set the ETH state to Ready */
+  heth->State= HAL_ETH_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(heth);
+
+  /* Return function status */
+  return HAL_OK;
+}
+
+/**
+  * @brief  Sets ETH DMA Configuration.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param  dmaconf DMA Configuration structure
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_ETH_ConfigDMA(ETH_HandleTypeDef *heth, ETH_DMAInitTypeDef *dmaconf)
+{
+  uint32_t tmpreg = 0;
+
+  /* Process Locked */
+  __HAL_LOCK(heth);
+
+  /* Set the ETH peripheral state to BUSY */
+  heth->State= HAL_ETH_STATE_BUSY;
+
+  /* Check parameters */
+  assert_param(IS_ETH_DROP_TCPIP_CHECKSUM_FRAME(dmaconf->DropTCPIPChecksumErrorFrame));
+  assert_param(IS_ETH_RECEIVE_STORE_FORWARD(dmaconf->ReceiveStoreForward));
+  assert_param(IS_ETH_FLUSH_RECEIVE_FRAME(dmaconf->FlushReceivedFrame));
+  assert_param(IS_ETH_TRANSMIT_STORE_FORWARD(dmaconf->TransmitStoreForward));
+  assert_param(IS_ETH_TRANSMIT_THRESHOLD_CONTROL(dmaconf->TransmitThresholdControl));
+  assert_param(IS_ETH_FORWARD_ERROR_FRAMES(dmaconf->ForwardErrorFrames));
+  assert_param(IS_ETH_FORWARD_UNDERSIZED_GOOD_FRAMES(dmaconf->ForwardUndersizedGoodFrames));
+  assert_param(IS_ETH_RECEIVE_THRESHOLD_CONTROL(dmaconf->ReceiveThresholdControl));
+  assert_param(IS_ETH_SECOND_FRAME_OPERATE(dmaconf->SecondFrameOperate));
+  assert_param(IS_ETH_ADDRESS_ALIGNED_BEATS(dmaconf->AddressAlignedBeats));
+  assert_param(IS_ETH_FIXED_BURST(dmaconf->FixedBurst));
+  assert_param(IS_ETH_RXDMA_BURST_LENGTH(dmaconf->RxDMABurstLength));
+  assert_param(IS_ETH_TXDMA_BURST_LENGTH(dmaconf->TxDMABurstLength));
+  assert_param(IS_ETH_ENHANCED_DESCRIPTOR_FORMAT(dmaconf->EnhancedDescriptorFormat));
+  assert_param(IS_ETH_DMA_DESC_SKIP_LENGTH(dmaconf->DescriptorSkipLength));
+  assert_param(IS_ETH_DMA_ARBITRATION_ROUNDROBIN_RXTX(dmaconf->DMAArbitration));
+
+  /*----------------------- ETHERNET DMAOMR Configuration --------------------*/
+  /* Get the ETHERNET DMAOMR value */
+  tmpreg = (heth->Instance)->DMAOMR;
+  /* Clear xx bits */
+  tmpreg &= ETH_DMAOMR_CLEAR_MASK;
+
+  tmpreg |= (uint32_t)(dmaconf->DropTCPIPChecksumErrorFrame |
+                       dmaconf->ReceiveStoreForward |
+                       dmaconf->FlushReceivedFrame |
+                       dmaconf->TransmitStoreForward |
+                       dmaconf->TransmitThresholdControl |
+                       dmaconf->ForwardErrorFrames |
+                       dmaconf->ForwardUndersizedGoodFrames |
+                       dmaconf->ReceiveThresholdControl |
+                       dmaconf->SecondFrameOperate);
+
+  /* Write to ETHERNET DMAOMR */
+  (heth->Instance)->DMAOMR = (uint32_t)tmpreg;
+
+  /* Wait until the write operation will be taken into account:
+  at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg = (heth->Instance)->DMAOMR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->DMAOMR = tmpreg;
+
+  /*----------------------- ETHERNET DMABMR Configuration --------------------*/
+  (heth->Instance)->DMABMR = (uint32_t)(dmaconf->AddressAlignedBeats |
+                                         dmaconf->FixedBurst |
+                                         dmaconf->RxDMABurstLength | /* !! if 4xPBL is selected for Tx or Rx it is applied for the other */
+                                         dmaconf->TxDMABurstLength |
+                                         dmaconf->EnhancedDescriptorFormat |
+                                         (dmaconf->DescriptorSkipLength << 2) |
+                                         dmaconf->DMAArbitration |
+                                         ETH_DMABMR_USP); /* Enable use of separate PBL for Rx and Tx */
+
+   /* Wait until the write operation will be taken into account:
+      at least four TX_CLK/RX_CLK clock cycles */
+   tmpreg = (heth->Instance)->DMABMR;
+   HAL_Delay(ETH_REG_WRITE_DELAY);
+   (heth->Instance)->DMABMR = tmpreg;
+
+   /* Set the ETH state to Ready */
+   heth->State= HAL_ETH_STATE_READY;
+
+   /* Process Unlocked */
+   __HAL_UNLOCK(heth);
+
+   /* Return function status */
+   return HAL_OK;
+}
+
+/**
+  * @}
+  */
+
+/** @defgroup ETH_Exported_Functions_Group4 Peripheral State functions
+  *  @brief   Peripheral State functions
+  *
+  @verbatim
+  ===============================================================================
+                         ##### Peripheral State functions #####
+  ===============================================================================
+  [..]
+  This subsection permits to get in run-time the status of the peripheral
+  and the data flow.
+       (+) Get the ETH handle state:
+           HAL_ETH_GetState();
+
+
+  @endverbatim
+  * @{
+  */
+
+/**
+  * @brief  Return the ETH HAL state
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval HAL state
+  */
+HAL_ETH_StateTypeDef HAL_ETH_GetState(ETH_HandleTypeDef *heth)
+{
+  /* Return ETH state */
+  return heth->State;
+}
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/** @addtogroup ETH_Private_Functions
+  * @{
+  */
+
+/**
+  * @brief  Configures Ethernet MAC and DMA with default parameters.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param  err Ethernet Init error
+  * @retval HAL status
+  */
+static void ETH_MACDMAConfig(ETH_HandleTypeDef *heth, uint32_t err)
+{
+  ETH_MACInitTypeDef macinit;
+  ETH_DMAInitTypeDef dmainit;
+  uint32_t tmpreg = 0;
+
+  if (err != ETH_SUCCESS) /* Auto-negotiation failed */
+  {
+    /* Set Ethernet duplex mode to Full-duplex */
+    (heth->Init).DuplexMode = ETH_MODE_FULLDUPLEX;
+
+    /* Set Ethernet speed to 100M */
+    (heth->Init).Speed = ETH_SPEED_100M;
+  }
+
+  /* Ethernet MAC default initialization **************************************/
+  macinit.Watchdog = ETH_WATCHDOG_ENABLE;
+  macinit.Jabber = ETH_JABBER_ENABLE;
+  macinit.InterFrameGap = ETH_INTERFRAMEGAP_96BIT;
+  macinit.CarrierSense = ETH_CARRIERSENCE_ENABLE;
+  macinit.ReceiveOwn = ETH_RECEIVEOWN_ENABLE;
+  macinit.LoopbackMode = ETH_LOOPBACKMODE_DISABLE;
+  if(heth->Init.ChecksumMode == ETH_CHECKSUM_BY_HARDWARE)
+  {
+    macinit.ChecksumOffload = ETH_CHECKSUMOFFLAOD_ENABLE;
+  }
+  else
+  {
+    macinit.ChecksumOffload = ETH_CHECKSUMOFFLAOD_DISABLE;
+  }
+  macinit.RetryTransmission = ETH_RETRYTRANSMISSION_DISABLE;
+  macinit.AutomaticPadCRCStrip = ETH_AUTOMATICPADCRCSTRIP_DISABLE;
+  macinit.BackOffLimit = ETH_BACKOFFLIMIT_10;
+  macinit.DeferralCheck = ETH_DEFFERRALCHECK_DISABLE;
+  macinit.ReceiveAll = ETH_RECEIVEAll_DISABLE;
+  macinit.SourceAddrFilter = ETH_SOURCEADDRFILTER_DISABLE;
+  macinit.PassControlFrames = ETH_PASSCONTROLFRAMES_BLOCKALL;
+  macinit.BroadcastFramesReception = ETH_BROADCASTFRAMESRECEPTION_ENABLE;
+  macinit.DestinationAddrFilter = ETH_DESTINATIONADDRFILTER_NORMAL;
+  macinit.PromiscuousMode = ETH_PROMISCUOUS_MODE_DISABLE;
+  macinit.MulticastFramesFilter = ETH_MULTICASTFRAMESFILTER_PERFECT;
+  macinit.UnicastFramesFilter = ETH_UNICASTFRAMESFILTER_PERFECT;
+  macinit.HashTableHigh = 0x0;
+  macinit.HashTableLow = 0x0;
+  macinit.PauseTime = 0x0;
+  macinit.ZeroQuantaPause = ETH_ZEROQUANTAPAUSE_DISABLE;
+  macinit.PauseLowThreshold = ETH_PAUSELOWTHRESHOLD_MINUS4;
+  macinit.UnicastPauseFrameDetect = ETH_UNICASTPAUSEFRAMEDETECT_DISABLE;
+  macinit.ReceiveFlowControl = ETH_RECEIVEFLOWCONTROL_DISABLE;
+  macinit.TransmitFlowControl = ETH_TRANSMITFLOWCONTROL_DISABLE;
+  macinit.VLANTagComparison = ETH_VLANTAGCOMPARISON_16BIT;
+  macinit.VLANTagIdentifier = 0x0;
+
+  /*------------------------ ETHERNET MACCR Configuration --------------------*/
+  /* Get the ETHERNET MACCR value */
+  tmpreg = (heth->Instance)->MACCR;
+  /* Clear WD, PCE, PS, TE and RE bits */
+  tmpreg &= ETH_MACCR_CLEAR_MASK;
+  /* Set the WD bit according to ETH Watchdog value */
+  /* Set the JD: bit according to ETH Jabber value */
+  /* Set the IFG bit according to ETH InterFrameGap value */
+  /* Set the DCRS bit according to ETH CarrierSense value */
+  /* Set the FES bit according to ETH Speed value */
+  /* Set the DO bit according to ETH ReceiveOwn value */
+  /* Set the LM bit according to ETH LoopbackMode value */
+  /* Set the DM bit according to ETH Mode value */
+  /* Set the IPCO bit according to ETH ChecksumOffload value */
+  /* Set the DR bit according to ETH RetryTransmission value */
+  /* Set the ACS bit according to ETH AutomaticPadCRCStrip value */
+  /* Set the BL bit according to ETH BackOffLimit value */
+  /* Set the DC bit according to ETH DeferralCheck value */
+  tmpreg |= (uint32_t)(macinit.Watchdog |
+                       macinit.Jabber |
+                       macinit.InterFrameGap |
+                       macinit.CarrierSense |
+                       (heth->Init).Speed |
+                       macinit.ReceiveOwn |
+                       macinit.LoopbackMode |
+                       (heth->Init).DuplexMode |
+                       macinit.ChecksumOffload |
+                       macinit.RetryTransmission |
+                       macinit.AutomaticPadCRCStrip |
+                       macinit.BackOffLimit |
+                       macinit.DeferralCheck);
+
+  /* Write to ETHERNET MACCR */
+  (heth->Instance)->MACCR = (uint32_t)tmpreg;
+
+  /* Wait until the write operation will be taken into account:
+     at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg = (heth->Instance)->MACCR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACCR = tmpreg;
+
+  /*----------------------- ETHERNET MACFFR Configuration --------------------*/
+  /* Set the RA bit according to ETH ReceiveAll value */
+  /* Set the SAF and SAIF bits according to ETH SourceAddrFilter value */
+  /* Set the PCF bit according to ETH PassControlFrames value */
+  /* Set the DBF bit according to ETH BroadcastFramesReception value */
+  /* Set the DAIF bit according to ETH DestinationAddrFilter value */
+  /* Set the PR bit according to ETH PromiscuousMode value */
+  /* Set the PM, HMC and HPF bits according to ETH MulticastFramesFilter value */
+  /* Set the HUC and HPF bits according to ETH UnicastFramesFilter value */
+  /* Write to ETHERNET MACFFR */
+  (heth->Instance)->MACFFR = (uint32_t)(macinit.ReceiveAll |
+                                        macinit.SourceAddrFilter |
+                                        macinit.PassControlFrames |
+                                        macinit.BroadcastFramesReception |
+                                        macinit.DestinationAddrFilter |
+                                        macinit.PromiscuousMode |
+                                        macinit.MulticastFramesFilter |
+                                        macinit.UnicastFramesFilter);
+
+   /* Wait until the write operation will be taken into account:
+      at least four TX_CLK/RX_CLK clock cycles */
+   tmpreg = (heth->Instance)->MACFFR;
+   HAL_Delay(ETH_REG_WRITE_DELAY);
+   (heth->Instance)->MACFFR = tmpreg;
+
+   /*--------------- ETHERNET MACHTHR and MACHTLR Configuration --------------*/
+   /* Write to ETHERNET MACHTHR */
+   (heth->Instance)->MACHTHR = (uint32_t)macinit.HashTableHigh;
+
+   /* Write to ETHERNET MACHTLR */
+   (heth->Instance)->MACHTLR = (uint32_t)macinit.HashTableLow;
+   /*----------------------- ETHERNET MACFCR Configuration -------------------*/
+
+   /* Get the ETHERNET MACFCR value */
+   tmpreg = (heth->Instance)->MACFCR;
+   /* Clear xx bits */
+   tmpreg &= ETH_MACFCR_CLEAR_MASK;
+
+   /* Set the PT bit according to ETH PauseTime value */
+   /* Set the DZPQ bit according to ETH ZeroQuantaPause value */
+   /* Set the PLT bit according to ETH PauseLowThreshold value */
+   /* Set the UP bit according to ETH UnicastPauseFrameDetect value */
+   /* Set the RFE bit according to ETH ReceiveFlowControl value */
+   /* Set the TFE bit according to ETH TransmitFlowControl value */
+   tmpreg |= (uint32_t)((macinit.PauseTime << 16) |
+                        macinit.ZeroQuantaPause |
+                        macinit.PauseLowThreshold |
+                        macinit.UnicastPauseFrameDetect |
+                        macinit.ReceiveFlowControl |
+                        macinit.TransmitFlowControl);
+
+   /* Write to ETHERNET MACFCR */
+   (heth->Instance)->MACFCR = (uint32_t)tmpreg;
+
+   /* Wait until the write operation will be taken into account:
+   at least four TX_CLK/RX_CLK clock cycles */
+   tmpreg = (heth->Instance)->MACFCR;
+   HAL_Delay(ETH_REG_WRITE_DELAY);
+   (heth->Instance)->MACFCR = tmpreg;
+
+   /*----------------------- ETHERNET MACVLANTR Configuration ----------------*/
+   /* Set the ETV bit according to ETH VLANTagComparison value */
+   /* Set the VL bit according to ETH VLANTagIdentifier value */
+   (heth->Instance)->MACVLANTR = (uint32_t)(macinit.VLANTagComparison |
+                                            macinit.VLANTagIdentifier);
+
+    /* Wait until the write operation will be taken into account:
+       at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg = (heth->Instance)->MACVLANTR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACVLANTR = tmpreg;
+
+    /* Ethernet DMA default initialization ************************************/
+    dmainit.DropTCPIPChecksumErrorFrame = ETH_DROPTCPIPCHECKSUMERRORFRAME_ENABLE;
+    dmainit.ReceiveStoreForward = ETH_RECEIVESTOREFORWARD_ENABLE;
+    dmainit.FlushReceivedFrame = ETH_FLUSHRECEIVEDFRAME_ENABLE;
+    dmainit.TransmitStoreForward = ETH_TRANSMITSTOREFORWARD_ENABLE;
+    dmainit.TransmitThresholdControl = ETH_TRANSMITTHRESHOLDCONTROL_64BYTES;
+    dmainit.ForwardErrorFrames = ETH_FORWARDERRORFRAMES_DISABLE;
+    dmainit.ForwardUndersizedGoodFrames = ETH_FORWARDUNDERSIZEDGOODFRAMES_DISABLE;
+    dmainit.ReceiveThresholdControl = ETH_RECEIVEDTHRESHOLDCONTROL_64BYTES;
+    dmainit.SecondFrameOperate = ETH_SECONDFRAMEOPERARTE_ENABLE;
+    dmainit.AddressAlignedBeats = ETH_ADDRESSALIGNEDBEATS_ENABLE;
+    dmainit.FixedBurst = ETH_FIXEDBURST_ENABLE;
+    dmainit.RxDMABurstLength = ETH_RXDMABURSTLENGTH_32BEAT;
+    dmainit.TxDMABurstLength = ETH_TXDMABURSTLENGTH_32BEAT;
+    dmainit.EnhancedDescriptorFormat = ETH_DMAENHANCEDDESCRIPTOR_ENABLE;
+    dmainit.DescriptorSkipLength = 0x0;
+    dmainit.DMAArbitration = ETH_DMAARBITRATION_ROUNDROBIN_RXTX_1_1;
+
+    /* Get the ETHERNET DMAOMR value */
+    tmpreg = (heth->Instance)->DMAOMR;
+    /* Clear xx bits */
+    tmpreg &= ETH_DMAOMR_CLEAR_MASK;
+
+    /* Set the DT bit according to ETH DropTCPIPChecksumErrorFrame value */
+    /* Set the RSF bit according to ETH ReceiveStoreForward value */
+    /* Set the DFF bit according to ETH FlushReceivedFrame value */
+    /* Set the TSF bit according to ETH TransmitStoreForward value */
+    /* Set the TTC bit according to ETH TransmitThresholdControl value */
+    /* Set the FEF bit according to ETH ForwardErrorFrames value */
+    /* Set the FUF bit according to ETH ForwardUndersizedGoodFrames value */
+    /* Set the RTC bit according to ETH ReceiveThresholdControl value */
+    /* Set the OSF bit according to ETH SecondFrameOperate value */
+    tmpreg |= (uint32_t)(dmainit.DropTCPIPChecksumErrorFrame |
+                         dmainit.ReceiveStoreForward |
+                         dmainit.FlushReceivedFrame |
+                         dmainit.TransmitStoreForward |
+                         dmainit.TransmitThresholdControl |
+                         dmainit.ForwardErrorFrames |
+                         dmainit.ForwardUndersizedGoodFrames |
+                         dmainit.ReceiveThresholdControl |
+                         dmainit.SecondFrameOperate);
+
+    /* Write to ETHERNET DMAOMR */
+    (heth->Instance)->DMAOMR = (uint32_t)tmpreg;
+
+    /* Wait until the write operation will be taken into account:
+       at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg = (heth->Instance)->DMAOMR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->DMAOMR = tmpreg;
+
+    /*----------------------- ETHERNET DMABMR Configuration ------------------*/
+    /* Set the AAL bit according to ETH AddressAlignedBeats value */
+    /* Set the FB bit according to ETH FixedBurst value */
+    /* Set the RPBL and 4*PBL bits according to ETH RxDMABurstLength value */
+    /* Set the PBL and 4*PBL bits according to ETH TxDMABurstLength value */
+    /* Set the Enhanced DMA descriptors bit according to ETH EnhancedDescriptorFormat value*/
+    /* Set the DSL bit according to ETH DesciptorSkipLength value */
+    /* Set the PR and DA bits according to ETH DMAArbitration value */
+    (heth->Instance)->DMABMR = (uint32_t)(dmainit.AddressAlignedBeats |
+                                          dmainit.FixedBurst |
+                                          dmainit.RxDMABurstLength |    /* !! if 4xPBL is selected for Tx or Rx it is applied for the other */
+                                          dmainit.TxDMABurstLength |
+                                          dmainit.EnhancedDescriptorFormat |
+                                          (dmainit.DescriptorSkipLength << 2) |
+                                          dmainit.DMAArbitration |
+                                          ETH_DMABMR_USP); /* Enable use of separate PBL for Rx and Tx */
+
+     /* Wait until the write operation will be taken into account:
+        at least four TX_CLK/RX_CLK clock cycles */
+     tmpreg = (heth->Instance)->DMABMR;
+     HAL_Delay(ETH_REG_WRITE_DELAY);
+     (heth->Instance)->DMABMR = tmpreg;
+
+     if((heth->Init).RxMode == ETH_RXINTERRUPT_MODE)
+     {
+       /* Enable the Ethernet Rx Interrupt */
+       __HAL_ETH_DMA_ENABLE_IT((heth), ETH_DMA_IT_NIS | ETH_DMA_IT_R);
+     }
+
+     /* Initialize MAC address in ethernet MAC */
+     ETH_MACAddressConfig(heth, ETH_MAC_ADDRESS0, heth->Init.MACAddr);
+}
+
+/**
+  * @brief  Configures the selected MAC address.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @param  MacAddr The MAC address to configure
+  *          This parameter can be one of the following values:
+  *             @arg ETH_MAC_Address0: MAC Address0
+  *             @arg ETH_MAC_Address1: MAC Address1
+  *             @arg ETH_MAC_Address2: MAC Address2
+  *             @arg ETH_MAC_Address3: MAC Address3
+  * @param  Addr Pointer to MAC address buffer data (6 bytes)
+  * @retval HAL status
+  */
+static void ETH_MACAddressConfig(ETH_HandleTypeDef *heth, uint32_t MacAddr, uint8_t *Addr)
+{
+  uint32_t tmpreg;
+
+  /* Check the parameters */
+  assert_param(IS_ETH_MAC_ADDRESS0123(MacAddr));
+
+  /* Calculate the selected MAC address high register */
+  tmpreg = ((uint32_t)Addr[5] << 8) | (uint32_t)Addr[4];
+  /* Load the selected MAC address high register */
+  (*(__IO uint32_t *)((uint32_t)(ETH_MAC_ADDR_HBASE + MacAddr))) = tmpreg;
+  /* Calculate the selected MAC address low register */
+  tmpreg = ((uint32_t)Addr[3] << 24) | ((uint32_t)Addr[2] << 16) | ((uint32_t)Addr[1] << 8) | Addr[0];
+
+  /* Load the selected MAC address low register */
+  (*(__IO uint32_t *)((uint32_t)(ETH_MAC_ADDR_LBASE + MacAddr))) = tmpreg;
+}
+
+/**
+  * @brief  Enables the MAC transmission.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_MACTransmissionEnable(ETH_HandleTypeDef *heth)
+{
+  __IO uint32_t tmpreg = 0;
+
+  /* Enable the MAC transmission */
+  (heth->Instance)->MACCR |= ETH_MACCR_TE;
+
+  /* Wait until the write operation will be taken into account:
+     at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg = (heth->Instance)->MACCR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACCR = tmpreg;
+}
+
+/**
+  * @brief  Disables the MAC transmission.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_MACTransmissionDisable(ETH_HandleTypeDef *heth)
+{
+  __IO uint32_t tmpreg = 0;
+
+  /* Disable the MAC transmission */
+  (heth->Instance)->MACCR &= ~ETH_MACCR_TE;
+
+  /* Wait until the write operation will be taken into account:
+     at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg = (heth->Instance)->MACCR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACCR = tmpreg;
+}
+
+/**
+  * @brief  Enables the MAC reception.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_MACReceptionEnable(ETH_HandleTypeDef *heth)
+{
+  __IO uint32_t tmpreg = 0;
+
+  /* Enable the MAC reception */
+  (heth->Instance)->MACCR |= ETH_MACCR_RE;
+
+  /* Wait until the write operation will be taken into account:
+     at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg = (heth->Instance)->MACCR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACCR = tmpreg;
+}
+
+/**
+  * @brief  Disables the MAC reception.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_MACReceptionDisable(ETH_HandleTypeDef *heth)
+{
+  __IO uint32_t tmpreg = 0;
+
+  /* Disable the MAC reception */
+  (heth->Instance)->MACCR &= ~ETH_MACCR_RE;
+
+  /* Wait until the write operation will be taken into account:
+     at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg = (heth->Instance)->MACCR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACCR = tmpreg;
+}
+
+/**
+  * @brief  Enables the DMA transmission.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_DMATransmissionEnable(ETH_HandleTypeDef *heth)
+{
+  /* Enable the DMA transmission */
+  (heth->Instance)->DMAOMR |= ETH_DMAOMR_ST;
+}
+
+/**
+  * @brief  Disables the DMA transmission.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_DMATransmissionDisable(ETH_HandleTypeDef *heth)
+{
+  /* Disable the DMA transmission */
+  (heth->Instance)->DMAOMR &= ~ETH_DMAOMR_ST;
+}
+
+/**
+  * @brief  Enables the DMA reception.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_DMAReceptionEnable(ETH_HandleTypeDef *heth)
+{
+  /* Enable the DMA reception */
+  (heth->Instance)->DMAOMR |= ETH_DMAOMR_SR;
+}
+
+/**
+  * @brief  Disables the DMA reception.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_DMAReceptionDisable(ETH_HandleTypeDef *heth)
+{
+  /* Disable the DMA reception */
+  (heth->Instance)->DMAOMR &= ~ETH_DMAOMR_SR;
+}
+
+/**
+  * @brief  Clears the ETHERNET transmit FIFO.
+  * @param  heth pointer to a ETH_HandleTypeDef structure that contains
+  *         the configuration information for ETHERNET module
+  * @retval None
+  */
+static void ETH_FlushTransmitFIFO(ETH_HandleTypeDef *heth)
+{
+  __IO uint32_t tmpreg = 0;
+
+  /* Set the Flush Transmit FIFO bit */
+  (heth->Instance)->DMAOMR |= ETH_DMAOMR_FTF;
+
+  /* Wait until the write operation will be taken into account:
+     at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg = (heth->Instance)->DMAOMR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->DMAOMR = tmpreg;
+}
+
+#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
+static void ETH_InitCallbacksToDefault(ETH_HandleTypeDef *heth)
+{
+  /* Init the ETH Callback settings */
+  heth->TxCpltCallback       = HAL_ETH_TxCpltCallback; /* Legacy weak TxCpltCallback   */
+  heth->RxCpltCallback       = HAL_ETH_RxCpltCallback; /* Legacy weak RxCpltCallback   */
+  heth->DMAErrorCallback     = HAL_ETH_ErrorCallback;  /* Legacy weak DMAErrorCallback */
+}
+#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
+
+/**
+  * @}
+  */
+
+#endif /* ETH */
+#endif /* HAL_ETH_LEGACY_MODULE_ENABLED */
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
diff --git a/Src/stm32f7xx_hal.c b/Src/stm32f7xx_hal.c
index 9f82e36..c27bce0 100644
--- a/Src/stm32f7xx_hal.c
+++ b/Src/stm32f7xx_hal.c
@@ -50,11 +50,11 @@
   * @{
   */
 /**
- * @brief STM32F7xx HAL Driver version number V1.2.10
+ * @brief STM32F7xx HAL Driver version number V1.3.0
    */
 #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   (0x0A) /*!< [15:8]  sub2 version */
+#define __STM32F7xx_HAL_VERSION_SUB1   (0x03) /*!< [23:16] sub1 version */
+#define __STM32F7xx_HAL_VERSION_SUB2   (0x00) /*!< [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)\
@@ -138,9 +138,9 @@
 HAL_StatusTypeDef HAL_Init(void)
 {
   /* Configure Instruction cache through ART accelerator */ 
-#if (ART_ACCLERATOR_ENABLE != 0)
+#if (ART_ACCELERATOR_ENABLE != 0)
   __HAL_FLASH_ART_ENABLE();
-#endif /* ART_ACCLERATOR_ENABLE */
+#endif /* ART_ACCELERATOR_ENABLE */
 
   /* Configure Flash prefetch */
 #if (PREFETCH_ENABLE != 0U)
diff --git a/Src/stm32f7xx_hal_can.c b/Src/stm32f7xx_hal_can.c
index 305e3ed..afe3f68 100644
--- a/Src/stm32f7xx_hal_can.c
+++ b/Src/stm32f7xx_hal_can.c
@@ -226,8 +226,8 @@
 #ifdef HAL_CAN_MODULE_ENABLED
 
 #ifdef HAL_CAN_LEGACY_MODULE_ENABLED
-  #error "The CAN driver cannot be used with its legacy, Please enable only one CAN module at once"
-#endif
+#error "The CAN driver cannot be used with its legacy, Please enable only one CAN module at once"
+#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
@@ -555,7 +555,8 @@
   * @param  pCallback pointer to the Callback function
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_CAN_RegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID, void (* pCallback)(CAN_HandleTypeDef *_hcan))
+HAL_StatusTypeDef HAL_CAN_RegisterCallback(CAN_HandleTypeDef *hcan, HAL_CAN_CallbackIDTypeDef CallbackID,
+                                           void (* pCallback)(CAN_HandleTypeDef *_hcan))
 {
   HAL_StatusTypeDef status = HAL_OK;
 
@@ -675,7 +676,7 @@
 
 /**
   * @brief  Unregister a CAN CallBack.
-  *         CAN callabck is redirected to the weak predefined callback
+  *         CAN callback is redirected to the weak predefined callback
   * @param  hcan pointer to a CAN_HandleTypeDef structure that contains
   *         the configuration information for CAN module
   * @param  CallbackID ID of the callback to be unregistered
@@ -835,7 +836,7 @@
   *         contains the filter configuration information.
   * @retval None
   */
-HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterTypeDef *sFilterConfig)
+HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, const CAN_FilterTypeDef *sFilterConfig)
 {
   uint32_t filternbrbitpos;
   CAN_TypeDef *can_ip = hcan->Instance;
@@ -1216,7 +1217,7 @@
   *          - 0 : Sleep mode is not active.
   *          - 1 : Sleep mode is active.
   */
-uint32_t HAL_CAN_IsSleepActive(CAN_HandleTypeDef *hcan)
+uint32_t HAL_CAN_IsSleepActive(const CAN_HandleTypeDef *hcan)
 {
   uint32_t status = 0U;
   HAL_CAN_StateTypeDef state = hcan->State;
@@ -1247,7 +1248,8 @@
   *         This parameter can be a value of @arg CAN_Tx_Mailboxes.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_t aData[], uint32_t *pTxMailbox)
+HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, const CAN_TxHeaderTypeDef *pHeader,
+                                       const uint8_t aData[], uint32_t *pTxMailbox)
 {
   uint32_t transmitmailbox;
   HAL_CAN_StateTypeDef state = hcan->State;
@@ -1278,15 +1280,6 @@
       /* Select an empty transmit mailbox */
       transmitmailbox = (tsr & CAN_TSR_CODE) >> CAN_TSR_CODE_Pos;
 
-      /* Check transmit mailbox value */
-      if (transmitmailbox > 2U)
-      {
-        /* Update error code */
-        hcan->ErrorCode |= HAL_CAN_ERROR_INTERNAL;
-
-        return HAL_ERROR;
-      }
-
       /* Store the Tx mailbox */
       *pTxMailbox = (uint32_t)1 << transmitmailbox;
 
@@ -1404,7 +1397,7 @@
   *         the configuration information for the specified CAN.
   * @retval Number of free Tx Mailboxes.
   */
-uint32_t HAL_CAN_GetTxMailboxesFreeLevel(CAN_HandleTypeDef *hcan)
+uint32_t HAL_CAN_GetTxMailboxesFreeLevel(const CAN_HandleTypeDef *hcan)
 {
   uint32_t freelevel = 0U;
   HAL_CAN_StateTypeDef state = hcan->State;
@@ -1447,7 +1440,7 @@
   *          - 1 : Pending transmission request on at least one of the selected
   *                Tx Mailbox.
   */
-uint32_t HAL_CAN_IsTxMessagePending(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes)
+uint32_t HAL_CAN_IsTxMessagePending(const CAN_HandleTypeDef *hcan, uint32_t TxMailboxes)
 {
   uint32_t status = 0U;
   HAL_CAN_StateTypeDef state = hcan->State;
@@ -1479,7 +1472,7 @@
   *         This parameter can be one value of @arg CAN_Tx_Mailboxes.
   * @retval Timestamp of message sent from Tx Mailbox.
   */
-uint32_t HAL_CAN_GetTxTimestamp(CAN_HandleTypeDef *hcan, uint32_t TxMailbox)
+uint32_t HAL_CAN_GetTxTimestamp(const CAN_HandleTypeDef *hcan, uint32_t TxMailbox)
 {
   uint32_t timestamp = 0U;
   uint32_t transmitmailbox;
@@ -1513,7 +1506,8 @@
   * @param  aData array where the payload of the Rx frame will be stored.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo, CAN_RxHeaderTypeDef *pHeader, uint8_t aData[])
+HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo,
+                                       CAN_RxHeaderTypeDef *pHeader, uint8_t aData[])
 {
   HAL_CAN_StateTypeDef state = hcan->State;
 
@@ -1554,7 +1548,8 @@
     }
     else
     {
-      pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
+      pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) &
+                        hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
     }
     pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR);
     pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
@@ -1603,7 +1598,7 @@
   *         This parameter can be a value of @arg CAN_receive_FIFO_number.
   * @retval Number of messages available in Rx FIFO.
   */
-uint32_t HAL_CAN_GetRxFifoFillLevel(CAN_HandleTypeDef *hcan, uint32_t RxFifo)
+uint32_t HAL_CAN_GetRxFifoFillLevel(const CAN_HandleTypeDef *hcan, uint32_t RxFifo)
 {
   uint32_t filllevel = 0U;
   HAL_CAN_StateTypeDef state = hcan->State;
@@ -2371,7 +2366,7 @@
   *         the configuration information for the specified CAN.
   * @retval HAL state
   */
-HAL_CAN_StateTypeDef HAL_CAN_GetState(CAN_HandleTypeDef *hcan)
+HAL_CAN_StateTypeDef HAL_CAN_GetState(const CAN_HandleTypeDef *hcan)
 {
   HAL_CAN_StateTypeDef state = hcan->State;
 
@@ -2406,7 +2401,7 @@
   *         the configuration information for the specified CAN.
   * @retval CAN Error Code
   */
-uint32_t HAL_CAN_GetError(CAN_HandleTypeDef *hcan)
+uint32_t HAL_CAN_GetError(const CAN_HandleTypeDef *hcan)
 {
   /* Return CAN error code */
   return hcan->ErrorCode;
diff --git a/Src/stm32f7xx_hal_cec.c b/Src/stm32f7xx_hal_cec.c
index 0b92375..3e1c182 100644
--- a/Src/stm32f7xx_hal_cec.c
+++ b/Src/stm32f7xx_hal_cec.c
@@ -233,7 +233,8 @@
 
   /* Write to CEC Control Register */
   hcec->Instance->CFGR = hcec->Init.SignalFreeTime | hcec->Init.Tolerance | hcec->Init.BRERxStop | \
-                         hcec->Init.BREErrorBitGen | hcec->Init.LBPEErrorBitGen | hcec->Init.BroadcastMsgNoErrorBitGen | \
+                         hcec->Init.BREErrorBitGen | hcec->Init.LBPEErrorBitGen | \
+                         hcec->Init.BroadcastMsgNoErrorBitGen | \
                          hcec->Init.SignalFreeTimeOption | ((uint32_t)(hcec->Init.OwnAddress) << 16U) | \
                          hcec->Init.ListenMode;
 
@@ -412,10 +413,10 @@
   * @param  hcec CEC handle
   * @param  CallbackID ID of the callback to be registered
   *         This parameter can be one of the following values:
-  *          @arg @ref HAL_CEC_TX_CPLT_CB_ID Tx Complete callback ID
-  *          @arg @ref HAL_CEC_ERROR_CB_ID Error callback ID
-  *          @arg @ref HAL_CEC_MSPINIT_CB_ID MspInit callback ID
-  *          @arg @ref HAL_CEC_MSPDEINIT_CB_ID MspDeInit callback ID
+  *          @arg HAL_CEC_TX_CPLT_CB_ID Tx Complete callback ID
+  *          @arg HAL_CEC_ERROR_CB_ID Error callback ID
+  *          @arg HAL_CEC_MSPINIT_CB_ID MspInit callback ID
+  *          @arg HAL_CEC_MSPDEINIT_CB_ID MspDeInit callback ID
   * @param  pCallback pointer to the Callback function
   * @retval HAL status
   */
@@ -497,14 +498,14 @@
 
 /**
   * @brief  Unregister an CEC Callback
-  *         CEC callabck is redirected to the weak predefined callback
+  *         CEC callback is redirected to the weak predefined callback
   * @param hcec uart handle
   * @param CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
-  *          @arg @ref HAL_CEC_TX_CPLT_CB_ID Tx Complete callback ID
-  *          @arg @ref HAL_CEC_ERROR_CB_ID Error callback ID
-  *          @arg @ref HAL_CEC_MSPINIT_CB_ID MspInit callback ID
-  *          @arg @ref HAL_CEC_MSPDEINIT_CB_ID MspDeInit callback ID
+  *          @arg HAL_CEC_TX_CPLT_CB_ID Tx Complete callback ID
+  *          @arg HAL_CEC_ERROR_CB_ID Error callback ID
+  *          @arg HAL_CEC_MSPINIT_CB_ID MspInit callback ID
+  *          @arg HAL_CEC_MSPDEINIT_CB_ID MspDeInit callback ID
   * @retval status
   */
 HAL_StatusTypeDef HAL_CEC_UnRegisterCallback(CEC_HandleTypeDef *hcec, HAL_CEC_CallbackIDTypeDef CallbackID)
@@ -694,7 +695,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_CEC_Transmit_IT(CEC_HandleTypeDef *hcec, uint8_t InitiatorAddress, uint8_t DestinationAddress,
-                                      uint8_t *pData, uint32_t Size)
+                                      const uint8_t *pData, uint32_t Size)
 {
   /* if the peripheral isn't already busy and if there is no previous transmission
      already pending due to arbitration lost */
@@ -749,7 +750,7 @@
   * @param hcec CEC handle
   * @retval Frame size
   */
-uint32_t HAL_CEC_GetLastReceivedFrameSize(CEC_HandleTypeDef *hcec)
+uint32_t HAL_CEC_GetLastReceivedFrameSize(const CEC_HandleTypeDef *hcec)
 {
   return hcec->RxXferSize;
 }
@@ -775,13 +776,13 @@
 {
 
   /* save interrupts register for further error or interrupts handling purposes */
-  uint32_t reg;
-  reg = hcec->Instance->ISR;
+  uint32_t itflag;
+  itflag = hcec->Instance->ISR;
 
 
   /* ----------------------------Arbitration Lost Management----------------------------------*/
   /* CEC TX arbitration error interrupt occurred --------------------------------------*/
-  if ((reg & CEC_FLAG_ARBLST) != 0U)
+  if (HAL_IS_BIT_SET(itflag, CEC_FLAG_ARBLST))
   {
     hcec->ErrorCode = HAL_CEC_ERROR_ARBLST;
     __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_ARBLST);
@@ -789,7 +790,7 @@
 
   /* ----------------------------Rx Management----------------------------------*/
   /* CEC RX byte received interrupt  ---------------------------------------------------*/
-  if ((reg & CEC_FLAG_RXBR) != 0U)
+  if (HAL_IS_BIT_SET(itflag, CEC_FLAG_RXBR))
   {
     /* reception is starting */
     hcec->RxState = HAL_CEC_STATE_BUSY_RX;
@@ -801,7 +802,7 @@
   }
 
   /* CEC RX end received interrupt  ---------------------------------------------------*/
-  if ((reg & CEC_FLAG_RXEND) != 0U)
+  if (HAL_IS_BIT_SET(itflag, CEC_FLAG_RXEND))
   {
     /* clear IT */
     __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_RXEND);
@@ -820,7 +821,7 @@
 
   /* ----------------------------Tx Management----------------------------------*/
   /* CEC TX byte request interrupt ------------------------------------------------*/
-  if ((reg & CEC_FLAG_TXBR) != 0U)
+  if (HAL_IS_BIT_SET(itflag, CEC_FLAG_TXBR))
   {
     --hcec->TxXferCount;
     if (hcec->TxXferCount == 0U)
@@ -829,14 +830,14 @@
       __HAL_CEC_LAST_BYTE_TX_SET(hcec);
     }
     /* In all cases transmit the byte */
-    hcec->Instance->TXDR = *hcec->pTxBuffPtr;
+    hcec->Instance->TXDR = (uint8_t)*hcec->pTxBuffPtr;
     hcec->pTxBuffPtr++;
     /* clear Tx-Byte request flag */
     __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_TXBR);
   }
 
   /* CEC TX end interrupt ------------------------------------------------*/
-  if ((reg & CEC_FLAG_TXEND) != 0U)
+  if (HAL_IS_BIT_SET(itflag, CEC_FLAG_TXEND))
   {
     __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_TXEND);
 
@@ -854,21 +855,21 @@
   }
 
   /* ----------------------------Rx/Tx Error Management----------------------------------*/
-  if ((reg & (CEC_ISR_RXOVR | CEC_ISR_BRE | CEC_ISR_SBPE | CEC_ISR_LBPE | CEC_ISR_RXACKE | CEC_ISR_TXUDR | CEC_ISR_TXERR |
-              CEC_ISR_TXACKE)) != 0U)
+  if ((itflag & (CEC_ISR_RXOVR | CEC_ISR_BRE | CEC_ISR_SBPE | CEC_ISR_LBPE | CEC_ISR_RXACKE | CEC_ISR_TXUDR |
+              CEC_ISR_TXERR | CEC_ISR_TXACKE)) != 0U)
   {
-    hcec->ErrorCode = reg;
+    hcec->ErrorCode = itflag;
     __HAL_CEC_CLEAR_FLAG(hcec, HAL_CEC_ERROR_RXOVR | HAL_CEC_ERROR_BRE | CEC_FLAG_LBPE | CEC_FLAG_SBPE |
                          HAL_CEC_ERROR_RXACKE | HAL_CEC_ERROR_TXUDR | HAL_CEC_ERROR_TXERR | HAL_CEC_ERROR_TXACKE);
 
 
-    if ((reg & (CEC_ISR_RXOVR | CEC_ISR_BRE | CEC_ISR_SBPE | CEC_ISR_LBPE | CEC_ISR_RXACKE)) != 0U)
+    if ((itflag & (CEC_ISR_RXOVR | CEC_ISR_BRE | CEC_ISR_SBPE | CEC_ISR_LBPE | CEC_ISR_RXACKE)) != 0U)
     {
       hcec->Init.RxBuffer -= hcec->RxXferSize;
       hcec->RxXferSize = 0U;
       hcec->RxState = HAL_CEC_STATE_READY;
     }
-    else if (((reg & CEC_ISR_ARBLST) == 0U) && ((reg & (CEC_ISR_TXUDR | CEC_ISR_TXERR | CEC_ISR_TXACKE)) != 0U))
+    else if (((itflag & CEC_ISR_ARBLST) == 0U) && ((itflag & (CEC_ISR_TXUDR | CEC_ISR_TXERR | CEC_ISR_TXACKE)) != 0U))
     {
       /* Set the CEC state ready to be able to start again the process */
       hcec->gState = HAL_CEC_STATE_READY;
@@ -957,9 +958,10 @@
   *              the configuration information for the specified CEC module.
   * @retval HAL state
   */
-HAL_CEC_StateTypeDef HAL_CEC_GetState(CEC_HandleTypeDef *hcec)
+HAL_CEC_StateTypeDef HAL_CEC_GetState(const CEC_HandleTypeDef *hcec)
 {
-  uint32_t temp1, temp2;
+  uint32_t temp1;
+  uint32_t temp2;
   temp1 = hcec->gState;
   temp2 = hcec->RxState;
 
@@ -972,7 +974,7 @@
   *              the configuration information for the specified CEC.
   * @retval CEC Error Code
   */
-uint32_t HAL_CEC_GetError(CEC_HandleTypeDef *hcec)
+uint32_t HAL_CEC_GetError(const CEC_HandleTypeDef *hcec)
 {
   return hcec->ErrorCode;
 }
@@ -993,4 +995,3 @@
 /**
   * @}
   */
-
diff --git a/Src/stm32f7xx_hal_eth.c b/Src/stm32f7xx_hal_eth.c
index 9401acc..0c7697a 100644
--- a/Src/stm32f7xx_hal_eth.c
+++ b/Src/stm32f7xx_hal_eth.c
@@ -194,44 +194,44 @@
 /** @addtogroup ETH_Private_Constants ETH Private Constants
   * @{
   */
-#define ETH_MACCR_MASK       ((uint32_t)0xFFFB7F7CU)
-#define ETH_MACECR_MASK      ((uint32_t)0x3F077FFFU)
-#define ETH_MACFFR_MASK      ((uint32_t)0x800007FFU)
-#define ETH_MACWTR_MASK      ((uint32_t)0x0000010FU)
-#define ETH_MACTFCR_MASK     ((uint32_t)0xFFFF00F2U)
-#define ETH_MACRFCR_MASK     ((uint32_t)0x00000003U)
-#define ETH_MTLTQOMR_MASK    ((uint32_t)0x00000072U)
-#define ETH_MTLRQOMR_MASK    ((uint32_t)0x0000007BU)
-
-#define ETH_DMAMR_MASK       ((uint32_t)0x00007802U)
-#define ETH_DMASBMR_MASK     ((uint32_t)0x0000D001U)
-#define ETH_DMACCR_MASK      ((uint32_t)0x00013FFFU)
-#define ETH_DMACTCR_MASK     ((uint32_t)0x003F1010U)
-#define ETH_DMACRCR_MASK     ((uint32_t)0x803F0000U)
-#define ETH_MACPMTCSR_MASK   (ETH_MACPMTCSR_PD | ETH_MACPMTCSR_WFE | \
-                              ETH_MACPMTCSR_MPE | ETH_MACPMTCSR_GU)
+#define ETH_MACCR_MASK          0xFFFB7F7CU
+#define ETH_MACECR_MASK         0x3F077FFFU
+#define ETH_MACFFR_MASK         0x800007FFU
+#define ETH_MACWTR_MASK         0x0000010FU
+#define ETH_MACTFCR_MASK        0xFFFF00F2U
+#define ETH_MACRFCR_MASK        0x00000003U
+#define ETH_MTLTQOMR_MASK       0x00000072U
+#define ETH_MTLRQOMR_MASK       0x0000007BU
+							    
+#define ETH_DMAMR_MASK          0x00007802U
+#define ETH_DMASBMR_MASK        0x0000D001U
+#define ETH_DMACCR_MASK         0x00013FFFU
+#define ETH_DMACTCR_MASK        0x003F1010U
+#define ETH_DMACRCR_MASK        0x803F0000U
+#define ETH_MACPMTCSR_MASK      (ETH_MACPMTCSR_PD | ETH_MACPMTCSR_WFE | \
+                                 ETH_MACPMTCSR_MPE | ETH_MACPMTCSR_GU)
 
 /* Timeout values */
-#define ETH_SWRESET_TIMEOUT                 ((uint32_t)500U)
-#define ETH_MDIO_BUS_TIMEOUT                ((uint32_t)1000U)
+#define ETH_SWRESET_TIMEOUT     500U
+#define ETH_MDIO_BUS_TIMEOUT    1000U
 
 #define ETH_DMARXDESC_ERRORS_MASK ((uint32_t)(ETH_DMARXDESC_DBE | ETH_DMARXDESC_RE | \
                                               ETH_DMARXDESC_OE  | ETH_DMARXDESC_RWT |\
                                               ETH_DMARXDESC_LC | ETH_DMARXDESC_CE |\
                                               ETH_DMARXDESC_DE | ETH_DMARXDESC_IPV4HCE))
 
-#define ETH_MAC_US_TICK               ((uint32_t)1000000U)
+#define ETH_MAC_US_TICK         1000000U
 
-#define ETH_MACTSCR_MASK              ((uint32_t)0x0087FF2FU)
+#define ETH_MACTSCR_MASK        0x0087FF2FU
 
-#define ETH_PTPTSHR_VALUE            ((uint32_t)0xFFFFFFFFU)
-#define ETH_PTPTSLR_VALUE            ((uint32_t)0xBB9ACA00U)
+#define ETH_PTPTSHR_VALUE       0xFFFFFFFFU
+#define ETH_PTPTSLR_VALUE       0xBB9ACA00U
 
 /* Ethernet MACMIIAR register Mask */
-#define ETH_MACMIIAR_CR_MASK    ((uint32_t)0xFFFFFFE3U)
+#define ETH_MACMIIAR_CR_MASK    0xFFFFFFE3U
 
 /* Delay to wait when writing to some Ethernet registers */
-#define ETH_REG_WRITE_DELAY ((uint32_t)0x00000001U)
+#define ETH_REG_WRITE_DELAY     0x00000001U
 
 /* ETHERNET MACCR register Mask */
 #define ETH_MACCR_CLEAR_MASK    0xFF20810FU
@@ -243,8 +243,8 @@
 #define ETH_DMAOMR_CLEAR_MASK   0xF8DE3F23U
 
 /* ETHERNET MAC address offsets */
-#define ETH_MAC_ADDR_HBASE    (uint32_t)(ETH_MAC_BASE + 0x40U)  /* ETHERNET MAC address high offset */
-#define ETH_MAC_ADDR_LBASE    (uint32_t)(ETH_MAC_BASE + 0x44U)  /* ETHERNET MAC address low offset */
+#define ETH_MAC_ADDR_HBASE      (uint32_t)(ETH_MAC_BASE + 0x40U)  /* ETHERNET MAC address high offset */
+#define ETH_MAC_ADDR_LBASE      (uint32_t)(ETH_MAC_BASE + 0x44U)  /* ETHERNET MAC address low offset */
 
 /* ETHERNET DMA Rx descriptors Frame length Shift */
 #define  ETH_DMARXDESC_FRAMELENGTHSHIFT            16U
@@ -696,6 +696,8 @@
   */
 HAL_StatusTypeDef HAL_ETH_Start(ETH_HandleTypeDef *heth)
 {
+  uint32_t tmpreg1;
+
   if (heth->gState == HAL_ETH_STATE_READY)
   {
     heth->gState = HAL_ETH_STATE_BUSY;
@@ -709,9 +711,21 @@
     /* Enable the MAC transmission */
     SET_BIT(heth->Instance->MACCR, ETH_MACCR_TE);
 
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg1;
+
     /* Enable the MAC reception */
     SET_BIT(heth->Instance->MACCR, ETH_MACCR_RE);
 
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg1;
+
     /* Flush Transmit FIFO */
     ETH_FlushTransmitFIFO(heth);
 
@@ -739,6 +753,8 @@
   */
 HAL_StatusTypeDef HAL_ETH_Start_IT(ETH_HandleTypeDef *heth)
 {
+  uint32_t tmpreg1;
+
   if (heth->gState == HAL_ETH_STATE_READY)
   {
     heth->gState = HAL_ETH_STATE_BUSY;
@@ -765,9 +781,21 @@
     /* Enable the MAC transmission */
     SET_BIT(heth->Instance->MACCR, ETH_MACCR_TE);
 
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg1;
+
     /* Enable the MAC reception */
     SET_BIT(heth->Instance->MACCR, ETH_MACCR_RE);
 
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg1;
+
     /* Flush Transmit FIFO */
     ETH_FlushTransmitFIFO(heth);
 
@@ -802,12 +830,14 @@
   */
 HAL_StatusTypeDef HAL_ETH_Stop(ETH_HandleTypeDef *heth)
 {
+  uint32_t tmpreg1;
+
   if (heth->gState == HAL_ETH_STATE_STARTED)
   {
     /* Set the ETH peripheral state to BUSY */
     heth->gState = HAL_ETH_STATE_BUSY;
     /* Disable the DMA transmission */
-    CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_TE);
+    CLEAR_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_ST);
 
     /* Disable the DMA reception */
     CLEAR_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_SR);
@@ -815,12 +845,24 @@
     /* Disable the MAC reception */
     CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_RE);
 
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg1;
+
     /* Flush Transmit FIFO */
     ETH_FlushTransmitFIFO(heth);
 
     /* Disable the MAC transmission */
     CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_TE);
 
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg1;
+
     heth->gState = HAL_ETH_STATE_READY;
 
     /* Return function status */
@@ -842,6 +884,7 @@
 {
   ETH_DMADescTypeDef *dmarxdesc;
   uint32_t descindex;
+  uint32_t tmpreg1;
 
   if (heth->gState == HAL_ETH_STATE_STARTED)
   {
@@ -852,19 +895,32 @@
                                     ETH_DMAIER_FBEIE | ETH_DMAIER_AISE | ETH_DMAIER_RBUIE));
 
     /* Disable the DMA transmission */
-    CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_TE);
+    CLEAR_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_ST);
 
     /* Disable the DMA reception */
     CLEAR_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_SR);
 
     /* Disable the MAC reception */
     CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_RE);
+
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg1;
+
     /* Flush Transmit FIFO */
     ETH_FlushTransmitFIFO(heth);
 
     /* Disable the MAC transmission */
     CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_TE);
 
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACCR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACCR = tmpreg1;
+
     /* Clear IOC bit to all Rx descriptors */
     for (descindex = 0; descindex < (uint32_t)ETH_RX_DESC_CNT; descindex++)
     {
@@ -1173,11 +1229,6 @@
 
     if (allocStatus != 0U)
     {
-      /* Ensure rest of descriptor is written to RAM before the OWN bit */
-      __DMB();
-
-      WRITE_REG(dmarxdesc->DESC0, ETH_DMARXDESC_OWN);
-
       if (heth->RxDescList.ItMode == 0U)
       {
         WRITE_REG(dmarxdesc->DESC1, ETH_DMARXDESC_DIC | ETH_RX_BUF_SIZE | ETH_DMARXDESC_RCH);
@@ -1187,6 +1238,14 @@
         WRITE_REG(dmarxdesc->DESC1, ETH_RX_BUF_SIZE | ETH_DMARXDESC_RCH);
       }
 
+      /* Before transferring the ownership to DMA, make sure that the RX descriptors bits writing
+         is fully performed.
+         The __DMB() instruction is added to avoid any potential compiler optimization that
+         may lead to abnormal behavior. */
+      __DMB();
+
+      SET_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_OWN);
+
       /* Increment current rx descriptor index */
       INCR_RX_DESC_INDEX(descidx, 1U);
       /* Get current descriptor address */
@@ -2146,15 +2205,15 @@
   macconf->Watchdog = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_WD) >> 23) == 0U) ? ENABLE : DISABLE;
   macconf->AutomaticPadCRCStrip = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_APCS) >> 7) > 0U) ? ENABLE : DISABLE;
   macconf->InterPacketGapVal = READ_BIT(heth->Instance->MACCR, ETH_MACCR_IFG);
-  macconf->ChecksumOffload = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_IPCO) >> 27) > 0U) ? ENABLE : DISABLE;
+  macconf->ChecksumOffload = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_IPCO) >> 10U) > 0U) ? ENABLE : DISABLE;
 
 
   macconf->TransmitFlowControl = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_TFCE) >> 1) > 0U) ? ENABLE : DISABLE;
   macconf->ZeroQuantaPause = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_ZQPD) >> 7) == 0U) ? ENABLE : DISABLE;
   macconf->PauseLowThreshold = READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_PLT);
   macconf->PauseTime = (READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_PT) >> 16);
-  macconf->ReceiveFlowControl = (READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_RFCE) > 0U) ? ENABLE : DISABLE;
-  macconf->UnicastPausePacketDetect = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_UPFD) >> 1) > 0U)
+  macconf->ReceiveFlowControl = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_RFCE) >> 2U) > 0U) ? ENABLE : DISABLE;
+  macconf->UnicastPausePacketDetect = ((READ_BIT(heth->Instance->MACFCR, ETH_MACFCR_UPFD) >> 3U) > 0U)
                                       ? ENABLE : DISABLE;
 
   return HAL_OK;
@@ -2175,8 +2234,9 @@
     return HAL_ERROR;
   }
 
-  dmaconf->DMAArbitration = READ_BIT(heth->Instance->DMABMR, ETH_DMABMR_DSL) >> 2;
-  dmaconf->AddressAlignedBeats = ((READ_BIT(heth->Instance->DMABMR, ETH_DMABMR_AAB) >> 12) > 0U) ? ENABLE : DISABLE;
+  dmaconf->DMAArbitration = READ_BIT(heth->Instance->DMABMR,
+                                    (ETH_DMAARBITRATION_RXPRIORTX | ETH_DMAARBITRATION_ROUNDROBIN_RXTX_4_1));
+  dmaconf->AddressAlignedBeats = ((READ_BIT(heth->Instance->DMABMR, ETH_DMABMR_AAB) >> 25U) > 0U) ? ENABLE : DISABLE;
   dmaconf->BurstMode = READ_BIT(heth->Instance->DMABMR, ETH_DMABMR_FB | ETH_DMABMR_MB);
   dmaconf->RxDMABurstLength = READ_BIT(heth->Instance->DMABMR, ETH_DMABMR_RDP);
   dmaconf->TxDMABurstLength = READ_BIT(heth->Instance->DMABMR, ETH_DMABMR_PBL);
@@ -2312,6 +2372,7 @@
 HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig(ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig)
 {
   uint32_t filterconfig;
+  uint32_t tmpreg1;
 
   if (pFilterConfig == NULL)
   {
@@ -2332,6 +2393,12 @@
 
   MODIFY_REG(heth->Instance->MACFFR, ETH_MACFFR_MASK, filterconfig);
 
+  /* Wait until the write operation will be taken into account :
+  at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg1 = (heth->Instance)->MACFFR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACFFR = tmpreg1;
+
   return HAL_OK;
 }
 
@@ -2417,14 +2484,28 @@
   */
 HAL_StatusTypeDef HAL_ETH_SetHashTable(ETH_HandleTypeDef *heth, uint32_t *pHashTable)
 {
+  uint32_t tmpreg1;
   if (pHashTable == NULL)
   {
     return HAL_ERROR;
   }
 
   heth->Instance->MACHTHR = pHashTable[0];
+
+  /* Wait until the write operation will be taken into account :
+  at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg1 = (heth->Instance)->MACHTHR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACHTHR = tmpreg1;
+
   heth->Instance->MACHTLR = pHashTable[1];
 
+  /* Wait until the write operation will be taken into account :
+  at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg1 = (heth->Instance)->MACHTLR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACHTLR = tmpreg1;
+
   return HAL_OK;
 }
 
@@ -2439,6 +2520,7 @@
   */
 void HAL_ETH_SetRxVLANIdentifier(ETH_HandleTypeDef *heth, uint32_t ComparisonBits, uint32_t VLANIdentifier)
 {
+  uint32_t tmpreg1;
   MODIFY_REG(heth->Instance->MACVLANTR, ETH_MACVLANTR_VLANTI, VLANIdentifier);
   if (ComparisonBits == ETH_VLANTAGCOMPARISON_16BIT)
   {
@@ -2448,6 +2530,12 @@
   {
     SET_BIT(heth->Instance->MACVLANTR, ETH_MACVLANTR_VLANTC);
   }
+
+  /* Wait until the write operation will be taken into account :
+  at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg1 = (heth->Instance)->MACVLANTR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACVLANTR = tmpreg1;
 }
 
 /**
@@ -2478,13 +2566,27 @@
   */
 void HAL_ETH_ExitPowerDownMode(ETH_HandleTypeDef *heth)
 {
+  uint32_t tmpreg1;
+
   /* clear wake up sources */
   CLEAR_BIT(heth->Instance->MACPMTCSR, ETH_MACPMTCSR_WFE | ETH_MACPMTCSR_MPE | ETH_MACPMTCSR_GU);
 
+  /* Wait until the write operation will be taken into account :
+  at least four TX_CLK/RX_CLK clock cycles */
+  tmpreg1 = (heth->Instance)->MACPMTCSR;
+  HAL_Delay(ETH_REG_WRITE_DELAY);
+  (heth->Instance)->MACPMTCSR = tmpreg1;
+
   if (READ_BIT(heth->Instance->MACPMTCSR, ETH_MACPMTCSR_PD) != 0U)
   {
     /* Exit power down mode */
     CLEAR_BIT(heth->Instance->MACPMTCSR, ETH_MACPMTCSR_PD);
+
+    /* Wait until the write operation will be taken into account :
+    at least four TX_CLK/RX_CLK clock cycles */
+    tmpreg1 = (heth->Instance)->MACPMTCSR;
+    HAL_Delay(ETH_REG_WRITE_DELAY);
+    (heth->Instance)->MACPMTCSR = tmpreg1;
   }
 
   /* Disable PMT interrupt */
@@ -2670,11 +2772,11 @@
   tmpreg1 &= ETH_MACFCR_CLEAR_MASK;
 
   tmpreg1 |= (uint32_t)((macconf->PauseTime << 16U) |
-                        (uint32_t)macconf->ZeroQuantaPause |
+                        ((uint32_t)((macconf->ZeroQuantaPause == DISABLE) ? 1U : 0U) << 7U) |
                         macconf->PauseLowThreshold |
-                        (uint32_t)macconf->UnicastSlowProtocolPacketDetect |
-                        (uint32_t)macconf->ReceiveFlowControl |
-                        (uint32_t)macconf->TransmitFlowControl);
+                        ((uint32_t)((macconf->UnicastPausePacketDetect == ENABLE) ? 1U : 0U) << 3U) |
+                        ((uint32_t)((macconf->ReceiveFlowControl == ENABLE) ? 1U : 0U) << 2U) |
+                        ((uint32_t)((macconf->TransmitFlowControl == ENABLE) ? 1U : 0U) << 1U));
 
   /* Write to ETHERNET MACFCR */
   (heth->Instance)->MACFCR = (uint32_t)tmpreg1;
@@ -2764,7 +2866,7 @@
   macDefaultConf.TransmitFlowControl = DISABLE;
   macDefaultConf.Speed = ETH_SPEED_100M;
   macDefaultConf.DuplexMode = ETH_FULLDUPLEX_MODE;
-  macDefaultConf.UnicastSlowProtocolPacketDetect = DISABLE;
+  macDefaultConf.UnicastPausePacketDetect = DISABLE;
 
   /* MAC default configuration */
   ETH_SetMACConfig(heth, &macDefaultConf);
diff --git a/Src/stm32f7xx_hal_hcd.c b/Src/stm32f7xx_hal_hcd.c
index 5391b2b..1f8b118 100644
--- a/Src/stm32f7xx_hal_hcd.c
+++ b/Src/stm32f7xx_hal_hcd.c
@@ -197,13 +197,8 @@
   *          This parameter can be a value from 0 to32K
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd,
-                                  uint8_t ch_num,
-                                  uint8_t epnum,
-                                  uint8_t dev_address,
-                                  uint8_t speed,
-                                  uint8_t ep_type,
-                                  uint16_t mps)
+HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, uint8_t ch_num, uint8_t epnum,
+                                  uint8_t dev_address, uint8_t speed, uint8_t ep_type, uint16_t mps)
 {
   HAL_StatusTypeDef status;
 
@@ -226,13 +221,9 @@
 
   hhcd->hc[ch_num].speed = speed;
 
-  status =  USB_HC_Init(hhcd->Instance,
-                        ch_num,
-                        epnum,
-                        dev_address,
-                        speed,
-                        ep_type,
-                        mps);
+  status =  USB_HC_Init(hhcd->Instance, ch_num, epnum,
+                        dev_address, speed, ep_type, mps);
+
   __HAL_UNLOCK(hhcd);
 
   return status;
@@ -1189,35 +1180,31 @@
 
   uint32_t tmpreg;
 
-  if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR)
+  if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_AHBERR))
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_AHBERR);
     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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_BBERR))
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_BBERR);
     hhcd->hc[ch_num].state = HC_BBLERR;
     (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)
-  {
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_ACK);
-  }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_STALL))
   {
     __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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_DTERR))
   {
     __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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_TXERR))
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_TXERR);
     hhcd->hc[ch_num].state = HC_XACTERR;
@@ -1228,13 +1215,16 @@
     /* ... */
   }
 
-  if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_FRMOR) == USB_OTG_HCINT_FRMOR)
+  if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_FRMOR))
   {
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_FRMOR);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_XFRC) == USB_OTG_HCINT_XFRC)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_XFRC))
   {
+    /* Clear any pending ACK IT */
+    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_ACK);
+
     if (hhcd->Init.dma_enable != 0U)
     {
       hhcd->hc[ch_num].xfer_count = hhcd->hc[ch_num].XferSize - \
@@ -1280,19 +1270,27 @@
       hhcd->hc[ch_num].toggle_in ^= 1U;
     }
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_CHH) == USB_OTG_HCINT_CHH)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_ACK))
   {
+    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_ACK);
+  }
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_CHH))
+  {
+    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_CHH);
     if (hhcd->hc[ch_num].state == HC_XFRC)
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       hhcd->hc[ch_num].urb_state = URB_DONE;
     }
     else if (hhcd->hc[ch_num].state == HC_STALL)
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       hhcd->hc[ch_num].urb_state = URB_STALL;
     }
     else if ((hhcd->hc[ch_num].state == HC_XACTERR) ||
              (hhcd->hc[ch_num].state == HC_DATATGLERR))
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       hhcd->hc[ch_num].ErrCnt++;
       if (hhcd->hc[ch_num].ErrCnt > 2U)
       {
@@ -1310,26 +1308,42 @@
         USBx_HC(ch_num)->HCCHAR = tmpreg;
       }
     }
+    else if (hhcd->hc[ch_num].state == HC_NYET)
+    {
+      hhcd->hc[ch_num].state = HC_HALTED;
+    }
+    else if (hhcd->hc[ch_num].state == HC_ACK)
+    {
+      hhcd->hc[ch_num].state = HC_HALTED;
+    }
     else if (hhcd->hc[ch_num].state == HC_NAK)
     {
-      hhcd->hc[ch_num].urb_state  = URB_NOTREADY;
+      hhcd->hc[ch_num].state = HC_HALTED;
+      hhcd->hc[ch_num].urb_state = URB_NOTREADY;
 
-      /* re-activate the channel */
-      tmpreg = USBx_HC(ch_num)->HCCHAR;
-      tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
-      tmpreg |= USB_OTG_HCCHAR_CHENA;
-      USBx_HC(ch_num)->HCCHAR = tmpreg;
+      if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) ||
+          (hhcd->hc[ch_num].ep_type == EP_TYPE_BULK))
+      {
+        /* re-activate the channel */
+        tmpreg = USBx_HC(ch_num)->HCCHAR;
+        tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
+        tmpreg |= USB_OTG_HCCHAR_CHENA;
+        USBx_HC(ch_num)->HCCHAR = tmpreg;
+      }
     }
     else if (hhcd->hc[ch_num].state == HC_BBLERR)
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       hhcd->hc[ch_num].ErrCnt++;
       hhcd->hc[ch_num].urb_state = URB_ERROR;
     }
     else
     {
-      /* ... */
+      if (hhcd->hc[ch_num].state == HC_HALTED)
+      {
+        return;
+      }
     }
-    __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);
@@ -1337,11 +1351,20 @@
     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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_NYET))
+  {
+    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NYET);
+    hhcd->hc[ch_num].state = HC_NYET;
+    hhcd->hc[ch_num].ErrCnt = 0U;
+
+    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
+  }
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_NAK))
   {
     if (hhcd->hc[ch_num].ep_type == EP_TYPE_INTR)
     {
       hhcd->hc[ch_num].ErrCnt = 0U;
+      hhcd->hc[ch_num].state = HC_NAK;
       (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     }
     else if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) ||
@@ -1382,13 +1405,13 @@
   uint32_t tmpreg;
   uint32_t num_packets;
 
-  if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR)
+  if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_AHBERR))
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_AHBERR);
     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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_ACK))
   {
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_ACK);
 
@@ -1396,20 +1419,21 @@
     {
       hhcd->hc[ch_num].do_ping = 0U;
       hhcd->hc[ch_num].urb_state = URB_NOTREADY;
+      hhcd->hc[ch_num].state = HC_ACK;
       (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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_FRMOR))
   {
     __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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_XFRC))
   {
     hhcd->hc[ch_num].ErrCnt = 0U;
 
     /* transaction completed with NYET state, update do ping state */
-    if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NYET) == USB_OTG_HCINT_NYET)
+    if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_NYET))
     {
       hhcd->hc[ch_num].do_ping = 1U;
       __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NYET);
@@ -1418,7 +1442,7 @@
     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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_NYET))
   {
     hhcd->hc[ch_num].state = HC_NYET;
     hhcd->hc[ch_num].do_ping = 1U;
@@ -1426,13 +1450,13 @@
     (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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_STALL))
   {
     __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_NAK) == USB_OTG_HCINT_NAK)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_NAK))
   {
     hhcd->hc[ch_num].ErrCnt = 0U;
     hhcd->hc[ch_num].state = HC_NAK;
@@ -1448,7 +1472,7 @@
     (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_TXERR) == USB_OTG_HCINT_TXERR)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_TXERR))
   {
     if (hhcd->Init.dma_enable == 0U)
     {
@@ -1476,16 +1500,18 @@
     }
     __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_TXERR);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_DTERR) == USB_OTG_HCINT_DTERR)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, 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)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, ch_num, USB_OTG_HCINT_CHH))
   {
+    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_CHH);
     if (hhcd->hc[ch_num].state == HC_XFRC)
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       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))
@@ -1506,21 +1532,29 @@
         }
       }
     }
+    else if (hhcd->hc[ch_num].state == HC_ACK)
+    {
+      hhcd->hc[ch_num].state = HC_HALTED;
+    }
     else if (hhcd->hc[ch_num].state == HC_NAK)
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       hhcd->hc[ch_num].urb_state = URB_NOTREADY;
     }
     else if (hhcd->hc[ch_num].state == HC_NYET)
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       hhcd->hc[ch_num].urb_state  = URB_NOTREADY;
     }
     else if (hhcd->hc[ch_num].state == HC_STALL)
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       hhcd->hc[ch_num].urb_state  = URB_STALL;
     }
     else if ((hhcd->hc[ch_num].state == HC_XACTERR) ||
              (hhcd->hc[ch_num].state == HC_DATATGLERR))
     {
+      hhcd->hc[ch_num].state = HC_HALTED;
       hhcd->hc[ch_num].ErrCnt++;
       if (hhcd->hc[ch_num].ErrCnt > 2U)
       {
@@ -1540,11 +1574,9 @@
     }
     else
     {
-      /* ... */
+      return;
     }
 
-    __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
diff --git a/Src/stm32f7xx_hal_i2c.c b/Src/stm32f7xx_hal_i2c.c
index c5ec9a1..049db58 100644
--- a/Src/stm32f7xx_hal_i2c.c
+++ b/Src/stm32f7xx_hal_i2c.c
@@ -438,10 +438,14 @@
 /* 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_Mem_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_Mem_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);
 
@@ -707,6 +711,8 @@
 /**
   * @brief  Register a User I2C Callback
   *         To be used instead of the weak predefined callback
+  * @note   The HAL_I2C_RegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RESET
+  *         to register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID.
   * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
   *                the configuration information for the specified I2C.
   * @param  CallbackID ID of the callback to be registered
@@ -737,8 +743,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hi2c);
 
   if (HAL_I2C_STATE_READY == hi2c->State)
   {
@@ -827,14 +831,14 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hi2c);
   return status;
 }
 
 /**
   * @brief  Unregister an I2C Callback
   *         I2C callback is redirected to the weak predefined callback
+  * @note   The HAL_I2C_UnRegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RESET 
+  *         to un-register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID.
   * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
   *                the configuration information for the specified I2C.
   * @param  CallbackID ID of the callback to be unregistered
@@ -857,9 +861,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hi2c);
-
   if (HAL_I2C_STATE_READY == hi2c->State)
   {
     switch (CallbackID)
@@ -947,8 +948,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hi2c);
   return status;
 }
 
@@ -971,8 +970,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hi2c);
 
   if (HAL_I2C_STATE_READY == hi2c->State)
   {
@@ -987,8 +984,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hi2c);
   return status;
 }
 
@@ -1003,9 +998,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hi2c);
-
   if (HAL_I2C_STATE_READY == hi2c->State)
   {
     hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback  */
@@ -1019,8 +1011,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hi2c);
   return status;
 }
 
@@ -2647,9 +2637,6 @@
 HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
                                        uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 {
-  uint32_t tickstart;
-  uint32_t xfermode;
-
   /* Check the parameters */
   assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));
 
@@ -2669,9 +2656,6 @@
     /* Process Locked */
     __HAL_LOCK(hi2c);
 
-    /* Init tickstart for timeout management*/
-    tickstart = HAL_GetTick();
-
     hi2c->State       = HAL_I2C_STATE_BUSY_TX;
     hi2c->Mode        = HAL_I2C_MODE_MEM;
     hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;
@@ -2680,30 +2664,29 @@
     hi2c->pBuffPtr    = pData;
     hi2c->XferCount   = Size;
     hi2c->XferOptions = I2C_NO_OPTION_FRAME;
-    hi2c->XferISR     = I2C_Master_ISR_IT;
+    hi2c->XferISR     = I2C_Mem_ISR_IT;
+    hi2c->Devaddress  = DevAddress;
 
-    if (hi2c->XferCount > MAX_NBYTE_SIZE)
+    /* If Memory address size is 8Bit */
+    if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
     {
-      hi2c->XferSize = MAX_NBYTE_SIZE;
-      xfermode = I2C_RELOAD_MODE;
+      /* Prefetch Memory Address */
+      hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
+
+      /* Reset Memaddress content */
+      hi2c->Memaddress = 0xFFFFFFFFU;
     }
+    /* If Memory address size is 16Bit */
     else
     {
-      hi2c->XferSize = hi2c->XferCount;
-      xfermode = I2C_AUTOEND_MODE;
-    }
+      /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */
+      hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
 
+      /* Prepare Memaddress buffer for LSB part */
+      hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress);
+    }
     /* Send Slave Address and Memory Address */
-    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart)
-        != HAL_OK)
-    {
-      /* Process Unlocked */
-      __HAL_UNLOCK(hi2c);
-      return HAL_ERROR;
-    }
-
-    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
-    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);
+    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE);
 
     /* Process Unlocked */
     __HAL_UNLOCK(hi2c);
@@ -2741,9 +2724,6 @@
 HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 {
-  uint32_t tickstart;
-  uint32_t xfermode;
-
   /* Check the parameters */
   assert_param(IS_I2C_MEMADD_SIZE(MemAddSize));
 
@@ -2763,9 +2743,6 @@
     /* Process Locked */
     __HAL_LOCK(hi2c);
 
-    /* Init tickstart for timeout management*/
-    tickstart = HAL_GetTick();
-
     hi2c->State       = HAL_I2C_STATE_BUSY_RX;
     hi2c->Mode        = HAL_I2C_MODE_MEM;
     hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;
@@ -2774,29 +2751,29 @@
     hi2c->pBuffPtr    = pData;
     hi2c->XferCount   = Size;
     hi2c->XferOptions = I2C_NO_OPTION_FRAME;
-    hi2c->XferISR     = I2C_Master_ISR_IT;
+    hi2c->XferISR     = I2C_Mem_ISR_IT;
+    hi2c->Devaddress  = DevAddress;
 
-    if (hi2c->XferCount > MAX_NBYTE_SIZE)
+    /* If Memory address size is 8Bit */
+    if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
     {
-      hi2c->XferSize = MAX_NBYTE_SIZE;
-      xfermode = I2C_RELOAD_MODE;
+      /* Prefetch Memory Address */
+      hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
+
+      /* Reset Memaddress content */
+      hi2c->Memaddress = 0xFFFFFFFFU;
     }
+    /* If Memory address size is 16Bit */
     else
     {
-      hi2c->XferSize = hi2c->XferCount;
-      xfermode = I2C_AUTOEND_MODE;
-    }
+      /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */
+      hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
 
+      /* Prepare Memaddress buffer for LSB part */
+      hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress);
+    }
     /* Send Slave Address and Memory Address */
-    if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
-    {
-      /* Process Unlocked */
-      __HAL_UNLOCK(hi2c);
-      return HAL_ERROR;
-    }
-
-    /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
-    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);
+    I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE);
 
     /* Process Unlocked */
     __HAL_UNLOCK(hi2c);
@@ -2809,7 +2786,7 @@
     /* 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_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
+    I2C_Enable_IRQ(hi2c, (I2C_XFER_TX_IT | I2C_XFER_RX_IT));
 
     return HAL_OK;
   }
@@ -2833,8 +2810,6 @@
 HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
                                         uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 {
-  uint32_t tickstart;
-  uint32_t xfermode;
   HAL_StatusTypeDef dmaxferstatus;
 
   /* Check the parameters */
@@ -2856,9 +2831,6 @@
     /* Process Locked */
     __HAL_LOCK(hi2c);
 
-    /* Init tickstart for timeout management*/
-    tickstart = HAL_GetTick();
-
     hi2c->State       = HAL_I2C_STATE_BUSY_TX;
     hi2c->Mode        = HAL_I2C_MODE_MEM;
     hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;
@@ -2867,28 +2839,36 @@
     hi2c->pBuffPtr    = pData;
     hi2c->XferCount   = Size;
     hi2c->XferOptions = I2C_NO_OPTION_FRAME;
-    hi2c->XferISR     = I2C_Master_ISR_DMA;
+    hi2c->XferISR     = I2C_Mem_ISR_DMA;
+    hi2c->Devaddress  = DevAddress;
 
     if (hi2c->XferCount > MAX_NBYTE_SIZE)
     {
       hi2c->XferSize = MAX_NBYTE_SIZE;
-      xfermode = I2C_RELOAD_MODE;
     }
     else
     {
       hi2c->XferSize = hi2c->XferCount;
-      xfermode = I2C_AUTOEND_MODE;
     }
 
-    /* Send Slave Address and Memory Address */
-    if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart)
-        != HAL_OK)
+    /* If Memory address size is 8Bit */
+    if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
     {
-      /* Process Unlocked */
-      __HAL_UNLOCK(hi2c);
-      return HAL_ERROR;
-    }
+      /* Prefetch Memory Address */
+      hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
 
+      /* Reset Memaddress content */
+      hi2c->Memaddress = 0xFFFFFFFFU;
+    }
+    /* If Memory address size is 16Bit */
+    else
+    {
+      /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */
+      hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
+
+      /* Prepare Memaddress buffer for LSB part */
+      hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress);
+    }
 
     if (hi2c->hdmatx != NULL)
     {
@@ -2923,12 +2903,8 @@
 
     if (dmaxferstatus == HAL_OK)
     {
-      /* Send Slave Address */
-      /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP);
-
-      /* Update XferCount value */
-      hi2c->XferCount -= hi2c->XferSize;
+      /* Send Slave Address and Memory Address */
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE);
 
       /* Process Unlocked */
       __HAL_UNLOCK(hi2c);
@@ -2936,11 +2912,11 @@
       /* 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 and NACK interrupts */
-      I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
-
-      /* Enable DMA Request */
-      hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
+      /* 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_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
     }
     else
     {
@@ -2980,8 +2956,6 @@
 HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
                                        uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 {
-  uint32_t tickstart;
-  uint32_t xfermode;
   HAL_StatusTypeDef dmaxferstatus;
 
   /* Check the parameters */
@@ -3003,9 +2977,6 @@
     /* Process Locked */
     __HAL_LOCK(hi2c);
 
-    /* Init tickstart for timeout management*/
-    tickstart = HAL_GetTick();
-
     hi2c->State       = HAL_I2C_STATE_BUSY_RX;
     hi2c->Mode        = HAL_I2C_MODE_MEM;
     hi2c->ErrorCode   = HAL_I2C_ERROR_NONE;
@@ -3014,25 +2985,35 @@
     hi2c->pBuffPtr    = pData;
     hi2c->XferCount   = Size;
     hi2c->XferOptions = I2C_NO_OPTION_FRAME;
-    hi2c->XferISR     = I2C_Master_ISR_DMA;
+    hi2c->XferISR     = I2C_Mem_ISR_DMA;
+    hi2c->Devaddress  = DevAddress;
 
     if (hi2c->XferCount > MAX_NBYTE_SIZE)
     {
       hi2c->XferSize = MAX_NBYTE_SIZE;
-      xfermode = I2C_RELOAD_MODE;
     }
     else
     {
       hi2c->XferSize = hi2c->XferCount;
-      xfermode = I2C_AUTOEND_MODE;
     }
 
-    /* Send Slave Address and Memory Address */
-    if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK)
+    /* If Memory address size is 8Bit */
+    if (MemAddSize == I2C_MEMADD_SIZE_8BIT)
     {
-      /* Process Unlocked */
-      __HAL_UNLOCK(hi2c);
-      return HAL_ERROR;
+      /* Prefetch Memory Address */
+      hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress);
+
+      /* Reset Memaddress content */
+      hi2c->Memaddress = 0xFFFFFFFFU;
+    }
+    /* If Memory address size is 16Bit */
+    else
+    {
+      /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */
+      hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress);
+
+      /* Prepare Memaddress buffer for LSB part */
+      hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress);
     }
 
     if (hi2c->hdmarx != NULL)
@@ -3068,11 +3049,8 @@
 
     if (dmaxferstatus == HAL_OK)
     {
-      /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
-      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ);
-
-      /* Update XferCount value */
-      hi2c->XferCount -= hi2c->XferSize;
+      /* Send Slave Address and Memory Address */
+      I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE);
 
       /* Process Unlocked */
       __HAL_UNLOCK(hi2c);
@@ -3080,11 +3058,11 @@
       /* 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 and NACK interrupts */
-      I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
-
-      /* Enable DMA Request */
-      hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
+      /* 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_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
     }
     else
     {
@@ -3327,6 +3305,10 @@
     /* 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, 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_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
 
     return HAL_OK;
@@ -3773,6 +3755,9 @@
 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
                                                 uint32_t XferOptions)
 {
+  /* Declaration of tmp to prevent undefined behavior of volatile usage */
+  FlagStatus tmp;
+
   /* Check the parameters */
   assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
 
@@ -3832,7 +3817,8 @@
     hi2c->XferOptions = XferOptions;
     hi2c->XferISR     = I2C_Slave_ISR_IT;
 
-    if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE)
+    tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR);
+    if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET))
     {
       /* Clear ADDR flag after prepare the transfer parameters */
       /* This action will generate an acknowledge to the Master */
@@ -3869,6 +3855,8 @@
 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
                                                  uint32_t XferOptions)
 {
+  /* Declaration of tmp to prevent undefined behavior of volatile usage */
+  FlagStatus tmp;
   HAL_StatusTypeDef dmaxferstatus;
 
   /* Check the parameters */
@@ -4010,7 +3998,8 @@
       return HAL_ERROR;
     }
 
-    if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE)
+    tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR);
+    if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET))
     {
       /* Clear ADDR flag after prepare the transfer parameters */
       /* This action will generate an acknowledge to the Master */
@@ -4050,6 +4039,9 @@
 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
                                                uint32_t XferOptions)
 {
+  /* Declaration of tmp to prevent undefined behavior of volatile usage */
+  FlagStatus tmp;
+
   /* Check the parameters */
   assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions));
 
@@ -4109,7 +4101,8 @@
     hi2c->XferOptions = XferOptions;
     hi2c->XferISR     = I2C_Slave_ISR_IT;
 
-    if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT)
+    tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR);
+    if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET))
     {
       /* Clear ADDR flag after prepare the transfer parameters */
       /* This action will generate an acknowledge to the Master */
@@ -4146,6 +4139,8 @@
 HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
                                                 uint32_t XferOptions)
 {
+  /* Declaration of tmp to prevent undefined behavior of volatile usage */
+  FlagStatus tmp;
   HAL_StatusTypeDef dmaxferstatus;
 
   /* Check the parameters */
@@ -4287,7 +4282,8 @@
       return HAL_ERROR;
     }
 
-    if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT)
+    tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR);
+    if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET))
     {
       /* Clear ADDR flag after prepare the transfer parameters */
       /* This action will generate an acknowledge to the Master */
@@ -4879,6 +4875,143 @@
 }
 
 /**
+  * @brief  Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with Interrupt.
+  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
+  *                the configuration information for the specified I2C.
+  * @param  ITFlags Interrupt flags to handle.
+  * @param  ITSources Interrupt sources enabled.
+  * @retval HAL status
+  */
+static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                           uint32_t ITSources)
+{
+  uint32_t direction = I2C_GENERATE_START_WRITE;
+  uint32_t tmpITFlags = ITFlags;
+
+  /* Process Locked */
+  __HAL_LOCK(hi2c);
+
+  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);
+
+    /* Set corresponding Error Code */
+    /* No need to generate STOP, it is automatically done */
+    /* Error callback will be send during stop flag treatment */
+    hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
+
+    /* 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))
+  {
+    /* Remove RXNE flag on temporary variable as read done */
+    tmpITFlags &= ~I2C_FLAG_RXNE;
+
+    /* Read data from RXDR */
+    *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
+
+    /* Increment Buffer pointer */
+    hi2c->pBuffPtr++;
+
+    hi2c->XferSize--;
+    hi2c->XferCount--;
+  }
+  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
+  {
+    if (hi2c->Memaddress == 0xFFFFFFFFU)
+    {
+      /* Write data to TXDR */
+      hi2c->Instance->TXDR = *hi2c->pBuffPtr;
+
+      /* Increment Buffer pointer */
+      hi2c->pBuffPtr++;
+
+      hi2c->XferSize--;
+      hi2c->XferCount--;
+    }
+    else
+    {
+      /* Write LSB part of Memory Address */
+      hi2c->Instance->TXDR = hi2c->Memaddress;
+
+      /* Reset Memaddress content */
+      hi2c->Memaddress = 0xFFFFFFFFU;
+    }
+  }
+  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))
+    {
+      if (hi2c->XferCount > MAX_NBYTE_SIZE)
+      {
+        hi2c->XferSize = MAX_NBYTE_SIZE;
+        I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
+                           I2C_RELOAD_MODE, I2C_NO_STARTSTOP);
+      }
+      else
+      {
+        hi2c->XferSize = hi2c->XferCount;
+        I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
+                           I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
+      }
+    }
+    else
+    {
+      /* Wrong size Status regarding TCR flag event */
+      /* Call the corresponding callback to inform upper layer of End of Transfer */
+      I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
+    }
+  }
+  else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
+  {
+    if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
+    {
+      direction = I2C_GENERATE_START_READ;
+    }
+
+    if (hi2c->XferCount > MAX_NBYTE_SIZE)
+    {
+      hi2c->XferSize = MAX_NBYTE_SIZE;
+
+      /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
+      I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
+                         I2C_RELOAD_MODE, direction);
+    }
+    else
+    {
+      hi2c->XferSize = hi2c->XferCount;
+
+      /* Set NBYTES to write and generate RESTART */
+      I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
+                         I2C_AUTOEND_MODE, direction);
+    }
+  }
+  else
+  {
+    /* Nothing to do */
+  }
+
+  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);
+  }
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(hi2c);
+
+  return HAL_OK;
+}
+
+/**
   * @brief  Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt.
   * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
   *                the configuration information for the specified I2C.
@@ -5160,6 +5293,145 @@
 }
 
 /**
+  * @brief  Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with DMA.
+  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
+  *                the configuration information for the specified I2C.
+  * @param  ITFlags Interrupt flags to handle.
+  * @param  ITSources Interrupt sources enabled.
+  * @retval HAL status
+  */
+static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags,
+                                            uint32_t ITSources)
+{
+  uint32_t direction = I2C_GENERATE_START_WRITE;
+
+  /* Process Locked */
+  __HAL_LOCK(hi2c);
+
+  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);
+
+    /* Set corresponding Error Code */
+    hi2c->ErrorCode |= HAL_I2C_ERROR_AF;
+
+    /* No need to generate STOP, it is automatically done */
+    /* But enable STOP interrupt, to treat it */
+    /* Error callback will be send during stop flag treatment */
+    I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT);
+
+    /* Flush TX register */
+    I2C_Flush_TXDR(hi2c);
+  }
+  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))
+  {
+    /* Write LSB part of Memory Address */
+    hi2c->Instance->TXDR = hi2c->Memaddress;
+
+    /* Reset Memaddress content */
+    hi2c->Memaddress = 0xFFFFFFFFU;
+  }
+  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
+  {
+    /* Enable only Error interrupt */
+    I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT);
+
+    if (hi2c->XferCount != 0U)
+    {
+      /* Prepare the new XferSize to transfer */
+      if (hi2c->XferCount > MAX_NBYTE_SIZE)
+      {
+        hi2c->XferSize = MAX_NBYTE_SIZE;
+        I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
+                           I2C_RELOAD_MODE, I2C_NO_STARTSTOP);
+      }
+      else
+      {
+        hi2c->XferSize = hi2c->XferCount;
+        I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
+                           I2C_AUTOEND_MODE, I2C_NO_STARTSTOP);
+      }
+
+      /* Update XferCount value */
+      hi2c->XferCount -= hi2c->XferSize;
+
+      /* Enable DMA Request */
+      if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
+      {
+        hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
+      }
+      else
+      {
+        hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
+      }
+    }
+    else
+    {
+      /* Wrong size Status regarding TCR flag event */
+      /* Call the corresponding callback to inform upper layer of End of Transfer */
+      I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE);
+    }
+  }
+  else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \
+           (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET))
+  {
+    if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
+    {
+      direction = I2C_GENERATE_START_READ;
+    }
+
+    if (hi2c->XferCount > MAX_NBYTE_SIZE)
+    {
+      hi2c->XferSize = MAX_NBYTE_SIZE;
+
+      /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
+      I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
+                         I2C_RELOAD_MODE, direction);
+    }
+    else
+    {
+      hi2c->XferSize = hi2c->XferCount;
+
+      /* Set NBYTES to write and generate RESTART */
+      I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize,
+                         I2C_AUTOEND_MODE, direction);
+    }
+
+    /* Update XferCount value */
+    hi2c->XferCount -= hi2c->XferSize;
+
+    /* Enable DMA Request */
+    if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
+    {
+      hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN;
+    }
+    else
+    {
+      hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN;
+    }
+  }
+  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);
+  }
+  else
+  {
+    /* Nothing to do */
+  }
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(hi2c);
+
+  return HAL_OK;
+}
+
+/**
   * @brief  Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA.
   * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
   *                the configuration information for the specified I2C.
@@ -6596,24 +6868,21 @@
           {
             /* 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);
-              
+              error_code |=HAL_I2C_ERROR_TIMEOUT;
+
               status = HAL_ERROR;
+
+              break;
             }
           }
         }
@@ -6717,14 +6986,14 @@
 
   /* 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));
+                             (((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, \
              ((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)), tmp);
+               I2C_CR2_START | I2C_CR2_STOP)), tmp);
 }
 
 /**
@@ -6785,6 +7054,12 @@
       tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI;
     }
 
+    if (InterruptRequest == I2C_XFER_ERROR_IT)
+    {
+      /* Enable ERR and NACK interrupts */
+      tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI;
+    }
+
     if (InterruptRequest == I2C_XFER_CPLT_IT)
     {
       /* Enable STOP interrupts */
diff --git a/Src/stm32f7xx_hal_irda.c b/Src/stm32f7xx_hal_irda.c
index d2ccd16..231a9bd 100644
--- a/Src/stm32f7xx_hal_irda.c
+++ b/Src/stm32f7xx_hal_irda.c
@@ -1051,14 +1051,14 @@
     __HAL_UNLOCK(hirda);
 
     if (hirda->Init.Parity != IRDA_PARITY_NONE)
-    { 
-      /* Enable the IRDA Parity Error and Data Register not empty Interrupts */  
+    {
+      /* 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 Data Register not empty Interrupts */
+      SET_BIT(hirda->Instance->CR1, USART_CR1_RXNEIE);
     }
 
     /* Enable the IRDA Error Interrupt: (Frame error, noise error, overrun error) */
@@ -1297,7 +1297,7 @@
 
     /* Re-enable PE and ERR (Frame error, noise error, overrun error) interrupts */
     if (hirda->Init.Parity != IRDA_PARITY_NONE)
-    {    
+    {
       SET_BIT(hirda->Instance->CR1, USART_CR1_PEIE);
     }
     SET_BIT(hirda->Instance->CR3, USART_CR3_EIE);
@@ -2188,7 +2188,7 @@
   *                the configuration information for the specified IRDA module.
   * @retval HAL state
   */
-HAL_IRDA_StateTypeDef HAL_IRDA_GetState(IRDA_HandleTypeDef *hirda)
+HAL_IRDA_StateTypeDef HAL_IRDA_GetState(const IRDA_HandleTypeDef *hirda)
 {
   /* Return IRDA handle state */
   uint32_t temp1;
@@ -2205,7 +2205,7 @@
   *               the configuration information for the specified IRDA module.
   * @retval IRDA Error Code
   */
-uint32_t HAL_IRDA_GetError(IRDA_HandleTypeDef *hirda)
+uint32_t HAL_IRDA_GetError(const IRDA_HandleTypeDef *hirda)
 {
   return hirda->ErrorCode;
 }
@@ -2347,6 +2347,18 @@
       return HAL_TIMEOUT;
     }
   }
+#if defined(USART_ISR_REACK)
+  /* Check if the Receiver is enabled */
+  if ((hirda->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE)
+  {
+    /* Wait until REACK flag is set */
+    if (IRDA_WaitOnFlagUntilTimeout(hirda, USART_ISR_REACK, RESET, tickstart, IRDA_TEACK_REACK_TIMEOUT) != HAL_OK)
+    {
+      /* Timeout occurred */
+      return HAL_TIMEOUT;
+    }
+  }
+#endif /* USART_ISR_REACK */
 
   /* Initialize the IRDA state*/
   hirda->gState  = HAL_IRDA_STATE_READY;
diff --git a/Src/stm32f7xx_hal_lptim.c b/Src/stm32f7xx_hal_lptim.c
index 520e2ed..44f1f98 100644
--- a/Src/stm32f7xx_hal_lptim.c
+++ b/Src/stm32f7xx_hal_lptim.c
@@ -444,7 +444,7 @@
   * @brief  Start the LPTIM PWM generation.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @param  Pulse Specifies the compare value.
   *         This parameter must be a value between 0x0000 and 0xFFFF.
   * @retval HAL status
@@ -492,7 +492,7 @@
   /* Start timer in continuous mode */
   __HAL_LPTIM_START_CONTINUOUS(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -509,7 +509,7 @@
   /* Check the parameters */
   assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
 
-  /* Set the LPTIM state */
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_BUSY;
 
   /* Disable the Peripheral */
@@ -520,7 +520,7 @@
     return HAL_TIMEOUT;
   }
 
-  /* Change the LPTIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -531,7 +531,7 @@
   * @brief  Start the LPTIM PWM generation in interrupt mode.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF
+  *         This parameter must be a value between 0x0001 and 0xFFFF
   * @param  Pulse Specifies the compare value.
   *         This parameter must be a value between 0x0000 and 0xFFFF
   * @retval HAL status
@@ -609,7 +609,7 @@
   /* Start timer in continuous mode */
   __HAL_LPTIM_START_CONTINUOUS(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -626,7 +626,7 @@
   /* Check the parameters */
   assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
 
-  /* Set the LPTIM state */
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_BUSY;
 
   /* Disable the Peripheral */
@@ -656,7 +656,7 @@
     __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
   }
 
-  /* Change the LPTIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -667,7 +667,7 @@
   * @brief  Start the LPTIM One pulse generation.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @param  Pulse Specifies the compare value.
   *         This parameter must be a value between 0x0000 and 0xFFFF.
   * @retval HAL status
@@ -715,7 +715,7 @@
   /* Start timer in single (one shot) mode */
   __HAL_LPTIM_START_SINGLE(hlptim);
 
-  /* 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 LPTIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -754,7 +754,7 @@
   * @brief  Start the LPTIM One pulse generation in interrupt mode.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @param  Pulse Specifies the compare value.
   *         This parameter must be a value between 0x0000 and 0xFFFF.
   * @retval HAL status
@@ -832,7 +832,7 @@
   /* Start timer in single (one shot) mode */
   __HAL_LPTIM_START_SINGLE(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -852,6 +852,7 @@
   /* Set the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_BUSY;
 
+
   /* Disable the Peripheral */
   __HAL_LPTIM_DISABLE(hlptim);
 
@@ -879,7 +880,7 @@
     __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
   }
 
-  /* Change the LPTIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -890,7 +891,7 @@
   * @brief  Start the LPTIM in Set once mode.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @param  Pulse Specifies the compare value.
   *         This parameter must be a value between 0x0000 and 0xFFFF.
   * @retval HAL status
@@ -938,7 +939,7 @@
   /* Start timer in single (one shot) mode */
   __HAL_LPTIM_START_SINGLE(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -966,7 +967,7 @@
     return HAL_TIMEOUT;
   }
 
-  /* Change the LPTIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1055,7 +1056,7 @@
   /* Start timer in single (one shot) mode */
   __HAL_LPTIM_START_SINGLE(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1102,7 +1103,7 @@
     __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_EXTTRIG);
   }
 
-  /* Change the LPTIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1113,7 +1114,7 @@
   * @brief  Start the Encoder interface.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_LPTIM_Encoder_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
@@ -1163,7 +1164,7 @@
   /* Start timer in continuous mode */
   __HAL_LPTIM_START_CONTINUOUS(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1194,7 +1195,7 @@
   /* Reset ENC bit to disable the encoder interface */
   hlptim->Instance->CFGR &= ~LPTIM_CFGR_ENC;
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1273,7 +1274,7 @@
   /* Start timer in continuous mode */
   __HAL_LPTIM_START_CONTINUOUS(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1310,7 +1311,7 @@
   /* Disable "switch to up direction" interrupt */
   __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_UP);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1323,7 +1324,7 @@
   *         trigger event will reset the counter and the timer restarts.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @param  Timeout Specifies the TimeOut value to reset the counter.
   *         This parameter must be a value between 0x0000 and 0xFFFF.
   * @retval HAL status
@@ -1371,7 +1372,7 @@
   /* Start timer in continuous mode */
   __HAL_LPTIM_START_CONTINUOUS(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1402,7 +1403,7 @@
   /* Reset TIMOUT bit to enable the timeout function */
   hlptim->Instance->CFGR &= ~LPTIM_CFGR_TIMOUT;
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1415,7 +1416,7 @@
   *         trigger event will reset the counter and the timer restarts.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @param  Timeout Specifies the TimeOut value to reset the counter.
   *         This parameter must be a value between 0x0000 and 0xFFFF.
   * @retval HAL status
@@ -1482,7 +1483,7 @@
   /* Start timer in continuous mode */
   __HAL_LPTIM_START_CONTINUOUS(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1499,14 +1500,15 @@
   /* Check the parameters */
   assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
 
-  /* Set the LPTIM state */
-  hlptim->State = HAL_LPTIM_STATE_BUSY;
   /* Disable rising edge trigger on the LPTIM Wake-up Timer Exti line */
   __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();
 
   /* Disable EXTI Line interrupt on the LPTIM Wake-up Timer */
   __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_IT();
 
+  /* Set the LPTIM state */
+  hlptim->State = HAL_LPTIM_STATE_BUSY;
+
   /* Disable the Peripheral */
   __HAL_LPTIM_DISABLE(hlptim);
 
@@ -1521,7 +1523,7 @@
   /* Disable Compare match interrupt */
   __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_CMPM);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1532,7 +1534,7 @@
   * @brief  Start the Counter mode.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_LPTIM_Counter_Start(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
@@ -1572,7 +1574,7 @@
   /* Start timer in continuous mode */
   __HAL_LPTIM_START_CONTINUOUS(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1600,7 +1602,7 @@
     return HAL_TIMEOUT;
   }
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1611,7 +1613,7 @@
   * @brief  Start the Counter mode in interrupt mode.
   * @param  hlptim LPTIM handle
   * @param  Period Specifies the Autoreload value.
-  *         This parameter must be a value between 0x0000 and 0xFFFF.
+  *         This parameter must be a value between 0x0001 and 0xFFFF.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_LPTIM_Counter_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period)
@@ -1673,7 +1675,7 @@
   /* Start timer in continuous mode */
   __HAL_LPTIM_START_CONTINUOUS(hlptim);
 
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
@@ -1690,14 +1692,15 @@
   /* Check the parameters */
   assert_param(IS_LPTIM_INSTANCE(hlptim->Instance));
 
-  /* Set the LPTIM state */
-  hlptim->State = HAL_LPTIM_STATE_BUSY;
   /* Disable rising edge trigger on the LPTIM Wake-up Timer Exti line */
   __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();
 
   /* Disable EXTI Line interrupt on the LPTIM Wake-up Timer */
   __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_IT();
 
+  /* Set the LPTIM state */
+  hlptim->State = HAL_LPTIM_STATE_BUSY;
+
   /* Disable the Peripheral */
   __HAL_LPTIM_DISABLE(hlptim);
 
@@ -1711,7 +1714,7 @@
 
   /* Disable Autoreload match interrupt */
   __HAL_LPTIM_DISABLE_IT(hlptim, LPTIM_IT_ARRM);
-  /* Change the TIM state*/
+  /* Change the LPTIM state */
   hlptim->State = HAL_LPTIM_STATE_READY;
 
   /* Return function status */
diff --git a/Src/stm32f7xx_hal_ltdc.c b/Src/stm32f7xx_hal_ltdc.c
index ebf89bf..d0c762a 100644
--- a/Src/stm32f7xx_hal_ltdc.c
+++ b/Src/stm32f7xx_hal_ltdc.c
@@ -514,7 +514,7 @@
 
 /**
   * @brief  Unregister an LTDC Callback
-  *         LTDC callabck is redirected to the weak predefined callback
+  *         LTDC callback is redirected to the weak predefined callback
   * @param hltdc ltdc handle
   * @param CallbackID ID of the callback to be unregistered
   *        This parameter can be one of the following values:
diff --git a/Src/stm32f7xx_hal_mmc.c b/Src/stm32f7xx_hal_mmc.c
index e7c0074..d468136 100644
--- a/Src/stm32f7xx_hal_mmc.c
+++ b/Src/stm32f7xx_hal_mmc.c
@@ -74,7 +74,7 @@
     SDMMC Peripheral (STM32 side) and the MMC Card, and put it into StandBy State (Ready for data transfer).
     This function provide the following operations:
 
-    (#) Initialize the SDMMC peripheral interface with defaullt configuration.
+    (#) Initialize the SDMMC peripheral interface with default configuration.
         The initialization process is done at 400KHz. You can change or adapt
         this frequency by adjusting the "ClockDiv" field.
         The MMC Card frequency (SDMMC_CK) is computed as follows:
@@ -295,7 +295,7 @@
 #endif
 
 /* Frequencies used in the driver for clock divider calculation */
-#define MMC_INIT_FREQ                   400000U   /* Initalization phase : 400 kHz max */
+#define MMC_INIT_FREQ                   400000U   /* Initialization phase : 400 kHz max */
 /**
   * @}
   */
diff --git a/Src/stm32f7xx_hal_nor.c b/Src/stm32f7xx_hal_nor.c
index c0ffc76..b46a491 100644
--- a/Src/stm32f7xx_hal_nor.c
+++ b/Src/stm32f7xx_hal_nor.c
@@ -229,6 +229,7 @@
                                FMC_NORSRAM_TimingTypeDef *ExtTiming)
 {
   uint32_t deviceaddress;
+  HAL_StatusTypeDef status = HAL_OK;
 
   /* Check the NOR handle parameter */
   if (hnor == NULL)
@@ -298,11 +299,23 @@
     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);
+  if (hnor->Init.WriteOperation == FMC_WRITE_OPERATION_DISABLE)
+  {
+    (void)FMC_NORSRAM_WriteOperation_Disable(hnor->Instance, hnor->Init.NSBank);
 
-  return HAL_NOR_ReturnToReadMode(hnor);
+    /* Update the NOR controller state */
+    hnor->State = HAL_NOR_STATE_PROTECTED;
+  }
+  else
+  {
+    /* 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);
+
+    status = HAL_NOR_ReturnToReadMode(hnor);
+  }
+
+  return status;
 }
 
 /**
@@ -425,7 +438,11 @@
   {
     return HAL_BUSY;
   }
-  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  else if (state == HAL_NOR_STATE_PROTECTED)
+  {
+    return HAL_ERROR;
+  }
+  else if (state == HAL_NOR_STATE_READY)
   {
     /* Process Locked */
     __HAL_LOCK(hnor);
@@ -512,7 +529,11 @@
   {
     return HAL_BUSY;
   }
-  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  else if (state == HAL_NOR_STATE_PROTECTED)
+  {
+    return HAL_ERROR;
+  }
+  else if (state == HAL_NOR_STATE_READY)
   {
     /* Process Locked */
     __HAL_LOCK(hnor);
@@ -586,7 +607,11 @@
   {
     return HAL_BUSY;
   }
-  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  else if (state == HAL_NOR_STATE_PROTECTED)
+  {
+    return HAL_ERROR;
+  }
+  else if (state == HAL_NOR_STATE_READY)
   {
     /* Process Locked */
     __HAL_LOCK(hnor);
@@ -755,7 +780,11 @@
   {
     return HAL_BUSY;
   }
-  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  else if (state == HAL_NOR_STATE_PROTECTED)
+  {
+    return HAL_ERROR;
+  }
+  else if (state == HAL_NOR_STATE_READY)
   {
     /* Process Locked */
     __HAL_LOCK(hnor);
@@ -1115,7 +1144,11 @@
   {
     return HAL_BUSY;
   }
-  else if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_PROTECTED))
+  else if (state == HAL_NOR_STATE_PROTECTED)
+  {
+    return HAL_ERROR;
+  }
+  else if (state == HAL_NOR_STATE_READY)
   {
     /* Process Locked */
     __HAL_LOCK(hnor);
diff --git a/Src/stm32f7xx_hal_pcd.c b/Src/stm32f7xx_hal_pcd.c
index 65e95c9..603a57e 100644
--- a/Src/stm32f7xx_hal_pcd.c
+++ b/Src/stm32f7xx_hal_pcd.c
@@ -420,7 +420,7 @@
 
 /**
   * @brief  Unregister an USB PCD Callback
-  *         USB PCD callabck is redirected to the weak predefined callback
+  *         USB PCD callback is redirected to the weak predefined callback
   * @param  hpcd USB PCD handle
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
@@ -967,7 +967,7 @@
   uint32_t epint;
   uint32_t epnum;
   uint32_t fifoemptymsk;
-  uint32_t temp;
+  uint32_t RegVal;
 
   /* ensure that we are in device mode */
   if (USB_GetMode(hpcd->Instance) == USB_OTG_MODE_DEVICE)
@@ -978,6 +978,9 @@
       return;
     }
 
+    /* store current frame number */
+    hpcd->FrameNumber = (USBx_DEVICE->DSTS & USB_OTG_DSTS_FNSOF_Msk) >> USB_OTG_DSTS_FNSOF_Pos;
+
     if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_MMIS))
     {
       /* incorrect mode, acknowledge the interrupt */
@@ -989,25 +992,25 @@
     {
       USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
 
-      temp = USBx->GRXSTSP;
+      RegVal = USBx->GRXSTSP;
 
-      ep = &hpcd->OUT_ep[temp & USB_OTG_GRXSTSP_EPNUM];
+      ep = &hpcd->OUT_ep[RegVal & USB_OTG_GRXSTSP_EPNUM];
 
-      if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) ==  STS_DATA_UPDT)
+      if (((RegVal & USB_OTG_GRXSTSP_PKTSTS) >> 17) ==  STS_DATA_UPDT)
       {
-        if ((temp & USB_OTG_GRXSTSP_BCNT) != 0U)
+        if ((RegVal & USB_OTG_GRXSTSP_BCNT) != 0U)
         {
           (void)USB_ReadPacket(USBx, ep->xfer_buff,
-                               (uint16_t)((temp & USB_OTG_GRXSTSP_BCNT) >> 4));
+                               (uint16_t)((RegVal & USB_OTG_GRXSTSP_BCNT) >> 4));
 
-          ep->xfer_buff += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
-          ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
+          ep->xfer_buff += (RegVal & USB_OTG_GRXSTSP_BCNT) >> 4;
+          ep->xfer_count += (RegVal & USB_OTG_GRXSTSP_BCNT) >> 4;
         }
       }
-      else if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) ==  STS_SETUP_UPDT)
+      else if (((RegVal & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_SETUP_UPDT)
       {
         (void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U);
-        ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
+        ep->xfer_count += (RegVal & USB_OTG_GRXSTSP_BCNT) >> 4;
       }
       else
       {
@@ -1048,6 +1051,30 @@
             CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPDIS);
           }
 
+          /* Clear OUT Endpoint disable interrupt */
+          if ((epint & USB_OTG_DOEPINT_EPDISD) == USB_OTG_DOEPINT_EPDISD)
+          {
+            if ((USBx->GINTSTS & USB_OTG_GINTSTS_BOUTNAKEFF) == USB_OTG_GINTSTS_BOUTNAKEFF)
+            {
+              USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGONAK;
+            }
+
+            ep = &hpcd->OUT_ep[epnum];
+
+            if (ep->is_iso_incomplete == 1U)
+            {
+              ep->is_iso_incomplete = 0U;
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+              hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum);
+#else
+              HAL_PCD_ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum);
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+            }
+
+            CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_EPDISD);
+          }
+
           /* Clear Status Phase Received interrupt */
           if ((epint & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR)
           {
@@ -1117,6 +1144,21 @@
           }
           if ((epint & USB_OTG_DIEPINT_EPDISD) == USB_OTG_DIEPINT_EPDISD)
           {
+            (void)USB_FlushTxFifo(USBx, epnum);
+
+            ep = &hpcd->IN_ep[epnum];
+
+            if (ep->is_iso_incomplete == 1U)
+            {
+              ep->is_iso_incomplete = 0U;
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+              hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum);
+#else
+              HAL_PCD_ISOINIncompleteCallback(hpcd, (uint8_t)epnum);
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+            }
+
             CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_EPDISD);
           }
           if ((epint & USB_OTG_DIEPINT_TXFE) == USB_OTG_DIEPINT_TXFE)
@@ -1278,18 +1320,37 @@
       __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SOF);
     }
 
+    /* Handle Global OUT NAK effective Interrupt */
+    if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_BOUTNAKEFF))
+    {
+      USBx->GINTMSK &= ~USB_OTG_GINTMSK_GONAKEFFM;
+
+      for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++)
+      {
+        if (hpcd->OUT_ep[epnum].is_iso_incomplete == 1U)
+        {
+          /* Abort current transaction and disable the EP */
+          (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)epnum);
+        }
+      }
+    }
+
     /* Handle Incomplete ISO IN Interrupt */
     if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR))
     {
-      /* Keep application checking the corresponding Iso IN endpoint
-      causing the incomplete Interrupt */
-      epnum = 0U;
+      for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++)
+      {
+        RegVal = USBx_INEP(epnum)->DIEPCTL;
 
-#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
-      hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum);
-#else
-      HAL_PCD_ISOINIncompleteCallback(hpcd, (uint8_t)epnum);
-#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+        if ((hpcd->IN_ep[epnum].type == EP_TYPE_ISOC) &&
+            ((RegVal & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA))
+        {
+          hpcd->IN_ep[epnum].is_iso_incomplete = 1U;
+
+          /* Abort current transaction and disable the EP */
+          (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)(epnum | 0x80U));
+        }
+      }
 
       __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR);
     }
@@ -1297,15 +1358,25 @@
     /* Handle Incomplete ISO OUT Interrupt */
     if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT))
     {
-      /* Keep application checking the corresponding Iso OUT endpoint
-      causing the incomplete Interrupt */
-      epnum = 0U;
+      for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++)
+      {
+        RegVal = USBx_OUTEP(epnum)->DOEPCTL;
 
-#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
-      hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum);
-#else
-      HAL_PCD_ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum);
-#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+        if ((hpcd->OUT_ep[epnum].type == EP_TYPE_ISOC) &&
+            ((RegVal & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) &&
+            ((RegVal & (0x1U << 16)) == (hpcd->FrameNumber & 0x1U)))
+        {
+          hpcd->OUT_ep[epnum].is_iso_incomplete = 1U;
+
+          USBx->GINTMSK |= USB_OTG_GINTMSK_GONAKEFFM;
+
+          if ((USBx->GINTSTS & USB_OTG_GINTSTS_BOUTNAKEFF) == 0U)
+          {
+            USBx_DEVICE->DCTL |= USB_OTG_DCTL_SGONAK;
+            break;
+          }
+        }
+      }
 
       __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT);
     }
@@ -1325,9 +1396,9 @@
     /* Handle Disconnection event Interrupt */
     if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OTGINT))
     {
-      temp = hpcd->Instance->GOTGINT;
+      RegVal = hpcd->Instance->GOTGINT;
 
-      if ((temp & USB_OTG_GOTGINT_SEDET) == USB_OTG_GOTGINT_SEDET)
+      if ((RegVal & USB_OTG_GOTGINT_SEDET) == USB_OTG_GOTGINT_SEDET)
       {
 #if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
         hpcd->DisconnectCallback(hpcd);
@@ -1335,7 +1406,7 @@
         HAL_PCD_DisconnectCallback(hpcd);
 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
       }
-      hpcd->Instance->GOTGINT |= temp;
+      hpcd->Instance->GOTGINT |= RegVal;
     }
   }
 }
@@ -1842,6 +1913,32 @@
 }
 
 /**
+   * @brief  Abort an USB EP transaction.
+   * @param  hpcd PCD handle
+   * @param  ep_addr endpoint address
+   * @retval HAL status
+   */
+HAL_StatusTypeDef HAL_PCD_EP_Abort(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
+{
+  HAL_StatusTypeDef ret;
+  PCD_EPTypeDef *ep;
+
+  if ((0x80U & ep_addr) == 0x80U)
+  {
+    ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+  }
+  else
+  {
+    ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
+  }
+
+  /* Stop Xfer */
+  ret = USB_EPStopXfer(hpcd->Instance, ep);
+
+  return ret;
+}
+
+/**
   * @brief  Flush an endpoint
   * @param  hpcd PCD handle
   * @param  ep_addr endpoint address
@@ -1917,7 +2014,7 @@
 /**
   * @brief  Set the USB Device high speed test mode.
   * @param  hpcd PCD handle
-  * @param  address test mode
+  * @param  testmode USB Device high speed test mode
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_PCD_SetTestMode(PCD_HandleTypeDef *hpcd, uint8_t testmode)
@@ -1932,7 +2029,7 @@
     case TEST_SE0_NAK:
     case TEST_PACKET:
     case TEST_FORCE_EN:
-      USBx_DEVICE->DCTL |= testmode << 4;
+      USBx_DEVICE->DCTL |= (uint32_t)testmode << 4;
       break;
 
     default:
diff --git a/Src/stm32f7xx_hal_qspi.c b/Src/stm32f7xx_hal_qspi.c
index a28b4f2..7d3dade 100644
--- a/Src/stm32f7xx_hal_qspi.c
+++ b/Src/stm32f7xx_hal_qspi.c
@@ -122,7 +122,7 @@
     =================================================
     [..]
       (#) HAL_QSPI_GetError() function gives the error raised during the last operation.
-      (#) HAL_QSPI_Abort() and HAL_QSPI_AbortIT() functions aborts any on-going operation and
+      (#) HAL_QSPI_Abort() and HAL_QSPI_Abort_IT() functions aborts any on-going operation and
           flushes the fifo :
          (++) In polling mode, the output of the function is done when the transfer
               complete bit is set and the busy bit cleared.
@@ -286,7 +286,7 @@
 /**
   * @brief Initialize the QSPI mode according to the specified parameters
   *        in the QSPI_InitTypeDef and initialize the associated handle.
-  * @param hqspi : QSPI handle
+  * @param hqspi QSPI handle
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_QSPI_Init(QSPI_HandleTypeDef *hqspi)
@@ -387,7 +387,7 @@
 
 /**
   * @brief De-Initialize the QSPI peripheral.
-  * @param hqspi : QSPI handle
+  * @param hqspi QSPI handle
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_QSPI_DeInit(QSPI_HandleTypeDef *hqspi)
@@ -428,7 +428,7 @@
 
 /**
   * @brief Initialize the QSPI MSP.
-  * @param hqspi : QSPI handle
+  * @param hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_MspInit(QSPI_HandleTypeDef *hqspi)
@@ -443,7 +443,7 @@
 
 /**
   * @brief DeInitialize the QSPI MSP.
-  * @param hqspi : QSPI handle
+  * @param hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef *hqspi)
@@ -482,7 +482,7 @@
 
 /**
   * @brief Handle QSPI interrupt request.
-  * @param hqspi : QSPI handle
+  * @param hqspi QSPI handle
   * @retval None
   */
 void HAL_QSPI_IRQHandler(QSPI_HandleTypeDef *hqspi)
@@ -776,9 +776,9 @@
 
 /**
   * @brief Set the command configuration.
-  * @param hqspi : QSPI handle
+  * @param hqspi QSPI handle
   * @param cmd : structure that contains the command configuration information
-  * @param Timeout : Timeout duration
+  * @param Timeout Timeout duration
   * @note   This function is used only in Indirect Read or Write Modes
   * @retval HAL status
   */
@@ -866,8 +866,8 @@
 
 /**
   * @brief Set the command configuration in interrupt mode.
-  * @param hqspi : QSPI handle
-  * @param cmd : structure that contains the command configuration information
+  * @param hqspi QSPI handle
+  * @param cmd structure that contains the command configuration information
   * @note   This function is used only in Indirect Read or Write Modes
   * @retval HAL status
   */
@@ -964,9 +964,9 @@
 
 /**
   * @brief Transmit an amount of data in blocking mode.
-  * @param hqspi : QSPI handle
-  * @param pData : pointer to data buffer
-  * @param Timeout : Timeout duration
+  * @param hqspi QSPI handle
+  * @param pData pointer to data buffer
+  * @param Timeout Timeout duration
   * @note   This function is used only in Indirect Write Mode
   * @retval HAL status
   */
@@ -1051,9 +1051,9 @@
 
 /**
   * @brief Receive an amount of data in blocking mode.
-  * @param hqspi : QSPI handle
-  * @param pData : pointer to data buffer
-  * @param Timeout : Timeout duration
+  * @param hqspi QSPI handle
+  * @param pData pointer to data buffer
+  * @param Timeout Timeout duration
   * @note   This function is used only in Indirect Read Mode
   * @retval HAL status
   */
@@ -1141,8 +1141,8 @@
 
 /**
   * @brief  Send an amount of data in non-blocking mode with interrupt.
-  * @param  hqspi : QSPI handle
-  * @param  pData : pointer to data buffer
+  * @param  hqspi QSPI handle
+  * @param  pData pointer to data buffer
   * @note   This function is used only in Indirect Write Mode
   * @retval HAL status
   */
@@ -1201,8 +1201,8 @@
 
 /**
   * @brief  Receive an amount of data in non-blocking mode with interrupt.
-  * @param  hqspi : QSPI handle
-  * @param  pData : pointer to data buffer
+  * @param  hqspi QSPI handle
+  * @param  pData pointer to data buffer
   * @note   This function is used only in Indirect Read Mode
   * @retval HAL status
   */
@@ -1265,8 +1265,8 @@
 
 /**
   * @brief  Send an amount of data in non-blocking mode with DMA.
-  * @param  hqspi : QSPI handle
-  * @param  pData : pointer to data buffer
+  * @param  hqspi QSPI handle
+  * @param  pData pointer to data buffer
   * @note   This function is used only in Indirect Write Mode
   * @note   If DMA peripheral access is configured as halfword, the number
   *         of data and the fifo threshold should be aligned on halfword
@@ -1409,8 +1409,8 @@
 
 /**
   * @brief  Receive an amount of data in non-blocking mode with DMA.
-  * @param  hqspi : QSPI handle
-  * @param  pData : pointer to data buffer.
+  * @param  hqspi QSPI handle
+  * @param  pData pointer to data buffer.
   * @note   This function is used only in Indirect Read Mode
   * @note   If DMA peripheral access is configured as halfword, the number
   *         of data and the fifo threshold should be aligned on halfword
@@ -1557,10 +1557,10 @@
 
 /**
   * @brief  Configure the QSPI Automatic Polling Mode in blocking mode.
-  * @param  hqspi : QSPI handle
-  * @param  cmd : structure that contains the command configuration information.
-  * @param  cfg : structure that contains the polling configuration information.
-  * @param  Timeout : Timeout duration
+  * @param  hqspi QSPI handle
+  * @param  cmd structure that contains the command configuration information.
+  * @param  cfg structure that contains the polling configuration information.
+  * @param  Timeout Timeout duration
   * @note   This function is used only in Automatic Polling Mode
   * @retval HAL status
   */
@@ -1658,9 +1658,9 @@
 
 /**
   * @brief  Configure the QSPI Automatic Polling Mode in non-blocking mode.
-  * @param  hqspi : QSPI handle
-  * @param  cmd : structure that contains the command configuration information.
-  * @param  cfg : structure that contains the polling configuration information.
+  * @param  hqspi QSPI handle
+  * @param  cmd structure that contains the command configuration information.
+  * @param  cfg structure that contains the polling configuration information.
   * @note   This function is used only in Automatic Polling Mode
   * @retval HAL status
   */
@@ -1761,9 +1761,9 @@
 
 /**
   * @brief  Configure the Memory Mapped mode.
-  * @param  hqspi : QSPI handle
-  * @param  cmd : structure that contains the command configuration information.
-  * @param  cfg : structure that contains the memory mapped configuration information.
+  * @param  hqspi QSPI handle
+  * @param  cmd structure that contains the command configuration information.
+  * @param  cfg structure that contains the memory mapped configuration information.
   * @note   This function is used only in Memory mapped Mode
   * @retval HAL status
   */
@@ -1850,7 +1850,7 @@
 
 /**
   * @brief  Transfer Error callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_ErrorCallback(QSPI_HandleTypeDef *hqspi)
@@ -1865,7 +1865,7 @@
 
 /**
   * @brief  Abort completed callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_AbortCpltCallback(QSPI_HandleTypeDef *hqspi)
@@ -1880,7 +1880,7 @@
 
 /**
   * @brief  Command completed callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_CmdCpltCallback(QSPI_HandleTypeDef *hqspi)
@@ -1895,7 +1895,7 @@
 
 /**
   * @brief  Rx Transfer completed callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_RxCpltCallback(QSPI_HandleTypeDef *hqspi)
@@ -1910,7 +1910,7 @@
 
 /**
   * @brief  Tx Transfer completed callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_TxCpltCallback(QSPI_HandleTypeDef *hqspi)
@@ -1925,7 +1925,7 @@
 
 /**
   * @brief  Rx Half Transfer completed callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_RxHalfCpltCallback(QSPI_HandleTypeDef *hqspi)
@@ -1940,7 +1940,7 @@
 
 /**
   * @brief  Tx Half Transfer completed callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_TxHalfCpltCallback(QSPI_HandleTypeDef *hqspi)
@@ -1955,7 +1955,7 @@
 
 /**
   * @brief  FIFO Threshold callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_FifoThresholdCallback(QSPI_HandleTypeDef *hqspi)
@@ -1970,7 +1970,7 @@
 
 /**
   * @brief  Status Match callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_StatusMatchCallback(QSPI_HandleTypeDef *hqspi)
@@ -1985,7 +1985,7 @@
 
 /**
   * @brief  Timeout callback.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval None
   */
 __weak void HAL_QSPI_TimeOutCallback(QSPI_HandleTypeDef *hqspi)
@@ -2001,8 +2001,8 @@
 /**
   * @brief  Register a User QSPI Callback
   *         To be used instead of the weak (surcharged) predefined callback
-  * @param hqspi : QSPI handle
-  * @param CallbackId : ID of the callback to be registered
+  * @param hqspi QSPI handle
+  * @param CallbackId ID of the callback to be registered
   *        This parameter can be one of the following values:
   *          @arg @ref HAL_QSPI_ERROR_CB_ID          QSPI Error Callback ID
   *          @arg @ref HAL_QSPI_ABORT_CB_ID          QSPI Abort Callback ID
@@ -2016,7 +2016,7 @@
   *          @arg @ref HAL_QSPI_TIMEOUT_CB_ID        QSPI Timeout Callback ID
   *          @arg @ref HAL_QSPI_MSP_INIT_CB_ID       QSPI MspInit callback ID
   *          @arg @ref HAL_QSPI_MSP_DEINIT_CB_ID     QSPI MspDeInit callback ID
-  * @param pCallback : pointer to the Callback function
+  * @param pCallback pointer to the Callback function
   * @retval status
   */
 HAL_StatusTypeDef HAL_QSPI_RegisterCallback (QSPI_HandleTypeDef *hqspi, HAL_QSPI_CallbackIDTypeDef CallbackId, pQSPI_CallbackTypeDef pCallback)
@@ -2115,8 +2115,8 @@
 /**
   * @brief  Unregister a User QSPI Callback
   *         QSPI Callback is redirected to the weak (surcharged) predefined callback
-  * @param hqspi : QSPI handle
-  * @param CallbackId : ID of the callback to be unregistered
+  * @param hqspi QSPI handle
+  * @param CallbackId ID of the callback to be unregistered
   *        This parameter can be one of the following values:
   *          @arg @ref HAL_QSPI_ERROR_CB_ID          QSPI Error Callback ID
   *          @arg @ref HAL_QSPI_ABORT_CB_ID          QSPI Abort Callback ID
@@ -2243,7 +2243,7 @@
 
 /**
   * @brief  Return the QSPI handle state.
-  * @param  hqspi : QSPI handle
+  * @param  hqspi QSPI handle
   * @retval HAL state
   */
 HAL_QSPI_StateTypeDef HAL_QSPI_GetState(QSPI_HandleTypeDef *hqspi)
@@ -2254,7 +2254,7 @@
 
 /**
 * @brief  Return the QSPI error code.
-* @param  hqspi : QSPI handle
+* @param  hqspi QSPI handle
 * @retval QSPI Error Code
 */
 uint32_t HAL_QSPI_GetError(QSPI_HandleTypeDef *hqspi)
@@ -2264,7 +2264,7 @@
 
 /**
 * @brief  Abort the current transmission.
-* @param  hqspi : QSPI handle
+* @param  hqspi QSPI handle
 * @retval HAL status
 */
 HAL_StatusTypeDef HAL_QSPI_Abort(QSPI_HandleTypeDef *hqspi)
@@ -2328,7 +2328,7 @@
 
 /**
 * @brief  Abort the current transmission (non-blocking function)
-* @param  hqspi : QSPI handle
+* @param  hqspi QSPI handle
 * @retval HAL status
 */
 HAL_StatusTypeDef HAL_QSPI_Abort_IT(QSPI_HandleTypeDef *hqspi)
@@ -2391,8 +2391,8 @@
 }
 
 /** @brief Set QSPI timeout.
-  * @param  hqspi : QSPI handle.
-  * @param  Timeout : Timeout for the QSPI memory access.
+  * @param  hqspi QSPI handle.
+  * @param  Timeout Timeout for the QSPI memory access.
   * @retval None
   */
 void HAL_QSPI_SetTimeout(QSPI_HandleTypeDef *hqspi, uint32_t Timeout)
@@ -2401,8 +2401,8 @@
 }
 
 /** @brief Set QSPI Fifo threshold.
-  * @param  hqspi : QSPI handle.
-  * @param  Threshold : Threshold of the Fifo (value between 1 and 16).
+  * @param  hqspi QSPI handle.
+  * @param  Threshold Threshold of the Fifo (value between 1 and 16).
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_QSPI_SetFifoThreshold(QSPI_HandleTypeDef *hqspi, uint32_t Threshold)
@@ -2434,7 +2434,7 @@
 }
 
 /** @brief Get QSPI Fifo threshold.
-  * @param  hqspi : QSPI handle.
+  * @param  hqspi QSPI handle.
   * @retval Fifo threshold (value between 1 and 16)
   */
 uint32_t HAL_QSPI_GetFifoThreshold(QSPI_HandleTypeDef *hqspi)
@@ -2443,8 +2443,8 @@
 }
 
 /** @brief  Set FlashID.
-  * @param  hqspi : QSPI handle.
-  * @param  FlashID : Index of the flash memory to be accessed.
+  * @param  hqspi QSPI handle.
+  * @param  FlashID Index of the flash memory to be accessed.
   *                   This parameter can be a value of @ref QSPI_Flash_Select.
   * @note   The FlashID is ignored when dual flash mode is enabled.
   * @retval HAL status
@@ -2493,7 +2493,7 @@
 
 /**
   * @brief  DMA QSPI receive process complete callback.
-  * @param  hdma : DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void QSPI_DMARxCplt(DMA_HandleTypeDef *hdma)
@@ -2507,7 +2507,7 @@
 
 /**
   * @brief  DMA QSPI transmit process complete callback.
-  * @param  hdma : DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void QSPI_DMATxCplt(DMA_HandleTypeDef *hdma)
@@ -2521,7 +2521,7 @@
 
 /**
   * @brief  DMA QSPI receive process half complete callback.
-  * @param  hdma : DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void QSPI_DMARxHalfCplt(DMA_HandleTypeDef *hdma)
@@ -2537,7 +2537,7 @@
 
 /**
   * @brief  DMA QSPI transmit process half complete callback.
-  * @param  hdma : DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void QSPI_DMATxHalfCplt(DMA_HandleTypeDef *hdma)
@@ -2553,7 +2553,7 @@
 
 /**
   * @brief  DMA QSPI communication error callback.
-  * @param  hdma : DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void QSPI_DMAError(DMA_HandleTypeDef *hdma)
@@ -2578,7 +2578,7 @@
 
 /**
   * @brief  DMA QSPI abort complete callback.
-  * @param  hdma : DMA handle
+  * @param  hdma DMA handle
   * @retval None
   */
 static void QSPI_DMAAbortCplt(DMA_HandleTypeDef *hdma)
@@ -2617,11 +2617,11 @@
 
 /**
   * @brief  Wait for a flag state until timeout.
-  * @param  hqspi : QSPI handle
-  * @param  Flag : Flag checked
-  * @param  State : Value of the flag expected
-  * @param  Tickstart : Tick start value
-  * @param  Timeout : Duration of the timeout
+  * @param  hqspi QSPI handle
+  * @param  Flag Flag checked
+  * @param  State Value of the flag expected
+  * @param  Tickstart Tick start value
+  * @param  Timeout Duration of the timeout
   * @retval HAL status
   */
 static HAL_StatusTypeDef QSPI_WaitFlagStateUntilTimeout(QSPI_HandleTypeDef *hqspi, uint32_t Flag,
@@ -2672,9 +2672,9 @@
 
 /**
   * @brief  Configure the communication registers.
-  * @param  hqspi : QSPI handle
-  * @param  cmd : structure that contains the command configuration information
-  * @param  FunctionalMode : functional mode to configured
+  * @param  hqspi QSPI handle
+  * @param  cmd structure that contains the command configuration information
+  * @param  FunctionalMode functional mode to configured
   *           This parameter can be one of the following values:
   *            @arg QSPI_FUNCTIONAL_MODE_INDIRECT_WRITE: Indirect write mode
   *            @arg QSPI_FUNCTIONAL_MODE_INDIRECT_READ: Indirect read mode
diff --git a/Src/stm32f7xx_hal_rng.c b/Src/stm32f7xx_hal_rng.c
index 8095f72..65a5d59 100644
--- a/Src/stm32f7xx_hal_rng.c
+++ b/Src/stm32f7xx_hal_rng.c
@@ -369,7 +369,7 @@
 
 /**
   * @brief  Unregister an RNG Callback
-  *         RNG callabck is redirected to the weak predefined callback
+  *         RNG callback is redirected to the weak predefined callback
   * @param  hrng RNG handle
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
diff --git a/Src/stm32f7xx_hal_rtc.c b/Src/stm32f7xx_hal_rtc.c
index 14dbddc..806dd28 100644
--- a/Src/stm32f7xx_hal_rtc.c
+++ b/Src/stm32f7xx_hal_rtc.c
@@ -4,10 +4,10 @@
   * @author  MCD Application Team
   * @brief   RTC HAL module driver.
   *          This file provides firmware functions to manage the following
-  *          functionalities of the Real Time Clock (RTC) peripheral:
+  *          functionalities of the Real-Time Clock (RTC) peripheral:
   *           + Initialization and de-initialization functions
-  *           + RTC Time and Date functions
-  *           + RTC Alarm functions
+  *           + RTC Calendar (Time and Date) configuration functions
+  *           + RTC Alarms (Alarm A and Alarm B) configuration functions
   *           + Peripheral Control functions
   *           + Peripheral State functions
   *
@@ -24,12 +24,12 @@
   ******************************************************************************
   @verbatim
   ==============================================================================
-              ##### Backup Domain Operating Condition #####
+               ##### RTC and Backup Domain Operating Condition #####
   ==============================================================================
   [..] The real-time clock (RTC), the RTC backup registers, and the backup
        SRAM (BKP SRAM) can be powered from the VBAT voltage when the main
        VDD supply is powered off.
-       To retain the content of the RTC backup registers, backup SRAM, and supply
+       To retain the content of the RTC backup registers, BKP SRAM, and supply
        the RTC when VDD is turned off, VBAT pin can be connected to an optional
        standby voltage supplied by a battery or by another source.
 
@@ -37,14 +37,15 @@
        off, the VBAT pin powers the following blocks:
     (#) The RTC
     (#) The LSE oscillator
-    (#) The backup SRAM when the low power backup regulator is enabled
-    (#) PC13 to PC15 I/Os, plus PI8 I/O (when available)
+    (#) The BKP SRAM when the low power backup regulator is enabled
+    (#) PC13 to PC15 I/Os, plus PI8 and PC1 I/Os (when available)
 
   [..] When the backup domain is supplied by VDD (analog switch connected to VDD),
        the following pins are available:
     (#) PC14 and PC15 can be used as either GPIO or LSE pins
     (#) PC13 can be used as a GPIO or as the RTC_AF1 pin
     (#) PI8 can be used as a GPIO or as the RTC_AF2 pin
+    (#) PC1 can be used as a GPIO or as the RTC_AF3 pin
 
   [..] When the backup domain is supplied by VBAT (analog switch connected to VBAT
        because VDD is not present), the following pins are available:
@@ -56,29 +57,30 @@
                    ##### Backup Domain Reset #####
   ==================================================================
   [..] The backup domain reset sets all RTC registers and the RCC_BDCR register
-       to their reset values. The BKPSRAM is not affected by this reset. The only
-       way to reset the BKPSRAM is through the Flash interface by requesting
-       a protection level change from 1 to 0.
+       to their reset values.
+       The BKP SRAM is not affected by this reset. The only way to reset the BKP
+       SRAM is through the Flash interface by requesting a protection level
+       change from 1 to 0.
   [..] A backup domain reset is generated when one of the following events occurs:
     (#) Software reset, triggered by setting the BDRST bit in the
         RCC Backup domain control register (RCC_BDCR).
     (#) VDD or VBAT power on, if both supplies have previously been powered off.
+    (#) Tamper detection event resets all data backup registers.
 
                    ##### Backup Domain Access #####
   ==================================================================
-  [..] After reset, the backup domain (RTC registers, RTC backup data
-       registers and backup SRAM) is protected against possible unwanted write
-       accesses.
+  [..] After reset, the backup domain (RTC registers, RTC backup data registers
+       and BKP SRAM) is protected against possible unwanted write accesses.
   [..] To enable access to the RTC Domain and RTC registers, proceed as follows:
     (+) Enable the Power Controller (PWR) APB1 interface clock using the
-        __HAL_RCC_PWR_CLK_ENABLE() function.
+        __HAL_RCC_PWR_CLK_ENABLE() macro.
     (+) Enable access to RTC domain using the HAL_PWR_EnableBkUpAccess() function.
-    (+) Select the RTC clock source using the __HAL_RCC_RTC_CONFIG() function.
-    (+) Enable RTC Clock using the __HAL_RCC_RTC_ENABLE() function.
+    (+) Select the RTC clock source using the __HAL_RCC_RTC_CONFIG() macro.
+    (+) Enable RTC Clock using the __HAL_RCC_RTC_ENABLE() macro.
 
-
-                  ##### How to use this driver #####
-  ==================================================================
+  ==============================================================================
+                        ##### How to use this driver #####
+  ==============================================================================
   [..]
     (+) Enable the RTC domain access (see description in the section above).
     (+) Configure the RTC Prescaler (Asynchronous and Synchronous) and RTC hour
@@ -89,13 +91,21 @@
   [..]
     (+) To configure the RTC Calendar (Time and Date) use the HAL_RTC_SetTime()
         and HAL_RTC_SetDate() functions.
-    (+) To read the RTC Calendar, use the HAL_RTC_GetTime() and HAL_RTC_GetDate() functions.
+    (+) To read the RTC Calendar, use the HAL_RTC_GetTime() and HAL_RTC_GetDate()
+        functions.
+    (+) To manage the RTC summer or winter time change, use the following
+        functions:
+        (++) HAL_RTC_DST_Add1Hour() or HAL_RTC_DST_Sub1Hour to add or subtract
+             1 hour from the calendar time.
+        (++) HAL_RTC_DST_SetStoreOperation() or HAL_RTC_DST_ClearStoreOperation
+             to memorize whether the time change has been performed or not.
 
   *** Alarm configuration ***
   ===========================
   [..]
     (+) To configure the RTC Alarm use the HAL_RTC_SetAlarm() function.
-        You can also configure the RTC Alarm with interrupt mode using the HAL_RTC_SetAlarm_IT() function.
+        You can also configure the RTC Alarm with interrupt mode using the
+        HAL_RTC_SetAlarm_IT() function.
     (+) To read the RTC Alarm, use the HAL_RTC_GetAlarm() function.
 
                   ##### RTC and low power modes #####
@@ -103,37 +113,38 @@
   [..] The MCU can be woken up from a low power mode by an RTC alternate
        function.
   [..] The RTC alternate functions are the RTC alarms (Alarm A and Alarm B),
-       RTC wake-up, RTC tamper event detection and RTC time stamp event detection.
+       RTC wakeup, RTC tamper event detection and RTC timestamp event detection.
        These RTC alternate functions can wake up the system from the Stop and
        Standby low power modes.
   [..] The system can also wake up from low power modes without depending
-       on an external interrupt (Auto-wake-up mode), by using the RTC alarm
-       or the RTC wake-up events.
+       on an external interrupt (Auto-wakeup mode), by using the RTC alarm
+       or the RTC wakeup events.
   [..] The RTC provides a programmable time base for waking up from the
        Stop or Standby mode at regular intervals.
-       Wake-up from STOP and STANDBY modes is possible only when the RTC clock source
-       is LSE or LSI.
+       Wakeup from STOP and STANDBY modes is possible only when the RTC clock
+       source is LSE or LSI.
 
   *** Callback registration ***
   =============================================
-
+  [..]
   The compilation define  USE_HAL_RTC_REGISTER_CALLBACKS when set to 1
   allows the user to configure dynamically the driver callbacks.
   Use Function HAL_RTC_RegisterCallback() to register an interrupt callback.
-
+  [..]
   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.
+    (+) TimeStampEventCallback       : RTC Timestamp Event callback.
     (+) WakeUpTimerEventCallback     : RTC WakeUpTimer Event callback.
     (+) Tamper1EventCallback         : RTC Tamper 1 Event callback.
     (+) Tamper2EventCallback         : RTC Tamper 2 Event callback.
     (+) Tamper3EventCallback         : RTC Tamper 3 Event callback.
     (+) MspInitCallback              : RTC MspInit callback.
     (+) MspDeInitCallback            : RTC MspDeInit callback.
+  [..]
   This function takes as parameters the HAL peripheral handle, the Callback ID
   and a pointer to the user callback function.
-
+  [..]
   Use function HAL_RTC_UnRegisterCallback() to reset a callback to the default
   weak function.
   HAL_RTC_UnRegisterCallback() takes as parameters the HAL peripheral handle,
@@ -141,35 +152,37 @@
   This function allows to reset following callbacks:
     (+) AlarmAEventCallback          : RTC Alarm A Event callback.
     (+) AlarmBEventCallback          : RTC Alarm B Event callback.
-    (+) TimeStampEventCallback       : RTC TimeStamp Event callback.
+    (+) TimeStampEventCallback       : RTC Timestamp Event callback.
     (+) WakeUpTimerEventCallback     : RTC WakeUpTimer Event callback.
     (+) Tamper1EventCallback         : RTC Tamper 1 Event callback.
     (+) Tamper2EventCallback         : RTC Tamper 2 Event callback.
     (+) Tamper3EventCallback         : RTC Tamper 3 Event callback.
     (+) MspInitCallback              : RTC MspInit callback.
     (+) MspDeInitCallback            : RTC MspDeInit callback.
-
+  [..]
   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 :
+  all callbacks are set to the corresponding weak functions:
   examples AlarmAEventCallback(), WakeUpTimerEventCallback().
-  Exception done for MspInit and MspDeInit callbacks that are reset to the legacy weak function
-  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, HAL_RTC_Init()/HAL_RTC_DeInit()
-  keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
-
+  Exception done for MspInit() and MspDeInit() callbacks that are reset to the
+  legacy weak function 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, 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.
-  Exception done MspInit/MspDeInit that can be registered/unregistered
-  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
+  Exception done MspInit()/MspDeInit() that can be registered/unregistered
+  in HAL_RTC_STATE_READY or HAL_RTC_STATE_RESET state.
+  Thus registered (user) MspInit()/MspDeInit() callbacks can be used during the
+  Init/DeInit.
+  In that case first register the MspInit()/MspDeInit() user callbacks
   using HAL_RTC_RegisterCallback() before calling HAL_RTC_DeInit()
-  or HAL_RTC_Init() function.
-
+  or HAL_RTC_Init() functions.
+  [..]
   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
+  not defined, the callback registration feature is not available and all
+  callbacks are set to the corresponding weak functions.
+
+  @endverbatim
   ******************************************************************************
   */
 
@@ -181,7 +194,7 @@
   */
 
 /** @defgroup RTC RTC
-  * @brief RTC HAL module driver
+  * @brief    RTC HAL module driver
   * @{
   */
 
@@ -198,9 +211,9 @@
   * @{
   */
 
-/** @defgroup RTC_Group1 Initialization and de-initialization functions
- *  @brief    Initialization and Configuration functions
- *
+/** @defgroup RTC_Exported_Functions_Group1 Initialization and de-initialization functions
+  * @brief    Initialization and Configuration functions
+  *
 @verbatim
  ===============================================================================
               ##### Initialization and de-initialization functions #####
@@ -211,7 +224,7 @@
          RTC registers synchronization check and reference clock detection enable.
          (#) The RTC Prescaler is programmed to generate the RTC 1Hz time base.
              It is split into 2 programmable prescalers to minimize power consumption.
-             (++) A 7-bit asynchronous prescaler and a 13-bit synchronous prescaler.
+             (++) A 7-bit asynchronous prescaler and a 15-bit synchronous prescaler.
              (++) When both prescalers are used, it is recommended to configure the
                  asynchronous prescaler to a high value to minimize power consumption.
          (#) All RTC registers are Write protected. Writing to the RTC registers
@@ -221,11 +234,11 @@
              and its value can be updated. When the initialization sequence is
              complete, the calendar restarts counting after 4 RTCCLK cycles.
          (#) To read the calendar through the shadow registers after Calendar
-             initialization, calendar update or after wake-up from low power modes
+             initialization, calendar update or after wakeup from low power modes
              the software must first clear the RSF flag. The software must then
              wait until it is set again before reading the calendar, which means
              that the calendar registers have been correctly copied into the
-             RTC_TR and RTC_DR shadow registers.The HAL_RTC_WaitForSynchro() function
+             RTC_TR and RTC_DR shadow registers. The HAL_RTC_WaitForSynchro() function
              implements the above software sequence (RSF clear and RSF check).
 
 @endverbatim
@@ -240,10 +253,12 @@
   */
 HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc)
 {
-  /* Check the RTC peripheral state */
-  if(hrtc == NULL)
+  HAL_StatusTypeDef status = HAL_ERROR;
+
+  /* Check RTC handler validity */
+  if (hrtc == NULL)
   {
-     return HAL_ERROR;
+    return HAL_ERROR;
   }
 
   /* Check the parameters */
@@ -251,12 +266,12 @@
   assert_param(IS_RTC_HOUR_FORMAT(hrtc->Init.HourFormat));
   assert_param(IS_RTC_ASYNCH_PREDIV(hrtc->Init.AsynchPrediv));
   assert_param(IS_RTC_SYNCH_PREDIV(hrtc->Init.SynchPrediv));
-  assert_param (IS_RTC_OUTPUT(hrtc->Init.OutPut));
-  assert_param (IS_RTC_OUTPUT_POL(hrtc->Init.OutPutPolarity));
+  assert_param(IS_RTC_OUTPUT(hrtc->Init.OutPut));
+  assert_param(IS_RTC_OUTPUT_POL(hrtc->Init.OutPutPolarity));
   assert_param(IS_RTC_OUTPUT_TYPE(hrtc->Init.OutPutType));
 
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
-  if(hrtc->State == HAL_RTC_STATE_RESET)
+  if (hrtc->State == HAL_RTC_STATE_RESET)
   {
     /* Allocate lock resource and initialize it */
     hrtc->Lock = HAL_UNLOCKED;
@@ -269,20 +284,20 @@
     hrtc->Tamper2EventCallback         =  HAL_RTCEx_Tamper2EventCallback;     /* Legacy weak Tamper2EventCallback     */
     hrtc->Tamper3EventCallback         =  HAL_RTCEx_Tamper3EventCallback;     /* Legacy weak Tamper3EventCallback     */
 
-    if(hrtc->MspInitCallback == NULL)
+    if (hrtc->MspInitCallback == NULL)
     {
       hrtc->MspInitCallback = HAL_RTC_MspInit;
     }
     /* Init the low level hardware */
     hrtc->MspInitCallback(hrtc);
 
-    if(hrtc->MspDeInitCallback == NULL)
+    if (hrtc->MspDeInitCallback == NULL)
     {
       hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
     }
   }
-#else
-  if(hrtc->State == HAL_RTC_STATE_RESET)
+#else /* USE_HAL_RTC_REGISTER_CALLBACKS */
+  if (hrtc->State == HAL_RTC_STATE_RESET)
   {
     /* Allocate lock resource and initialize it */
     hrtc->Lock = HAL_UNLOCKED;
@@ -290,74 +305,68 @@
     /* Initialize RTC MSP */
     HAL_RTC_MspInit(hrtc);
   }
-#endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */
+#endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
 
   /* Set RTC state */
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-  /* Disable the write protection for RTC registers */
-  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-
-  /* Set Initialization mode */
-  if(RTC_EnterInitMode(hrtc) != HAL_OK)
+  /* Check whether the calendar needs to be initialized */
+  if (__HAL_RTC_IS_CALENDAR_INITIALIZED(hrtc) == 0U)
   {
+    /* Disable the write protection for RTC registers */
+    __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
+
+    /* Enter Initialization mode */
+    status = RTC_EnterInitMode(hrtc);
+
+    if (status == HAL_OK)
+    {
+      /* Clear RTC_CR FMT, OSEL and POL Bits */
+      hrtc->Instance->CR &= ((uint32_t)~(RTC_CR_FMT | RTC_CR_OSEL | RTC_CR_POL));
+      /* Set RTC_CR register */
+      hrtc->Instance->CR |= (uint32_t)(hrtc->Init.HourFormat | hrtc->Init.OutPut | hrtc->Init.OutPutPolarity);
+
+      /* Configure the RTC PRER */
+      hrtc->Instance->PRER = (uint32_t)(hrtc->Init.SynchPrediv);
+      hrtc->Instance->PRER |= (uint32_t)(hrtc->Init.AsynchPrediv << RTC_PRER_PREDIV_A_Pos);
+
+      /* Exit Initialization mode */
+      status = RTC_ExitInitMode(hrtc);
+    }
+
+    if (status == HAL_OK)
+    {
+      hrtc->Instance->OR &= (uint32_t)~RTC_OUTPUT_TYPE_PUSHPULL;
+      hrtc->Instance->OR |= (uint32_t)(hrtc->Init.OutPutType);
+    }
+
     /* Enable the write protection for RTC registers */
     __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-    /* Set RTC state */
-    hrtc->State = HAL_RTC_STATE_ERROR;
-
-    return HAL_ERROR;
   }
   else
   {
-    /* Clear RTC_CR FMT, OSEL and POL Bits */
-    hrtc->Instance->CR &= ((uint32_t)~(RTC_CR_FMT | RTC_CR_OSEL | RTC_CR_POL));
-    /* Set RTC_CR register */
-    hrtc->Instance->CR |= (uint32_t)(hrtc->Init.HourFormat | hrtc->Init.OutPut | hrtc->Init.OutPutPolarity);
-
-    /* Configure the RTC PRER */
-    hrtc->Instance->PRER = (uint32_t)(hrtc->Init.SynchPrediv);
-    hrtc->Instance->PRER |= (uint32_t)(hrtc->Init.AsynchPrediv << 16);
-
-    /* Exit Initialization mode */
-    hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
-    /* If  CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
-    if((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
-    {
-      if(HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
-      {
-        /* Enable the write protection for RTC registers */
-        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-        hrtc->State = HAL_RTC_STATE_ERROR;
-
-        return HAL_ERROR;
-      }
-    }
-    hrtc->Instance->OR &= (uint32_t)~RTC_OR_ALARMTYPE;
-    hrtc->Instance->OR |= (uint32_t)(hrtc->Init.OutPutType);
-
-    /* Enable the write protection for RTC registers */
-    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-    /* Set RTC state */
-    hrtc->State = HAL_RTC_STATE_READY;
-
-    return HAL_OK;
+    /* The calendar is already initialized */
+    status = HAL_OK;
   }
+
+  if (status == HAL_OK)
+  {
+    hrtc->State = HAL_RTC_STATE_READY;
+  }
+
+  return status;
 }
 
 /**
   * @brief  DeInitializes the RTC peripheral
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
-  * @note   This function doesn't reset the RTC Backup Data registers.
+  * @note   This function does not reset the RTC Backup Data registers.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RTC_DeInit(RTC_HandleTypeDef *hrtc)
 {
-  uint32_t tickstart = 0;
+  HAL_StatusTypeDef status = HAL_ERROR;
 
   /* Check the parameters */
   assert_param(IS_RTC_ALL_INSTANCE(hrtc->Instance));
@@ -368,114 +377,73 @@
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  /* Set Initialization mode */
-  if(RTC_EnterInitMode(hrtc) != HAL_OK)
+  /* Enter Initialization mode */
+  status = RTC_EnterInitMode(hrtc);
+
+  if (status == HAL_OK)
   {
-    /* Enable the write protection for RTC registers */
-    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+    /* Reset RTC registers */
+    hrtc->Instance->TR = 0x00000000U;
+    hrtc->Instance->DR = (RTC_DR_WDU_0 | RTC_DR_MU_0 | RTC_DR_DU_0);
+    hrtc->Instance->CR  &= 0x00000000U;
+    hrtc->Instance->WUTR = RTC_WUTR_WUT;
+    hrtc->Instance->PRER = (uint32_t)(RTC_PRER_PREDIV_A | 0x000000FFU);
+    hrtc->Instance->ALRMAR   = 0x00000000U;
+    hrtc->Instance->ALRMBR   = 0x00000000U;
+    hrtc->Instance->CALR     = 0x00000000U;
+    hrtc->Instance->SHIFTR   = 0x00000000U;
+    hrtc->Instance->ALRMASSR = 0x00000000U;
+    hrtc->Instance->ALRMBSSR = 0x00000000U;
 
-    /* Set RTC state */
-    hrtc->State = HAL_RTC_STATE_ERROR;
-
-    return HAL_ERROR;
-  }
-  else
-  {
-    /* Reset TR, DR and CR registers */
-    hrtc->Instance->TR = (uint32_t)0x00000000;
-    hrtc->Instance->DR = (uint32_t)0x00002101;
-    /* Reset All CR bits except CR[2:0] */
-    hrtc->Instance->CR &= (uint32_t)0x00000007;
-
-    /* Get tick */
-    tickstart = HAL_GetTick();
-
-    /* Wait till WUTWF flag is set and if Time out is reached exit */
-    while(((hrtc->Instance->ISR) & RTC_ISR_WUTWF) == (uint32_t)RESET)
-    {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
-      {
-        /* Enable the write protection for RTC registers */
-        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-        /* Set RTC state */
-        hrtc->State = HAL_RTC_STATE_TIMEOUT;
-
-        return HAL_TIMEOUT;
-      }
-    }
-
-    /* Reset all RTC CR register bits */
-    hrtc->Instance->CR &= (uint32_t)0x00000000;
-    hrtc->Instance->WUTR = (uint32_t)0x0000FFFF;
-    hrtc->Instance->PRER = (uint32_t)0x007F00FF;
-    hrtc->Instance->ALRMAR = (uint32_t)0x00000000;
-    hrtc->Instance->ALRMBR = (uint32_t)0x00000000;
-    hrtc->Instance->SHIFTR = (uint32_t)0x00000000;
-    hrtc->Instance->CALR = (uint32_t)0x00000000;
-    hrtc->Instance->ALRMASSR = (uint32_t)0x00000000;
-    hrtc->Instance->ALRMBSSR = (uint32_t)0x00000000;
-
-    /* Reset ISR register and exit initialization mode */
-    hrtc->Instance->ISR = (uint32_t)0x00000000;
-
-    /* Reset Tamper and alternate functions configuration register */
-    hrtc->Instance->TAMPCR = 0x00000000;
-
-    /* Reset Option register */
-    hrtc->Instance->OR = 0x00000000;
-
-    /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
-    if((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
-    {
-      if(HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
-      {
-        /* Enable the write protection for RTC registers */
-        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-        hrtc->State = HAL_RTC_STATE_ERROR;
-
-        return HAL_ERROR;
-      }
-    }
+    /* Exit Initialization mode */
+    status = RTC_ExitInitMode(hrtc);
   }
 
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 
-#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
-  if(hrtc->MspDeInitCallback == NULL)
+  if (status == HAL_OK)
   {
-    hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
+    /* Reset Tamper and alternate functions configuration register */
+    hrtc->Instance->TAMPCR = 0x00000000U;
+
+    /* Reset Option register */
+    hrtc->Instance->OR = 0x00000000U;
+
+#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
+    if (hrtc->MspDeInitCallback == NULL)
+    {
+      hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
+    }
+
+    /* DeInit the low level hardware: CLOCK, NVIC.*/
+    hrtc->MspDeInitCallback(hrtc);
+#else /* USE_HAL_RTC_REGISTER_CALLBACKS */
+    /* De-Initialize RTC MSP */
+    HAL_RTC_MspDeInit(hrtc);
+#endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
+
+    hrtc->State = HAL_RTC_STATE_RESET;
   }
 
-  /* DeInit the low level hardware: CLOCK, NVIC.*/
-  hrtc->MspDeInitCallback(hrtc);
-
-#else
-  /* De-Initialize RTC MSP */
-  HAL_RTC_MspDeInit(hrtc);
-#endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */
-
-  hrtc->State = HAL_RTC_STATE_RESET;
-
   /* Release Lock */
   __HAL_UNLOCK(hrtc);
 
-  return HAL_OK;
+  return status;
 }
 
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
 /**
-  * @brief  Register a User RTC Callback
+  * @brief  Registers a User RTC Callback
   *         To be used instead of the weak predefined callback
-  * @param  hrtc RTC handle
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
   * @param  CallbackID ID of the callback to be registered
   *         This parameter can be one of the following values:
   *          @arg @ref HAL_RTC_ALARM_A_EVENT_CB_ID          Alarm A Event Callback ID
   *          @arg @ref HAL_RTC_ALARM_B_EVENT_CB_ID          Alarm B Event Callback ID
-  *          @arg @ref HAL_RTC_TIMESTAMP_EVENT_CB_ID        TimeStamp Event Callback ID
-  *          @arg @ref HAL_RTC_WAKEUPTIMER_EVENT_CB_ID      Wake-Up Timer Event Callback ID
+  *          @arg @ref HAL_RTC_TIMESTAMP_EVENT_CB_ID        Timestamp Event Callback ID
+  *          @arg @ref HAL_RTC_WAKEUPTIMER_EVENT_CB_ID      Wakeup Timer Event Callback ID
   *          @arg @ref HAL_RTC_TAMPER1_EVENT_CB_ID          Tamper 1 Callback ID
   *          @arg @ref HAL_RTC_TAMPER2_EVENT_CB_ID          Tamper 2 Callback ID
   *          @arg @ref HAL_RTC_TAMPER3_EVENT_CB_ID          Tamper 3 Callback ID
@@ -488,7 +456,7 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  if(pCallback == NULL)
+  if (pCallback == NULL)
   {
     return HAL_ERROR;
   }
@@ -496,68 +464,68 @@
   /* Process locked */
   __HAL_LOCK(hrtc);
 
-  if(HAL_RTC_STATE_READY == hrtc->State)
+  if (HAL_RTC_STATE_READY == hrtc->State)
   {
     switch (CallbackID)
     {
-    case HAL_RTC_ALARM_A_EVENT_CB_ID :
-      hrtc->AlarmAEventCallback = pCallback;
-      break;
+      case HAL_RTC_ALARM_A_EVENT_CB_ID :
+        hrtc->AlarmAEventCallback = pCallback;
+        break;
 
-    case HAL_RTC_ALARM_B_EVENT_CB_ID :
-      hrtc->AlarmBEventCallback = pCallback;
-      break;
+      case HAL_RTC_ALARM_B_EVENT_CB_ID :
+        hrtc->AlarmBEventCallback = pCallback;
+        break;
 
-    case HAL_RTC_TIMESTAMP_EVENT_CB_ID :
-      hrtc->TimeStampEventCallback = pCallback;
-      break;
+      case HAL_RTC_TIMESTAMP_EVENT_CB_ID :
+        hrtc->TimeStampEventCallback = pCallback;
+        break;
 
-    case HAL_RTC_WAKEUPTIMER_EVENT_CB_ID :
-      hrtc->WakeUpTimerEventCallback = pCallback;
-      break;
+      case HAL_RTC_WAKEUPTIMER_EVENT_CB_ID :
+        hrtc->WakeUpTimerEventCallback = pCallback;
+        break;
 
-    case HAL_RTC_TAMPER1_EVENT_CB_ID :
-      hrtc->Tamper1EventCallback = pCallback;
-      break;
+      case HAL_RTC_TAMPER1_EVENT_CB_ID :
+        hrtc->Tamper1EventCallback = pCallback;
+        break;
 
-    case HAL_RTC_TAMPER2_EVENT_CB_ID :
-      hrtc->Tamper2EventCallback = pCallback;
-      break;
+      case HAL_RTC_TAMPER2_EVENT_CB_ID :
+        hrtc->Tamper2EventCallback = pCallback;
+        break;
 
-    case HAL_RTC_TAMPER3_EVENT_CB_ID :
-      hrtc->Tamper3EventCallback = pCallback;
-      break;
+      case HAL_RTC_TAMPER3_EVENT_CB_ID :
+        hrtc->Tamper3EventCallback = pCallback;
+        break;
 
-   case HAL_RTC_MSPINIT_CB_ID :
-      hrtc->MspInitCallback = pCallback;
-      break;
+      case HAL_RTC_MSPINIT_CB_ID :
+        hrtc->MspInitCallback = pCallback;
+        break;
 
-   case HAL_RTC_MSPDEINIT_CB_ID :
-      hrtc->MspDeInitCallback = pCallback;
-      break;
+      case HAL_RTC_MSPDEINIT_CB_ID :
+        hrtc->MspDeInitCallback = pCallback;
+        break;
 
-    default :
-     /* Return error status */
-      status =  HAL_ERROR;
-      break;
+      default :
+        /* Return error status */
+        status =  HAL_ERROR;
+        break;
     }
   }
-  else if(HAL_RTC_STATE_RESET == hrtc->State)
+  else if (HAL_RTC_STATE_RESET == hrtc->State)
   {
     switch (CallbackID)
     {
-    case HAL_RTC_MSPINIT_CB_ID :
-      hrtc->MspInitCallback = pCallback;
-      break;
+      case HAL_RTC_MSPINIT_CB_ID :
+        hrtc->MspInitCallback = pCallback;
+        break;
 
-   case HAL_RTC_MSPDEINIT_CB_ID :
-      hrtc->MspDeInitCallback = pCallback;
-      break;
+      case HAL_RTC_MSPDEINIT_CB_ID :
+        hrtc->MspDeInitCallback = pCallback;
+        break;
 
-    default :
-     /* Return error status */
-      status =  HAL_ERROR;
-      break;
+      default :
+        /* Return error status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -573,15 +541,16 @@
 }
 
 /**
-  * @brief  Unregister an RTC Callback
+  * @brief  Unregisters an RTC Callback
   *         RTC callabck is redirected to the weak predefined callback
-  * @param  hrtc RTC handle
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
   *          @arg @ref HAL_RTC_ALARM_A_EVENT_CB_ID          Alarm A Event Callback ID
   *          @arg @ref HAL_RTC_ALARM_B_EVENT_CB_ID          Alarm B Event Callback ID
-  *          @arg @ref HAL_RTC_TIMESTAMP_EVENT_CB_ID        TimeStamp Event Callback ID
-  *          @arg @ref HAL_RTC_WAKEUPTIMER_EVENT_CB_ID      Wake-Up Timer Event Callback ID
+  *          @arg @ref HAL_RTC_TIMESTAMP_EVENT_CB_ID        Timestamp Event Callback ID
+  *          @arg @ref HAL_RTC_WAKEUPTIMER_EVENT_CB_ID      Wakeup Timer Event Callback ID
   *          @arg @ref HAL_RTC_TAMPER1_EVENT_CB_ID          Tamper 1 Callback ID
   *          @arg @ref HAL_RTC_TAMPER2_EVENT_CB_ID          Tamper 2 Callback ID
   *          @arg @ref HAL_RTC_TAMPER3_EVENT_CB_ID          Tamper 3 Callback ID
@@ -596,68 +565,68 @@
   /* Process locked */
   __HAL_LOCK(hrtc);
 
-  if(HAL_RTC_STATE_READY == hrtc->State)
+  if (HAL_RTC_STATE_READY == hrtc->State)
   {
     switch (CallbackID)
     {
-    case HAL_RTC_ALARM_A_EVENT_CB_ID :
-      hrtc->AlarmAEventCallback = HAL_RTC_AlarmAEventCallback;         /* Legacy weak AlarmAEventCallback    */
-      break;
+      case HAL_RTC_ALARM_A_EVENT_CB_ID :
+        hrtc->AlarmAEventCallback = HAL_RTC_AlarmAEventCallback;             /* Legacy weak AlarmAEventCallback    */
+        break;
 
-    case HAL_RTC_ALARM_B_EVENT_CB_ID :
-      hrtc->AlarmBEventCallback = HAL_RTCEx_AlarmBEventCallback;          /* Legacy weak AlarmBEventCallback */
-      break;
+      case HAL_RTC_ALARM_B_EVENT_CB_ID :
+        hrtc->AlarmBEventCallback = HAL_RTCEx_AlarmBEventCallback;           /* Legacy weak AlarmBEventCallback */
+        break;
 
-    case HAL_RTC_TIMESTAMP_EVENT_CB_ID :
-      hrtc->TimeStampEventCallback = HAL_RTCEx_TimeStampEventCallback;    /* Legacy weak TimeStampEventCallback    */
-      break;
+      case HAL_RTC_TIMESTAMP_EVENT_CB_ID :
+        hrtc->TimeStampEventCallback = HAL_RTCEx_TimeStampEventCallback;     /* Legacy weak TimeStampEventCallback    */
+        break;
 
-    case HAL_RTC_WAKEUPTIMER_EVENT_CB_ID :
-      hrtc->WakeUpTimerEventCallback = HAL_RTCEx_WakeUpTimerEventCallback; /* Legacy weak WakeUpTimerEventCallback */
-      break;
+      case HAL_RTC_WAKEUPTIMER_EVENT_CB_ID :
+        hrtc->WakeUpTimerEventCallback = HAL_RTCEx_WakeUpTimerEventCallback; /* Legacy weak WakeUpTimerEventCallback */
+        break;
 
-    case HAL_RTC_TAMPER1_EVENT_CB_ID :
-      hrtc->Tamper1EventCallback = HAL_RTCEx_Tamper1EventCallback;         /* Legacy weak Tamper1EventCallback   */
-      break;
+      case HAL_RTC_TAMPER1_EVENT_CB_ID :
+        hrtc->Tamper1EventCallback = HAL_RTCEx_Tamper1EventCallback;         /* Legacy weak Tamper1EventCallback   */
+        break;
 
-    case HAL_RTC_TAMPER2_EVENT_CB_ID :
-      hrtc->Tamper2EventCallback = HAL_RTCEx_Tamper2EventCallback;         /* Legacy weak Tamper2EventCallback         */
-      break;
+      case HAL_RTC_TAMPER2_EVENT_CB_ID :
+        hrtc->Tamper2EventCallback = HAL_RTCEx_Tamper2EventCallback;         /* Legacy weak Tamper2EventCallback         */
+        break;
 
-    case HAL_RTC_TAMPER3_EVENT_CB_ID :
-      hrtc->Tamper3EventCallback = HAL_RTCEx_Tamper3EventCallback;         /* Legacy weak Tamper3EventCallback         */
-      break;
+      case HAL_RTC_TAMPER3_EVENT_CB_ID :
+        hrtc->Tamper3EventCallback = HAL_RTCEx_Tamper3EventCallback;         /* Legacy weak Tamper3EventCallback         */
+        break;
 
-    case HAL_RTC_MSPINIT_CB_ID :
-      hrtc->MspInitCallback = HAL_RTC_MspInit;
-      break;
+      case HAL_RTC_MSPINIT_CB_ID :
+        hrtc->MspInitCallback = HAL_RTC_MspInit;
+        break;
 
-    case HAL_RTC_MSPDEINIT_CB_ID :
-      hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
-      break;
+      case HAL_RTC_MSPDEINIT_CB_ID :
+        hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
+        break;
 
-    default :
-     /* Return error status */
-      status =  HAL_ERROR;
-      break;
+      default :
+        /* Return error status */
+        status =  HAL_ERROR;
+        break;
     }
   }
-  else if(HAL_RTC_STATE_RESET == hrtc->State)
+  else if (HAL_RTC_STATE_RESET == hrtc->State)
   {
     switch (CallbackID)
     {
-    case HAL_RTC_MSPINIT_CB_ID :
-      hrtc->MspInitCallback = HAL_RTC_MspInit;
-      break;
+      case HAL_RTC_MSPINIT_CB_ID :
+        hrtc->MspInitCallback = HAL_RTC_MspInit;
+        break;
 
-    case HAL_RTC_MSPDEINIT_CB_ID :
-      hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
-      break;
+      case HAL_RTC_MSPDEINIT_CB_ID :
+        hrtc->MspDeInitCallback = HAL_RTC_MspDeInit;
+        break;
 
-    default :
-     /* Return error status */
-      status =  HAL_ERROR;
-      break;
+      default :
+        /* Return error status */
+        status =  HAL_ERROR;
+        break;
     }
   }
   else
@@ -679,13 +648,13 @@
   *                the configuration information for RTC.
   * @retval None
   */
-__weak void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
+__weak void HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc)
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function Should not be modified, when the callback is needed,
-            the HAL_RTC_MspInit could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTC_MspInit could be implemented in the user file
    */
 }
 
@@ -695,13 +664,13 @@
   *                the configuration information for RTC.
   * @retval None
   */
-__weak void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
+__weak void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc)
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function Should not be modified, when the callback is needed,
-            the HAL_RTC_MspDeInit could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTC_MspDeInit could be implemented in the user file
    */
 }
 
@@ -709,9 +678,9 @@
   * @}
   */
 
-/** @defgroup RTC_Group2 RTC Time and Date functions
- *  @brief   RTC Time and Date functions
- *
+/** @defgroup RTC_Exported_Functions_Group2 RTC Time and Date functions
+  * @brief    RTC Time and Date functions
+  *
 @verbatim
  ===============================================================================
                  ##### RTC Time and Date functions #####
@@ -728,17 +697,20 @@
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  sTime Pointer to Time structure
+  * @note   DayLightSaving and StoreOperation interfaces are deprecated.
+  *         To manage Daylight Saving Time, please use HAL_RTC_DST_xxx functions.
   * @param  Format Specifies the format of the entered parameters.
   *          This parameter can be one of the following values:
-  *            @arg FORMAT_BIN: Binary data format
-  *            @arg FORMAT_BCD: BCD data format
+  *            @arg RTC_FORMAT_BIN: Binary data format
+  *            @arg RTC_FORMAT_BCD: BCD data format
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
 {
-  uint32_t tmpreg = 0;
+  uint32_t tmpreg = 0U;
+  HAL_StatusTypeDef status;
 
- /* Check the parameters */
+  /* Check the parameters */
   assert_param(IS_RTC_FORMAT(Format));
   assert_param(IS_RTC_DAYLIGHT_SAVING(sTime->DayLightSaving));
   assert_param(IS_RTC_STORE_OPERATION(sTime->StoreOperation));
@@ -748,134 +720,113 @@
 
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-  if(Format == RTC_FORMAT_BIN)
+  if (Format == RTC_FORMAT_BIN)
   {
-    if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
+    if ((hrtc->Instance->CR & RTC_CR_FMT) != 0U)
     {
       assert_param(IS_RTC_HOUR12(sTime->Hours));
       assert_param(IS_RTC_HOURFORMAT12(sTime->TimeFormat));
     }
     else
     {
-      sTime->TimeFormat = 0x00;
+      sTime->TimeFormat = 0x00U;
       assert_param(IS_RTC_HOUR24(sTime->Hours));
     }
     assert_param(IS_RTC_MINUTES(sTime->Minutes));
     assert_param(IS_RTC_SECONDS(sTime->Seconds));
 
-    tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(sTime->Hours) << 16) | \
-                        ((uint32_t)RTC_ByteToBcd2(sTime->Minutes) << 8) | \
-                        ((uint32_t)RTC_ByteToBcd2(sTime->Seconds)) | \
-                        (((uint32_t)sTime->TimeFormat) << 16));
+    tmpreg = (uint32_t)(( (uint32_t)RTC_ByteToBcd2(sTime->Hours)   << RTC_TR_HU_Pos)  | \
+                        ( (uint32_t)RTC_ByteToBcd2(sTime->Minutes) << RTC_TR_MNU_Pos) | \
+                        ( (uint32_t)RTC_ByteToBcd2(sTime->Seconds))                   | \
+                        (((uint32_t)sTime->TimeFormat)             << RTC_TR_PM_Pos));
   }
   else
   {
-    if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
+    if ((hrtc->Instance->CR & RTC_CR_FMT) != 0U)
     {
       assert_param(IS_RTC_HOUR12(RTC_Bcd2ToByte(sTime->Hours)));
       assert_param(IS_RTC_HOURFORMAT12(sTime->TimeFormat));
     }
     else
     {
-      sTime->TimeFormat = 0x00;
+      sTime->TimeFormat = 0x00U;
       assert_param(IS_RTC_HOUR24(RTC_Bcd2ToByte(sTime->Hours)));
     }
     assert_param(IS_RTC_MINUTES(RTC_Bcd2ToByte(sTime->Minutes)));
     assert_param(IS_RTC_SECONDS(RTC_Bcd2ToByte(sTime->Seconds)));
-    tmpreg = (((uint32_t)(sTime->Hours) << 16) | \
-              ((uint32_t)(sTime->Minutes) << 8) | \
-              ((uint32_t)sTime->Seconds) | \
-              ((uint32_t)(sTime->TimeFormat) << 16));
+    tmpreg = (((uint32_t)(sTime->Hours)      << RTC_TR_HU_Pos)  | \
+              ((uint32_t)(sTime->Minutes)    << RTC_TR_MNU_Pos) | \
+              ((uint32_t) sTime->Seconds)                       | \
+              ((uint32_t)(sTime->TimeFormat) << RTC_TR_PM_Pos));
   }
 
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  /* Set Initialization mode */
-  if(RTC_EnterInitMode(hrtc) != HAL_OK)
-  {
-    /* Enable the write protection for RTC registers */
-    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+  /* Enter Initialization mode */
+  status = RTC_EnterInitMode(hrtc);
 
-    /* Set RTC state */
-    hrtc->State = HAL_RTC_STATE_ERROR;
-
-    /* Process Unlocked */
-    __HAL_UNLOCK(hrtc);
-
-    return HAL_ERROR;
-  }
-  else
+  if (status == HAL_OK)
   {
     /* Set the RTC_TR register */
     hrtc->Instance->TR = (uint32_t)(tmpreg & RTC_TR_RESERVED_MASK);
 
-    /* This interface is deprecated. To manage Daylight Saving Time, please use HAL_RTC_DST_xxx functions */
+    /* Clear the bits to be configured (Deprecated. Use HAL_RTC_DST_xxx functions instead) */
     hrtc->Instance->CR &= (uint32_t)~RTC_CR_BKP;
 
-    /* This interface is deprecated. To manage Daylight Saving Time, please use HAL_RTC_DST_xxx functions */
+    /* Configure the RTC_CR register (Deprecated. Use HAL_RTC_DST_xxx functions instead) */
     hrtc->Instance->CR |= (uint32_t)(sTime->DayLightSaving | sTime->StoreOperation);
 
     /* Exit Initialization mode */
-    hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
-
-    /* If  CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
-    if((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
-    {
-      if(HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
-      {
-        /* Enable the write protection for RTC registers */
-        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-        hrtc->State = HAL_RTC_STATE_ERROR;
-
-        /* Process Unlocked */
-        __HAL_UNLOCK(hrtc);
-
-        return HAL_ERROR;
-      }
-    }
-
-    /* Enable the write protection for RTC registers */
-    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-   hrtc->State = HAL_RTC_STATE_READY;
-
-   __HAL_UNLOCK(hrtc);
-
-   return HAL_OK;
+    status = RTC_ExitInitMode(hrtc);
   }
+
+  if (status == HAL_OK)
+  {
+    hrtc->State = HAL_RTC_STATE_READY;
+  }
+
+  /* Enable the write protection for RTC registers */
+  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(hrtc);
+
+  return status;
 }
 
 /**
   * @brief  Gets RTC current time.
-  * @param  hrtc RTC handle
-  * @param  sTime Pointer to Time structure with Hours, Minutes and Seconds fields returned
-  *                with input format (BIN or BCD), also SubSeconds field returning the
-  *                RTC_SSR register content and SecondFraction field the Synchronous pre-scaler
-  *                factor to be used for second fraction ratio computation.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
+  * @param  sTime Pointer to Time structure
   * @param  Format Specifies the format of the entered parameters.
   *          This parameter can be one of the following values:
   *            @arg RTC_FORMAT_BIN: Binary data format
   *            @arg RTC_FORMAT_BCD: BCD data format
-  * @note  You can use SubSeconds and SecondFraction (sTime structure fields returned) to convert SubSeconds
-  *        value in second fraction ratio with time unit following generic formula:
-  *        Second fraction ratio * time_unit= [(SecondFraction-SubSeconds)/(SecondFraction+1)] * time_unit
-  *        This conversion can be performed only if no shift operation is pending (ie. SHFP=0) when PREDIV_S >= SS
-  * @note  You must call HAL_RTC_GetDate() after HAL_RTC_GetTime() to unlock the values
-  *        in the higher-order calendar shadow registers to ensure consistency between the time and date values.
-  *        Reading RTC current time locks the values in calendar shadow registers until Current date is read
-  *        to ensure consistency between the time and date values.
+  * @note  You can use SubSeconds and SecondFraction (sTime structure fields
+  *        returned) to convert SubSeconds value in second fraction ratio with
+  *        time unit following generic formula:
+  *        Second fraction ratio * time_unit =
+  *           [(SecondFraction - SubSeconds) / (SecondFraction + 1)] * time_unit
+  *        This conversion can be performed only if no shift operation is pending
+  *        (ie. SHFP=0) when PREDIV_S >= SS
+  * @note  You must call HAL_RTC_GetDate() after HAL_RTC_GetTime() to unlock the
+  *        values in the higher-order calendar shadow registers to ensure
+  *        consistency between the time and date values.
+  *        Reading RTC current time locks the values in calendar shadow registers
+  *        until current date is read to ensure consistency between the time and
+  *        date values.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format)
 {
-  uint32_t tmpreg = 0;
+  uint32_t tmpreg = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_FORMAT(Format));
 
-  /* Get subseconds values from the correspondent registers*/
+  /* Get subseconds value from the corresponding register */
   sTime->SubSeconds = (uint32_t)(hrtc->Instance->SSR);
 
   /* Get SecondFraction structure field from the corresponding register field*/
@@ -885,13 +836,13 @@
   tmpreg = (uint32_t)(hrtc->Instance->TR & RTC_TR_RESERVED_MASK);
 
   /* Fill the structure fields with the read parameters */
-  sTime->Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16);
-  sTime->Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >>8);
-  sTime->Seconds = (uint8_t)(tmpreg & (RTC_TR_ST | RTC_TR_SU));
-  sTime->TimeFormat = (uint8_t)((tmpreg & (RTC_TR_PM)) >> 16);
+  sTime->Hours      = (uint8_t)((tmpreg & (RTC_TR_HT  | RTC_TR_HU))  >> RTC_TR_HU_Pos);
+  sTime->Minutes    = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >> RTC_TR_MNU_Pos);
+  sTime->Seconds    = (uint8_t)( tmpreg & (RTC_TR_ST  | RTC_TR_SU));
+  sTime->TimeFormat = (uint8_t)((tmpreg & (RTC_TR_PM))               >> RTC_TR_PM_Pos);
 
   /* Check the input parameters format */
-  if(Format == RTC_FORMAT_BIN)
+  if (Format == RTC_FORMAT_BIN)
   {
     /* Convert the time structure parameters to Binary format */
     sTime->Hours = (uint8_t)RTC_Bcd2ToByte(sTime->Hours);
@@ -915,33 +866,34 @@
   */
 HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
 {
-  uint32_t datetmpreg = 0;
+  uint32_t datetmpreg = 0U;
+  HAL_StatusTypeDef status;
 
- /* Check the parameters */
+  /* Check the parameters */
   assert_param(IS_RTC_FORMAT(Format));
 
- /* Process Locked */
- __HAL_LOCK(hrtc);
+  /* Process Locked */
+  __HAL_LOCK(hrtc);
 
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-  if((Format == RTC_FORMAT_BIN) && ((sDate->Month & 0x10U) == 0x10U))
+  if ((Format == RTC_FORMAT_BIN) && ((sDate->Month & 0x10U) == 0x10U))
   {
     sDate->Month = (uint8_t)((sDate->Month & (uint8_t)~(0x10U)) + (uint8_t)0x0AU);
   }
 
   assert_param(IS_RTC_WEEKDAY(sDate->WeekDay));
 
-  if(Format == RTC_FORMAT_BIN)
+  if (Format == RTC_FORMAT_BIN)
   {
     assert_param(IS_RTC_YEAR(sDate->Year));
     assert_param(IS_RTC_MONTH(sDate->Month));
     assert_param(IS_RTC_DATE(sDate->Date));
 
-   datetmpreg = (((uint32_t)RTC_ByteToBcd2(sDate->Year) << 16) | \
-                 ((uint32_t)RTC_ByteToBcd2(sDate->Month) << 8) | \
-                 ((uint32_t)RTC_ByteToBcd2(sDate->Date)) | \
-                 ((uint32_t)sDate->WeekDay << 13));
+    datetmpreg = (((uint32_t)RTC_ByteToBcd2(sDate->Year)  << RTC_DR_YU_Pos) | \
+                  ((uint32_t)RTC_ByteToBcd2(sDate->Month) << RTC_DR_MU_Pos) | \
+                  ((uint32_t)RTC_ByteToBcd2(sDate->Date))                   | \
+                  ((uint32_t)sDate->WeekDay               << RTC_DR_WDU_Pos));
   }
   else
   {
@@ -949,64 +901,39 @@
     assert_param(IS_RTC_MONTH(RTC_Bcd2ToByte(sDate->Month)));
     assert_param(IS_RTC_DATE(RTC_Bcd2ToByte(sDate->Date)));
 
-    datetmpreg = ((((uint32_t)sDate->Year) << 16) | \
-                  (((uint32_t)sDate->Month) << 8) | \
-                  ((uint32_t)sDate->Date) | \
-                  (((uint32_t)sDate->WeekDay) << 13));
+    datetmpreg = ((((uint32_t)sDate->Year)    << RTC_DR_YU_Pos) | \
+                  (((uint32_t)sDate->Month)   << RTC_DR_MU_Pos) | \
+                  ((uint32_t) sDate->Date)                      | \
+                  (((uint32_t)sDate->WeekDay) << RTC_DR_WDU_Pos));
   }
 
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  /* Set Initialization mode */
-  if(RTC_EnterInitMode(hrtc) != HAL_OK)
-  {
-    /* Enable the write protection for RTC registers */
-    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+  /* Enter Initialization mode */
+  status = RTC_EnterInitMode(hrtc);
 
-    /* Set RTC state*/
-    hrtc->State = HAL_RTC_STATE_ERROR;
-
-    /* Process Unlocked */
-    __HAL_UNLOCK(hrtc);
-
-    return HAL_ERROR;
-  }
-  else
+  if (status == HAL_OK)
   {
     /* Set the RTC_DR register */
     hrtc->Instance->DR = (uint32_t)(datetmpreg & RTC_DR_RESERVED_MASK);
 
     /* Exit Initialization mode */
-    hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
-
-    /* If  CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
-    if((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
-    {
-      if(HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
-      {
-        /* Enable the write protection for RTC registers */
-        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-        hrtc->State = HAL_RTC_STATE_ERROR;
-
-        /* Process Unlocked */
-        __HAL_UNLOCK(hrtc);
-
-        return HAL_ERROR;
-      }
-    }
-
-    /* Enable the write protection for RTC registers */
-    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-    hrtc->State = HAL_RTC_STATE_READY ;
-
-    /* Process Unlocked */
-    __HAL_UNLOCK(hrtc);
-
-    return HAL_OK;
+    status = RTC_ExitInitMode(hrtc);
   }
+
+  if (status == HAL_OK)
+  {
+    hrtc->State = HAL_RTC_STATE_READY;
+  }
+
+  /* Enable the write protection for RTC registers */
+  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(hrtc);
+
+  return status;
 }
 
 /**
@@ -1018,14 +945,17 @@
   *          This parameter can be one of the following values:
   *            @arg RTC_FORMAT_BIN:  Binary data format
   *            @arg RTC_FORMAT_BCD:  BCD data format
-  * @note You must call HAL_RTC_GetDate() after HAL_RTC_GetTime() to unlock the values
-  * in the higher-order calendar shadow registers to ensure consistency between the time and date values.
-  * Reading RTC current time locks the values in calendar shadow registers until Current date is read.
+  * @note  You must call HAL_RTC_GetDate() after HAL_RTC_GetTime() to unlock the
+  *        values in the higher-order calendar shadow registers to ensure
+  *        consistency between the time and date values.
+  *        Reading RTC current time locks the values in calendar shadow registers
+  *        until current date is read to ensure consistency between the time and
+  *        date values.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format)
 {
-  uint32_t datetmpreg = 0;
+  uint32_t datetmpreg = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_FORMAT(Format));
@@ -1034,18 +964,18 @@
   datetmpreg = (uint32_t)(hrtc->Instance->DR & RTC_DR_RESERVED_MASK);
 
   /* Fill the structure fields with the read parameters */
-  sDate->Year = (uint8_t)((datetmpreg & (RTC_DR_YT | RTC_DR_YU)) >> 16);
-  sDate->Month = (uint8_t)((datetmpreg & (RTC_DR_MT | RTC_DR_MU)) >> 8);
-  sDate->Date = (uint8_t)(datetmpreg & (RTC_DR_DT | RTC_DR_DU));
-  sDate->WeekDay = (uint8_t)((datetmpreg & (RTC_DR_WDU)) >> 13);
+  sDate->Year    = (uint8_t)((datetmpreg & (RTC_DR_YT | RTC_DR_YU)) >> RTC_DR_YU_Pos);
+  sDate->Month   = (uint8_t)((datetmpreg & (RTC_DR_MT | RTC_DR_MU)) >> RTC_DR_MU_Pos);
+  sDate->Date    = (uint8_t) (datetmpreg & (RTC_DR_DT | RTC_DR_DU));
+  sDate->WeekDay = (uint8_t)((datetmpreg & (RTC_DR_WDU))            >> RTC_DR_WDU_Pos);
 
   /* Check the input parameters format */
-  if(Format == RTC_FORMAT_BIN)
+  if (Format == RTC_FORMAT_BIN)
   {
     /* Convert the date structure parameters to Binary format */
-    sDate->Year = (uint8_t)RTC_Bcd2ToByte(sDate->Year);
+    sDate->Year  = (uint8_t)RTC_Bcd2ToByte(sDate->Year);
     sDate->Month = (uint8_t)RTC_Bcd2ToByte(sDate->Month);
-    sDate->Date = (uint8_t)RTC_Bcd2ToByte(sDate->Date);
+    sDate->Date  = (uint8_t)RTC_Bcd2ToByte(sDate->Date);
   }
   return HAL_OK;
 }
@@ -1054,9 +984,9 @@
   * @}
   */
 
-/** @defgroup RTC_Group3 RTC Alarm functions
- *  @brief   RTC Alarm functions
- *
+/** @defgroup RTC_Exported_Functions_Group3 RTC Alarm functions
+  * @brief    RTC Alarm functions
+  *
 @verbatim
  ===============================================================================
                  ##### RTC Alarm functions #####
@@ -1074,14 +1004,18 @@
   * @param  sAlarm Pointer to Alarm structure
   * @param  Format Specifies the format of the entered parameters.
   *          This parameter can be one of the following values:
-  *             @arg FORMAT_BIN: Binary data format
-  *             @arg FORMAT_BCD: BCD data format
+  *             @arg RTC_FORMAT_BIN: Binary data format
+  *             @arg RTC_FORMAT_BCD: BCD data format
+  * @note   The Alarm register can only be written when the corresponding Alarm
+  *         is disabled (Use the HAL_RTC_DeactivateAlarm()).
+  * @note   The HAL_RTC_SetTime() must be called before enabling the Alarm feature.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
 {
-  uint32_t tickstart = 0;
-  uint32_t tmpreg = 0, subsecondtmpreg = 0;
+  uint32_t tickstart = 0U;
+  uint32_t tmpreg = 0U;
+  uint32_t subsecondtmpreg = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_FORMAT(Format));
@@ -1094,24 +1028,27 @@
   /* Process Locked */
   __HAL_LOCK(hrtc);
 
+  /* Change RTC state to BUSY */
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-  if(Format == RTC_FORMAT_BIN)
+  /* Check the data format (binary or BCD) and store the Alarm time and date
+     configuration accordingly */
+  if (Format == RTC_FORMAT_BIN)
   {
-    if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
+    if ((hrtc->Instance->CR & RTC_CR_FMT) != 0U)
     {
       assert_param(IS_RTC_HOUR12(sAlarm->AlarmTime.Hours));
       assert_param(IS_RTC_HOURFORMAT12(sAlarm->AlarmTime.TimeFormat));
     }
     else
     {
-      sAlarm->AlarmTime.TimeFormat = 0x00;
+      sAlarm->AlarmTime.TimeFormat = 0x00U;
       assert_param(IS_RTC_HOUR24(sAlarm->AlarmTime.Hours));
     }
     assert_param(IS_RTC_MINUTES(sAlarm->AlarmTime.Minutes));
     assert_param(IS_RTC_SECONDS(sAlarm->AlarmTime.Seconds));
 
-    if(sAlarm->AlarmDateWeekDaySel == RTC_ALARMDATEWEEKDAYSEL_DATE)
+    if (sAlarm->AlarmDateWeekDaySel == RTC_ALARMDATEWEEKDAYSEL_DATE)
     {
       assert_param(IS_RTC_ALARM_DATE_WEEKDAY_DATE(sAlarm->AlarmDateWeekDay));
     }
@@ -1120,31 +1057,31 @@
       assert_param(IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(sAlarm->AlarmDateWeekDay));
     }
 
-    tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours) << 16) | \
-              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Minutes) << 8) | \
-              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Seconds)) | \
-              ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << 16) | \
-              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmDateWeekDay) << 24) | \
-              ((uint32_t)sAlarm->AlarmDateWeekDaySel) | \
+    tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours)   << RTC_ALRMAR_HU_Pos)  | \
+              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Minutes) << RTC_ALRMAR_MNU_Pos) | \
+              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Seconds))                       | \
+              ((uint32_t)(sAlarm->AlarmTime.TimeFormat)            << RTC_TR_PM_Pos)      | \
+              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmDateWeekDay)  << RTC_ALRMAR_DU_Pos)  | \
+              ((uint32_t)sAlarm->AlarmDateWeekDaySel)                                     | \
               ((uint32_t)sAlarm->AlarmMask));
   }
   else
   {
-    if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
+    if ((hrtc->Instance->CR & RTC_CR_FMT) != 0U)
     {
       assert_param(IS_RTC_HOUR12(RTC_Bcd2ToByte(sAlarm->AlarmTime.Hours)));
       assert_param(IS_RTC_HOURFORMAT12(sAlarm->AlarmTime.TimeFormat));
     }
     else
     {
-      sAlarm->AlarmTime.TimeFormat = 0x00;
+      sAlarm->AlarmTime.TimeFormat = 0x00U;
       assert_param(IS_RTC_HOUR24(RTC_Bcd2ToByte(sAlarm->AlarmTime.Hours)));
     }
 
     assert_param(IS_RTC_MINUTES(RTC_Bcd2ToByte(sAlarm->AlarmTime.Minutes)));
     assert_param(IS_RTC_SECONDS(RTC_Bcd2ToByte(sAlarm->AlarmTime.Seconds)));
 
-    if(sAlarm->AlarmDateWeekDaySel == RTC_ALARMDATEWEEKDAYSEL_DATE)
+    if (sAlarm->AlarmDateWeekDaySel == RTC_ALARMDATEWEEKDAYSEL_DATE)
     {
       assert_param(IS_RTC_ALARM_DATE_WEEKDAY_DATE(RTC_Bcd2ToByte(sAlarm->AlarmDateWeekDay)));
     }
@@ -1153,37 +1090,41 @@
       assert_param(IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(RTC_Bcd2ToByte(sAlarm->AlarmDateWeekDay)));
     }
 
-    tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours) << 16) | \
-              ((uint32_t)(sAlarm->AlarmTime.Minutes) << 8) | \
-              ((uint32_t) sAlarm->AlarmTime.Seconds) | \
-              ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << 16) | \
-              ((uint32_t)(sAlarm->AlarmDateWeekDay) << 24) | \
-              ((uint32_t)sAlarm->AlarmDateWeekDaySel) | \
-              ((uint32_t)sAlarm->AlarmMask));
+    tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours)      << RTC_ALRMAR_HU_Pos)  | \
+              ((uint32_t)(sAlarm->AlarmTime.Minutes)    << RTC_ALRMAR_MNU_Pos) | \
+              ((uint32_t) sAlarm->AlarmTime.Seconds)                           | \
+              ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << RTC_TR_PM_Pos)      | \
+              ((uint32_t)(sAlarm->AlarmDateWeekDay)     << RTC_ALRMAR_DU_Pos)  | \
+              ((uint32_t) sAlarm->AlarmDateWeekDaySel)                         | \
+              ((uint32_t) sAlarm->AlarmMask));
   }
 
-  /* Configure the Alarm A or Alarm B Sub Second registers */
-  subsecondtmpreg = (uint32_t)((uint32_t)(sAlarm->AlarmTime.SubSeconds) | (uint32_t)(sAlarm->AlarmSubSecondMask));
+  /* Store the Alarm subseconds configuration */
+  subsecondtmpreg = (uint32_t)((uint32_t)(sAlarm->AlarmTime.SubSeconds) | \
+                               (uint32_t)(sAlarm->AlarmSubSecondMask));
 
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
   /* Configure the Alarm register */
-  if(sAlarm->Alarm == RTC_ALARM_A)
+  if (sAlarm->Alarm == RTC_ALARM_A)
   {
-    /* Disable the Alarm A interrupt */
+    /* Disable the Alarm A */
     __HAL_RTC_ALARMA_DISABLE(hrtc);
 
-    /* In case of interrupt mode is used, the interrupt source must disabled */
+    /* In case interrupt mode is used, the interrupt source must be disabled */
     __HAL_RTC_ALARM_DISABLE_IT(hrtc, RTC_IT_ALRA);
 
+    /* Clear the Alarm flag */
+    __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
+
     /* Get tick */
     tickstart = HAL_GetTick();
 
-    /* Wait till RTC ALRAWF flag is set and if Time out is reached exit */
-    while(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAWF) == RESET)
+    /* Wait till RTC ALRAWF flag is set and if timeout is reached exit */
+    while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAWF) == 0U)
     {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
+      if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
       {
         /* Enable the write protection for RTC registers */
         __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1198,26 +1139,29 @@
     }
 
     hrtc->Instance->ALRMAR = (uint32_t)tmpreg;
-    /* Configure the Alarm A Sub Second register */
+    /* Configure the Alarm A Subseconds register */
     hrtc->Instance->ALRMASSR = subsecondtmpreg;
     /* Configure the Alarm state: Enable Alarm */
     __HAL_RTC_ALARMA_ENABLE(hrtc);
   }
   else
   {
-    /* Disable the Alarm B interrupt */
+    /* Disable the Alarm B */
     __HAL_RTC_ALARMB_DISABLE(hrtc);
 
-    /* In case of interrupt mode is used, the interrupt source must disabled */
+    /* In case interrupt mode is used, the interrupt source must be disabled */
     __HAL_RTC_ALARM_DISABLE_IT(hrtc, RTC_IT_ALRB);
 
+    /* Clear the Alarm flag */
+    __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRBF);
+
     /* Get tick */
     tickstart = HAL_GetTick();
 
-    /* Wait till RTC ALRBWF flag is set and if Time out is reached exit */
-    while(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBWF) == RESET)
+    /* Wait till RTC ALRBWF flag is set and if timeout is reached exit */
+    while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBWF) == 0U)
     {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
+      if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
       {
         /* Enable the write protection for RTC registers */
         __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1232,7 +1176,7 @@
     }
 
     hrtc->Instance->ALRMBR = (uint32_t)tmpreg;
-    /* Configure the Alarm B Sub Second register */
+    /* Configure the Alarm B Subseconds register */
     hrtc->Instance->ALRMBSSR = subsecondtmpreg;
     /* Configure the Alarm state: Enable Alarm */
     __HAL_RTC_ALARMB_ENABLE(hrtc);
@@ -1241,7 +1185,7 @@
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 
-  /* Change RTC state */
+  /* Change RTC state back to READY */
   hrtc->State = HAL_RTC_STATE_READY;
 
   /* Process Unlocked */
@@ -1251,14 +1195,14 @@
 }
 
 /**
-  * @brief  Sets the specified RTC Alarm with Interrupt
+  * @brief  Sets the specified RTC Alarm with Interrupt.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  sAlarm Pointer to Alarm structure
   * @param  Format Specifies the format of the entered parameters.
   *          This parameter can be one of the following values:
-  *             @arg FORMAT_BIN: Binary data format
-  *             @arg FORMAT_BCD: BCD data format
+  *             @arg RTC_FORMAT_BIN: Binary data format
+  *             @arg RTC_FORMAT_BCD: BCD data format
   * @note   The Alarm register can only be written when the corresponding Alarm
   *         is disabled (Use the HAL_RTC_DeactivateAlarm()).
   * @note   The HAL_RTC_SetTime() must be called before enabling the Alarm feature.
@@ -1266,8 +1210,9 @@
   */
 HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format)
 {
-  uint32_t tmpreg = 0U, subsecondtmpreg = 0U;
-  __IO uint32_t count = RTC_TIMEOUT_VALUE  * (SystemCoreClock / 32U / 1000U) ;
+  __IO uint32_t count  = RTC_TIMEOUT_VALUE * (SystemCoreClock / 32U / 1000U);
+       uint32_t tmpreg = 0U;
+       uint32_t subsecondtmpreg = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_FORMAT(Format));
@@ -1280,11 +1225,14 @@
   /* Process Locked */
   __HAL_LOCK(hrtc);
 
+  /* Change RTC state to BUSY */
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-  if(Format == RTC_FORMAT_BIN)
+  /* Check the data format (binary or BCD) and store the Alarm time and date
+     configuration accordingly */
+  if (Format == RTC_FORMAT_BIN)
   {
-    if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
+    if ((hrtc->Instance->CR & RTC_CR_FMT) != 0U)
     {
       assert_param(IS_RTC_HOUR12(sAlarm->AlarmTime.Hours));
       assert_param(IS_RTC_HOURFORMAT12(sAlarm->AlarmTime.TimeFormat));
@@ -1297,7 +1245,7 @@
     assert_param(IS_RTC_MINUTES(sAlarm->AlarmTime.Minutes));
     assert_param(IS_RTC_SECONDS(sAlarm->AlarmTime.Seconds));
 
-    if(sAlarm->AlarmDateWeekDaySel == RTC_ALARMDATEWEEKDAYSEL_DATE)
+    if (sAlarm->AlarmDateWeekDaySel == RTC_ALARMDATEWEEKDAYSEL_DATE)
     {
       assert_param(IS_RTC_ALARM_DATE_WEEKDAY_DATE(sAlarm->AlarmDateWeekDay));
     }
@@ -1305,17 +1253,18 @@
     {
       assert_param(IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(sAlarm->AlarmDateWeekDay));
     }
-    tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours) << 16U) | \
-              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Minutes) << 8U) | \
-              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Seconds)) | \
-              ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << 16U) | \
-              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmDateWeekDay) << 24U) | \
-              ((uint32_t)sAlarm->AlarmDateWeekDaySel) | \
+
+    tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours)   << RTC_ALRMAR_HU_Pos)  | \
+              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Minutes) << RTC_ALRMAR_MNU_Pos) | \
+              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Seconds))                       | \
+              ((uint32_t)(sAlarm->AlarmTime.TimeFormat)            << RTC_TR_PM_Pos)      | \
+              ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmDateWeekDay)  << RTC_ALRMAR_DU_Pos)  | \
+              ((uint32_t)sAlarm->AlarmDateWeekDaySel)                                     | \
               ((uint32_t)sAlarm->AlarmMask));
   }
   else
   {
-    if((hrtc->Instance->CR & RTC_CR_FMT) != (uint32_t)RESET)
+    if ((hrtc->Instance->CR & RTC_CR_FMT) != 0U)
     {
       assert_param(IS_RTC_HOUR12(RTC_Bcd2ToByte(sAlarm->AlarmTime.Hours)));
       assert_param(IS_RTC_HOURFORMAT12(sAlarm->AlarmTime.TimeFormat));
@@ -1329,7 +1278,7 @@
     assert_param(IS_RTC_MINUTES(RTC_Bcd2ToByte(sAlarm->AlarmTime.Minutes)));
     assert_param(IS_RTC_SECONDS(RTC_Bcd2ToByte(sAlarm->AlarmTime.Seconds)));
 
-    if(sAlarm->AlarmDateWeekDaySel == RTC_ALARMDATEWEEKDAYSEL_DATE)
+    if (sAlarm->AlarmDateWeekDaySel == RTC_ALARMDATEWEEKDAYSEL_DATE)
     {
       assert_param(IS_RTC_ALARM_DATE_WEEKDAY_DATE(RTC_Bcd2ToByte(sAlarm->AlarmDateWeekDay)));
     }
@@ -1337,30 +1286,33 @@
     {
       assert_param(IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(RTC_Bcd2ToByte(sAlarm->AlarmDateWeekDay)));
     }
-    tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours) << 16U) | \
-              ((uint32_t)(sAlarm->AlarmTime.Minutes) << 8U) | \
-              ((uint32_t) sAlarm->AlarmTime.Seconds) | \
-              ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << 16U) | \
-              ((uint32_t)(sAlarm->AlarmDateWeekDay) << 24U) | \
-              ((uint32_t)sAlarm->AlarmDateWeekDaySel) | \
-              ((uint32_t)sAlarm->AlarmMask));
+
+    tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours)      << RTC_ALRMAR_HU_Pos)  | \
+              ((uint32_t)(sAlarm->AlarmTime.Minutes)    << RTC_ALRMAR_MNU_Pos) | \
+              ((uint32_t) sAlarm->AlarmTime.Seconds)                           | \
+              ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << RTC_TR_PM_Pos)      | \
+              ((uint32_t)(sAlarm->AlarmDateWeekDay)     << RTC_ALRMAR_DU_Pos)  | \
+              ((uint32_t) sAlarm->AlarmDateWeekDaySel)                         | \
+              ((uint32_t) sAlarm->AlarmMask));
   }
-  /* Configure the Alarm A or Alarm B Sub Second registers */
-  subsecondtmpreg = (uint32_t)((uint32_t)(sAlarm->AlarmTime.SubSeconds) | (uint32_t)(sAlarm->AlarmSubSecondMask));
+
+  /* Store the Alarm subseconds configuration */
+  subsecondtmpreg = (uint32_t)((uint32_t)(sAlarm->AlarmTime.SubSeconds) | \
+                               (uint32_t)(sAlarm->AlarmSubSecondMask));
 
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
   /* Configure the Alarm register */
-  if(sAlarm->Alarm == RTC_ALARM_A)
+  if (sAlarm->Alarm == RTC_ALARM_A)
   {
-    /* Disable the Alarm A interrupt */
+    /* Disable the Alarm A */
     __HAL_RTC_ALARMA_DISABLE(hrtc);
 
-    /* Clear flag alarm A */
+    /* Clear the Alarm flag */
     __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
 
-    /* Wait till RTC ALRAWF flag is set and if Time out is reached exit */
+    /* Wait till RTC ALRAWF flag is set and if timeout is reached exit */
     do
     {
       if (count-- == 0U)
@@ -1375,26 +1327,28 @@
 
         return HAL_TIMEOUT;
       }
-    }
-    while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAWF) == RESET);
+    } while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAWF) == 0U);
 
     hrtc->Instance->ALRMAR = (uint32_t)tmpreg;
-    /* Configure the Alarm A Sub Second register */
+    /* Configure the Alarm A Subseconds register */
     hrtc->Instance->ALRMASSR = subsecondtmpreg;
     /* Configure the Alarm state: Enable Alarm */
     __HAL_RTC_ALARMA_ENABLE(hrtc);
     /* Configure the Alarm interrupt */
-    __HAL_RTC_ALARM_ENABLE_IT(hrtc,RTC_IT_ALRA);
+    __HAL_RTC_ALARM_ENABLE_IT(hrtc, RTC_IT_ALRA);
   }
   else
   {
-    /* Disable the Alarm B interrupt */
+    /* Disable the Alarm B */
     __HAL_RTC_ALARMB_DISABLE(hrtc);
 
-    /* Clear flag alarm B */
+    /* Clear the Alarm flag */
     __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRBF);
 
-    /* Wait till RTC ALRBWF flag is set and if Time out is reached exit */
+    /* Reload the counter */
+    count = RTC_TIMEOUT_VALUE * (SystemCoreClock / 32U / 1000U);
+
+    /* Wait till RTC ALRBWF flag is set and if timeout is reached exit */
     do
     {
       if (count-- == 0U)
@@ -1409,11 +1363,10 @@
 
         return HAL_TIMEOUT;
       }
-    }
-    while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBWF) == RESET);
+    } while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBWF) == 0U);
 
     hrtc->Instance->ALRMBR = (uint32_t)tmpreg;
-    /* Configure the Alarm B Sub Second register */
+    /* Configure the Alarm B Subseconds register */
     hrtc->Instance->ALRMBSSR = subsecondtmpreg;
     /* Configure the Alarm state: Enable Alarm */
     __HAL_RTC_ALARMB_ENABLE(hrtc);
@@ -1423,12 +1376,12 @@
 
   /* RTC Alarm Interrupt Configuration: EXTI configuration */
   __HAL_RTC_ALARM_EXTI_ENABLE_IT();
-
-  EXTI->RTSR |= RTC_EXTI_LINE_ALARM_EVENT;
+  __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE();
 
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 
+  /* Change RTC state back to READY */
   hrtc->State = HAL_RTC_STATE_READY;
 
   /* Process Unlocked */
@@ -1438,18 +1391,18 @@
 }
 
 /**
-  * @brief  Deactivate the specified RTC Alarm
+  * @brief  Deactivates the specified RTC Alarm.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  Alarm Specifies the Alarm.
   *          This parameter can be one of the following values:
-  *            @arg RTC_ALARM_A:  AlarmA
-  *            @arg RTC_ALARM_B:  AlarmB
+  *            @arg RTC_ALARM_A: Alarm A
+  *            @arg RTC_ALARM_B: Alarm B
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_ALARM(Alarm));
@@ -1462,21 +1415,21 @@
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  if(Alarm == RTC_ALARM_A)
+  if (Alarm == RTC_ALARM_A)
   {
-    /* AlarmA */
+    /* Disable Alarm A */
     __HAL_RTC_ALARMA_DISABLE(hrtc);
 
-    /* In case of interrupt mode is used, the interrupt source must disabled */
+    /* In case interrupt mode is used, the interrupt source must be disabled */
     __HAL_RTC_ALARM_DISABLE_IT(hrtc, RTC_IT_ALRA);
 
     /* Get tick */
     tickstart = HAL_GetTick();
 
-    /* Wait till RTC ALRxWF flag is set and if Time out is reached exit */
-    while(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAWF) == RESET)
+    /* Wait till RTC ALRxWF flag is set and if timeout is reached exit */
+    while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAWF) == 0U)
     {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
+      if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
       {
         /* Enable the write protection for RTC registers */
         __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1492,19 +1445,19 @@
   }
   else
   {
-    /* AlarmB */
+    /* Disable Alarm B */
     __HAL_RTC_ALARMB_DISABLE(hrtc);
 
-    /* In case of interrupt mode is used, the interrupt source must disabled */
-    __HAL_RTC_ALARM_DISABLE_IT(hrtc,RTC_IT_ALRB);
+    /* In case interrupt mode is used, the interrupt source must be disabled */
+    __HAL_RTC_ALARM_DISABLE_IT(hrtc, RTC_IT_ALRB);
 
     /* Get tick */
     tickstart = HAL_GetTick();
 
-    /* Wait till RTC ALRxWF flag is set and if Time out is reached exit */
-    while(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBWF) == RESET)
+    /* Wait till RTC ALRxWF flag is set and if timeout is reached exit */
+    while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBWF) == 0U)
     {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
+      if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
       {
         /* Enable the write protection for RTC registers */
         __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1518,6 +1471,7 @@
       }
     }
   }
+
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 
@@ -1536,8 +1490,8 @@
   * @param  sAlarm Pointer to Date structure
   * @param  Alarm Specifies the Alarm.
   *          This parameter can be one of the following values:
-  *             @arg RTC_ALARM_A: AlarmA
-  *             @arg RTC_ALARM_B: AlarmB
+  *            @arg RTC_ALARM_A: Alarm A
+  *            @arg RTC_ALARM_B: Alarm B
   * @param  Format Specifies the format of the entered parameters.
   *          This parameter can be one of the following values:
   *             @arg RTC_FORMAT_BIN: Binary data format
@@ -1546,19 +1500,19 @@
   */
 HAL_StatusTypeDef HAL_RTC_GetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format)
 {
-  uint32_t tmpreg = 0, subsecondtmpreg = 0;
+  uint32_t tmpreg = 0U;
+  uint32_t subsecondtmpreg = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_FORMAT(Format));
   assert_param(IS_RTC_ALARM(Alarm));
 
-  if(Alarm == RTC_ALARM_A)
+  if (Alarm == RTC_ALARM_A)
   {
-    /* AlarmA */
     sAlarm->Alarm = RTC_ALARM_A;
 
     tmpreg = (uint32_t)(hrtc->Instance->ALRMAR);
-    subsecondtmpreg = (uint32_t)((hrtc->Instance->ALRMASSR ) & RTC_ALRMASSR_SS);
+    subsecondtmpreg = (uint32_t)((hrtc->Instance->ALRMASSR) & RTC_ALRMASSR_SS);
   }
   else
   {
@@ -1569,73 +1523,73 @@
   }
 
   /* Fill the structure with the read parameters */
-  sAlarm->AlarmTime.Hours = (uint32_t)((tmpreg & (RTC_ALRMAR_HT | RTC_ALRMAR_HU)) >> 16);
-  sAlarm->AlarmTime.Minutes = (uint32_t)((tmpreg & (RTC_ALRMAR_MNT | RTC_ALRMAR_MNU)) >> 8);
-  sAlarm->AlarmTime.Seconds = (uint32_t)(tmpreg & (RTC_ALRMAR_ST | RTC_ALRMAR_SU));
-  sAlarm->AlarmTime.TimeFormat = (uint32_t)((tmpreg & RTC_ALRMAR_PM) >> 16);
+  sAlarm->AlarmTime.Hours      = (uint8_t) ((tmpreg & (RTC_ALRMAR_HT  | RTC_ALRMAR_HU))  >> RTC_ALRMAR_HU_Pos);
+  sAlarm->AlarmTime.Minutes    = (uint8_t) ((tmpreg & (RTC_ALRMAR_MNT | RTC_ALRMAR_MNU)) >> RTC_ALRMAR_MNU_Pos);
+  sAlarm->AlarmTime.Seconds    = (uint8_t) ( tmpreg & (RTC_ALRMAR_ST  | RTC_ALRMAR_SU));
+  sAlarm->AlarmTime.TimeFormat = (uint8_t) ((tmpreg & RTC_ALRMAR_PM)                     >> RTC_TR_PM_Pos);
   sAlarm->AlarmTime.SubSeconds = (uint32_t) subsecondtmpreg;
-  sAlarm->AlarmDateWeekDay = (uint32_t)((tmpreg & (RTC_ALRMAR_DT | RTC_ALRMAR_DU)) >> 24);
-  sAlarm->AlarmDateWeekDaySel = (uint32_t)(tmpreg & RTC_ALRMAR_WDSEL);
-  sAlarm->AlarmMask = (uint32_t)(tmpreg & RTC_ALARMMASK_ALL);
+  sAlarm->AlarmDateWeekDay     = (uint8_t) ((tmpreg & (RTC_ALRMAR_DT  | RTC_ALRMAR_DU))  >> RTC_ALRMAR_DU_Pos);
+  sAlarm->AlarmDateWeekDaySel  = (uint32_t) (tmpreg & RTC_ALRMAR_WDSEL);
+  sAlarm->AlarmMask            = (uint32_t) (tmpreg & RTC_ALARMMASK_ALL);
 
-  if(Format == RTC_FORMAT_BIN)
+  if (Format == RTC_FORMAT_BIN)
   {
-    sAlarm->AlarmTime.Hours = RTC_Bcd2ToByte(sAlarm->AlarmTime.Hours);
+    sAlarm->AlarmTime.Hours   = RTC_Bcd2ToByte(sAlarm->AlarmTime.Hours);
     sAlarm->AlarmTime.Minutes = RTC_Bcd2ToByte(sAlarm->AlarmTime.Minutes);
     sAlarm->AlarmTime.Seconds = RTC_Bcd2ToByte(sAlarm->AlarmTime.Seconds);
-    sAlarm->AlarmDateWeekDay = RTC_Bcd2ToByte(sAlarm->AlarmDateWeekDay);
+    sAlarm->AlarmDateWeekDay  = RTC_Bcd2ToByte(sAlarm->AlarmDateWeekDay);
   }
 
   return HAL_OK;
 }
 
 /**
-  * @brief  This function handles Alarm interrupt request.
+  * @brief  Handles Alarm interrupt request.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval None
   */
-void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef* hrtc)
+void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc)
 {
-  /* Get the AlarmA interrupt source enable status */
-  if(__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRA) != (uint32_t)RESET)
-  {
-    /* Get the pending status of the AlarmA Interrupt */
-    if(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAF) != (uint32_t)RESET)
-    {
-      /* AlarmA callback */
-    #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
-      hrtc->AlarmAEventCallback(hrtc);
-    #else
-      HAL_RTC_AlarmAEventCallback(hrtc);
-    #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
-
-      /* Clear the AlarmA interrupt pending bit */
-      __HAL_RTC_ALARM_CLEAR_FLAG(hrtc,RTC_FLAG_ALRAF);
-    }
-  }
-
-  /* Get the AlarmB interrupt source enable status */
-  if(__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRB) != (uint32_t)RESET)
-  {
-    /* Get the pending status of the AlarmB Interrupt */
-    if(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBF) != (uint32_t)RESET)
-    {
-      /* AlarmB callback */
-    #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
-      hrtc->AlarmBEventCallback(hrtc);
-    #else
-      HAL_RTCEx_AlarmBEventCallback(hrtc);
-    #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
-
-      /* Clear the AlarmB interrupt pending bit */
-      __HAL_RTC_ALARM_CLEAR_FLAG(hrtc,RTC_FLAG_ALRBF);
-    }
-  }
-
   /* Clear the EXTI's line Flag for RTC Alarm */
   __HAL_RTC_ALARM_EXTI_CLEAR_FLAG();
 
+  /* Get the Alarm A interrupt source enable status */
+  if (__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRA) != 0U)
+  {
+    /* Get the pending status of the Alarm A Interrupt */
+    if (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAF) != 0U)
+    {
+      /* Clear the Alarm A interrupt pending bit */
+      __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
+
+      /* Alarm A callback */
+#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
+      hrtc->AlarmAEventCallback(hrtc);
+#else
+      HAL_RTC_AlarmAEventCallback(hrtc);
+#endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
+    }
+  }
+
+  /* Get the Alarm B interrupt source enable status */
+  if (__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRB) != 0U)
+  {
+    /* Get the pending status of the Alarm B Interrupt */
+    if (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBF) != 0U)
+    {
+      /* Clear the Alarm B interrupt pending bit */
+      __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRBF);
+
+      /* Alarm B callback */
+#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
+      hrtc->AlarmBEventCallback(hrtc);
+#else
+      HAL_RTCEx_AlarmBEventCallback(hrtc);
+#endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
+    }
+  }
+
   /* Change RTC state */
   hrtc->State = HAL_RTC_STATE_READY;
 }
@@ -1651,13 +1605,13 @@
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function should not be modified, when the callback is needed,
-            the HAL_RTC_AlarmAEventCallback could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTC_AlarmAEventCallback could be implemented in the user file
    */
 }
 
 /**
-  * @brief  This function handles AlarmA Polling request.
+  * @brief  Handles Alarm A Polling request.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  Timeout Timeout duration
@@ -1665,16 +1619,17 @@
   */
 HAL_StatusTypeDef HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
-    /* Get tick */
-    tickstart = HAL_GetTick();
+  /* Get tick */
+  tickstart = HAL_GetTick();
 
-  while(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAF) == RESET)
+  /* Wait till RTC ALRAF flag is set and if timeout is reached exit */
+  while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAF) == 0U)
   {
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
+      if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout))
       {
         hrtc->State = HAL_RTC_STATE_TIMEOUT;
         return HAL_TIMEOUT;
@@ -1682,7 +1637,7 @@
     }
   }
 
-  /* Clear the Alarm interrupt pending bit */
+  /* Clear the Alarm flag */
   __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
 
   /* Change RTC state */
@@ -1695,9 +1650,9 @@
   * @}
   */
 
-/** @defgroup RTC_Group4 Peripheral Control functions
- *  @brief   Peripheral Control functions
- *
+/** @defgroup RTC_Exported_Functions_Group4 Peripheral Control functions
+  * @brief    Peripheral Control functions
+  *
 @verbatim
  ===============================================================================
                      ##### Peripheral Control functions #####
@@ -1705,6 +1660,7 @@
     [..]
     This subsection provides functions allowing to
       (+) Wait for RTC Time and Date Synchronization
+      (+) Manage RTC Summer or Winter time change
 
 @endverbatim
   * @{
@@ -1716,7 +1672,7 @@
   * @note   The RTC Resynchronization mode is write protected, use the
   *         __HAL_RTC_WRITEPROTECTION_DISABLE() before calling this function.
   * @note   To read the calendar through the shadow registers after Calendar
-  *         initialization, calendar update or after wake-up from low power modes
+  *         initialization, calendar update or after wakeup from low power modes
   *         the software must first clear the RSF flag.
   *         The software must then wait until it is set again before reading
   *         the calendar, which means that the calendar registers have been
@@ -1725,20 +1681,20 @@
   *                the configuration information for RTC.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef* hrtc)
+HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef *hrtc)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Clear RSF flag */
   hrtc->Instance->ISR &= (uint32_t)RTC_RSF_MASK;
 
-    /* Get tick */
-    tickstart = HAL_GetTick();
+  /* Get tick */
+  tickstart = HAL_GetTick();
 
   /* Wait the registers to be synchronised */
-  while((hrtc->Instance->ISR & RTC_ISR_RSF) == (uint32_t)RESET)
+  while ((hrtc->Instance->ISR & RTC_ISR_RSF) == 0U)
   {
-    if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
+    if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
     {
       return HAL_TIMEOUT;
     }
@@ -1748,12 +1704,77 @@
 }
 
 /**
+  * @brief  Daylight Saving Time, adds one hour to the calendar in one
+  *         single operation without going through the initialization procedure.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
+  * @retval None
+  */
+void HAL_RTC_DST_Add1Hour(RTC_HandleTypeDef *hrtc)
+{
+  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
+  SET_BIT(hrtc->Instance->CR, RTC_CR_ADD1H);
+  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+}
+
+/**
+  * @brief  Daylight Saving Time, subtracts one hour from the calendar in one
+  *         single operation without going through the initialization procedure.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
+  * @retval None
+  */
+void HAL_RTC_DST_Sub1Hour(RTC_HandleTypeDef *hrtc)
+{
+  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
+  SET_BIT(hrtc->Instance->CR, RTC_CR_SUB1H);
+  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+}
+
+/**
+  * @brief  Daylight Saving Time, sets the store operation bit.
+  * @note   It can be used by the software in order to memorize the DST status.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
+  * @retval None
+  */
+void HAL_RTC_DST_SetStoreOperation(RTC_HandleTypeDef *hrtc)
+{
+  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
+  SET_BIT(hrtc->Instance->CR, RTC_CR_BKP);
+  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+}
+
+/**
+  * @brief  Daylight Saving Time, clears the store operation bit.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
+  * @retval None
+  */
+void HAL_RTC_DST_ClearStoreOperation(RTC_HandleTypeDef *hrtc)
+{
+  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
+  CLEAR_BIT(hrtc->Instance->CR, RTC_CR_BKP);
+  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+}
+
+/**
+  * @brief  Daylight Saving Time, reads the store operation bit.
+  * @param  hrtc RTC handle
+  * @retval operation see RTC_StoreOperation_Definitions
+  */
+uint32_t HAL_RTC_DST_ReadStoreOperation(RTC_HandleTypeDef *hrtc)
+{
+  return READ_BIT(hrtc->Instance->CR, RTC_CR_BKP);
+}
+
+/**
   * @}
   */
 
-/** @defgroup RTC_Group5 Peripheral State functions
- *  @brief   Peripheral State functions
- *
+/** @defgroup RTC_Exported_Functions_Group5 Peripheral State functions
+  * @brief    Peripheral State functions
+  *
 @verbatim
  ===============================================================================
                      ##### Peripheral State functions #####
@@ -1771,76 +1792,24 @@
   *                the configuration information for RTC.
   * @retval HAL state
   */
-HAL_RTCStateTypeDef HAL_RTC_GetState(RTC_HandleTypeDef* hrtc)
+HAL_RTCStateTypeDef HAL_RTC_GetState(RTC_HandleTypeDef *hrtc)
 {
   return hrtc->State;
 }
 
 /**
-  * @brief  Daylight Saving Time, Add one hour to the calendar in one single operation
-  *         without going through the initialization procedure.
-  * @param  hrtc RTC handle
-  * @retval None
+  * @}
   */
-void HAL_RTC_DST_Add1Hour(RTC_HandleTypeDef *hrtc)
-{
-  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-  SET_BIT(hrtc->Instance->CR, RTC_CR_ADD1H);
-  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-}
 
-/**
-  * @brief  Daylight Saving Time, Subtract one hour from the calendar in one
-  *         single operation without going through the initialization procedure.
-  * @param  hrtc RTC handle
-  * @retval None
-  */
-void HAL_RTC_DST_Sub1Hour(RTC_HandleTypeDef *hrtc)
-{
-  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-  SET_BIT(hrtc->Instance->CR, RTC_CR_SUB1H);
-  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-}
-
-/**
-  * @brief  Daylight Saving Time, Set the store operation bit.
-  * @note   It can be used by the software in order to memorize the DST status.
-  * @param  hrtc RTC handle
-  * @retval None
-  */
-void HAL_RTC_DST_SetStoreOperation(RTC_HandleTypeDef *hrtc)
-{
-  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-  SET_BIT(hrtc->Instance->CR, RTC_CR_BKP);
-  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-}
-
-/**
-  * @brief  Daylight Saving Time, Clear the store operation bit.
-  * @param  hrtc RTC handle
-  * @retval None
-  */
-void HAL_RTC_DST_ClearStoreOperation(RTC_HandleTypeDef *hrtc)
-{
-  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-  CLEAR_BIT(hrtc->Instance->CR, RTC_CR_BKP);
-  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-}
-
-/**
-  * @brief  Daylight Saving Time, Read the store operation bit.
-  * @param  hrtc RTC handle
-  * @retval operation see RTC_StoreOperation_Definitions
-  */
-uint32_t HAL_RTC_DST_ReadStoreOperation(RTC_HandleTypeDef *hrtc)
-{
-  return READ_BIT(hrtc->Instance->CR, RTC_CR_BKP);
-}
 
 /**
   * @}
   */
 
+/** @addtogroup RTC_Private_Functions
+  * @{
+  */
+
 /**
   * @brief  Enters the RTC Initialization mode.
   * @note   The RTC Initialization mode is write protected, use the
@@ -1849,61 +1818,90 @@
   *                the configuration information for RTC.
   * @retval HAL status
   */
-HAL_StatusTypeDef RTC_EnterInitMode(RTC_HandleTypeDef* hrtc)
+HAL_StatusTypeDef RTC_EnterInitMode(RTC_HandleTypeDef *hrtc)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
+  HAL_StatusTypeDef status = HAL_OK;
 
-  /* Check if the Initialization mode is set */
-  if((hrtc->Instance->ISR & RTC_ISR_INITF) == (uint32_t)RESET)
+  /* Check that Initialization mode is not already set */
+  if (READ_BIT(hrtc->Instance->ISR, RTC_ISR_INITF) == 0U)
   {
-    /* Set the Initialization mode */
-    hrtc->Instance->ISR = (uint32_t)RTC_INIT_MASK;
+    /* Set INIT bit to enter Initialization mode */
+    SET_BIT(hrtc->Instance->ISR, RTC_ISR_INIT);
 
     /* Get tick */
     tickstart = HAL_GetTick();
 
-    /* Wait till RTC is in INIT state and if Time out is reached exit */
-    while((hrtc->Instance->ISR & RTC_ISR_INITF) == (uint32_t)RESET)
+    /* Wait till RTC is in INIT state and if timeout is reached exit */
+    while ((READ_BIT(hrtc->Instance->ISR, RTC_ISR_INITF) == 0U) && (status != HAL_ERROR))
     {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
+      if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
       {
-        return HAL_TIMEOUT;
+        /* Set RTC state */
+        hrtc->State = HAL_RTC_STATE_ERROR;
+        status = HAL_ERROR;
       }
     }
   }
 
-  return HAL_OK;
+  return status;
 }
 
-
 /**
-  * @brief  Converts a 2 digit decimal to BCD format.
-  * @param  Value Byte to be converted
-  * @retval Converted byte
+  * @brief  Exits the RTC Initialization mode.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
+  * @retval HAL status
   */
-uint8_t RTC_ByteToBcd2(uint8_t Value)
+HAL_StatusTypeDef RTC_ExitInitMode(RTC_HandleTypeDef *hrtc)
 {
-  uint32_t bcdhigh = 0;
+  HAL_StatusTypeDef status = HAL_OK;
 
-  while(Value >= 10)
+  /* Clear INIT bit to exit Initialization mode */
+  CLEAR_BIT(hrtc->Instance->ISR, RTC_ISR_INIT);
+
+  /* If CR_BYPSHAD bit = 0, wait for synchro */
+  if (READ_BIT(hrtc->Instance->CR, RTC_CR_BYPSHAD) == 0U)
   {
-    bcdhigh++;
-    Value -= 10;
+    if (HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
+    {
+      /* Set RTC state */
+      hrtc->State = HAL_RTC_STATE_ERROR;
+      status = HAL_ERROR;
+    }
   }
 
-  return  ((uint8_t)(bcdhigh << 4) | Value);
+  return status;
 }
 
 /**
-  * @brief  Converts from 2 digit BCD to Binary.
-  * @param  Value BCD value to be converted
+  * @brief  Converts a 2-digit number from decimal to BCD format.
+  * @param  number decimal-formatted number (from 0 to 99) to be converted
+  * @retval Converted byte
+  */
+uint8_t RTC_ByteToBcd2(uint8_t number)
+{
+  uint32_t bcdhigh = 0U;
+
+  while (number >= 10U)
+  {
+    bcdhigh++;
+    number -= 10U;
+  }
+
+  return ((uint8_t)(bcdhigh << 4U) | number);
+}
+
+/**
+  * @brief  Converts a 2-digit number from BCD to decimal format.
+  * @param  number BCD-formatted number (from 00 to 99) to be converted
   * @retval Converted word
   */
-uint8_t RTC_Bcd2ToByte(uint8_t Value)
+uint8_t RTC_Bcd2ToByte(uint8_t number)
 {
-  uint32_t tmp = 0;
-  tmp = ((uint8_t)(Value & (uint8_t)0xF0) >> (uint8_t)0x4) * 10;
-  return (tmp + (Value & (uint8_t)0x0F));
+  uint32_t tens = 0U;
+  tens = (((uint32_t)number & 0xF0U) >> 4U) * 10U;
+  return (uint8_t)(tens + ((uint32_t)number & 0x0FU));
 }
 
 /**
@@ -1918,4 +1916,3 @@
 /**
   * @}
   */
-
diff --git a/Src/stm32f7xx_hal_rtc_ex.c b/Src/stm32f7xx_hal_rtc_ex.c
index 9213fab..fa4e766 100644
--- a/Src/stm32f7xx_hal_rtc_ex.c
+++ b/Src/stm32f7xx_hal_rtc_ex.c
@@ -2,14 +2,14 @@
   ******************************************************************************
   * @file    stm32f7xx_hal_rtc_ex.c
   * @author  MCD Application Team
-  * @brief   RTC HAL module driver.
+  * @brief   Extended RTC HAL module driver.
   *          This file provides firmware functions to manage the following
-  *          functionalities of the Real Time Clock (RTC) Extension peripheral:
-  *           + RTC Time Stamp functions
+  *          functionalities of the Real-Time Clock (RTC) Extended peripheral:
+  *           + RTC Timestamp functions
   *           + RTC Tamper functions
-  *           + RTC Wake-up functions
-  *           + Extension Control functions
-  *           + Extension RTC features functions
+  *           + RTC Wakeup functions
+  *           + Extended Control functions
+  *           + Extended RTC features functions
   *
   ******************************************************************************
   * @attention
@@ -24,7 +24,7 @@
   ******************************************************************************
   @verbatim
   ==============================================================================
-                  ##### How to use this driver #####
+                        ##### How to use this driver #####
   ==============================================================================
   [..]
     (+) Enable the RTC domain access.
@@ -34,48 +34,75 @@
   *** RTC Wakeup configuration ***
   ================================
   [..]
-    (+) To configure the RTC Wakeup Clock source and Counter use the HAL_RTC_SetWakeUpTimer()
-        function. You can also configure the RTC Wakeup timer in interrupt mode
-        using the HAL_RTC_SetWakeUpTimer_IT() function.
-    (+) To read the RTC WakeUp Counter register, use the HAL_RTC_GetWakeUpTimer()
+    (+) To configure the RTC Wakeup Clock source and Counter use the
+        HAL_RTCEx_SetWakeUpTimer() function.
+        You can also configure the RTC Wakeup timer in interrupt mode using the
+        HAL_RTCEx_SetWakeUpTimer_IT() function.
+    (+) To read the RTC Wakeup Counter register, use the HAL_RTCEx_GetWakeUpTimer()
         function.
 
-  *** TimeStamp configuration ***
+  *** Timestamp configuration ***
   ===============================
   [..]
-    (+) Enables the RTC TimeStamp using the HAL_RTC_SetTimeStamp() function.
-        You can also configure the RTC TimeStamp with interrupt mode using the
-        HAL_RTC_SetTimeStamp_IT() function.
-    (+) To read the RTC TimeStamp Time and Date register, use the HAL_RTC_GetTimeStamp()
-        function.
+    (+) To configure the RTC Timestamp use the HAL_RTCEx_SetTimeStamp() function.
+        You can also configure the RTC Timestamp with interrupt mode using the
+        HAL_RTCEx_SetTimeStamp_IT() function.
+    (+) To read the RTC Timestamp Time and Date register, use the
+        HAL_RTCEx_GetTimeStamp() function.
+    (+) The Timestamp alternate function can be mapped either to RTC_AF1 (PC13),
+        RTC_AF2 (PI8), or RTC_AF3 (PC1) depending on the value of TSINSEL field
+        in RTC_OR register.
+        The corresponding pin is also selected by HAL_RTCEx_SetTimeStamp()
+        or HAL_RTCEx_SetTimeStamp_IT() functions.
 
-  *** Internal TimeStamp configuration ***
+  *** Internal Timestamp configuration ***
   ===============================
   [..]
-    (+) Enables the RTC internal TimeStamp using the HAL_RTC_SetInternalTimeStamp() function.
-    (+) To read the RTC TimeStamp Time and Date register, use the HAL_RTC_GetTimeStamp()
+    (+) To Enable the RTC internal Timestamp use the HAL_RTCEx_SetInternalTimeStamp()
+        function.
+    (+) To read the RTC Timestamp Time and Date register, use the HAL_RTCEx_GetTimeStamp()
         function.
 
   *** Tamper configuration ***
   ============================
   [..]
-    (+) Enable the RTC Tamper and Configure the Tamper filter count, trigger Edge
-        or Level according to the Tamper filter (if equal to 0 Edge else Level)
-        value, sampling frequency, NoErase, MaskFlag,  precharge or discharge and
-        Pull-UP using the HAL_RTC_SetTamper() function. You can configure RTC Tamper
-        with interrupt mode using HAL_RTC_SetTamper_IT() function.
-    (+) The default configuration of the Tamper erases the backup registers. To avoid
-        erase, enable the NoErase field on the RTC_TAMPCR register.
+    (+) To Enable the RTC Tamper and configure the Tamper filter count, trigger
+        Edge or Level according to the Tamper filter value (if equal to 0 Edge
+        else Level), sampling frequency, NoErase, MaskFlag, precharge or
+        discharge and Pull-UP use the HAL_RTCEx_SetTamper() function.
+        You can configure RTC Tamper in interrupt mode using HAL_RTCEx_SetTamper_IT()
+        function.
+    (+) The default configuration of the Tamper erases the backup registers.
+        To avoid this, enable the NoErase field on the RTC_TAMPCR register.
+    (+) The TAMPER1 alternate function is mapped to RTC_AF1 (PC13).
+    (+) The TAMPER2 alternate function is mapped to RTC_AF2 (PI8).
+    (+) The TAMPER3 alternate function is mapped to RTC_AF3 (PC1).
 
   *** Backup Data Registers configuration ***
   ===========================================
   [..]
-    (+) To write to the RTC Backup Data registers, use the HAL_RTC_BKUPWrite()
+    (+) To write to the RTC Backup Data registers, use the HAL_RTCEx_BKUPWrite()
         function.
-    (+) To read the RTC Backup Data registers, use the HAL_RTC_BKUPRead()
+    (+) To read the RTC Backup Data registers, use the HAL_RTCEx_BKUPRead()
         function.
 
-   @endverbatim
+  *** Smooth Digital Calibration configuration ***
+  ================================================
+  [..]
+    (+) RTC frequency can be digitally calibrated with a resolution of about
+        0.954 ppm with a range from -487.1 ppm to +488.5 ppm.
+        The correction of the frequency is performed using a series of small
+        adjustments (adding and/or subtracting individual RTCCLK pulses).
+    (+) The smooth digital calibration is performed during a cycle of about 2^20
+        RTCCLK pulses (or 32 seconds) when the input frequency is 32,768 Hz.
+        This cycle is maintained by a 20-bit counter clocked by RTCCLK.
+    (+) The smooth calibration register (RTC_CALR) specifies the number of RTCCLK
+        clock cycles to be masked during the 32-second cycle.
+    (+) The RTC Smooth Digital Calibration value and the corresponding calibration
+        cycle period (32s, 16s, or 8s) can be calibrated using the
+        HAL_RTCEx_SetSmoothCalib() function.
+
+  @endverbatim
   ******************************************************************************
   */
 
@@ -87,7 +114,7 @@
   */
 
 /** @defgroup RTCEx RTCEx
-  * @brief RTC Extended HAL module driver
+  * @brief    RTC Extended HAL module driver
   * @{
   */
 
@@ -104,143 +131,81 @@
   * @{
   */
 
-
-/** @defgroup RTCEx_Group1 RTC TimeStamp and Tamper functions
- *  @brief   RTC TimeStamp and Tamper functions
- *
+/** @defgroup RTCEx_Exported_Functions_Group1 RTC Timestamp and Tamper functions
+  * @brief    RTC Timestamp and Tamper functions
+  *
 @verbatim
  ===============================================================================
-                 ##### RTC TimeStamp and Tamper functions #####
+                 ##### RTC Timestamp and Tamper functions #####
  ===============================================================================
 
- [..] This section provides functions allowing to configure TimeStamp feature
+ [..] This section provides functions allowing to configure Timestamp feature
 
 @endverbatim
   * @{
   */
 
 /**
-  * @brief  Sets TimeStamp.
-  * @note   This API must be called before enabling the TimeStamp feature.
+  * @brief  Sets Timestamp.
+  * @note   This API must be called before enabling the Timestamp feature.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
-  * @param  TimeStampEdge Specifies the pin edge on which the TimeStamp is
+  * @param  RTC_TimeStampEdge Specifies the pin edge on which the Timestamp is
   *         activated.
   *          This parameter can be one of the following values:
-  *             @arg RTC_TIMESTAMPEDGE_RISING: the Time stamp event occurs on the
-  *                                        rising edge of the related pin.
-  *             @arg RTC_TIMESTAMPEDGE_FALLING: the Time stamp event occurs on the
-  *                                         falling edge of the related pin.
-  * @param  RTC_TimeStampPin specifies the RTC TimeStamp Pin.
+  *             @arg RTC_TIMESTAMPEDGE_RISING: the Timestamp event occurs on
+  *                                        the rising edge of the related pin.
+  *             @arg RTC_TIMESTAMPEDGE_FALLING: the Timestamp event occurs on
+  *                                        the falling edge of the related pin.
+  * @param  RTC_TimeStampPin Specifies the RTC Timestamp Pin.
   *          This parameter can be one of the following values:
-  *             @arg RTC_TIMESTAMPPIN_PC13: PC13 is selected as RTC TimeStamp Pin.
-  *             @arg RTC_TIMESTAMPPIN_PI8: PI8 is selected as RTC TimeStamp Pin.
-  *             @arg RTC_TIMESTAMPPIN_PC1: PC1 is selected as RTC TimeStamp Pin.
+  *             @arg RTC_TIMESTAMPPIN_DEFAULT: PC13 is selected as RTC Timestamp Pin.
+  *             @arg RTC_TIMESTAMPPIN_POS1: PI8 is selected as RTC Timestamp Pin.
+  *             @arg RTC_TIMESTAMPPIN_POS2: PC1 is selected as RTC Timestamp Pin.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin)
+HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t RTC_TimeStampEdge, uint32_t RTC_TimeStampPin)
 {
-  uint32_t tmpreg = 0;
+  uint32_t tmpreg = 0U;
 
   /* Check the parameters */
-  assert_param(IS_TIMESTAMP_EDGE(TimeStampEdge));
+  assert_param(IS_TIMESTAMP_EDGE(RTC_TimeStampEdge));
   assert_param(IS_RTC_TIMESTAMP_PIN(RTC_TimeStampPin));
 
   /* Process Locked */
   __HAL_LOCK(hrtc);
 
+  /* Change RTC state to BUSY */
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-  /* Get the RTC_CR register and clear the bits to be configured */
-  tmpreg = (uint32_t)(hrtc->Instance->CR & (uint32_t)~(RTC_CR_TSEDGE | RTC_CR_TSE));
-
-  tmpreg|= TimeStampEdge;
-
-  /* Disable the write protection for RTC registers */
-  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-
   hrtc->Instance->OR &= (uint32_t)~RTC_OR_TSINSEL;
   hrtc->Instance->OR |= (uint32_t)(RTC_TimeStampPin);
 
-  /* Configure the Time Stamp TSEDGE and Enable bits */
-  hrtc->Instance->CR = (uint32_t)tmpreg;
-
-  __HAL_RTC_TIMESTAMP_ENABLE(hrtc);
-
-  /* Enable the write protection for RTC registers */
-  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-  /* Change RTC state */
-  hrtc->State = HAL_RTC_STATE_READY;
-
-  /* Process Unlocked */
-  __HAL_UNLOCK(hrtc);
-
-  return HAL_OK;
-}
-
-/**
-  * @brief  Sets TimeStamp with Interrupt.
-  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
-  *                the configuration information for RTC.
-  * @note   This API must be called before enabling the TimeStamp feature.
-  * @param  TimeStampEdge Specifies the pin edge on which the TimeStamp is
-  *         activated.
-  *          This parameter can be one of the following values:
-  *             @arg RTC_TIMESTAMPEDGE_RISING: the Time stamp event occurs on the
-  *                                        rising edge of the related pin.
-  *             @arg RTC_TIMESTAMPEDGE_FALLING: the Time stamp event occurs on the
-  *                                         falling edge of the related pin.
-  * @param  RTC_TimeStampPin Specifies the RTC TimeStamp Pin.
-  *          This parameter can be one of the following values:
-  *             @arg RTC_TIMESTAMPPIN_PC13: PC13 is selected as RTC TimeStamp Pin.
-  *             @arg RTC_TIMESTAMPPIN_PI8: PI8 is selected as RTC TimeStamp Pin.
-  *             @arg RTC_TIMESTAMPPIN_PC1: PC1 is selected as RTC TimeStamp Pin.
-  * @retval HAL status
-  */
-HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin)
-{
-  uint32_t tmpreg = 0;
-
-  /* Check the parameters */
-  assert_param(IS_TIMESTAMP_EDGE(TimeStampEdge));
-  assert_param(IS_RTC_TIMESTAMP_PIN(RTC_TimeStampPin));
-
-  /* Process Locked */
-  __HAL_LOCK(hrtc);
-
-  hrtc->State = HAL_RTC_STATE_BUSY;
-
   /* Get the RTC_CR register and clear the bits to be configured */
   tmpreg = (uint32_t)(hrtc->Instance->CR & (uint32_t)~(RTC_CR_TSEDGE | RTC_CR_TSE));
 
-  tmpreg |= TimeStampEdge;
+  /* Configure the Timestamp TSEDGE bit */
+  tmpreg |= RTC_TimeStampEdge;
 
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  /* Configure the Time Stamp TSEDGE and Enable bits */
+  /* Copy the desired configuration into the CR register */
   hrtc->Instance->CR = (uint32_t)tmpreg;
 
-  hrtc->Instance->OR &= (uint32_t)~RTC_OR_TSINSEL;
-  hrtc->Instance->OR |= (uint32_t)(RTC_TimeStampPin);
-
   /* Clear RTC Timestamp flag */
   __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_TSF);
 
+  /* Clear RTC Timestamp overrun Flag */
+  __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_TSOVF);
+
+  /* Enable the Timestamp saving */
   __HAL_RTC_TIMESTAMP_ENABLE(hrtc);
 
-  /* Enable IT timestamp */
-  __HAL_RTC_TIMESTAMP_ENABLE_IT(hrtc,RTC_IT_TS);
-
-  /* RTC timestamp Interrupt Configuration: EXTI configuration */
-  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT();
-
-  EXTI->RTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT;
-
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 
+  /* Change RTC state back to READY */
   hrtc->State = HAL_RTC_STATE_READY;
 
   /* Process Unlocked */
@@ -250,7 +215,83 @@
 }
 
 /**
-  * @brief  Deactivates TimeStamp.
+  * @brief  Sets Timestamp with Interrupt.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
+  * @note   This API must be called before enabling the Timestamp feature.
+  * @param  RTC_TimeStampEdge Specifies the pin edge on which the Timestamp is
+  *         activated.
+  *          This parameter can be one of the following values:
+  *             @arg RTC_TIMESTAMPEDGE_RISING: the Timestamp event occurs on
+  *                                        the rising edge of the related pin.
+  *             @arg RTC_TIMESTAMPEDGE_FALLING: the Timestamp event occurs on
+  *                                        the falling edge of the related pin.
+  * @param  RTC_TimeStampPin Specifies the RTC Timestamp Pin.
+  *          This parameter can be one of the following values:
+  *             @arg RTC_TIMESTAMPPIN_DEFAULT: PC13 is selected as RTC Timestamp Pin.
+  *             @arg RTC_TIMESTAMPPIN_POS1: PI8 is selected as RTC Timestamp Pin.
+  *             @arg RTC_TIMESTAMPPIN_POS2: PC1 is selected as RTC Timestamp Pin.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t RTC_TimeStampEdge, uint32_t RTC_TimeStampPin)
+{
+  uint32_t tmpreg = 0U;
+
+  /* Check the parameters */
+  assert_param(IS_TIMESTAMP_EDGE(RTC_TimeStampEdge));
+  assert_param(IS_RTC_TIMESTAMP_PIN(RTC_TimeStampPin));
+
+  /* Process Locked */
+  __HAL_LOCK(hrtc);
+
+  /* Change RTC state to BUSY */
+  hrtc->State = HAL_RTC_STATE_BUSY;
+
+  hrtc->Instance->OR &= (uint32_t)~RTC_OR_TSINSEL;
+  hrtc->Instance->OR |= (uint32_t)(RTC_TimeStampPin);
+
+  /* Get the RTC_CR register and clear the bits to be configured */
+  tmpreg = (uint32_t)(hrtc->Instance->CR & (uint32_t)~(RTC_CR_TSEDGE | RTC_CR_TSE));
+
+  /* Configure the Timestamp TSEDGE bit */
+  tmpreg |= RTC_TimeStampEdge;
+
+  /* Disable the write protection for RTC registers */
+  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
+
+  /* Copy the desired configuration into the CR register */
+  hrtc->Instance->CR = (uint32_t)tmpreg;
+
+  /* Clear RTC Timestamp flag */
+  __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_TSF);
+
+  /* Clear RTC Timestamp overrun Flag */
+  __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_TSOVF);
+
+  /* Enable the Timestamp saving */
+  __HAL_RTC_TIMESTAMP_ENABLE(hrtc);
+
+  /* Enable IT Timestamp */
+  __HAL_RTC_TIMESTAMP_ENABLE_IT(hrtc, RTC_IT_TS);
+
+  /* Enable the write protection for RTC registers */
+  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+  /* RTC Timestamp Interrupt Configuration: EXTI configuration */
+  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT();
+  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();
+
+  /* Change RTC state back to READY */
+  hrtc->State = HAL_RTC_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(hrtc);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Deactivates Timestamp.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval HAL status
@@ -273,7 +314,7 @@
   /* Get the RTC_CR register and clear the bits to be configured */
   tmpreg = (uint32_t)(hrtc->Instance->CR & (uint32_t)~(RTC_CR_TSEDGE | RTC_CR_TSE));
 
-  /* Configure the Time Stamp TSEDGE and Enable bits */
+  /* Configure the Timestamp TSEDGE and Enable bits */
   hrtc->Instance->CR = (uint32_t)tmpreg;
 
   /* Enable the write protection for RTC registers */
@@ -288,8 +329,8 @@
 }
 
 /**
-  * @brief  Sets Internal TimeStamp.
-  * @note   This API must be called before enabling the internal TimeStamp feature.
+  * @brief  Sets Internal Timestamp.
+  * @note   This API must be called before enabling the internal Timestamp feature.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval HAL status
@@ -304,7 +345,7 @@
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  /* Configure the internal Time Stamp Enable bits */
+  /* Configure the internal Timestamp Enable bits */
   __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(hrtc);
 
   /* Enable the write protection for RTC registers */
@@ -320,7 +361,7 @@
 }
 
 /**
-  * @brief  Deactivates internal TimeStamp.
+  * @brief  Deactivates internal Timestamp.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval HAL status
@@ -335,7 +376,7 @@
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  /* Configure the internal Time Stamp Enable bits */
+  /* Configure the internal Timestamp Enable bits */
   __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(hrtc);
 
   /* Enable the write protection for RTC registers */
@@ -350,70 +391,75 @@
 }
 
 /**
-  * @brief  Gets the RTC TimeStamp value.
+  * @brief  Gets the RTC Timestamp value.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  sTimeStamp Pointer to Time structure
   * @param  sTimeStampDate Pointer to Date structure
   * @param  Format specifies the format of the entered parameters.
   *          This parameter can be one of the following values:
-  *             FORMAT_BIN: Binary data format
-  *             FORMAT_BCD: BCD data format
+  *             @arg RTC_FORMAT_BIN: Binary data format
+  *             @arg RTC_FORMAT_BCD: BCD data format
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef* sTimeStamp, RTC_DateTypeDef* sTimeStampDate, uint32_t Format)
+HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format)
 {
-  uint32_t tmptime = 0U, tmpdate = 0U;
+  uint32_t tmptime = 0U;
+  uint32_t tmpdate = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_FORMAT(Format));
 
-  /* Get the TimeStamp time and date registers values */
+  /* Get the Timestamp time and date registers values */
   tmptime = (uint32_t)(hrtc->Instance->TSTR & RTC_TR_RESERVED_MASK);
   tmpdate = (uint32_t)(hrtc->Instance->TSDR & RTC_DR_RESERVED_MASK);
 
   /* Fill the Time structure fields with the read parameters */
-  sTimeStamp->Hours = (uint8_t)((tmptime & (RTC_TR_HT | RTC_TR_HU)) >> 16U);
-  sTimeStamp->Minutes = (uint8_t)((tmptime & (RTC_TR_MNT | RTC_TR_MNU)) >> 8U);
-  sTimeStamp->Seconds = (uint8_t)(tmptime & (RTC_TR_ST | RTC_TR_SU));
-  sTimeStamp->TimeFormat = (uint8_t)((tmptime & (RTC_TR_PM)) >> 16U);
+  sTimeStamp->Hours      = (uint8_t)((tmptime & (RTC_TSTR_HT  | RTC_TSTR_HU))  >> RTC_TSTR_HU_Pos);
+  sTimeStamp->Minutes    = (uint8_t)((tmptime & (RTC_TSTR_MNT | RTC_TSTR_MNU)) >> RTC_TSTR_MNU_Pos);
+  sTimeStamp->Seconds    = (uint8_t)((tmptime & (RTC_TSTR_ST  | RTC_TSTR_SU))  >> RTC_TSTR_SU_Pos);
+  sTimeStamp->TimeFormat = (uint8_t)((tmptime & (RTC_TSTR_PM))                 >> RTC_TSTR_PM_Pos);
   sTimeStamp->SubSeconds = (uint32_t) hrtc->Instance->TSSSR;
 
   /* Fill the Date structure fields with the read parameters */
-  sTimeStampDate->Year = 0U;
-  sTimeStampDate->Month = (uint8_t)((tmpdate & (RTC_DR_MT | RTC_DR_MU)) >> 8U);
-  sTimeStampDate->Date = (uint8_t)(tmpdate & (RTC_DR_DT | RTC_DR_DU));
-  sTimeStampDate->WeekDay = (uint8_t)((tmpdate & (RTC_DR_WDU)) >> 13U);
+  sTimeStampDate->Year    = 0U;
+  sTimeStampDate->Month   = (uint8_t)((tmpdate & (RTC_TSDR_MT | RTC_TSDR_MU)) >> RTC_TSDR_MU_Pos);
+  sTimeStampDate->Date    = (uint8_t)((tmpdate & (RTC_TSDR_DT | RTC_TSDR_DU)) >> RTC_TSDR_DU_Pos);
+  sTimeStampDate->WeekDay = (uint8_t)((tmpdate & (RTC_TSDR_WDU))              >> RTC_TSDR_WDU_Pos);
 
   /* Check the input parameters format */
-  if(Format == RTC_FORMAT_BIN)
+  if (Format == RTC_FORMAT_BIN)
   {
-    /* Convert the TimeStamp structure parameters to Binary format */
-    sTimeStamp->Hours = (uint8_t)RTC_Bcd2ToByte(sTimeStamp->Hours);
+    /* Convert the Timestamp structure parameters to Binary format */
+    sTimeStamp->Hours   = (uint8_t)RTC_Bcd2ToByte(sTimeStamp->Hours);
     sTimeStamp->Minutes = (uint8_t)RTC_Bcd2ToByte(sTimeStamp->Minutes);
     sTimeStamp->Seconds = (uint8_t)RTC_Bcd2ToByte(sTimeStamp->Seconds);
 
     /* Convert the DateTimeStamp structure parameters to Binary format */
-    sTimeStampDate->Month = (uint8_t)RTC_Bcd2ToByte(sTimeStampDate->Month);
-    sTimeStampDate->Date = (uint8_t)RTC_Bcd2ToByte(sTimeStampDate->Date);
+    sTimeStampDate->Month   = (uint8_t)RTC_Bcd2ToByte(sTimeStampDate->Month);
+    sTimeStampDate->Date    = (uint8_t)RTC_Bcd2ToByte(sTimeStampDate->Date);
     sTimeStampDate->WeekDay = (uint8_t)RTC_Bcd2ToByte(sTimeStampDate->WeekDay);
   }
 
-  /* Clear the TIMESTAMP Flag */
+  /* Clear the internal Timestamp Flag */
+  __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_ITSF);
+
+  /* Clear the Timestamp Flag */
   __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_TSF);
 
   return HAL_OK;
 }
 
 /**
-  * @brief  Sets Tamper
-  * @note   By calling this API we disable the tamper interrupt for all tampers.
+  * @brief  Sets Tamper.
+  * @note   By calling this API the tamper global interrupt will be disabled and
+  *         the selected tamper's interrupt as well.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  sTamper Pointer to Tamper Structure.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef* sTamper)
+HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper)
 {
   uint32_t tmpreg = 0U;
 
@@ -423,6 +469,7 @@
   assert_param(IS_RTC_TAMPER_ERASE_MODE(sTamper->NoErase));
   assert_param(IS_RTC_TAMPER_MASKFLAG_STATE(sTamper->MaskFlag));
   assert_param(IS_RTC_TAMPER_FILTER(sTamper->Filter));
+  assert_param(IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(sTamper->Filter, sTamper->Trigger));
   assert_param(IS_RTC_TAMPER_SAMPLING_FREQ(sTamper->SamplingFrequency));
   assert_param(IS_RTC_TAMPER_PRECHARGE_DURATION(sTamper->PrechargeDuration));
   assert_param(IS_RTC_TAMPER_PULLUP_STATE(sTamper->TamperPullUp));
@@ -433,57 +480,122 @@
 
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-  if(sTamper->Trigger != RTC_TAMPERTRIGGER_RISINGEDGE)
+  /* Copy control register into temporary variable */
+  tmpreg = hrtc->Instance->TAMPCR;
+
+  /* Enable selected tamper */
+  tmpreg |= (sTamper->Tamper);
+
+  /* Configure the tamper trigger bit (this bit is just on the right of the
+       tamper enable bit, hence the one-time right shift before updating it) */
+  if (sTamper->Trigger == RTC_TAMPERTRIGGER_FALLINGEDGE)
   {
-    sTamper->Trigger = (uint32_t)(sTamper->Tamper << 1U);
+    /* Set the tamper trigger bit (case of falling edge or high level) */
+    tmpreg |= (uint32_t)(sTamper->Tamper << 1U);
+  }
+  else
+  {
+    /* Clear the tamper trigger bit (case of rising edge or low level) */
+    tmpreg &= (uint32_t)~(sTamper->Tamper << 1U);
   }
 
-  if(sTamper->NoErase != RTC_TAMPER_ERASE_BACKUP_ENABLE)
+  /* Configure the backup registers erasure enabling bits */
+  if (sTamper->NoErase != RTC_TAMPER_ERASE_BACKUP_ENABLE)
   {
-    sTamper->NoErase = 0;
-    if((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+    if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
     {
-      sTamper->NoErase |= RTC_TAMPCR_TAMP1NOERASE;
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP1NOERASE);
     }
-    if((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+    if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
     {
-      sTamper->NoErase |= RTC_TAMPCR_TAMP2NOERASE;
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP2NOERASE);
     }
-    if((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+    if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
     {
-      sTamper->NoErase |= RTC_TAMPCR_TAMP3NOERASE;
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP3NOERASE);
+    }
+  }
+  else
+  {
+    if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP1NOERASE);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP2NOERASE);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP3NOERASE);
     }
   }
 
-  if(sTamper->MaskFlag != RTC_TAMPERMASK_FLAG_DISABLE)
+  /* Configure the tamper flags masking bits */
+  if (sTamper->MaskFlag != RTC_TAMPERMASK_FLAG_DISABLE)
   {
-    sTamper->MaskFlag = 0;
-    if((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+    if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
     {
-      sTamper->MaskFlag |= RTC_TAMPCR_TAMP1MF;
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP1MF);
     }
-    if((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+    if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
     {
-      sTamper->MaskFlag |= RTC_TAMPCR_TAMP2MF;
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP2MF);
     }
-    if((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+    if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
     {
-      sTamper->MaskFlag |= RTC_TAMPCR_TAMP3MF;
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP3MF);
+    }
+  }
+  else
+  {
+    if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP1MF);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP2MF);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP3MF);
     }
   }
 
-  tmpreg = ((uint32_t)sTamper->Tamper | (uint32_t)sTamper->Trigger  | (uint32_t)sTamper->NoErase |\
-            (uint32_t)sTamper->MaskFlag | (uint32_t)sTamper->Filter | (uint32_t)sTamper->SamplingFrequency |\
-            (uint32_t)sTamper->PrechargeDuration | (uint32_t)sTamper->TamperPullUp | sTamper->TimeStampOnTamperDetection);
+  /* Clear remaining fields before setting them */
+  tmpreg &= ~(RTC_TAMPERFILTER_MASK              | \
+              RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK | \
+              RTC_TAMPERPRECHARGEDURATION_MASK   | \
+              RTC_TAMPER_PULLUP_MASK             | \
+              RTC_TIMESTAMPONTAMPERDETECTION_MASK);
 
-  hrtc->Instance->TAMPCR &= (uint32_t)~((uint32_t)sTamper->Tamper | (uint32_t)(sTamper->Tamper << 1) | (uint32_t)RTC_TAMPCR_TAMPTS |\
-                                       (uint32_t)RTC_TAMPCR_TAMPFREQ | (uint32_t)RTC_TAMPCR_TAMPFLT | (uint32_t)RTC_TAMPCR_TAMPPRCH |\
-                                       (uint32_t)RTC_TAMPCR_TAMPPUDIS | (uint32_t)RTC_TAMPCR_TAMPIE | (uint32_t)RTC_TAMPCR_TAMP1IE |\
-                                       (uint32_t)RTC_TAMPCR_TAMP2IE | (uint32_t)RTC_TAMPCR_TAMP3IE | (uint32_t)RTC_TAMPCR_TAMP1NOERASE |\
-                                       (uint32_t)RTC_TAMPCR_TAMP2NOERASE | (uint32_t)RTC_TAMPCR_TAMP3NOERASE | (uint32_t)RTC_TAMPCR_TAMP1MF |\
-                                       (uint32_t)RTC_TAMPCR_TAMP2MF | (uint32_t)RTC_TAMPCR_TAMP3MF);
+  /* Set remaining parameters of desired configuration into temporary variable */
+  tmpreg |= ((uint32_t)sTamper->Filter            | \
+             (uint32_t)sTamper->SamplingFrequency | \
+             (uint32_t)sTamper->PrechargeDuration | \
+             (uint32_t)sTamper->TamperPullUp      | \
+             (uint32_t)sTamper->TimeStampOnTamperDetection);
 
-  hrtc->Instance->TAMPCR |= tmpreg;
+  /* Disable interrupt on selected tamper in case it is enabled */
+  if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+  {
+    tmpreg &= (uint32_t)~RTC_IT_TAMP1;
+  }
+  if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+  {
+    tmpreg &= (uint32_t)~RTC_IT_TAMP2;
+  }
+  if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+  {
+    tmpreg &= (uint32_t)~RTC_IT_TAMP3;
+  }
+
+  /* Disable tamper global interrupt in case it is enabled */
+  tmpreg &= (uint32_t)~RTC_TAMPCR_TAMPIE;
+
+  /* Copy desired configuration into configuration register */
+  hrtc->Instance->TAMPCR = tmpreg;
 
   hrtc->State = HAL_RTC_STATE_READY;
 
@@ -495,15 +607,16 @@
 
 /**
   * @brief  Sets Tamper with interrupt.
-  * @note   By calling this API we force the tamper interrupt for all tampers.
+  * @note   By setting the tamper global interrupt bit, interrupts will be
+  *         enabled for all tampers.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  sTamper Pointer to RTC Tamper.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef* sTamper)
+HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper)
 {
-  uint32_t tmpreg = 0;
+  uint32_t tmpreg = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_TAMPER(sTamper->Tamper));
@@ -512,6 +625,7 @@
   assert_param(IS_RTC_TAMPER_ERASE_MODE(sTamper->NoErase));
   assert_param(IS_RTC_TAMPER_MASKFLAG_STATE(sTamper->MaskFlag));
   assert_param(IS_RTC_TAMPER_FILTER(sTamper->Filter));
+  assert_param(IS_RTC_TAMPER_FILTER_CONFIG_CORRECT(sTamper->Filter, sTamper->Trigger));
   assert_param(IS_RTC_TAMPER_SAMPLING_FREQ(sTamper->SamplingFrequency));
   assert_param(IS_RTC_TAMPER_PRECHARGE_DURATION(sTamper->PrechargeDuration));
   assert_param(IS_RTC_TAMPER_PULLUP_STATE(sTamper->TamperPullUp));
@@ -522,79 +636,112 @@
 
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-  /* Configure the tamper trigger */
-  if(sTamper->Trigger != RTC_TAMPERTRIGGER_RISINGEDGE)
+  /* Copy control register into temporary variable */
+  tmpreg = hrtc->Instance->TAMPCR;
+
+  /* Enable selected tamper */
+  tmpreg |= (sTamper->Tamper);
+
+  /* Configure the tamper trigger bit (this bit is just on the right of the
+       tamper enable bit, hence the one-time right shift before updating it) */
+  if (sTamper->Trigger == RTC_TAMPERTRIGGER_FALLINGEDGE)
   {
-    sTamper->Trigger = (uint32_t)(sTamper->Tamper << 1);
-  }
-
-  if(sTamper->NoErase != RTC_TAMPER_ERASE_BACKUP_ENABLE)
-  {
-    sTamper->NoErase = 0;
-    if((sTamper->Tamper & RTC_TAMPER_1) != 0)
-    {
-      sTamper->NoErase |= RTC_TAMPCR_TAMP1NOERASE;
-    }
-    if((sTamper->Tamper & RTC_TAMPER_2) != 0)
-    {
-      sTamper->NoErase |= RTC_TAMPCR_TAMP2NOERASE;
-    }
-    if((sTamper->Tamper & RTC_TAMPER_3) != 0)
-    {
-      sTamper->NoErase |= RTC_TAMPCR_TAMP3NOERASE;
-    }
-  }
-
-  if(sTamper->MaskFlag != RTC_TAMPERMASK_FLAG_DISABLE)
-  {
-    sTamper->MaskFlag = 0;
-    if((sTamper->Tamper & RTC_TAMPER_1) != 0)
-    {
-      sTamper->MaskFlag |= RTC_TAMPCR_TAMP1MF;
-    }
-    if((sTamper->Tamper & RTC_TAMPER_2) != 0)
-    {
-      sTamper->MaskFlag |= RTC_TAMPCR_TAMP2MF;
-    }
-    if((sTamper->Tamper & RTC_TAMPER_3) != 0)
-    {
-      sTamper->MaskFlag |= RTC_TAMPCR_TAMP3MF;
-    }
-  }
-
-  tmpreg = ((uint32_t)sTamper->Tamper | (uint32_t)sTamper->Interrupt | (uint32_t)sTamper->Trigger  | (uint32_t)sTamper->NoErase |\
-            (uint32_t)sTamper->MaskFlag | (uint32_t)sTamper->Filter | (uint32_t)sTamper->SamplingFrequency |\
-            (uint32_t)sTamper->PrechargeDuration | (uint32_t)sTamper->TamperPullUp | sTamper->TimeStampOnTamperDetection);
-
-  hrtc->Instance->TAMPCR &= (uint32_t)~((uint32_t)sTamper->Tamper | (uint32_t)(sTamper->Tamper << 1) | (uint32_t)RTC_TAMPCR_TAMPTS |\
-                                       (uint32_t)RTC_TAMPCR_TAMPFREQ | (uint32_t)RTC_TAMPCR_TAMPFLT | (uint32_t)RTC_TAMPCR_TAMPPRCH |\
-                                       (uint32_t)RTC_TAMPCR_TAMPPUDIS | (uint32_t)RTC_TAMPCR_TAMPIE | (uint32_t)RTC_TAMPCR_TAMP1IE |\
-                                       (uint32_t)RTC_TAMPCR_TAMP2IE | (uint32_t)RTC_TAMPCR_TAMP3IE | (uint32_t)RTC_TAMPCR_TAMP1NOERASE |\
-                                       (uint32_t)RTC_TAMPCR_TAMP2NOERASE | (uint32_t)RTC_TAMPCR_TAMP3NOERASE | (uint32_t)RTC_TAMPCR_TAMP1MF |\
-                                       (uint32_t)RTC_TAMPCR_TAMP2MF | (uint32_t)RTC_TAMPCR_TAMP3MF);
-
-  hrtc->Instance->TAMPCR |= tmpreg;
-
-  if(sTamper->Tamper == RTC_TAMPER_1)
-  {
-    /* Clear RTC Tamper 1 flag */
-    __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP1F);
-  }
-  else if(sTamper->Tamper == RTC_TAMPER_2)
-  {
-    /* Clear RTC Tamper 2 flag */
-    __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP2F);
+    /* Set the tamper trigger bit (case of falling edge or high level) */
+    tmpreg |= (uint32_t)(sTamper->Tamper << 1U);
   }
   else
   {
-    /* Clear RTC Tamper 3 flag */
-    __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP3F);
+    /* Clear the tamper trigger bit (case of rising edge or low level) */
+    tmpreg &= (uint32_t)~(sTamper->Tamper << 1U);
   }
 
+  /* Configure the backup registers erasure enabling bits */
+  if (sTamper->NoErase != RTC_TAMPER_ERASE_BACKUP_ENABLE)
+  {
+    if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+    {
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP1NOERASE);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+    {
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP2NOERASE);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+    {
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP3NOERASE);
+    }
+  }
+  else
+  {
+    if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP1NOERASE);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP2NOERASE);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP3NOERASE);
+    }
+  }
+
+  /* Configure the tamper flags masking bits */
+  if (sTamper->MaskFlag != RTC_TAMPERMASK_FLAG_DISABLE)
+  {
+    if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+    {
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP1MF);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+    {
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP2MF);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+    {
+      tmpreg |= (uint32_t)(RTC_TAMPCR_TAMP3MF);
+    }
+  }
+  else
+  {
+    if ((sTamper->Tamper & RTC_TAMPER_1) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP1MF);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_2) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP2MF);
+    }
+    if ((sTamper->Tamper & RTC_TAMPER_3) != 0U)
+    {
+      tmpreg &= (uint32_t)~(RTC_TAMPCR_TAMP3MF);
+    }
+  }
+
+  /* Clear remaining fields before setting them */
+  tmpreg &= ~(RTC_TAMPERFILTER_MASK              | \
+              RTC_TAMPERSAMPLINGFREQ_RTCCLK_MASK | \
+              RTC_TAMPERPRECHARGEDURATION_MASK   | \
+              RTC_TAMPER_PULLUP_MASK             | \
+              RTC_TIMESTAMPONTAMPERDETECTION_MASK);
+
+  /* Set remaining parameters of desired configuration into temporary variable */
+  tmpreg |= ((uint32_t)sTamper->Filter            | \
+             (uint32_t)sTamper->SamplingFrequency | \
+             (uint32_t)sTamper->PrechargeDuration | \
+             (uint32_t)sTamper->TamperPullUp      | \
+             (uint32_t)sTamper->TimeStampOnTamperDetection);
+
+  /* Enable interrupt on selected tamper */
+  tmpreg |= (uint32_t)sTamper->Interrupt;
+
+  /* Copy desired configuration into configuration register */
+  hrtc->Instance->TAMPCR = tmpreg;
+
   /* RTC Tamper Interrupt Configuration: EXTI configuration */
   __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT();
-
-  EXTI->RTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT;
+  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();
 
   hrtc->State = HAL_RTC_STATE_READY;
 
@@ -606,10 +753,14 @@
 
 /**
   * @brief  Deactivates Tamper.
+  * @note   By calling this API the tamper global interrupt will be disabled.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  Tamper Selected tamper pin.
-  *          This parameter can be RTC_Tamper_1 and/or RTC_TAMPER_2.
+  *          This parameter can be any combination of the following values:
+  *            @arg RTC_TAMPER_1:  Tamper 1
+  *            @arg RTC_TAMPER_2:  Tamper 2
+  *            @arg RTC_TAMPER_3:  Tamper 3
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper)
@@ -621,22 +772,22 @@
 
   hrtc->State = HAL_RTC_STATE_BUSY;
 
-/* Disable the selected Tamper pin */
+  /* Disable the selected Tamper pin */
   hrtc->Instance->TAMPCR &= (uint32_t)~Tamper;
 
-  if ((Tamper & RTC_TAMPER_1) != 0)
+  if ((Tamper & RTC_TAMPER_1) != 0U)
   {
-    /* Disable the Tamper1 interrupt */
+    /* Disable the Tamper 1 interrupt */
     hrtc->Instance->TAMPCR &= (uint32_t)~(RTC_IT_TAMP | RTC_IT_TAMP1);
   }
-  if ((Tamper & RTC_TAMPER_2) != 0)
+  if ((Tamper & RTC_TAMPER_2) != 0U)
   {
-    /* Disable the Tamper2 interrupt */
+    /* Disable the Tamper 2 interrupt */
     hrtc->Instance->TAMPCR &= (uint32_t)~(RTC_IT_TAMP | RTC_IT_TAMP2);
   }
-  if ((Tamper & RTC_TAMPER_3) != 0)
+  if ((Tamper & RTC_TAMPER_3) != 0U)
   {
-    /* Disable the Tamper2 interrupt */
+    /* Disable the Tamper 3 interrupt */
     hrtc->Instance->TAMPCR &= (uint32_t)~(RTC_IT_TAMP | RTC_IT_TAMP3);
   }
 
@@ -649,94 +800,95 @@
 }
 
 /**
-  * @brief  This function handles TimeStamp interrupt request.
+  * @brief  Handles Timestamp and Tamper interrupt request.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval None
   */
 void HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc)
 {
-  /* Get the TimeStamp interrupt source enable status */
-  if(__HAL_RTC_TIMESTAMP_GET_IT_SOURCE(hrtc, RTC_IT_TS) != (uint32_t)RESET)
+  /* Clear the EXTI's Flag for RTC Timestamp and Tamper */
+  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG();
+
+  /* Get the Timestamp interrupt source enable status */
+  if (__HAL_RTC_TIMESTAMP_GET_IT_SOURCE(hrtc, RTC_IT_TS) != 0U)
   {
-    /* Get the pending status of the TIMESTAMP Interrupt */
-    if(__HAL_RTC_TIMESTAMP_GET_FLAG(hrtc, RTC_FLAG_TSF) != (uint32_t)RESET)
+    /* Get the pending status of the Timestamp Interrupt */
+    if (__HAL_RTC_TIMESTAMP_GET_FLAG(hrtc, RTC_FLAG_TSF) != 0U)
     {
-      /* TIMESTAMP callback */
+      /* Timestamp callback */
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
       hrtc->TimeStampEventCallback(hrtc);
 #else
       HAL_RTCEx_TimeStampEventCallback(hrtc);
 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
 
-      /* Clear the TIMESTAMP interrupt pending bit */
-      __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc,RTC_FLAG_TSF);
+      /* Clear the Timestamp interrupt pending bit after returning from callback
+         as RTC_TSTR and RTC_TSDR registers are cleared when TSF bit is reset */
+      __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_TSF);
     }
   }
 
-  /* Get the Tamper1 interrupt source enable status */
-  if(__HAL_RTC_TAMPER_GET_IT_SOURCE(hrtc, RTC_IT_TAMP | RTC_IT_TAMP1) != (uint32_t)RESET)
+  /* Get the Tamper 1 interrupt source enable status */
+  if (__HAL_RTC_TAMPER_GET_IT_SOURCE(hrtc, RTC_IT_TAMP | RTC_IT_TAMP1) != 0U)
   {
-    /* Get the pending status of the Tamper1 Interrupt */
-    if(__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP1F) != (uint32_t)RESET)
+    /* Get the pending status of the Tamper 1 Interrupt */
+    if (__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP1F) != 0U)
     {
+      /* Clear the Tamper interrupt pending bit */
+      __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP1F);
+
       /* Tamper callback */
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
       hrtc->Tamper1EventCallback(hrtc);
 #else
       HAL_RTCEx_Tamper1EventCallback(hrtc);
 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
-
-      /* Clear the Tamper interrupt pending bit */
-      __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc,RTC_FLAG_TAMP1F);
     }
   }
 
-  /* Get the Tamper2 interrupt source enable status */
-  if(__HAL_RTC_TAMPER_GET_IT_SOURCE(hrtc, RTC_IT_TAMP | RTC_IT_TAMP2) != (uint32_t)RESET)
+  /* Get the Tamper 2 interrupt source enable status */
+  if (__HAL_RTC_TAMPER_GET_IT_SOURCE(hrtc, RTC_IT_TAMP | RTC_IT_TAMP2) != 0U)
   {
-    /* Get the pending status of the Tamper2 Interrupt */
-    if(__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP2F) != (uint32_t)RESET)
+    /* Get the pending status of the Tamper 2 Interrupt */
+    if (__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP2F) != 0U)
     {
+      /* Clear the Tamper interrupt pending bit */
+      __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP2F);
+
       /* Tamper callback */
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
       hrtc->Tamper2EventCallback(hrtc);
 #else
       HAL_RTCEx_Tamper2EventCallback(hrtc);
 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
-
-      /* Clear the Tamper interrupt pending bit */
-      __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP2F);
     }
   }
 
-  /* Get the Tamper3 interrupt source enable status */
-  if(__HAL_RTC_TAMPER_GET_IT_SOURCE(hrtc, RTC_IT_TAMP | RTC_IT_TAMP3) != (uint32_t)RESET)
+  /* Get the Tamper 3 interrupt source enable status */
+  if (__HAL_RTC_TAMPER_GET_IT_SOURCE(hrtc, RTC_IT_TAMP | RTC_IT_TAMP3) != 0U)
   {
-    /* Get the pending status of the Tamper3 Interrupt */
-    if(__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP3F) != (uint32_t)RESET)
+    /* Get the pending status of the Tamper 3 Interrupt */
+    if (__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP3F) != 0U)
     {
+      /* Clear the Tamper interrupt pending bit */
+      __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP3F);
+
       /* Tamper callback */
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
       hrtc->Tamper3EventCallback(hrtc);
 #else
       HAL_RTCEx_Tamper3EventCallback(hrtc);
 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
-
-      /* Clear the Tamper interrupt pending bit */
-      __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP3F);
     }
   }
 
-  /* Clear the EXTI's Flag for RTC TimeStamp and Tamper */
-  __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG();
-
   /* Change RTC state */
   hrtc->State = HAL_RTC_STATE_READY;
 }
 
 /**
-  * @brief  TimeStamp callback.
+  * @brief  Timestamp callback.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval None
@@ -746,8 +898,8 @@
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function Should not be modified, when the callback is needed,
-            the HAL_RTC_TimeStampEventCallback could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTCEx_TimeStampEventCallback could be implemented in the user file
   */
 }
 
@@ -762,8 +914,8 @@
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function Should not be modified, when the callback is needed,
-            the HAL_RTC_Tamper1EventCallback could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTCEx_Tamper1EventCallback could be implemented in the user file
    */
 }
 
@@ -778,14 +930,15 @@
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function Should not be modified, when the callback is needed,
-            the HAL_RTC_Tamper2EventCallback could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTCEx_Tamper2EventCallback could be implemented in the user file
    */
 }
 
 /**
   * @brief  Tamper 3 callback.
-  * @param  hrtc RTC handle
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
   * @retval None
   */
 __weak void HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc)
@@ -793,13 +946,13 @@
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function Should not be modified, when the callback is needed,
-            the HAL_RTCEx_Tamper3EventCallback could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTCEx_Tamper3EventCallback could be implemented in the user file
    */
 }
 
 /**
-  * @brief  This function handles TimeStamp polling request.
+  * @brief  Handles Timestamp polling request.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  Timeout Timeout duration
@@ -807,34 +960,34 @@
   */
 HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Get tick */
   tickstart = HAL_GetTick();
 
-  while(__HAL_RTC_TIMESTAMP_GET_FLAG(hrtc, RTC_FLAG_TSF) == RESET)
+  while (__HAL_RTC_TIMESTAMP_GET_FLAG(hrtc, RTC_FLAG_TSF) == 0U)
   {
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
+      if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout))
       {
         hrtc->State = HAL_RTC_STATE_TIMEOUT;
         return HAL_TIMEOUT;
       }
     }
+
+    if (__HAL_RTC_TIMESTAMP_GET_FLAG(hrtc, RTC_FLAG_TSOVF) != 0U)
+    {
+      /* Clear the Timestamp Overrun Flag */
+      __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_TSOVF);
+
+      /* Change Timestamp state */
+      hrtc->State = HAL_RTC_STATE_ERROR;
+
+      return HAL_ERROR;
+    }
   }
 
-  if(__HAL_RTC_TIMESTAMP_GET_FLAG(hrtc, RTC_FLAG_TSOVF) != RESET)
-  {
-    /* Clear the TIMESTAMP OverRun Flag */
-    __HAL_RTC_TIMESTAMP_CLEAR_FLAG(hrtc, RTC_FLAG_TSOVF);
-
-    /* Change TIMESTAMP state */
-    hrtc->State = HAL_RTC_STATE_ERROR;
-
-    return HAL_ERROR;
-   }
-
   /* Change RTC state */
   hrtc->State = HAL_RTC_STATE_READY;
 
@@ -842,7 +995,7 @@
 }
 
 /**
-  * @brief  This function handles Tamper1 Polling.
+  * @brief  Handles Tamper 1 Polling.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  Timeout Timeout duration
@@ -856,11 +1009,11 @@
   tickstart = HAL_GetTick();
 
   /* Get the status of the Interrupt */
-  while(__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP1F)== RESET)
+  while (__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP1F) == 0U)
   {
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if((Timeout == 0U)||((HAL_GetTick() - tickstart ) > Timeout))
+      if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout))
       {
         hrtc->State = HAL_RTC_STATE_TIMEOUT;
         return HAL_TIMEOUT;
@@ -869,7 +1022,7 @@
   }
 
   /* Clear the Tamper Flag */
-  __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc,RTC_FLAG_TAMP1F);
+  __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP1F);
 
   /* Change RTC state */
   hrtc->State = HAL_RTC_STATE_READY;
@@ -878,7 +1031,7 @@
 }
 
 /**
-  * @brief  This function handles Tamper2 Polling.
+  * @brief  Handles Tamper 2 Polling.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  Timeout Timeout duration
@@ -886,17 +1039,17 @@
   */
 HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Get tick */
   tickstart = HAL_GetTick();
 
   /* Get the status of the Interrupt */
-  while(__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP2F) == RESET)
+  while (__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP2F) == 0U)
   {
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
+      if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout))
       {
         hrtc->State = HAL_RTC_STATE_TIMEOUT;
         return HAL_TIMEOUT;
@@ -905,7 +1058,7 @@
   }
 
   /* Clear the Tamper Flag */
-  __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc,RTC_FLAG_TAMP2F);
+  __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP2F);
 
   /* Change RTC state */
   hrtc->State = HAL_RTC_STATE_READY;
@@ -914,8 +1067,9 @@
 }
 
 /**
-  * @brief  This function handles Tamper3 Polling.
-  * @param  hrtc RTC handle
+  * @brief  Handles Tamper 3 Polling.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
@@ -924,11 +1078,11 @@
   uint32_t tickstart = HAL_GetTick();
 
   /* Get the status of the Interrupt */
-  while(__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP3F) == RESET)
+  while (__HAL_RTC_TAMPER_GET_FLAG(hrtc, RTC_FLAG_TAMP3F) == 0U)
   {
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
+      if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout))
       {
         hrtc->State = HAL_RTC_STATE_TIMEOUT;
         return HAL_TIMEOUT;
@@ -937,7 +1091,7 @@
   }
 
   /* Clear the Tamper Flag */
-  __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc,RTC_FLAG_TAMP3F);
+  __HAL_RTC_TAMPER_CLEAR_FLAG(hrtc, RTC_FLAG_TAMP3F);
 
   /* Change RTC state */
   hrtc->State = HAL_RTC_STATE_READY;
@@ -949,31 +1103,31 @@
   * @}
   */
 
-/** @defgroup RTCEx_Group2 RTC Wake-up functions
- *  @brief   RTC Wake-up functions
- *
+/** @defgroup RTCEx_Exported_Functions_Group2 RTC Wakeup functions
+  * @brief    RTC Wakeup functions
+  *
 @verbatim
  ===============================================================================
-                        ##### RTC Wake-up functions #####
+                        ##### RTC Wakeup functions #####
  ===============================================================================
 
- [..] This section provides functions allowing to configure Wake-up feature
+ [..] This section provides functions allowing to configure Wakeup feature
 
 @endverbatim
   * @{
   */
 
 /**
-  * @brief  Sets wake up timer.
+  * @brief  Sets wakeup timer.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
-  * @param  WakeUpCounter Wake up counter
-  * @param  WakeUpClock Wake up clock
+  * @param  WakeUpCounter Wakeup counter
+  * @param  WakeUpClock Wakeup clock
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock));
@@ -987,111 +1141,42 @@
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
+  /* Check RTC WUTWF flag is reset only when wakeup timer enabled*/
+  if ((hrtc->Instance->CR & RTC_CR_WUTE) != 0U)
+  {
+    tickstart = HAL_GetTick();
+
+    /* Wait till RTC WUTWF flag is reset and if timeout is reached exit */
+    while (__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) != 0U)
+    {
+      if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
+      {
+        /* Enable the write protection for RTC registers */
+        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+        hrtc->State = HAL_RTC_STATE_TIMEOUT;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(hrtc);
+
+        return HAL_TIMEOUT;
+      }
+    }
+  }
+
+  /* Disable the Wakeup timer */
   __HAL_RTC_WAKEUPTIMER_DISABLE(hrtc);
 
+  /* Clear the Wakeup flag */
+  __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(hrtc, RTC_FLAG_WUTF);
+
   /* Get tick */
   tickstart = HAL_GetTick();
 
-  /*Check RTC WUTWF flag is reset only when wake up timer enabled*/
-  if((hrtc->Instance->CR & RTC_CR_WUTE) != RESET)
+  /* Wait till RTC WUTWF flag is set and if timeout is reached exit */
+  while (__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) == 0U)
   {
-    /* Wait till RTC WUTWF flag is set and if Time out is reached exit */
-    while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) == RESET)
-    {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
-      {
-        /* Enable the write protection for RTC registers */
-        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-        hrtc->State = HAL_RTC_STATE_TIMEOUT;
-
-        /* Process Unlocked */
-        __HAL_UNLOCK(hrtc);
-
-        return HAL_TIMEOUT;
-      }
-    }
-  }
-
-  /* Clear the Wakeup Timer clock source bits in CR register */
-  hrtc->Instance->CR &= (uint32_t)~RTC_CR_WUCKSEL;
-
-  /* Configure the clock source */
-  hrtc->Instance->CR |= (uint32_t)WakeUpClock;
-
-  /* Configure the Wakeup Timer counter */
-  hrtc->Instance->WUTR = (uint32_t)WakeUpCounter;
-
-   /* Enable the Wakeup Timer */
-  __HAL_RTC_WAKEUPTIMER_ENABLE(hrtc);
-
-  /* Enable the write protection for RTC registers */
-  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-  hrtc->State = HAL_RTC_STATE_READY;
-
-  /* Process Unlocked */
-  __HAL_UNLOCK(hrtc);
-
-  return HAL_OK;
-}
-
-/**
-  * @brief  Sets wake up timer with interrupt
-  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
-  *                the configuration information for RTC.
-  * @param  WakeUpCounter Wake up counter
-  * @param  WakeUpClock Wake up clock
-  * @retval HAL status
-  */
-HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock)
-{
-  __IO uint32_t count;
-
-  /* Check the parameters */
-  assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock));
-  assert_param(IS_RTC_WAKEUP_COUNTER(WakeUpCounter));
-
-  /* Process Locked */
-  __HAL_LOCK(hrtc);
-
-  hrtc->State = HAL_RTC_STATE_BUSY;
-
-  /* Disable the write protection for RTC registers */
-  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
-
-  __HAL_RTC_WAKEUPTIMER_DISABLE(hrtc);
-
-  /* Check RTC WUTWF flag is reset only when wake up timer enabled */
-  if((hrtc->Instance->CR & RTC_CR_WUTE) != RESET)
-  {
-    /* Wait till RTC WUTWF flag is reset and if Time out is reached exit */
-    count = RTC_TIMEOUT_VALUE  * (SystemCoreClock / 32U / 1000U);
-    do
-    {
-      if(count-- == 0U)
-      {
-        /* Enable the write protection for RTC registers */
-        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-        hrtc->State = HAL_RTC_STATE_TIMEOUT;
-
-        /* Process Unlocked */
-        __HAL_UNLOCK(hrtc);
-
-        return HAL_TIMEOUT;
-      }
-    }
-    while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) == SET);
-  }
-
-  __HAL_RTC_WAKEUPTIMER_DISABLE(hrtc);
-
-  /* Wait till RTC WUTWF flag is set and if Time out is reached exit */
-  count = RTC_TIMEOUT_VALUE  * (SystemCoreClock / 32U / 1000U);
-  do
-  {
-    if(count-- == 0U)
+    if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
     {
       /* Enable the write protection for RTC registers */
       __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1104,10 +1189,6 @@
       return HAL_TIMEOUT;
     }
   }
-  while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) == RESET);
-
-  /* Configure the Wake-up Timer counter */
-  hrtc->Instance->WUTR = (uint32_t)WakeUpCounter;
 
   /* Clear the Wakeup Timer clock source bits in CR register */
   hrtc->Instance->CR &= (uint32_t)~RTC_CR_WUCKSEL;
@@ -1115,16 +1196,8 @@
   /* Configure the clock source */
   hrtc->Instance->CR |= (uint32_t)WakeUpClock;
 
-  /* RTC WakeUpTimer Interrupt Configuration: EXTI configuration */
-  __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT();
-
-  EXTI->RTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT;
-
-  /* Clear RTC Wake Up timer Flag */
-  __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(hrtc, RTC_FLAG_WUTF);
-
-  /* Configure the Interrupt in the RTC_CR register */
-  __HAL_RTC_WAKEUPTIMER_ENABLE_IT(hrtc,RTC_IT_WUT);
+  /* Configure the Wakeup Timer counter */
+  hrtc->Instance->WUTR = (uint32_t)WakeUpCounter;
 
   /* Enable the Wakeup Timer */
   __HAL_RTC_WAKEUPTIMER_ENABLE(hrtc);
@@ -1141,12 +1214,113 @@
 }
 
 /**
-  * @brief  Deactivates wake up timer counter.
+  * @brief  Sets wakeup timer with interrupt.
+  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
+  *                the configuration information for RTC.
+  * @param  WakeUpCounter Wakeup counter
+  * @param  WakeUpClock Wakeup clock
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock)
+{
+  __IO uint32_t count  = RTC_TIMEOUT_VALUE * (SystemCoreClock / 32U / 1000U);
+
+  /* Check the parameters */
+  assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock));
+  assert_param(IS_RTC_WAKEUP_COUNTER(WakeUpCounter));
+
+  /* Process Locked */
+  __HAL_LOCK(hrtc);
+
+  hrtc->State = HAL_RTC_STATE_BUSY;
+
+  /* Disable the write protection for RTC registers */
+  __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
+
+  /* Check RTC WUTWF flag is reset only when wakeup timer enabled */
+  if ((hrtc->Instance->CR & RTC_CR_WUTE) != 0U)
+  {
+    /* Wait till RTC WUTWF flag is reset and if timeout is reached exit */
+    do
+    {
+      if (count-- == 0U)
+      {
+        /* Enable the write protection for RTC registers */
+        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+        hrtc->State = HAL_RTC_STATE_TIMEOUT;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(hrtc);
+
+        return HAL_TIMEOUT;
+      }
+    } while (__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) != 0U);
+  }
+
+  /* Disable the Wakeup timer */
+  __HAL_RTC_WAKEUPTIMER_DISABLE(hrtc);
+
+  /* Clear the Wakeup flag */
+  __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(hrtc, RTC_FLAG_WUTF);
+
+  /* Reload the counter */
+  count = RTC_TIMEOUT_VALUE * (SystemCoreClock / 32U / 1000U);
+
+  /* Wait till RTC WUTWF flag is set and if timeout is reached exit */
+  do
+  {
+    if (count-- == 0U)
+    {
+      /* Enable the write protection for RTC registers */
+      __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+      hrtc->State = HAL_RTC_STATE_TIMEOUT;
+
+      /* Process Unlocked */
+      __HAL_UNLOCK(hrtc);
+
+      return HAL_TIMEOUT;
+    }
+  } while (__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) == 0U);
+
+  /* Clear the Wakeup Timer clock source bits in CR register */
+  hrtc->Instance->CR &= (uint32_t)~RTC_CR_WUCKSEL;
+
+  /* Configure the clock source */
+  hrtc->Instance->CR |= (uint32_t)WakeUpClock;
+
+  /* Configure the Wakeup Timer counter */
+  hrtc->Instance->WUTR = (uint32_t)WakeUpCounter;
+
+  /* RTC wakeup timer Interrupt Configuration: EXTI configuration */
+  __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT();
+  __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();
+
+  /* Configure the interrupt in the RTC_CR register */
+  __HAL_RTC_WAKEUPTIMER_ENABLE_IT(hrtc, RTC_IT_WUT);
+
+  /* Enable the Wakeup Timer */
+  __HAL_RTC_WAKEUPTIMER_ENABLE(hrtc);
+
+  /* Enable the write protection for RTC registers */
+  __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+  hrtc->State = HAL_RTC_STATE_READY;
+
+  /* Process Unlocked */
+  __HAL_UNLOCK(hrtc);
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Deactivates wakeup timer counter.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval HAL status
   */
-uint32_t HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc)
+HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc)
 {
   uint32_t tickstart = 0U;
 
@@ -1162,15 +1336,15 @@
   __HAL_RTC_WAKEUPTIMER_DISABLE(hrtc);
 
   /* In case of interrupt mode is used, the interrupt source must disabled */
-  __HAL_RTC_WAKEUPTIMER_DISABLE_IT(hrtc,RTC_IT_WUT);
+  __HAL_RTC_WAKEUPTIMER_DISABLE_IT(hrtc, RTC_IT_WUT);
 
   /* Get tick */
   tickstart = HAL_GetTick();
 
-  /* Wait till RTC WUTWF flag is set and if Time out is reached exit */
-  while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) == RESET)
+  /* Wait till RTC WUTWF flag is set and if timeout is reached exit */
+  while (__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTWF) == 0U)
   {
-    if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
+    if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
     {
       /* Enable the write protection for RTC registers */
       __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1196,7 +1370,7 @@
 }
 
 /**
-  * @brief  Gets wake up timer counter.
+  * @brief  Gets wakeup timer counter.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval Counter value
@@ -1208,8 +1382,8 @@
 }
 
 /**
-  * @brief  This function handles Wake Up Timer interrupt request.
-  * @note   Unlike alarm interrupt line (shared by AlarmA and AlarmB) and tamper
+  * @brief  Handles Wakeup Timer interrupt request.
+  * @note   Unlike alarm interrupt line (shared by Alarms A and B) or tamper
   *         interrupt line (shared by timestamp and tampers) wakeup timer
   *         interrupt line is exclusive to the wakeup timer.
   *         There is no need in this case to check on the interrupt enable
@@ -1220,29 +1394,29 @@
   */
 void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc)
 {
-  /* Get the pending status of the WAKEUPTIMER Interrupt */
-  if(__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTF) != (uint32_t)RESET)
+  /* Clear the EXTI's line Flag for RTC WakeUpTimer */
+  __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG();
+
+  /* Get the pending status of the Wakeup timer Interrupt */
+  if (__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTF) != 0U)
   {
-    /* WAKEUPTIMER callback */
+    /* Clear the Wakeup timer interrupt pending bit */
+    __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(hrtc, RTC_FLAG_WUTF);
+
+    /* Wakeup timer callback */
 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
     hrtc->WakeUpTimerEventCallback(hrtc);
 #else
     HAL_RTCEx_WakeUpTimerEventCallback(hrtc);
 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
-
-    /* Clear the WAKEUPTIMER interrupt pending bit */
-    __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(hrtc, RTC_FLAG_WUTF);
   }
 
-  /* Clear the EXTI's line Flag for RTC WakeUpTimer */
-  __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG();
-
   /* Change RTC state */
   hrtc->State = HAL_RTC_STATE_READY;
 }
 
 /**
-  * @brief  Wake Up Timer callback.
+  * @brief  Wakeup Timer callback.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @retval None
@@ -1252,13 +1426,13 @@
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function Should not be modified, when the callback is needed,
-            the HAL_RTC_WakeUpTimerEventCallback could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTCEx_WakeUpTimerEventCallback could be implemented in the user file
    */
 }
 
 /**
-  * @brief  This function handles Wake Up Timer Polling.
+  * @brief  Handles Wakeup Timer Polling.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  Timeout Timeout duration
@@ -1266,25 +1440,24 @@
   */
 HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Get tick */
   tickstart = HAL_GetTick();
 
-  while(__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTF) == RESET)
+  while (__HAL_RTC_WAKEUPTIMER_GET_FLAG(hrtc, RTC_FLAG_WUTF) == 0U)
   {
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
+      if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout))
       {
         hrtc->State = HAL_RTC_STATE_TIMEOUT;
-
         return HAL_TIMEOUT;
       }
     }
   }
 
-  /* Clear the WAKEUPTIMER Flag */
+  /* Clear the Wakeup timer Flag */
   __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(hrtc, RTC_FLAG_WUTF);
 
   /* Change RTC state */
@@ -1297,20 +1470,17 @@
   * @}
   */
 
-
-/** @defgroup RTCEx_Group3 Extension Peripheral Control functions
- *  @brief   Extension Peripheral Control functions
- *
+/** @defgroup RTCEx_Exported_Functions_Group3 Extended Peripheral Control functions
+  * @brief    Extended Peripheral Control functions
+  *
 @verbatim
  ===============================================================================
-              ##### Extension Peripheral Control functions #####
+              ##### Extended Peripheral Control functions #####
  ===============================================================================
     [..]
     This subsection provides functions allowing to
       (+) Write a data in a specified RTC Backup data register
       (+) Read a data in a specified RTC Backup data register
-      (+) Set the Coarse calibration parameters.
-      (+) Deactivate the Coarse calibration parameters
       (+) Set the Smooth calibration parameters.
       (+) Configure the Synchronization Shift Control Settings.
       (+) Configure the Calibration Pinout (RTC_CALIB) Selection (1Hz or 512Hz).
@@ -1329,20 +1499,20 @@
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  BackupRegister RTC Backup data Register number.
-  *          This parameter can be: RTC_BKP_DRx where x can be from 0 to 19 to
-  *                                 specify the register.
+  *          This parameter can be: RTC_BKP_DRx (where x can be from 0 to 31)
+  *                                 to specify the register.
   * @param  Data Data to be written in the specified RTC Backup data register.
   * @retval None
   */
 void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data)
 {
-  uint32_t tmp = 0;
+  uint32_t tmp = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_BKP(BackupRegister));
 
-  tmp = (uint32_t)&(hrtc->Instance->BKP0R);
-  tmp += (BackupRegister * 4);
+  tmp = (uint32_t) & (hrtc->Instance->BKP0R);
+  tmp += (BackupRegister * 4U);
 
   /* Write the specified register */
   *(__IO uint32_t *)tmp = (uint32_t)Data;
@@ -1353,19 +1523,19 @@
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  BackupRegister RTC Backup data Register number.
-  *          This parameter can be: RTC_BKP_DRx where x can be from 0 to 19 to
-  *                                 specify the register.
+  *          This parameter can be: RTC_BKP_DRx (where x can be from 0 to 31)
+  *                                 to specify the register.
   * @retval Read value
   */
 uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister)
 {
-  uint32_t tmp = 0;
+  uint32_t tmp = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_BKP(BackupRegister));
 
-  tmp = (uint32_t)&(hrtc->Instance->BKP0R);
-  tmp += (BackupRegister * 4);
+  tmp = (uint32_t) & (hrtc->Instance->BKP0R);
+  tmp += (BackupRegister * 4U);
 
   /* Read the specified register */
   return (*(__IO uint32_t *)tmp);
@@ -1376,29 +1546,29 @@
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  SmoothCalibPeriod Select the Smooth Calibration Period.
-  *          This parameter can be can be one of the following values :
+  *          This parameter can be can be one of the following values:
   *             @arg RTC_SMOOTHCALIB_PERIOD_32SEC: The smooth calibration period is 32s.
   *             @arg RTC_SMOOTHCALIB_PERIOD_16SEC: The smooth calibration period is 16s.
   *             @arg RTC_SMOOTHCALIB_PERIOD_8SEC: The smooth calibration period is 8s.
   * @param  SmoothCalibPlusPulses Select to Set or reset the CALP bit.
   *          This parameter can be one of the following values:
-  *             @arg RTC_SMOOTHCALIB_PLUSPULSES_SET: Add one RTCCLK pulses every 2*11 pulses.
+  *             @arg RTC_SMOOTHCALIB_PLUSPULSES_SET: Add one RTCCLK pulse every 2*11 pulses.
   *             @arg RTC_SMOOTHCALIB_PLUSPULSES_RESET: No RTCCLK pulses are added.
-  * @param  SmouthCalibMinusPulsesValue Select the value of CALM[80] bits.
+  * @param  SmoothCalibMinusPulsesValue Select the value of CALM[8:0] bits.
   *          This parameter can be one any value from 0 to 0x000001FF.
   * @note   To deactivate the smooth calibration, the field SmoothCalibPlusPulses
   *         must be equal to SMOOTHCALIB_PLUSPULSES_RESET and the field
-  *         SmouthCalibMinusPulsesValue must be equal to 0.
+  *         SmoothCalibMinusPulsesValue must be equal to 0.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef* hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmouthCalibMinusPulsesValue)
+HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_SMOOTH_CALIB_PERIOD(SmoothCalibPeriod));
   assert_param(IS_RTC_SMOOTH_CALIB_PLUS(SmoothCalibPlusPulses));
-  assert_param(IS_RTC_SMOOTH_CALIB_MINUS(SmouthCalibMinusPulsesValue));
+  assert_param(IS_RTC_SMOOTH_CALIB_MINUS(SmoothCalibMinusPulsesValue));
 
   /* Process Locked */
   __HAL_LOCK(hrtc);
@@ -1409,15 +1579,15 @@
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
   /* check if a calibration is pending*/
-  if((hrtc->Instance->ISR & RTC_ISR_RECALPF) != RESET)
+  if ((hrtc->Instance->ISR & RTC_ISR_RECALPF) != 0U)
   {
-  /* Get tick */
-  tickstart = HAL_GetTick();
+    /* Get tick */
+    tickstart = HAL_GetTick();
 
     /* check if a calibration is pending*/
-    while((hrtc->Instance->ISR & RTC_ISR_RECALPF) != RESET)
+    while ((hrtc->Instance->ISR & RTC_ISR_RECALPF) != 0U)
     {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
+      if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
       {
         /* Enable the write protection for RTC registers */
         __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1434,7 +1604,9 @@
   }
 
   /* Configure the Smooth calibration settings */
-  hrtc->Instance->CALR = (uint32_t)((uint32_t)SmoothCalibPeriod | (uint32_t)SmoothCalibPlusPulses | (uint32_t)SmouthCalibMinusPulsesValue);
+  hrtc->Instance->CALR = (uint32_t)((uint32_t)SmoothCalibPeriod     | \
+                                    (uint32_t)SmoothCalibPlusPulses | \
+                                    (uint32_t)SmoothCalibMinusPulsesValue);
 
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1454,16 +1626,16 @@
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  ShiftAdd1S Select to add or not 1 second to the time calendar.
-  *          This parameter can be one of the following values :
+  *          This parameter can be one of the following values:
   *             @arg RTC_SHIFTADD1S_SET: Add one second to the clock calendar.
   *             @arg RTC_SHIFTADD1S_RESET: No effect.
   * @param  ShiftSubFS Select the number of Second Fractions to substitute.
   *          This parameter can be one any value from 0 to 0x7FFF.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef* hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS)
+HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Check the parameters */
   assert_param(IS_RTC_SHIFT_ADD1S(ShiftAdd1S));
@@ -1480,59 +1652,59 @@
   /* Get tick */
   tickstart = HAL_GetTick();
 
-    /* Wait until the shift is completed*/
-    while((hrtc->Instance->ISR & RTC_ISR_SHPF) != RESET)
-    {
-      if((HAL_GetTick() - tickstart ) > RTC_TIMEOUT_VALUE)
-      {
-        /* Enable the write protection for RTC registers */
-        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-        hrtc->State = HAL_RTC_STATE_TIMEOUT;
-
-        /* Process Unlocked */
-        __HAL_UNLOCK(hrtc);
-
-        return HAL_TIMEOUT;
-      }
-    }
-
-    /* Check if the reference clock detection is disabled */
-    if((hrtc->Instance->CR & RTC_CR_REFCKON) == RESET)
-    {
-      /* Configure the Shift settings */
-      hrtc->Instance->SHIFTR = (uint32_t)(uint32_t)(ShiftSubFS) | (uint32_t)(ShiftAdd1S);
-
-      /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
-      if((hrtc->Instance->CR & RTC_CR_BYPSHAD) == RESET)
-      {
-        if(HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
-        {
-          /* Enable the write protection for RTC registers */
-          __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-          hrtc->State = HAL_RTC_STATE_ERROR;
-
-          /* Process Unlocked */
-          __HAL_UNLOCK(hrtc);
-
-          return HAL_ERROR;
-        }
-      }
-    }
-    else
+  /* Wait until the shift is completed */
+  while ((hrtc->Instance->ISR & RTC_ISR_SHPF) != 0U)
+  {
+    if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE)
     {
       /* Enable the write protection for RTC registers */
       __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 
-      /* Change RTC state */
-      hrtc->State = HAL_RTC_STATE_ERROR;
+      hrtc->State = HAL_RTC_STATE_TIMEOUT;
 
       /* Process Unlocked */
       __HAL_UNLOCK(hrtc);
 
-      return HAL_ERROR;
+      return HAL_TIMEOUT;
     }
+  }
+
+  /* Check if the reference clock detection is disabled */
+  if ((hrtc->Instance->CR & RTC_CR_REFCKON) == 0U)
+  {
+    /* Configure the Shift settings */
+    hrtc->Instance->SHIFTR = (uint32_t)(uint32_t)(ShiftSubFS) | (uint32_t)(ShiftAdd1S);
+
+    /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */
+    if ((hrtc->Instance->CR & RTC_CR_BYPSHAD) == 0U)
+    {
+      if (HAL_RTC_WaitForSynchro(hrtc) != HAL_OK)
+      {
+        /* Enable the write protection for RTC registers */
+        __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+        hrtc->State = HAL_RTC_STATE_ERROR;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(hrtc);
+
+        return HAL_ERROR;
+      }
+    }
+  }
+  else
+  {
+    /* Enable the write protection for RTC registers */
+    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
+
+    /* Change RTC state */
+    hrtc->State = HAL_RTC_STATE_ERROR;
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(hrtc);
+
+    return HAL_ERROR;
+  }
 
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1550,13 +1722,13 @@
   * @brief  Configures the Calibration Pinout (RTC_CALIB) Selection (1Hz or 512Hz).
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
-  * @param  CalibOutput Select the Calibration output Selection .
+  * @param  CalibOutput Select the Calibration output Selection.
   *          This parameter can be one of the following values:
   *             @arg RTC_CALIBOUTPUT_512HZ: A signal has a regular waveform at 512Hz.
   *             @arg RTC_CALIBOUTPUT_1HZ: A signal has a regular waveform at 1Hz.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef* hrtc, uint32_t CalibOutput)
+HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput)
 {
   /* Check the parameters */
   assert_param(IS_RTC_CALIB_OUTPUT(CalibOutput));
@@ -1595,7 +1767,7 @@
   *                the configuration information for RTC.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef* hrtc)
+HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc)
 {
   /* Process Locked */
   __HAL_LOCK(hrtc);
@@ -1625,8 +1797,10 @@
   *                the configuration information for RTC.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef* hrtc)
+HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc)
 {
+  HAL_StatusTypeDef status;
+
   /* Process Locked */
   __HAL_LOCK(hrtc);
 
@@ -1635,38 +1809,30 @@
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  /* Set Initialization mode */
-  if(RTC_EnterInitMode(hrtc) != HAL_OK)
+  /* Enter Initialization mode */
+  status = RTC_EnterInitMode(hrtc);
+
+  if (status == HAL_OK)
   {
-    /* Enable the write protection for RTC registers */
-    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-    /* Set RTC state*/
-    hrtc->State = HAL_RTC_STATE_ERROR;
-
-    /* Process Unlocked */
-    __HAL_UNLOCK(hrtc);
-
-    return HAL_ERROR;
-  }
-  else
-  {
+    /* Enable the reference clock detection */
     __HAL_RTC_CLOCKREF_DETECTION_ENABLE(hrtc);
 
     /* Exit Initialization mode */
-    hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
+    status = RTC_ExitInitMode(hrtc);
+  }
+
+  if (status == HAL_OK)
+  {
+    hrtc->State = HAL_RTC_STATE_READY;
   }
 
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 
-   /* Change RTC state */
-  hrtc->State = HAL_RTC_STATE_READY;
-
   /* Process Unlocked */
   __HAL_UNLOCK(hrtc);
 
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1675,8 +1841,10 @@
   *                the configuration information for RTC.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef* hrtc)
+HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc)
 {
+  HAL_StatusTypeDef status;
+
   /* Process Locked */
   __HAL_LOCK(hrtc);
 
@@ -1685,38 +1853,30 @@
   /* Disable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc);
 
-  /* Set Initialization mode */
-  if(RTC_EnterInitMode(hrtc) != HAL_OK)
+  /* Enter Initialization mode */
+  status = RTC_EnterInitMode(hrtc);
+
+  if (status == HAL_OK)
   {
-    /* Enable the write protection for RTC registers */
-    __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
-
-    /* Set RTC state*/
-    hrtc->State = HAL_RTC_STATE_ERROR;
-
-    /* Process Unlocked */
-    __HAL_UNLOCK(hrtc);
-
-    return HAL_ERROR;
-  }
-  else
-  {
+    /* Disable the reference clock detection */
     __HAL_RTC_CLOCKREF_DETECTION_DISABLE(hrtc);
 
     /* Exit Initialization mode */
-    hrtc->Instance->ISR &= (uint32_t)~RTC_ISR_INIT;
+    status = RTC_ExitInitMode(hrtc);
+  }
+
+  if (status == HAL_OK)
+  {
+    hrtc->State = HAL_RTC_STATE_READY;
   }
 
   /* Enable the write protection for RTC registers */
   __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
 
-  /* Change RTC state */
-  hrtc->State = HAL_RTC_STATE_READY;
-
   /* Process Unlocked */
   __HAL_UNLOCK(hrtc);
 
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -1727,7 +1887,7 @@
   *         directly from the Calendar counter.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef* hrtc)
+HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc)
 {
   /* Process Locked */
   __HAL_LOCK(hrtc);
@@ -1760,7 +1920,7 @@
   *         directly from the Calendar counter.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef* hrtc)
+HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc)
 {
   /* Process Locked */
   __HAL_LOCK(hrtc);
@@ -1789,15 +1949,15 @@
   * @}
   */
 
-  /** @defgroup RTCEx_Group4 Extended features functions
- *  @brief    Extended features functions
- *
+/** @defgroup RTCEx_Exported_Functions_Group4 Extended features functions
+  * @brief    Extended features functions
+  *
 @verbatim
  ===============================================================================
                  ##### Extended features functions #####
  ===============================================================================
     [..]  This section provides functions allowing to:
-      (+) RTC Alram B callback
+      (+) RTC Alarm B callback
       (+) RTC Poll for Alarm B request
 
 @endverbatim
@@ -1815,13 +1975,13 @@
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hrtc);
 
-  /* NOTE : This function Should not be modified, when the callback is needed,
-            the HAL_RTC_AlarmBEventCallback could be implemented in the user file
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_RTCEx_AlarmBEventCallback could be implemented in the user file
    */
 }
 
 /**
-  * @brief  This function handles AlarmB Polling request.
+  * @brief  Handles Alarm B Polling request.
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  Timeout Timeout duration
@@ -1829,16 +1989,17 @@
   */
 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout)
 {
-  uint32_t tickstart = 0;
+  uint32_t tickstart = 0U;
 
   /* Get tick */
   tickstart = HAL_GetTick();
 
-  while(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBF) == RESET)
+  /* Wait till RTC ALRBF flag is set and if timeout is reached exit */
+  while (__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBF) == 0U)
   {
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
+      if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout))
       {
         hrtc->State = HAL_RTC_STATE_TIMEOUT;
         return HAL_TIMEOUT;
@@ -1846,7 +2007,7 @@
     }
   }
 
-  /* Clear the Alarm Flag */
+  /* Clear the Alarm flag */
   __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRBF);
 
   /* Change RTC state */
@@ -1871,4 +2032,3 @@
 /**
   * @}
   */
-
diff --git a/Src/stm32f7xx_hal_smartcard.c b/Src/stm32f7xx_hal_smartcard.c
index 2cd00bb..98668b4 100644
--- a/Src/stm32f7xx_hal_smartcard.c
+++ b/Src/stm32f7xx_hal_smartcard.c
@@ -2162,7 +2162,7 @@
   *                    the configuration information for the specified SMARTCARD module.
   * @retval SMARTCARD handle state
   */
-HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard)
+HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(const SMARTCARD_HandleTypeDef *hsmartcard)
 {
   /* Return SMARTCARD handle state */
   uint32_t temp1;
@@ -2179,7 +2179,7 @@
   *                    the configuration information for the specified SMARTCARD module.
   * @retval SMARTCARD handle Error Code
   */
-uint32_t HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard)
+uint32_t HAL_SMARTCARD_GetError(const SMARTCARD_HandleTypeDef *hsmartcard)
 {
   return hsmartcard->ErrorCode;
 }
diff --git a/Src/stm32f7xx_hal_smbus.c b/Src/stm32f7xx_hal_smbus.c
index 7db7a3d..53a0e59 100644
--- a/Src/stm32f7xx_hal_smbus.c
+++ b/Src/stm32f7xx_hal_smbus.c
@@ -584,6 +584,9 @@
 /**
   * @brief  Register a User SMBUS Callback
   *         To be used instead of the weak predefined callback
+  * @note   The HAL_SMBUS_RegisterCallback() may be called before HAL_SMBUS_Init() in 
+  *         HAL_SMBUS_STATE_RESET to register callbacks for HAL_SMBUS_MSPINIT_CB_ID and 
+  *         HAL_SMBUS_MSPDEINIT_CB_ID.
   * @param  hsmbus Pointer to a SMBUS_HandleTypeDef structure that contains
   *                the configuration information for the specified SMBUS.
   * @param  CallbackID ID of the callback to be registered
@@ -613,9 +616,6 @@
     return HAL_ERROR;
   }
 
-  /* Process locked */
-  __HAL_LOCK(hsmbus);
-
   if (HAL_SMBUS_STATE_READY == hsmbus->State)
   {
     switch (CallbackID)
@@ -691,14 +691,15 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsmbus);
   return status;
 }
 
 /**
   * @brief  Unregister an SMBUS Callback
   *         SMBUS callback is redirected to the weak predefined callback
+  * @note   The HAL_SMBUS_UnRegisterCallback() may be called before HAL_SMBUS_Init() in 
+  *         HAL_SMBUS_STATE_RESET to un-register callbacks for HAL_SMBUS_MSPINIT_CB_ID and 
+  *         HAL_SMBUS_MSPDEINIT_CB_ID
   * @param  hsmbus Pointer to a SMBUS_HandleTypeDef structure that contains
   *                the configuration information for the specified SMBUS.
   * @param  CallbackID ID of the callback to be unregistered
@@ -719,9 +720,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hsmbus);
-
   if (HAL_SMBUS_STATE_READY == hsmbus->State)
   {
     switch (CallbackID)
@@ -797,8 +795,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsmbus);
   return status;
 }
 
@@ -822,8 +818,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hsmbus);
 
   if (HAL_SMBUS_STATE_READY == hsmbus->State)
   {
@@ -838,8 +832,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsmbus);
   return status;
 }
 
@@ -854,9 +846,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hsmbus);
-
   if (HAL_SMBUS_STATE_READY == hsmbus->State)
   {
     hsmbus->AddrCallback = HAL_SMBUS_AddrCallback; /* Legacy weak AddrCallback  */
@@ -870,8 +859,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsmbus);
   return status;
 }
 
diff --git a/Src/stm32f7xx_hal_spdifrx.c b/Src/stm32f7xx_hal_spdifrx.c
index da382f6..c19d4bb 100644
--- a/Src/stm32f7xx_hal_spdifrx.c
+++ b/Src/stm32f7xx_hal_spdifrx.c
@@ -188,7 +188,8 @@
 static void  SPDIFRX_DMAError(DMA_HandleTypeDef *hdma);
 static void  SPDIFRX_ReceiveControlFlow_IT(SPDIFRX_HandleTypeDef *hspdif);
 static void  SPDIFRX_ReceiveDataFlow_IT(SPDIFRX_HandleTypeDef *hspdif);
-static HAL_StatusTypeDef  SPDIFRX_WaitOnFlagUntilTimeout(SPDIFRX_HandleTypeDef *hspdif, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t tickstart);
+static HAL_StatusTypeDef  SPDIFRX_WaitOnFlagUntilTimeout(SPDIFRX_HandleTypeDef *hspdif, uint32_t Flag,
+                                                         FlagStatus Status, uint32_t Timeout, uint32_t tickstart);
 /**
   * @}
   */
@@ -238,7 +239,7 @@
   uint32_t tmpreg;
 
   /* Check the SPDIFRX handle allocation */
-  if(hspdif == NULL)
+  if (hspdif == NULL)
   {
     return HAL_ERROR;
   }
@@ -256,7 +257,7 @@
   assert_param(IS_PARITY_ERROR_MASK(hspdif->Init.ParityErrorMask));
 
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
-  if(hspdif->State == HAL_SPDIFRX_STATE_RESET)
+  if (hspdif->State == HAL_SPDIFRX_STATE_RESET)
   {
     /* Allocate lock resource and initialize it */
     hspdif->Lock = HAL_UNLOCKED;
@@ -267,7 +268,7 @@
     hspdif->CxCpltCallback      = HAL_SPDIFRX_CxCpltCallback;     /* Legacy weak CxCpltCallback     */
     hspdif->ErrorCallback       = HAL_SPDIFRX_ErrorCallback;      /* Legacy weak ErrorCallback      */
 
-    if(hspdif->MspInitCallback == NULL)
+    if (hspdif->MspInitCallback == NULL)
     {
       hspdif->MspInitCallback = HAL_SPDIFRX_MspInit; /* Legacy weak MspInit  */
     }
@@ -276,7 +277,7 @@
     hspdif->MspInitCallback(hspdif);
   }
 #else
-  if(hspdif->State == HAL_SPDIFRX_STATE_RESET)
+  if (hspdif->State == HAL_SPDIFRX_STATE_RESET)
   {
     /* Allocate lock resource and initialize it */
     hspdif->Lock = HAL_UNLOCKED;
@@ -310,7 +311,7 @@
              hspdif->Init.ChannelStatusMask |
              hspdif->Init.ValidityBitMask |
              hspdif->Init.ParityErrorMask
-             );
+            );
 
 
   hspdif->Instance->CR = tmpreg;
@@ -331,7 +332,7 @@
 HAL_StatusTypeDef HAL_SPDIFRX_DeInit(SPDIFRX_HandleTypeDef *hspdif)
 {
   /* Check the SPDIFRX handle allocation */
-  if(hspdif == NULL)
+  if (hspdif == NULL)
   {
     return HAL_ERROR;
   }
@@ -345,7 +346,7 @@
   __HAL_SPDIFRX_IDLE(hspdif);
 
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
-  if(hspdif->MspDeInitCallback == NULL)
+  if (hspdif->MspDeInitCallback == NULL)
   {
     hspdif->MspDeInitCallback = HAL_SPDIFRX_MspDeInit; /* Legacy weak MspDeInit  */
   }
@@ -415,11 +416,12 @@
   * @param  pCallback pointer to the Callback function
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SPDIFRX_RegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID, pSPDIFRX_CallbackTypeDef pCallback)
+HAL_StatusTypeDef HAL_SPDIFRX_RegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID,
+                                               pSPDIFRX_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  if(pCallback == NULL)
+  if (pCallback == NULL)
   {
     /* Update the error code */
     hspdif->ErrorCode |= HAL_SPDIFRX_ERROR_INVALID_CALLBACK;
@@ -428,7 +430,7 @@
   /* Process locked */
   __HAL_LOCK(hspdif);
 
-  if(HAL_SPDIFRX_STATE_READY == hspdif->State)
+  if (HAL_SPDIFRX_STATE_READY == hspdif->State)
   {
     switch (CallbackID)
     {
@@ -468,7 +470,7 @@
         break;
     }
   }
-  else if(HAL_SPDIFRX_STATE_RESET == hspdif->State)
+  else if (HAL_SPDIFRX_STATE_RESET == hspdif->State)
   {
     switch (CallbackID)
     {
@@ -483,7 +485,7 @@
       default :
         /* Update the error code */
         hspdif->ErrorCode |= HAL_SPDIFRX_ERROR_INVALID_CALLBACK;
-       /* Return error status */
+        /* Return error status */
         status =  HAL_ERROR;
         break;
     }
@@ -503,7 +505,7 @@
 
 /**
   * @brief  Unregister a SPDIFRX Callback
-  *         SPDIFRX callabck is redirected to the weak predefined callback
+  *         SPDIFRX callback is redirected to the weak predefined callback
   * @param  hspdif SPDIFRX handle
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
@@ -516,14 +518,15 @@
   *          @arg @ref HAL_SPDIFRX_MSPDEINIT_CB_ID  MspDeInit callback ID
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SPDIFRX_UnRegisterCallback(SPDIFRX_HandleTypeDef *hspdif, HAL_SPDIFRX_CallbackIDTypeDef CallbackID)
+HAL_StatusTypeDef HAL_SPDIFRX_UnRegisterCallback(SPDIFRX_HandleTypeDef *hspdif,
+                                                 HAL_SPDIFRX_CallbackIDTypeDef CallbackID)
 {
-HAL_StatusTypeDef status = HAL_OK;
+  HAL_StatusTypeDef status = HAL_OK;
 
   /* Process locked */
   __HAL_LOCK(hspdif);
 
-  if(HAL_SPDIFRX_STATE_READY == hspdif->State)
+  if (HAL_SPDIFRX_STATE_READY == hspdif->State)
   {
     switch (CallbackID)
     {
@@ -550,12 +553,12 @@
       default :
         /* Update the error code */
         hspdif->ErrorCode |= HAL_SPDIFRX_ERROR_INVALID_CALLBACK;
-       /* Return error status */
+        /* Return error status */
         status =  HAL_ERROR;
         break;
     }
   }
-  else if(HAL_SPDIFRX_STATE_RESET == hspdif->State)
+  else if (HAL_SPDIFRX_STATE_RESET == hspdif->State)
   {
     switch (CallbackID)
     {
@@ -601,7 +604,7 @@
   uint32_t tmpreg;
 
   /* Check the SPDIFRX handle allocation */
-  if(hspdif == NULL)
+  if (hspdif == NULL)
   {
     return HAL_ERROR;
   }
@@ -617,9 +620,9 @@
   /* Reset the old SPDIFRX CR configuration */
   tmpreg = hspdif->Instance->CR;
 
-  if(((tmpreg & SPDIFRX_STATE_RCV) == SPDIFRX_STATE_RCV) &&
-     (((tmpreg & SPDIFRX_CR_DRFMT) != sDataFormat.DataFormat) ||
-      ((tmpreg & SPDIFRX_CR_RXSTEO) != sDataFormat.StereoMode)))
+  if (((tmpreg & SPDIFRX_STATE_RCV) == SPDIFRX_STATE_RCV) &&
+      (((tmpreg & SPDIFRX_CR_DRFMT) != sDataFormat.DataFormat) ||
+       ((tmpreg & SPDIFRX_CR_RXSTEO) != sDataFormat.StereoMode)))
   {
     return HAL_ERROR;
   }
@@ -683,8 +686,8 @@
         (++) HAL_SPDIFRX_CxCpltCallback()
 
 @endverbatim
-* @{
-*/
+  * @{
+  */
 
 /**
   * @brief  Receives an amount of data (Data Flow) in blocking mode.
@@ -695,18 +698,19 @@
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout)
+HAL_StatusTypeDef HAL_SPDIFRX_ReceiveDataFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size,
+                                              uint32_t Timeout)
 {
   uint32_t tickstart;
   uint16_t sizeCounter = Size;
   uint32_t *pTmpBuf = pData;
 
-  if((pData == NULL ) || (Size == 0U))
+  if ((pData == NULL) || (Size == 0U))
   {
     return  HAL_ERROR;
   }
 
-  if(hspdif->State == HAL_SPDIFRX_STATE_READY)
+  if (hspdif->State == HAL_SPDIFRX_STATE_READY)
   {
     /* Process Locked */
     __HAL_LOCK(hspdif);
@@ -720,7 +724,7 @@
     tickstart = HAL_GetTick();
 
     /* Wait until SYNCD flag is set */
-    if(SPDIFRX_WaitOnFlagUntilTimeout(hspdif, SPDIFRX_FLAG_SYNCD, RESET, Timeout, tickstart) != HAL_OK)
+    if (SPDIFRX_WaitOnFlagUntilTimeout(hspdif, SPDIFRX_FLAG_SYNCD, RESET, Timeout, tickstart) != HAL_OK)
     {
       return HAL_TIMEOUT;
     }
@@ -729,13 +733,13 @@
     __HAL_SPDIFRX_RCV(hspdif);
 
     /* Receive data flow */
-    while(sizeCounter > 0U)
+    while (sizeCounter > 0U)
     {
       /* Get tick */
       tickstart = HAL_GetTick();
 
       /* Wait until RXNE flag is set */
-      if(SPDIFRX_WaitOnFlagUntilTimeout(hspdif, SPDIFRX_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK)
+      if (SPDIFRX_WaitOnFlagUntilTimeout(hspdif, SPDIFRX_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK)
       {
         return HAL_TIMEOUT;
       }
@@ -768,18 +772,19 @@
   * @param  Timeout Timeout duration
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size, uint32_t Timeout)
+HAL_StatusTypeDef HAL_SPDIFRX_ReceiveControlFlow(SPDIFRX_HandleTypeDef *hspdif, uint32_t *pData, uint16_t Size,
+                                                 uint32_t Timeout)
 {
   uint32_t tickstart;
   uint16_t sizeCounter = Size;
   uint32_t *pTmpBuf = pData;
 
-  if((pData == NULL ) || (Size == 0U))
+  if ((pData == NULL) || (Size == 0U))
   {
     return  HAL_ERROR;
   }
 
-  if(hspdif->State == HAL_SPDIFRX_STATE_READY)
+  if (hspdif->State == HAL_SPDIFRX_STATE_READY)
   {
     /* Process Locked */
     __HAL_LOCK(hspdif);
@@ -793,7 +798,7 @@
     tickstart = HAL_GetTick();
 
     /* Wait until SYNCD flag is set */
-    if(SPDIFRX_WaitOnFlagUntilTimeout(hspdif, SPDIFRX_FLAG_SYNCD, RESET, Timeout, tickstart) != HAL_OK)
+    if (SPDIFRX_WaitOnFlagUntilTimeout(hspdif, SPDIFRX_FLAG_SYNCD, RESET, Timeout, tickstart) != HAL_OK)
     {
       return HAL_TIMEOUT;
     }
@@ -802,13 +807,13 @@
     __HAL_SPDIFRX_RCV(hspdif);
 
     /* Receive control flow */
-    while(sizeCounter > 0U)
+    while (sizeCounter > 0U)
     {
       /* Get tick */
       tickstart = HAL_GetTick();
 
       /* Wait until CSRNE flag is set */
-      if(SPDIFRX_WaitOnFlagUntilTimeout(hspdif, SPDIFRX_FLAG_CSRNE, RESET, Timeout, tickstart) != HAL_OK)
+      if (SPDIFRX_WaitOnFlagUntilTimeout(hspdif, SPDIFRX_FLAG_CSRNE, RESET, Timeout, tickstart) != HAL_OK)
       {
         return HAL_TIMEOUT;
       }
@@ -845,9 +850,9 @@
 
   const HAL_SPDIFRX_StateTypeDef tempState = hspdif->State;
 
-  if((tempState == HAL_SPDIFRX_STATE_READY) || (tempState == HAL_SPDIFRX_STATE_BUSY_CX))
+  if ((tempState == HAL_SPDIFRX_STATE_READY) || (tempState == HAL_SPDIFRX_STATE_BUSY_CX))
   {
-    if((pData == NULL) || (Size == 0U))
+    if ((pData == NULL) || (Size == 0U))
     {
       return HAL_ERROR;
     }
@@ -873,7 +878,7 @@
     /* Enable the SPDIFRX RXNE interrupt */
     __HAL_SPDIFRX_ENABLE_IT(hspdif, SPDIFRX_IT_RXNE);
 
-    if((SPDIFRX->CR & SPDIFRX_CR_SPDIFEN) != SPDIFRX_STATE_RCV)
+    if ((SPDIFRX->CR & SPDIFRX_CR_SPDIFEN) != SPDIFRX_STATE_RCV)
     {
       /* Start synchronization */
       __HAL_SPDIFRX_SYNC(hspdif);
@@ -892,7 +897,7 @@
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_SYNCDIE);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_IFEIE);
 
-          hspdif->State= HAL_SPDIFRX_STATE_READY;
+          hspdif->State = HAL_SPDIFRX_STATE_READY;
 
           /* Process Unlocked */
           __HAL_UNLOCK(hspdif);
@@ -930,9 +935,9 @@
 
   const HAL_SPDIFRX_StateTypeDef tempState = hspdif->State;
 
-  if((tempState == HAL_SPDIFRX_STATE_READY) || (tempState == HAL_SPDIFRX_STATE_BUSY_RX))
+  if ((tempState == HAL_SPDIFRX_STATE_READY) || (tempState == HAL_SPDIFRX_STATE_BUSY_RX))
   {
-    if((pData == NULL ) || (Size == 0U))
+    if ((pData == NULL) || (Size == 0U))
     {
       return HAL_ERROR;
     }
@@ -958,7 +963,7 @@
     /* Enable the SPDIFRX CSRNE interrupt */
     __HAL_SPDIFRX_ENABLE_IT(hspdif, SPDIFRX_IT_CSRNE);
 
-    if((SPDIFRX->CR & SPDIFRX_CR_SPDIFEN) != SPDIFRX_STATE_RCV)
+    if ((SPDIFRX->CR & SPDIFRX_CR_SPDIFEN) != SPDIFRX_STATE_RCV)
     {
       /* Start synchronization */
       __HAL_SPDIFRX_SYNC(hspdif);
@@ -977,7 +982,7 @@
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_SYNCDIE);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_IFEIE);
 
-          hspdif->State= HAL_SPDIFRX_STATE_READY;
+          hspdif->State = HAL_SPDIFRX_STATE_READY;
 
           /* Process Unlocked */
           __HAL_UNLOCK(hspdif);
@@ -1015,12 +1020,12 @@
 
   const HAL_SPDIFRX_StateTypeDef tempState = hspdif->State;
 
-  if((pData == NULL) || (Size == 0U))
+  if ((pData == NULL) || (Size == 0U))
   {
     return  HAL_ERROR;
   }
 
-  if((tempState == HAL_SPDIFRX_STATE_READY) || (tempState == HAL_SPDIFRX_STATE_BUSY_CX))
+  if ((tempState == HAL_SPDIFRX_STATE_READY) || (tempState == HAL_SPDIFRX_STATE_BUSY_CX))
   {
     /* Process Locked */
     __HAL_LOCK(hspdif);
@@ -1042,7 +1047,7 @@
     hspdif->hdmaDrRx->XferErrorCallback = SPDIFRX_DMAError;
 
     /* Enable the DMA request */
-    if(HAL_DMA_Start_IT(hspdif->hdmaDrRx, (uint32_t)&hspdif->Instance->DR, (uint32_t)hspdif->pRxBuffPtr, Size) != HAL_OK)
+    if (HAL_DMA_Start_IT(hspdif->hdmaDrRx, (uint32_t)&hspdif->Instance->DR, (uint32_t)hspdif->pRxBuffPtr, Size) != HAL_OK)
     {
       /* Set SPDIFRX error */
       hspdif->ErrorCode = HAL_SPDIFRX_ERROR_DMA;
@@ -1059,7 +1064,7 @@
     /* Enable RXDMAEN bit in SPDIFRX CR register for data flow reception*/
     hspdif->Instance->CR |= SPDIFRX_CR_RXDMAEN;
 
-    if((SPDIFRX->CR & SPDIFRX_CR_SPDIFEN) != SPDIFRX_STATE_RCV)
+    if ((SPDIFRX->CR & SPDIFRX_CR_SPDIFEN) != SPDIFRX_STATE_RCV)
     {
       /* Start synchronization */
       __HAL_SPDIFRX_SYNC(hspdif);
@@ -1078,7 +1083,7 @@
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_SYNCDIE);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_IFEIE);
 
-          hspdif->State= HAL_SPDIFRX_STATE_READY;
+          hspdif->State = HAL_SPDIFRX_STATE_READY;
 
           /* Process Unlocked */
           __HAL_UNLOCK(hspdif);
@@ -1116,12 +1121,12 @@
 
   const HAL_SPDIFRX_StateTypeDef tempState = hspdif->State;
 
-  if((pData == NULL) || (Size == 0U))
+  if ((pData == NULL) || (Size == 0U))
   {
     return  HAL_ERROR;
   }
 
-  if((tempState == HAL_SPDIFRX_STATE_READY) || (tempState == HAL_SPDIFRX_STATE_BUSY_RX))
+  if ((tempState == HAL_SPDIFRX_STATE_READY) || (tempState == HAL_SPDIFRX_STATE_BUSY_RX))
   {
     hspdif->pCsBuffPtr = pData;
     hspdif->CsXferSize = Size;
@@ -1143,7 +1148,7 @@
     hspdif->hdmaCsRx->XferErrorCallback = SPDIFRX_DMAError;
 
     /* Enable the DMA request */
-    if(HAL_DMA_Start_IT(hspdif->hdmaCsRx, (uint32_t)&hspdif->Instance->CSR, (uint32_t)hspdif->pCsBuffPtr, Size) != HAL_OK)
+    if (HAL_DMA_Start_IT(hspdif->hdmaCsRx, (uint32_t)&hspdif->Instance->CSR, (uint32_t)hspdif->pCsBuffPtr, Size) != HAL_OK)
     {
       /* Set SPDIFRX error */
       hspdif->ErrorCode = HAL_SPDIFRX_ERROR_DMA;
@@ -1160,7 +1165,7 @@
     /* Enable CBDMAEN bit in SPDIFRX CR register for control flow reception*/
     hspdif->Instance->CR |= SPDIFRX_CR_CBDMAEN;
 
-    if((SPDIFRX->CR & SPDIFRX_CR_SPDIFEN) != SPDIFRX_STATE_RCV)
+    if ((SPDIFRX->CR & SPDIFRX_CR_SPDIFEN) != SPDIFRX_STATE_RCV)
     {
       /* Start synchronization */
       __HAL_SPDIFRX_SYNC(hspdif);
@@ -1179,7 +1184,7 @@
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_SYNCDIE);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_IFEIE);
 
-          hspdif->State= HAL_SPDIFRX_STATE_READY;
+          hspdif->State = HAL_SPDIFRX_STATE_READY;
 
           /* Process Unlocked */
           __HAL_UNLOCK(hspdif);
@@ -1244,21 +1249,21 @@
   uint32_t itSource = hspdif->Instance->IMR;
 
   /* SPDIFRX in mode Data Flow Reception */
-  if(((itFlag & SPDIFRX_FLAG_RXNE) == SPDIFRX_FLAG_RXNE) && ((itSource &  SPDIFRX_IT_RXNE) == SPDIFRX_IT_RXNE))
+  if (((itFlag & SPDIFRX_FLAG_RXNE) == SPDIFRX_FLAG_RXNE) && ((itSource &  SPDIFRX_IT_RXNE) == SPDIFRX_IT_RXNE))
   {
     __HAL_SPDIFRX_CLEAR_IT(hspdif, SPDIFRX_IT_RXNE);
     SPDIFRX_ReceiveDataFlow_IT(hspdif);
   }
 
   /* SPDIFRX in mode Control Flow Reception */
-  if(((itFlag & SPDIFRX_FLAG_CSRNE) == SPDIFRX_FLAG_CSRNE) && ((itSource &  SPDIFRX_IT_CSRNE) == SPDIFRX_IT_CSRNE))
+  if (((itFlag & SPDIFRX_FLAG_CSRNE) == SPDIFRX_FLAG_CSRNE) && ((itSource &  SPDIFRX_IT_CSRNE) == SPDIFRX_IT_CSRNE))
   {
     __HAL_SPDIFRX_CLEAR_IT(hspdif, SPDIFRX_IT_CSRNE);
     SPDIFRX_ReceiveControlFlow_IT(hspdif);
   }
 
   /* SPDIFRX Overrun error interrupt occurred */
-  if(((itFlag & SPDIFRX_FLAG_OVR) == SPDIFRX_FLAG_OVR) && ((itSource &  SPDIFRX_IT_OVRIE) == SPDIFRX_IT_OVRIE))
+  if (((itFlag & SPDIFRX_FLAG_OVR) == SPDIFRX_FLAG_OVR) && ((itSource &  SPDIFRX_IT_OVRIE) == SPDIFRX_IT_OVRIE))
   {
     __HAL_SPDIFRX_CLEAR_IT(hspdif, SPDIFRX_IT_OVRIE);
 
@@ -1270,7 +1275,7 @@
   }
 
   /* SPDIFRX Parity error interrupt occurred */
-  if(((itFlag & SPDIFRX_FLAG_PERR) == SPDIFRX_FLAG_PERR) && ((itSource &  SPDIFRX_IT_PERRIE) == SPDIFRX_IT_PERRIE))
+  if (((itFlag & SPDIFRX_FLAG_PERR) == SPDIFRX_FLAG_PERR) && ((itSource &  SPDIFRX_IT_PERRIE) == SPDIFRX_IT_PERRIE))
   {
     __HAL_SPDIFRX_CLEAR_IT(hspdif, SPDIFRX_IT_PERRIE);
 
@@ -1381,7 +1386,7 @@
   * @param  hspdif SPDIFRX handle
   * @retval HAL state
   */
-HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef const * const hspdif)
+HAL_SPDIFRX_StateTypeDef HAL_SPDIFRX_GetState(SPDIFRX_HandleTypeDef const *const hspdif)
 {
   return hspdif->State;
 }
@@ -1391,7 +1396,7 @@
   * @param  hspdif SPDIFRX handle
   * @retval SPDIFRX Error Code
   */
-uint32_t HAL_SPDIFRX_GetError(SPDIFRX_HandleTypeDef const * const hspdif)
+uint32_t HAL_SPDIFRX_GetError(SPDIFRX_HandleTypeDef const *const hspdif)
 {
   return hspdif->ErrorCode;
 }
@@ -1407,10 +1412,10 @@
   */
 static void SPDIFRX_DMARxCplt(DMA_HandleTypeDef *hdma)
 {
-  SPDIFRX_HandleTypeDef* hspdif = ( SPDIFRX_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+  SPDIFRX_HandleTypeDef *hspdif = (SPDIFRX_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
 
   /* Disable Rx DMA Request */
-  if(hdma->Init.Mode != DMA_CIRCULAR)
+  if (hdma->Init.Mode != DMA_CIRCULAR)
   {
     hspdif->Instance->CR &= (uint16_t)(~SPDIFRX_CR_RXDMAEN);
     hspdif->RxXferCount = 0;
@@ -1430,7 +1435,7 @@
   */
 static void SPDIFRX_DMARxHalfCplt(DMA_HandleTypeDef *hdma)
 {
-  SPDIFRX_HandleTypeDef* hspdif = (SPDIFRX_HandleTypeDef*)((DMA_HandleTypeDef*)hdma)->Parent;
+  SPDIFRX_HandleTypeDef *hspdif = (SPDIFRX_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
 
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
   hspdif->RxHalfCpltCallback(hspdif);
@@ -1447,7 +1452,7 @@
   */
 static void SPDIFRX_DMACxCplt(DMA_HandleTypeDef *hdma)
 {
-  SPDIFRX_HandleTypeDef* hspdif = ( SPDIFRX_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+  SPDIFRX_HandleTypeDef *hspdif = (SPDIFRX_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
 
   /* Disable Cb DMA Request */
   hspdif->Instance->CR &= (uint16_t)(~SPDIFRX_CR_CBDMAEN);
@@ -1468,7 +1473,7 @@
   */
 static void SPDIFRX_DMACxHalfCplt(DMA_HandleTypeDef *hdma)
 {
-  SPDIFRX_HandleTypeDef* hspdif = (SPDIFRX_HandleTypeDef*)((DMA_HandleTypeDef*)hdma)->Parent;
+  SPDIFRX_HandleTypeDef *hspdif = (SPDIFRX_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
 
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
   hspdif->CxHalfCpltCallback(hspdif);
@@ -1484,13 +1489,13 @@
   */
 static void SPDIFRX_DMAError(DMA_HandleTypeDef *hdma)
 {
-  SPDIFRX_HandleTypeDef* hspdif = ( SPDIFRX_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent;
+  SPDIFRX_HandleTypeDef *hspdif = (SPDIFRX_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
 
   /* Disable Rx and Cb DMA Request */
   hspdif->Instance->CR &= (uint16_t)(~(SPDIFRX_CR_RXDMAEN | SPDIFRX_CR_CBDMAEN));
   hspdif->RxXferCount = 0;
 
-  hspdif->State= HAL_SPDIFRX_STATE_READY;
+  hspdif->State = HAL_SPDIFRX_STATE_READY;
 
   /* Set the error code and execute error callback*/
   hspdif->ErrorCode |= HAL_SPDIFRX_ERROR_DMA;
@@ -1516,7 +1521,7 @@
   hspdif->pRxBuffPtr++;
   hspdif->RxXferCount--;
 
-  if(hspdif->RxXferCount == 0U)
+  if (hspdif->RxXferCount == 0U)
   {
     /* Disable RXNE/PE and OVR interrupts */
     __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_OVRIE | SPDIFRX_IT_PERRIE | SPDIFRX_IT_RXNE);
@@ -1527,9 +1532,9 @@
     __HAL_UNLOCK(hspdif);
 
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
-  hspdif->RxCpltCallback(hspdif);
+    hspdif->RxCpltCallback(hspdif);
 #else
-  HAL_SPDIFRX_RxCpltCallback(hspdif);
+    HAL_SPDIFRX_RxCpltCallback(hspdif);
 #endif /* USE_HAL_SPDIFRX_REGISTER_CALLBACKS */
   }
 }
@@ -1546,7 +1551,7 @@
   hspdif->pCsBuffPtr++;
   hspdif->CsXferCount--;
 
-  if(hspdif->CsXferCount == 0U)
+  if (hspdif->CsXferCount == 0U)
   {
     /* Disable CSRNE interrupt */
     __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_CSRNE);
@@ -1557,9 +1562,9 @@
     __HAL_UNLOCK(hspdif);
 
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
-  hspdif->CxCpltCallback(hspdif);
+    hspdif->CxCpltCallback(hspdif);
 #else
-  HAL_SPDIFRX_CxCpltCallback(hspdif);
+    HAL_SPDIFRX_CxCpltCallback(hspdif);
 #endif /* USE_HAL_SPDIFRX_REGISTER_CALLBACKS */
   }
 }
@@ -1573,15 +1578,16 @@
   * @param tickstart Tick start value
   * @retval HAL status
   */
-static HAL_StatusTypeDef SPDIFRX_WaitOnFlagUntilTimeout(SPDIFRX_HandleTypeDef *hspdif, uint32_t Flag, FlagStatus Status, uint32_t Timeout, uint32_t tickstart)
+static HAL_StatusTypeDef SPDIFRX_WaitOnFlagUntilTimeout(SPDIFRX_HandleTypeDef *hspdif, uint32_t Flag, FlagStatus Status,
+                                                        uint32_t Timeout, uint32_t tickstart)
 {
   /* Wait until flag is set */
-  while(__HAL_SPDIFRX_GET_FLAG(hspdif, Flag) == Status)
+  while (__HAL_SPDIFRX_GET_FLAG(hspdif, Flag) == Status)
   {
     /* Check for the Timeout */
-    if(Timeout != HAL_MAX_DELAY)
+    if (Timeout != HAL_MAX_DELAY)
     {
-      if(((HAL_GetTick() - tickstart ) > Timeout) || (Timeout == 0U))
+      if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
       {
         /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
         __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_RXNE);
@@ -1592,7 +1598,7 @@
         __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_SYNCDIE);
         __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_IFEIE);
 
-        hspdif->State= HAL_SPDIFRX_STATE_READY;
+        hspdif->State = HAL_SPDIFRX_STATE_READY;
 
         /* Process Unlocked */
         __HAL_UNLOCK(hspdif);
diff --git a/Src/stm32f7xx_hal_tim.c b/Src/stm32f7xx_hal_tim.c
index 6fd025c..4df212b 100644
--- a/Src/stm32f7xx_hal_tim.c
+++ b/Src/stm32f7xx_hal_tim.c
@@ -278,6 +278,7 @@
   assert_param(IS_TIM_INSTANCE(htim->Instance));
   assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
   assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+  assert_param(IS_TIM_PERIOD(htim, htim->Init.Period));
   assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
 
   if (htim->State == HAL_TIM_STATE_RESET)
@@ -539,7 +540,7 @@
   }
   else if (htim->State == HAL_TIM_STATE_READY)
   {
-    if ((pData == NULL) && (Length > 0U))
+    if ((pData == NULL) || (Length == 0U))
     {
       return HAL_ERROR;
     }
@@ -661,6 +662,7 @@
   assert_param(IS_TIM_INSTANCE(htim->Instance));
   assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
   assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+  assert_param(IS_TIM_PERIOD(htim, htim->Init.Period));
   assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
 
   if (htim->State == HAL_TIM_STATE_RESET)
@@ -1066,7 +1068,7 @@
   }
   else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY)
   {
-    if ((pData == NULL) && (Length > 0U))
+    if ((pData == NULL) || (Length == 0U))
     {
       return HAL_ERROR;
     }
@@ -1329,6 +1331,7 @@
   assert_param(IS_TIM_INSTANCE(htim->Instance));
   assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
   assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+  assert_param(IS_TIM_PERIOD(htim, htim->Init.Period));
   assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
 
   if (htim->State == HAL_TIM_STATE_RESET)
@@ -1734,7 +1737,7 @@
   }
   else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY)
   {
-    if ((pData == NULL) && (Length > 0U))
+    if ((pData == NULL) || (Length == 0U))
     {
       return HAL_ERROR;
     }
@@ -1996,6 +1999,7 @@
   assert_param(IS_TIM_INSTANCE(htim->Instance));
   assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
   assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+  assert_param(IS_TIM_PERIOD(htim, htim->Init.Period));
   assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
 
   if (htim->State == HAL_TIM_STATE_RESET)
@@ -2389,7 +2393,7 @@
   else if ((channel_state == HAL_TIM_CHANNEL_STATE_READY)
            && (complementary_channel_state == HAL_TIM_CHANNEL_STATE_READY))
   {
-    if ((pData == NULL) && (Length > 0U))
+    if ((pData == NULL) || (Length == 0U))
     {
       return HAL_ERROR;
     }
@@ -2645,6 +2649,7 @@
   assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
   assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
   assert_param(IS_TIM_OPM_MODE(OnePulseMode));
+  assert_param(IS_TIM_PERIOD(htim, htim->Init.Period));
   assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
 
   if (htim->State == HAL_TIM_STATE_RESET)
@@ -3048,6 +3053,7 @@
   assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
   assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
   assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter));
+  assert_param(IS_TIM_PERIOD(htim, htim->Init.Period));
 
   if (htim->State == HAL_TIM_STATE_RESET)
   {
@@ -3557,7 +3563,7 @@
     else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY)
              && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY))
     {
-      if ((pData1 == NULL) && (Length > 0U))
+      if ((pData1 == NULL) || (Length == 0U))
       {
         return HAL_ERROR;
       }
@@ -3582,7 +3588,7 @@
     else if ((channel_2_state == HAL_TIM_CHANNEL_STATE_READY)
              && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY))
     {
-      if ((pData2 == NULL) && (Length > 0U))
+      if ((pData2 == NULL) || (Length == 0U))
       {
         return HAL_ERROR;
       }
@@ -3611,7 +3617,7 @@
              && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)
              && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY))
     {
-      if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))
+      if ((((pData1 == NULL) || (pData2 == NULL))) || (Length == 0U))
       {
         return HAL_ERROR;
       }
diff --git a/Src/stm32f7xx_hal_tim_ex.c b/Src/stm32f7xx_hal_tim_ex.c
index 5390e4d..d9db3ff 100644
--- a/Src/stm32f7xx_hal_tim_ex.c
+++ b/Src/stm32f7xx_hal_tim_ex.c
@@ -152,6 +152,7 @@
   assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
   assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
   assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
+  assert_param(IS_TIM_PERIOD(htim, htim->Init.Period));
   assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
   assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
 
@@ -502,7 +503,7 @@
   else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY)
            && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY))
   {
-    if ((pData == NULL) && (Length > 0U))
+    if ((pData == NULL) || (Length == 0U))
     {
       return HAL_ERROR;
     }
@@ -883,7 +884,7 @@
   }
   else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY)
   {
-    if ((pData == NULL) && (Length > 0U))
+    if ((pData == NULL) || (Length == 0U))
     {
       return HAL_ERROR;
     }
@@ -1365,7 +1366,7 @@
   }
   else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY)
   {
-    if ((pData == NULL) && (Length > 0U))
+    if ((pData == NULL) || (Length == 0U))
     {
       return HAL_ERROR;
     }
@@ -2241,7 +2242,6 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)
 {
-
   /* Check parameters */
   assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance));
   assert_param(IS_TIM_REMAP(Remap));
diff --git a/Src/stm32f7xx_hal_uart.c b/Src/stm32f7xx_hal_uart.c
index 75139d4..1f42abe 100644
--- a/Src/stm32f7xx_hal_uart.c
+++ b/Src/stm32f7xx_hal_uart.c
@@ -638,6 +638,7 @@
   huart->gState = HAL_UART_STATE_RESET;
   huart->RxState = HAL_UART_STATE_RESET;
   huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
+  huart->RxEventType = HAL_UART_RXEVENT_TC;
 
   __HAL_UNLOCK(huart);
 
@@ -1104,8 +1105,6 @@
       return  HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     huart->ErrorCode = HAL_UART_ERROR_NONE;
     huart->gState = HAL_UART_STATE_BUSY_TX;
 
@@ -1127,8 +1126,6 @@
       pdata16bits = NULL;
     }
 
-    __HAL_UNLOCK(huart);
-
     while (huart->TxXferCount > 0U)
     {
       if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
@@ -1190,8 +1187,6 @@
       return  HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     huart->ErrorCode = HAL_UART_ERROR_NONE;
     huart->RxState = HAL_UART_STATE_BUSY_RX;
     huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
@@ -1218,8 +1213,6 @@
       pdata16bits = NULL;
     }
 
-    __HAL_UNLOCK(huart);
-
     /* as long as data have to be received */
     while (huart->RxXferCount > 0U)
     {
@@ -1271,8 +1264,6 @@
       return HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     huart->pTxBuffPtr  = pData;
     huart->TxXferSize  = Size;
     huart->TxXferCount = Size;
@@ -1291,8 +1282,6 @@
       huart->TxISR = UART_TxISR_8BIT;
     }
 
-    __HAL_UNLOCK(huart);
-
     /* Enable the Transmit Data Register Empty interrupt */
     ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE);
 
@@ -1324,8 +1313,6 @@
       return HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     /* Set Reception type to Standard reception */
     huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
 
@@ -1364,8 +1351,6 @@
       return HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     huart->pTxBuffPtr  = pData;
     huart->TxXferSize  = Size;
     huart->TxXferCount = Size;
@@ -1393,8 +1378,6 @@
         /* Set error code to DMA */
         huart->ErrorCode = HAL_UART_ERROR_DMA;
 
-        __HAL_UNLOCK(huart);
-
         /* Restore huart->gState to ready */
         huart->gState = HAL_UART_STATE_READY;
 
@@ -1404,8 +1387,6 @@
     /* Clear the TC flag in the ICR register */
     __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
 
-    __HAL_UNLOCK(huart);
-
     /* Enable the DMA transfer for transmit request by setting the DMAT bit
     in the UART CR3 register */
     ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);
@@ -1440,8 +1421,6 @@
       return HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     /* Set Reception type to Standard reception */
     huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
 
@@ -1470,8 +1449,6 @@
   const HAL_UART_StateTypeDef gstate = huart->gState;
   const HAL_UART_StateTypeDef rxstate = huart->RxState;
 
-  __HAL_LOCK(huart);
-
   if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&
       (gstate == HAL_UART_STATE_BUSY_TX))
   {
@@ -1489,8 +1466,6 @@
     ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
   }
 
-  __HAL_UNLOCK(huart);
-
   return HAL_OK;
 }
 
@@ -1501,8 +1476,6 @@
   */
 HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
 {
-  __HAL_LOCK(huart);
-
   if (huart->gState == HAL_UART_STATE_BUSY_TX)
   {
     /* Enable the UART DMA Tx request */
@@ -1515,7 +1488,7 @@
 
     /* Re-enable PE and ERR (Frame error, noise error, overrun error) interrupts */
     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);
@@ -1524,8 +1497,6 @@
     ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
   }
 
-  __HAL_UNLOCK(huart);
-
   return HAL_OK;
 }
 
@@ -2356,6 +2327,11 @@
           /* Last bytes received, so no need as the abort is immediate */
           (void)HAL_DMA_Abort(huart->hdmarx);
         }
+
+        /* Initialize type of RxEvent that correspond to RxEvent callback execution;
+           In this case, Rx Event type is Idle Event */
+        huart->RxEventType = HAL_UART_RXEVENT_IDLE;
+
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
         /*Call registered Rx Event callback*/
         huart->RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount));
@@ -2389,6 +2365,11 @@
         huart->RxISR = NULL;
 
         ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE);
+
+        /* Initialize type of RxEvent that correspond to RxEvent callback execution;
+           In this case, Rx Event type is Idle Event */
+        huart->RxEventType = HAL_UART_RXEVENT_IDLE;
+
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
         /*Call registered Rx complete callback*/
         huart->RxEventCallback(huart, nb_rx_data);
@@ -2851,7 +2832,7 @@
   *               the configuration information for the specified UART.
   * @retval HAL state
   */
-HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart)
+HAL_UART_StateTypeDef HAL_UART_GetState(const UART_HandleTypeDef *huart)
 {
   uint32_t temp1;
   uint32_t temp2;
@@ -2867,7 +2848,7 @@
   *               the configuration information for the specified UART.
   * @retval UART Error Code
   */
-uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart)
+uint32_t HAL_UART_GetError(const UART_HandleTypeDef *huart)
 {
   return huart->ErrorCode;
 }
@@ -3165,12 +3146,13 @@
       return HAL_TIMEOUT;
     }
   }
-#endif
+#endif /* USART_ISR_REACK */
 
   /* Initialize the UART State */
   huart->gState = HAL_UART_STATE_READY;
   huart->RxState = HAL_UART_STATE_READY;
   huart->ReceptionType = HAL_UART_RECEPTION_STANDARD;
+  huart->RxEventType = HAL_UART_RXEVENT_TC;
 
   __HAL_UNLOCK(huart);
 
@@ -3275,11 +3257,9 @@
     huart->RxISR = UART_RxISR_8BIT;
   }
 
-  __HAL_UNLOCK(huart);
-
   /* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */
   if (huart->Init.Parity != UART_PARITY_NONE)
-  { 
+  {
     ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
   }
   else
@@ -3328,15 +3308,12 @@
       /* Set error code to DMA */
       huart->ErrorCode = HAL_UART_ERROR_DMA;
 
-      __HAL_UNLOCK(huart);
-
       /* Restore huart->RxState to ready */
       huart->RxState = HAL_UART_STATE_READY;
 
       return HAL_ERROR;
     }
   }
-  __HAL_UNLOCK(huart);
 
   /* Enable the UART Parity Error Interrupt */
   if (huart->Init.Parity != UART_PARITY_NONE)
@@ -3480,6 +3457,10 @@
     }
   }
 
+  /* Initialize type of RxEvent that correspond to RxEvent callback execution;
+     In this case, Rx Event type is Transfer Complete */
+  huart->RxEventType = HAL_UART_RXEVENT_TC;
+
   /* Check current reception Mode :
      If Reception till IDLE event has been selected : use Rx Event callback */
   if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
@@ -3514,6 +3495,10 @@
 {
   UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
 
+  /* Initialize type of RxEvent that correspond to RxEvent callback execution;
+     In this case, Rx Event type is Half Transfer */
+  huart->RxEventType = HAL_UART_RXEVENT_HT;
+
   /* Check current reception Mode :
      If Reception till IDLE event has been selected : use Rx Event callback */
   if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
@@ -3883,6 +3868,9 @@
       /* Clear RxISR function pointer */
       huart->RxISR = NULL;
 
+      /* Initialize type of RxEvent to Transfer Complete */
+      huart->RxEventType = HAL_UART_RXEVENT_TC;
+
       /* Check current reception Mode :
          If Reception till IDLE event has been selected : */
       if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
@@ -3898,6 +3886,7 @@
           /* 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);
@@ -3962,6 +3951,9 @@
       /* Clear RxISR function pointer */
       huart->RxISR = NULL;
 
+      /* Initialize type of RxEvent to Transfer Complete */
+      huart->RxEventType = HAL_UART_RXEVENT_TC;
+
       /* Check current reception Mode :
          If Reception till IDLE event has been selected : */
       if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE)
@@ -3977,6 +3969,7 @@
           /* 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);
diff --git a/Src/stm32f7xx_hal_uart_ex.c b/Src/stm32f7xx_hal_uart_ex.c
index d4229c1..1b85da9 100644
--- a/Src/stm32f7xx_hal_uart_ex.c
+++ b/Src/stm32f7xx_hal_uart_ex.c
@@ -507,11 +507,10 @@
       return  HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     huart->ErrorCode = HAL_UART_ERROR_NONE;
     huart->RxState = HAL_UART_STATE_BUSY_RX;
     huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE;
+    huart->RxEventType = HAL_UART_RXEVENT_TC;
 
     /* Init tickstart for timeout management */
     tickstart = HAL_GetTick();
@@ -535,8 +534,6 @@
       pdata16bits = NULL;
     }
 
-    __HAL_UNLOCK(huart);
-
     /* Initialize output number of received elements */
     *RxLen = 0U;
 
@@ -553,6 +550,7 @@
         /* If Set, and data has already been received, this means Idle Event is valid : End reception */
         if (*RxLen > 0U)
         {
+          huart->RxEventType = HAL_UART_RXEVENT_IDLE;
           huart->RxState = HAL_UART_STATE_READY;
 
           return HAL_OK;
@@ -628,10 +626,9 @@
       return HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     /* Set Reception type to reception till IDLE Event*/
     huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE;
+    huart->RxEventType = HAL_UART_RXEVENT_TC;
 
     status =  UART_Start_Receive_IT(huart, pData, Size);
 
@@ -690,10 +687,9 @@
       return HAL_ERROR;
     }
 
-    __HAL_LOCK(huart);
-
     /* Set Reception type to reception till IDLE Event*/
     huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE;
+    huart->RxEventType = HAL_UART_RXEVENT_TC;
 
     status =  UART_Start_Receive_DMA(huart, pData, Size);
 
@@ -724,6 +720,36 @@
 }
 
 /**
+  * @brief Provide Rx Event type that has lead to RxEvent callback execution.
+  * @note  When HAL_UARTEx_ReceiveToIdle_IT() or HAL_UARTEx_ReceiveToIdle_DMA() API are called, progress
+  *        of reception process is provided to application through calls of Rx Event callback (either default one
+  *        HAL_UARTEx_RxEventCallback() or user registered one). As several types of events could occur (IDLE event,
+  *        Half Transfer, or Transfer Complete), this function allows to retrieve the Rx Event type that has lead
+  *        to Rx Event callback execution.
+  * @note  This function is expected to be called within the user implementation of Rx Event Callback,
+  *        in order to provide the accurate value :
+  *        In Interrupt Mode :
+  *           - HAL_UART_RXEVENT_TC : when Reception has been completed (expected nb of data has been received)
+  *           - HAL_UART_RXEVENT_IDLE : when Idle event occurred prior reception has been completed (nb of
+  *             received data is lower than expected one)
+  *        In DMA Mode :
+  *           - HAL_UART_RXEVENT_TC : when Reception has been completed (expected nb of data has been received)
+  *           - HAL_UART_RXEVENT_HT : when half of expected nb of data has been received
+  *           - HAL_UART_RXEVENT_IDLE : when Idle event occurred prior reception has been completed (nb of
+  *             received data is lower than expected one).
+  *        In DMA mode, RxEvent callback could be called several times;
+  *        When DMA is configured in Normal Mode, HT event does not stop Reception process;
+  *        When DMA is configured in Circular Mode, HT, TC or IDLE events don't stop Reception process;
+  * @param  huart UART handle.
+  * @retval Rx Event Type (return vale will be a value of @ref UART_RxEvent_Type_Values)
+  */
+HAL_UART_RxEventTypeTypeDef HAL_UARTEx_GetRxEventType(UART_HandleTypeDef *huart)
+{
+  /* Return Rx Event type value, as stored in UART handle */
+  return(huart->RxEventType);
+}
+
+/**
   * @}
   */
 
diff --git a/Src/stm32f7xx_hal_usart.c b/Src/stm32f7xx_hal_usart.c
index 17ffe49..99c43b0 100644
--- a/Src/stm32f7xx_hal_usart.c
+++ b/Src/stm32f7xx_hal_usart.c
@@ -717,7 +717,8 @@
   * @param  Timeout Timeout duration.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const 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)
 {
   const uint8_t  *ptxdata8bits;
   const uint16_t *ptxdata16bits;
@@ -2300,7 +2301,7 @@
   *              the configuration information for the specified USART.
   * @retval USART handle state
   */
-HAL_USART_StateTypeDef HAL_USART_GetState(USART_HandleTypeDef *husart)
+HAL_USART_StateTypeDef HAL_USART_GetState(const USART_HandleTypeDef *husart)
 {
   return husart->State;
 }
@@ -2311,7 +2312,7 @@
   *              the configuration information for the specified USART.
   * @retval USART handle Error Code
   */
-uint32_t HAL_USART_GetError(USART_HandleTypeDef *husart)
+uint32_t HAL_USART_GetError(const USART_HandleTypeDef *husart)
 {
   return husart->ErrorCode;
 }
@@ -2819,7 +2820,7 @@
       return HAL_TIMEOUT;
     }
   }
-#endif
+#endif /* USART_ISR_REACK */
 
   /* Initialize the USART state*/
   husart->State = HAL_USART_STATE_READY;
diff --git a/Src/stm32f7xx_ll_rtc.c b/Src/stm32f7xx_ll_rtc.c
index 4fcf311..13dae6e 100644
--- a/Src/stm32f7xx_ll_rtc.c
+++ b/Src/stm32f7xx_ll_rtc.c
@@ -84,11 +84,11 @@
                                    || ((__VALUE__) == LL_RTC_WEEKDAY_SATURDAY) \
                                    || ((__VALUE__) == LL_RTC_WEEKDAY_SUNDAY))
 
-#define IS_LL_RTC_DAY(__DAY__)    (((__DAY__) >= 1U) && ((__DAY__) <= 31U))
+#define IS_LL_RTC_DAY(__DAY__)     (((__DAY__) >= 1U) && ((__DAY__) <= 31U))
 
 #define IS_LL_RTC_MONTH(__MONTH__) (((__MONTH__) >= 1U) && ((__MONTH__) <= 12U))
 
-#define IS_LL_RTC_YEAR(__YEAR__) ((__YEAR__) <= 99U)
+#define IS_LL_RTC_YEAR(__YEAR__)   ((__YEAR__) <= 99U)
 
 #define IS_LL_RTC_ALMA_MASK(__VALUE__) (((__VALUE__) == LL_RTC_ALMA_MASK_NONE) \
                                      || ((__VALUE__) == LL_RTC_ALMA_MASK_DATEWEEKDAY) \
@@ -104,14 +104,12 @@
                                      || ((__VALUE__) == LL_RTC_ALMB_MASK_SECONDS) \
                                      || ((__VALUE__) == LL_RTC_ALMB_MASK_ALL))
 
-
 #define IS_LL_RTC_ALMA_DATE_WEEKDAY_SEL(__SEL__) (((__SEL__) == LL_RTC_ALMA_DATEWEEKDAYSEL_DATE) || \
                                                   ((__SEL__) == LL_RTC_ALMA_DATEWEEKDAYSEL_WEEKDAY))
 
 #define IS_LL_RTC_ALMB_DATE_WEEKDAY_SEL(__SEL__) (((__SEL__) == LL_RTC_ALMB_DATEWEEKDAYSEL_DATE) || \
                                                   ((__SEL__) == LL_RTC_ALMB_DATEWEEKDAYSEL_WEEKDAY))
 
-
 /**
   * @}
   */
@@ -127,7 +125,7 @@
 
 /**
   * @brief  De-Initializes the RTC registers to their default reset values.
-  * @note   This function doesn't reset the RTC Clock source and RTC Backup Data
+  * @note   This function does not reset the RTC Clock source and RTC Backup Data
   *         registers.
   * @param  RTCx RTC Instance
   * @retval An ErrorStatus enumeration value:
@@ -149,21 +147,17 @@
   {
     /* Reset TR, DR and CR registers */
     LL_RTC_WriteReg(RTCx, TR,       0x00000000U);
-#if defined(RTC_WAKEUP_SUPPORT)
     LL_RTC_WriteReg(RTCx, WUTR,     RTC_WUTR_WUT);
-#endif /* RTC_WAKEUP_SUPPORT */
-    LL_RTC_WriteReg(RTCx, DR  ,     (RTC_DR_WDU_0 | RTC_DR_MU_0 | RTC_DR_DU_0));
+    LL_RTC_WriteReg(RTCx, DR,      (RTC_DR_WDU_0 | RTC_DR_MU_0 | RTC_DR_DU_0));
+
     /* Reset All CR bits except CR[2:0] */
-#if defined(RTC_WAKEUP_SUPPORT)
     LL_RTC_WriteReg(RTCx, CR, (LL_RTC_ReadReg(RTCx, CR) & RTC_CR_WUCKSEL));
-#else
-    LL_RTC_WriteReg(RTCx, CR, 0x00000000U);
-#endif /* RTC_WAKEUP_SUPPORT */
-    LL_RTC_WriteReg(RTCx, PRER,     (RTC_PRER_PREDIV_A | RTC_SYNCH_PRESC_DEFAULT));
+
+    LL_RTC_WriteReg(RTCx, PRER,    (RTC_PRER_PREDIV_A | RTC_SYNCH_PRESC_DEFAULT));
     LL_RTC_WriteReg(RTCx, ALRMAR,   0x00000000U);
     LL_RTC_WriteReg(RTCx, ALRMBR,   0x00000000U);
-    LL_RTC_WriteReg(RTCx, SHIFTR,   0x00000000U);
     LL_RTC_WriteReg(RTCx, CALR,     0x00000000U);
+    LL_RTC_WriteReg(RTCx, SHIFTR,   0x00000000U);
     LL_RTC_WriteReg(RTCx, ALRMASSR, 0x00000000U);
     LL_RTC_WriteReg(RTCx, ALRMBSSR, 0x00000000U);
 
@@ -370,7 +364,7 @@
 
   if ((RTC_Format == LL_RTC_FORMAT_BIN) && ((RTC_DateStruct->Month & 0x10U) == 0x10U))
   {
-    RTC_DateStruct->Month = (RTC_DateStruct->Month & (uint32_t)~(0x10U)) + 0x0AU;
+    RTC_DateStruct->Month = (uint8_t)(RTC_DateStruct->Month & (uint8_t)~(0x10U)) + 0x0AU;
   }
   if (RTC_Format == LL_RTC_FORMAT_BIN)
   {
@@ -785,7 +779,7 @@
   *         synchronized with RTC APB clock.
   * @note   The RTC Resynchronization mode is write protected, use the
   *         @ref LL_RTC_DisableWriteProtection before calling this function.
-  * @note   To read the calendar through the shadow registers after Calendar
+  * @note   To read the calendar through the shadow registers after calendar
   *         initialization, calendar update or after wakeup from low power modes
   *         the software must first clear the RSF flag.
   *         The software must then wait until it is set again before reading
@@ -810,7 +804,7 @@
 
   /* Wait the registers to be synchronised */
   tmp = LL_RTC_IsActiveFlag_RS(RTCx);
-  while ((timeout != 0U) && (tmp != 0U))
+  while ((timeout != 0U) && (tmp != 1U))
   {
     if (LL_SYSTICK_IsActiveCounterFlag() == 1U)
     {
@@ -823,24 +817,6 @@
     }
   }
 
-  if (status != ERROR)
-  {
-    timeout = RTC_SYNCHRO_TIMEOUT;
-    tmp = LL_RTC_IsActiveFlag_RS(RTCx);
-    while ((timeout != 0U) && (tmp != 1U))
-    {
-      if (LL_SYSTICK_IsActiveCounterFlag() == 1U)
-      {
-        timeout--;
-      }
-      tmp = LL_RTC_IsActiveFlag_RS(RTCx);
-      if (timeout == 0U)
-      {
-        status = ERROR;
-      }
-    }
-  }
-
   return (status);
 }
 
@@ -863,4 +839,3 @@
   */
 
 #endif /* USE_FULL_LL_DRIVER */
-
diff --git a/Src/stm32f7xx_ll_usart.c b/Src/stm32f7xx_ll_usart.c
index d9ca27f..b72ecc2 100644
--- a/Src/stm32f7xx_ll_usart.c
+++ b/Src/stm32f7xx_ll_usart.c
@@ -112,7 +112,7 @@
   *          - SUCCESS: USART registers are de-initialized
   *          - ERROR: USART registers are not de-initialized
   */
-ErrorStatus LL_USART_DeInit(USART_TypeDef *USARTx)
+ErrorStatus LL_USART_DeInit(const USART_TypeDef *USARTx)
 {
   ErrorStatus status = SUCCESS;
 
@@ -205,7 +205,7 @@
   *          - SUCCESS: USART registers are initialized according to USART_InitStruct content
   *          - ERROR: Problem occurred during USART Registers initialization
   */
-ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, LL_USART_InitTypeDef *USART_InitStruct)
+ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, const LL_USART_InitTypeDef *USART_InitStruct)
 {
   ErrorStatus status = ERROR;
   uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO;
@@ -346,7 +346,7 @@
   *                     to USART_ClockInitStruct content
   *          - ERROR: Problem occurred during USART Registers initialization
   */
-ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, LL_USART_ClockInitTypeDef *USART_ClockInitStruct)
+ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, const LL_USART_ClockInitTypeDef *USART_ClockInitStruct)
 {
   ErrorStatus status = SUCCESS;
 
diff --git a/Src/stm32f7xx_ll_usb.c b/Src/stm32f7xx_ll_usb.c
index 082ac18..e7a2536 100644
--- a/Src/stm32f7xx_ll_usb.c
+++ b/Src/stm32f7xx_ll_usb.c
@@ -504,7 +504,9 @@
   /* Wait for AHB master IDLE state. */
   do
   {
-    if (++count > 200000U)
+    count++;
+
+    if (count > 200000U)
     {
       return HAL_TIMEOUT;
     }
@@ -516,7 +518,9 @@
 
   do
   {
-    if (++count > 200000U)
+    count++;
+
+    if (count > 200000U)
     {
       return HAL_TIMEOUT;
     }
@@ -537,7 +541,9 @@
   /* Wait for AHB master IDLE state. */
   do
   {
-    if (++count > 200000U)
+    count++;
+
+    if (count > 200000U)
     {
       return HAL_TIMEOUT;
     }
@@ -549,7 +555,9 @@
 
   do
   {
-    if (++count > 200000U)
+    count++;
+
+    if (count > 200000U)
     {
       return HAL_TIMEOUT;
     }
@@ -1016,6 +1024,64 @@
   return HAL_OK;
 }
 
+
+/**
+   * @brief  USB_EPStoptXfer  Stop transfer on an EP
+   * @param  USBx  usb device instance
+   * @param  ep pointer to endpoint structure
+   * @retval HAL status
+   */
+HAL_StatusTypeDef USB_EPStopXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
+{
+  __IO uint32_t count = 0U;
+  HAL_StatusTypeDef ret = HAL_OK;
+  uint32_t USBx_BASE = (uint32_t)USBx;
+
+  /* IN endpoint */
+  if (ep->is_in == 1U)
+  {
+    /* EP enable, IN data in FIFO */
+    if (((USBx_INEP(ep->num)->DIEPCTL) & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA)
+    {
+      USBx_INEP(ep->num)->DIEPCTL |= (USB_OTG_DIEPCTL_SNAK);
+      USBx_INEP(ep->num)->DIEPCTL |= (USB_OTG_DIEPCTL_EPDIS);
+
+      do
+      {
+        count++;
+
+        if (count > 10000U)
+        {
+          ret = HAL_ERROR;
+          break;
+        }
+      } while (((USBx_INEP(ep->num)->DIEPCTL) & USB_OTG_DIEPCTL_EPENA) ==  USB_OTG_DIEPCTL_EPENA);
+    }
+  }
+  else /* OUT endpoint */
+  {
+    if (((USBx_OUTEP(ep->num)->DOEPCTL) & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA)
+    {
+      USBx_OUTEP(ep->num)->DOEPCTL |= (USB_OTG_DOEPCTL_SNAK);
+      USBx_OUTEP(ep->num)->DOEPCTL |= (USB_OTG_DOEPCTL_EPDIS);
+
+      do
+      {
+        count++;
+
+        if (count > 10000U)
+        {
+          ret = HAL_ERROR;
+          break;
+        }
+      } while (((USBx_OUTEP(ep->num)->DOEPCTL) & USB_OTG_DOEPCTL_EPENA) ==  USB_OTG_DOEPCTL_EPENA);
+    }
+  }
+
+  return ret;
+}
+
+
 /**
   * @brief  USB_WritePacket : Writes a packet into the Tx FIFO associated
   *         with the EP/channel
@@ -1203,7 +1269,7 @@
   *          This parameter can be a value from 0 to 255
   * @retval HAL status
   */
-HAL_StatusTypeDef  USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address)
+HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1218,7 +1284,7 @@
   * @param  USBx  Selected device
   * @retval HAL status
   */
-HAL_StatusTypeDef  USB_DevConnect(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1235,7 +1301,7 @@
   * @param  USBx  Selected device
   * @retval HAL status
   */
-HAL_StatusTypeDef  USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1250,9 +1316,9 @@
 /**
   * @brief  USB_ReadInterrupts: return the global USB interrupt status
   * @param  USBx  Selected device
-  * @retval HAL status
+  * @retval USB Global Interrupt status
   */
-uint32_t  USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx)
+uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t tmpreg;
 
@@ -1263,9 +1329,26 @@
 }
 
 /**
+  * @brief  USB_ReadChInterrupts: return USB channel interrupt status
+  * @param  USBx  Selected device
+  * @param  chnum Channel number
+  * @retval USB Channel Interrupt status
+  */
+uint32_t USB_ReadChInterrupts(USB_OTG_GlobalTypeDef *USBx, uint8_t chnum)
+{
+  uint32_t USBx_BASE = (uint32_t)USBx;
+  uint32_t tmpreg;
+
+  tmpreg = USBx_HC(chnum)->HCINT;
+  tmpreg &= USBx_HC(chnum)->HCINTMSK;
+
+  return tmpreg;
+}
+
+/**
   * @brief  USB_ReadDevAllOutEpInterrupt: return the USB device OUT endpoints interrupt status
   * @param  USBx  Selected device
-  * @retval HAL status
+  * @retval USB Device OUT EP interrupt status
   */
 uint32_t USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx)
 {
@@ -1281,7 +1364,7 @@
 /**
   * @brief  USB_ReadDevAllInEpInterrupt: return the USB device IN endpoints interrupt status
   * @param  USBx  Selected device
-  * @retval HAL status
+  * @retval USB Device IN EP interrupt status
   */
 uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx)
 {
@@ -1363,7 +1446,7 @@
   * @param  USBx  Selected device
   * @retval HAL status
   */
-HAL_StatusTypeDef  USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1425,7 +1508,9 @@
   /* Wait for AHB master IDLE state. */
   do
   {
-    if (++count > 200000U)
+    count++;
+
+    if (count > 200000U)
     {
       return HAL_TIMEOUT;
     }
@@ -1437,7 +1522,9 @@
 
   do
   {
-    if (++count > 200000U)
+    count++;
+
+    if (count > 200000U)
     {
       return HAL_TIMEOUT;
     }
@@ -1464,7 +1551,9 @@
   /* wait for LDO Ready */
   while ((USB_HS_PHYC->USB_HS_PHYC_LDO & USB_HS_PHYC_LDO_STATUS) == 0U)
   {
-    if (++count > 200000U)
+    count++;
+
+    if (count > 200000U)
     {
       return HAL_TIMEOUT;
     }
@@ -2054,7 +2143,9 @@
         USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA;
         do
         {
-          if (++count > 1000U)
+          count++;
+
+          if (count > 1000U)
           {
             break;
           }
@@ -2076,7 +2167,9 @@
       USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA;
       do
       {
-        if (++count > 1000U)
+        count++;
+
+        if (count > 1000U)
         {
           break;
         }
@@ -2164,7 +2257,9 @@
 
     do
     {
-      if (++count > 1000U)
+      count++;
+
+      if (count > 1000U)
       {
         break;
       }