Release v1.8.2
diff --git a/Inc/Legacy/stm32_hal_legacy.h b/Inc/Legacy/stm32_hal_legacy.h
index 06cded9..b451791 100644
--- a/Inc/Legacy/stm32_hal_legacy.h
+++ b/Inc/Legacy/stm32_hal_legacy.h
@@ -37,16 +37,12 @@
 #define AES_CLEARFLAG_CCF               CRYP_CLEARFLAG_CCF
 #define AES_CLEARFLAG_RDERR             CRYP_CLEARFLAG_RDERR
 #define AES_CLEARFLAG_WRERR             CRYP_CLEARFLAG_WRERR
-#if defined(STM32U5) || defined(STM32H7) || defined(STM32MP1)
+#if 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 */
+#endif /* STM32H7 || STM32MP1 */
 /**
   * @}
   */
@@ -113,6 +109,9 @@
 #define ADC4_SAMPLETIME_160CYCLES_5     ADC4_SAMPLETIME_814CYCLES_5
 #endif /* STM32U5 */
 
+#if defined(STM32H5)
+#define ADC_CHANNEL_VCORE               ADC_CHANNEL_VDDCORE
+#endif /* STM32H5 */
 /**
   * @}
   */
@@ -140,7 +139,8 @@
 #define COMP_EXTI_LINE_COMP6_EVENT     COMP_EXTI_LINE_COMP6
 #define COMP_EXTI_LINE_COMP7_EVENT     COMP_EXTI_LINE_COMP7
 #if defined(STM32L0)
-#define COMP_LPTIMCONNECTION_ENABLED   ((uint32_t)0x00000003U)    /*!< COMPX output generic naming: connected to LPTIM input 1 for COMP1, LPTIM input 2 for COMP2 */
+#define COMP_LPTIMCONNECTION_ENABLED   ((uint32_t)0x00000003U)    /*!< COMPX output generic naming: connected to LPTIM 
+                                                                       input 1 for COMP1, LPTIM input 2 for COMP2 */
 #endif
 #define COMP_OUTPUT_COMP6TIM2OCREFCLR  COMP_OUTPUT_COMP6_TIM2OCREFCLR
 #if defined(STM32F373xC) || defined(STM32F378xx)
@@ -214,6 +214,11 @@
 #endif
 
 #endif
+
+#if defined(STM32U5)
+#define __HAL_COMP_COMP1_EXTI_CLEAR_RASING_FLAG __HAL_COMP_COMP1_EXTI_CLEAR_RISING_FLAG
+#endif
+
 /**
   * @}
   */
@@ -234,10 +239,12 @@
 /** @defgroup CRC_Aliases CRC API aliases
   * @{
   */
-#if defined(STM32C0)
+#if defined(STM32H5) || 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 */
+#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
 /**
   * @}
@@ -280,7 +287,13 @@
 #define DAC_TRIGGER_LPTIM3_OUT       DAC_TRIGGER_LPTIM3_CH1
 #endif
 
-#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || defined(STM32F4) || defined(STM32G4)
+#if defined(STM32H5)
+#define DAC_TRIGGER_LPTIM1_OUT       DAC_TRIGGER_LPTIM1_CH1
+#define DAC_TRIGGER_LPTIM2_OUT       DAC_TRIGGER_LPTIM2_CH1
+#endif
+
+#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || \
+    defined(STM32F4) || defined(STM32G4)
 #define HAL_DAC_MSP_INIT_CB_ID       HAL_DAC_MSPINIT_CB_ID
 #define HAL_DAC_MSP_DEINIT_CB_ID     HAL_DAC_MSPDEINIT_CB_ID
 #endif
@@ -345,7 +358,8 @@
 #define HAL_DMAMUX_REQUEST_GEN_FALLING           HAL_DMAMUX_REQ_GEN_FALLING
 #define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING    HAL_DMAMUX_REQ_GEN_RISING_FALLING
 
-#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx)
+#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || \
+    defined(STM32L4S7xx) || defined(STM32L4S9xx)
 #define DMA_REQUEST_DCMI_PSSI                    DMA_REQUEST_DCMI
 #endif
 
@@ -530,6 +544,9 @@
 #define OB_USER_nBOOT0                OB_USER_NBOOT0
 #define OB_nBOOT0_RESET               OB_NBOOT0_RESET
 #define OB_nBOOT0_SET                 OB_NBOOT0_SET
+#define OB_USER_SRAM134_RST           OB_USER_SRAM_RST
+#define OB_SRAM134_RST_ERASE          OB_SRAM_RST_ERASE
+#define OB_SRAM134_RST_NOT_ERASE      OB_SRAM_RST_NOT_ERASE
 #endif /* STM32U5 */
 
 /**
@@ -574,6 +591,106 @@
 #define HAL_SYSCFG_DisableIOAnalogSwitchVDD       HAL_SYSCFG_DisableIOSwitchVDD
 #endif /* STM32G4 */
 
+#if defined(STM32H5)
+#define SYSCFG_IT_FPU_IOC         SBS_IT_FPU_IOC
+#define SYSCFG_IT_FPU_DZC         SBS_IT_FPU_DZC
+#define SYSCFG_IT_FPU_UFC         SBS_IT_FPU_UFC
+#define SYSCFG_IT_FPU_OFC         SBS_IT_FPU_OFC
+#define SYSCFG_IT_FPU_IDC         SBS_IT_FPU_IDC
+#define SYSCFG_IT_FPU_IXC         SBS_IT_FPU_IXC
+
+#define SYSCFG_BREAK_FLASH_ECC    SBS_BREAK_FLASH_ECC
+#define SYSCFG_BREAK_PVD          SBS_BREAK_PVD
+#define SYSCFG_BREAK_SRAM_ECC     SBS_BREAK_SRAM_ECC
+#define SYSCFG_BREAK_LOCKUP       SBS_BREAK_LOCKUP
+
+#define SYSCFG_VREFBUF_VOLTAGE_SCALE0   VREFBUF_VOLTAGE_SCALE0
+#define SYSCFG_VREFBUF_VOLTAGE_SCALE1   VREFBUF_VOLTAGE_SCALE1
+#define SYSCFG_VREFBUF_VOLTAGE_SCALE2   VREFBUF_VOLTAGE_SCALE2
+#define SYSCFG_VREFBUF_VOLTAGE_SCALE3   VREFBUF_VOLTAGE_SCALE3
+
+#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE   VREFBUF_HIGH_IMPEDANCE_DISABLE
+#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE    VREFBUF_HIGH_IMPEDANCE_ENABLE
+
+#define SYSCFG_FASTMODEPLUS_PB6   SBS_FASTMODEPLUS_PB6
+#define SYSCFG_FASTMODEPLUS_PB7   SBS_FASTMODEPLUS_PB7
+#define SYSCFG_FASTMODEPLUS_PB8   SBS_FASTMODEPLUS_PB8
+#define SYSCFG_FASTMODEPLUS_PB9   SBS_FASTMODEPLUS_PB9
+
+#define SYSCFG_ETH_MII   SBS_ETH_MII
+#define SYSCFG_ETH_RMII  SBS_ETH_RMII
+#define IS_SYSCFG_ETHERNET_CONFIG  IS_SBS_ETHERNET_CONFIG
+
+#define SYSCFG_MEMORIES_ERASE_FLAG_IPMEE   SBS_MEMORIES_ERASE_FLAG_IPMEE
+#define SYSCFG_MEMORIES_ERASE_FLAG_MCLR    SBS_MEMORIES_ERASE_FLAG_MCLR
+#define IS_SYSCFG_MEMORIES_ERASE_FLAG      IS_SBS_MEMORIES_ERASE_FLAG
+
+#define IS_SYSCFG_CODE_CONFIG IS_SBS_CODE_CONFIG
+
+#define SYSCFG_MPU_NSEC   SBS_MPU_NSEC
+#define SYSCFG_VTOR_NSEC  SBS_VTOR_NSEC
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+#define SYSCFG_SAU              SBS_SAU
+#define SYSCFG_MPU_SEC          SBS_MPU_SEC
+#define SYSCFG_VTOR_AIRCR_SEC   SBS_VTOR_AIRCR_SEC
+#define SYSCFG_LOCK_ALL         SBS_LOCK_ALL
+#else
+#define SYSCFG_LOCK_ALL         SBS_LOCK_ALL
+#endif /* __ARM_FEATURE_CMSE */
+
+#define SYSCFG_CLK      SBS_CLK
+#define SYSCFG_CLASSB   SBS_CLASSB
+#define SYSCFG_FPU      SBS_FPU
+#define SYSCFG_ALL      SBS_ALL
+
+#define SYSCFG_SEC      SBS_SEC
+#define SYSCFG_NSEC     SBS_NSEC
+
+#define __HAL_SYSCFG_FPU_INTERRUPT_ENABLE   __HAL_SBS_FPU_INTERRUPT_ENABLE
+#define __HAL_SYSCFG_FPU_INTERRUPT_DISABLE  __HAL_SBS_FPU_INTERRUPT_DISABLE
+
+#define __HAL_SYSCFG_BREAK_ECC_LOCK        __HAL_SBS_BREAK_ECC_LOCK
+#define __HAL_SYSCFG_BREAK_LOCKUP_LOCK     __HAL_SBS_BREAK_LOCKUP_LOCK
+#define __HAL_SYSCFG_BREAK_PVD_LOCK        __HAL_SBS_BREAK_PVD_LOCK
+#define __HAL_SYSCFG_BREAK_SRAM_ECC_LOCK   __HAL_SBS_BREAK_SRAM_ECC_LOCK
+
+#define __HAL_SYSCFG_FASTMODEPLUS_ENABLE   __HAL_SBS_FASTMODEPLUS_ENABLE
+#define __HAL_SYSCFG_FASTMODEPLUS_DISABLE  __HAL_SBS_FASTMODEPLUS_DISABLE
+
+#define __HAL_SYSCFG_GET_MEMORIES_ERASE_STATUS    __HAL_SBS_GET_MEMORIES_ERASE_STATUS
+#define __HAL_SYSCFG_CLEAR_MEMORIES_ERASE_STATUS  __HAL_SBS_CLEAR_MEMORIES_ERASE_STATUS
+
+#define IS_SYSCFG_FPU_INTERRUPT    IS_SBS_FPU_INTERRUPT
+#define IS_SYSCFG_BREAK_CONFIG     IS_SBS_BREAK_CONFIG
+#define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE     IS_VREFBUF_VOLTAGE_SCALE
+#define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE    IS_VREFBUF_HIGH_IMPEDANCE
+#define IS_SYSCFG_VREFBUF_TRIMMING  IS_VREFBUF_TRIMMING
+#define IS_SYSCFG_FASTMODEPLUS      IS_SBS_FASTMODEPLUS
+#define IS_SYSCFG_ITEMS_ATTRIBUTES  IS_SBS_ITEMS_ATTRIBUTES
+#define IS_SYSCFG_ATTRIBUTES        IS_SBS_ATTRIBUTES
+#define IS_SYSCFG_LOCK_ITEMS        IS_SBS_LOCK_ITEMS
+
+#define HAL_SYSCFG_VREFBUF_VoltageScalingConfig   HAL_VREFBUF_VoltageScalingConfig
+#define HAL_SYSCFG_VREFBUF_HighImpedanceConfig    HAL_VREFBUF_HighImpedanceConfig
+#define HAL_SYSCFG_VREFBUF_TrimmingConfig         HAL_VREFBUF_TrimmingConfig
+#define HAL_SYSCFG_EnableVREFBUF                  HAL_EnableVREFBUF
+#define HAL_SYSCFG_DisableVREFBUF                 HAL_DisableVREFBUF
+
+#define HAL_SYSCFG_EnableIOAnalogSwitchBooster    HAL_SBS_EnableIOAnalogSwitchBooster
+#define HAL_SYSCFG_DisableIOAnalogSwitchBooster   HAL_SBS_DisableIOAnalogSwitchBooster
+#define HAL_SYSCFG_ETHInterfaceSelect             HAL_SBS_ETHInterfaceSelect
+
+#define HAL_SYSCFG_Lock     HAL_SBS_Lock
+#define HAL_SYSCFG_GetLock  HAL_SBS_GetLock
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+#define HAL_SYSCFG_ConfigAttributes     HAL_SBS_ConfigAttributes
+#define HAL_SYSCFG_GetConfigAttributes  HAL_SBS_GetConfigAttributes
+#endif /* __ARM_FEATURE_CMSE */
+
+#endif /* STM32H5 */
+
+
 /**
   * @}
   */
@@ -641,14 +758,16 @@
 #define GPIO_AF10_OTG2_HS  GPIO_AF10_OTG2_FS
 #define GPIO_AF10_OTG1_FS  GPIO_AF10_OTG1_HS
 #define GPIO_AF12_OTG2_FS  GPIO_AF12_OTG1_FS
-#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || STM32H757xx */
+#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || \
+         STM32H757xx */
 #endif /* STM32H7 */
 
 #define GPIO_AF0_LPTIM                            GPIO_AF0_LPTIM1
 #define GPIO_AF1_LPTIM                            GPIO_AF1_LPTIM1
 #define GPIO_AF2_LPTIM                            GPIO_AF2_LPTIM1
 
-#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32G4) || defined(STM32H7) || defined(STM32WB) || defined(STM32U5)
+#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || \
+    defined(STM32G4) || defined(STM32H7) || defined(STM32WB) || defined(STM32U5)
 #define  GPIO_SPEED_LOW                           GPIO_SPEED_FREQ_LOW
 #define  GPIO_SPEED_MEDIUM                        GPIO_SPEED_FREQ_MEDIUM
 #define  GPIO_SPEED_FAST                          GPIO_SPEED_FREQ_HIGH
@@ -670,9 +789,9 @@
 
 #define GPIO_AF6_DFSDM                            GPIO_AF6_DFSDM1
 
-#if defined(STM32U5)
+#if defined(STM32U5) || defined(STM32H5)
 #define GPIO_AF0_RTC_50Hz                         GPIO_AF0_RTC_50HZ
-#endif /* STM32U5 */
+#endif /* STM32U5 || STM32H5 */
 #if defined(STM32U5)
 #define GPIO_AF0_S2DSTOP                          GPIO_AF0_SRDSTOP
 #define GPIO_AF11_LPGPIO                          GPIO_AF11_LPGPIO1
@@ -686,7 +805,25 @@
   */
 #if defined(STM32U5)
 #define GTZC_PERIPH_DCMI                      GTZC_PERIPH_DCMI_PSSI
+#define GTZC_PERIPH_LTDC                      GTZC_PERIPH_LTDCUSB
 #endif /* STM32U5 */
+#if defined(STM32H5)
+#define GTZC_PERIPH_DAC12                     GTZC_PERIPH_DAC1
+#define GTZC_PERIPH_ADC12                     GTZC_PERIPH_ADC
+#define GTZC_PERIPH_USBFS                     GTZC_PERIPH_USB
+#endif /* STM32H5 */
+#if defined(STM32H5) || defined(STM32U5)
+#define GTZC_MCPBB_NB_VCTR_REG_MAX            GTZC_MPCBB_NB_VCTR_REG_MAX
+#define GTZC_MCPBB_NB_LCK_VCTR_REG_MAX        GTZC_MPCBB_NB_LCK_VCTR_REG_MAX
+#define GTZC_MCPBB_SUPERBLOCK_UNLOCKED        GTZC_MPCBB_SUPERBLOCK_UNLOCKED
+#define GTZC_MCPBB_SUPERBLOCK_LOCKED          GTZC_MPCBB_SUPERBLOCK_LOCKED
+#define GTZC_MCPBB_BLOCK_NSEC                 GTZC_MPCBB_BLOCK_NSEC
+#define GTZC_MCPBB_BLOCK_SEC                  GTZC_MPCBB_BLOCK_SEC
+#define GTZC_MCPBB_BLOCK_NPRIV                GTZC_MPCBB_BLOCK_NPRIV
+#define GTZC_MCPBB_BLOCK_PRIV                 GTZC_MPCBB_BLOCK_PRIV
+#define GTZC_MCPBB_LOCK_OFF                   GTZC_MPCBB_LOCK_OFF
+#define GTZC_MCPBB_LOCK_ON                    GTZC_MPCBB_LOCK_ON
+#endif /* STM32H5 || STM32U5 */
 /**
   * @}
   */
@@ -867,7 +1004,8 @@
 #define I2C_NOSTRETCH_ENABLED                   I2C_NOSTRETCH_ENABLE
 #define I2C_ANALOGFILTER_ENABLED                I2C_ANALOGFILTER_ENABLE
 #define I2C_ANALOGFILTER_DISABLED               I2C_ANALOGFILTER_DISABLE
-#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32G0) || defined(STM32L4) || defined(STM32L1) || defined(STM32F7)
+#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32G0) || defined(STM32L4) || \
+    defined(STM32L1) || defined(STM32F7)
 #define HAL_I2C_STATE_MEM_BUSY_TX               HAL_I2C_STATE_BUSY_TX
 #define HAL_I2C_STATE_MEM_BUSY_RX               HAL_I2C_STATE_BUSY_RX
 #define HAL_I2C_STATE_MASTER_BUSY_TX            HAL_I2C_STATE_BUSY_TX
@@ -1005,7 +1143,7 @@
 #define OPAMP_PGACONNECT_VM0                  OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
 #define OPAMP_PGACONNECT_VM1                  OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1
 
-#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7) || defined(STM32G4)
+#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7) || defined(STM32G4) || defined(STM32U5)
 #define HAL_OPAMP_MSP_INIT_CB_ID       HAL_OPAMP_MSPINIT_CB_ID
 #define HAL_OPAMP_MSP_DEINIT_CB_ID     HAL_OPAMP_MSPDEINIT_CB_ID
 #endif
@@ -1101,6 +1239,26 @@
 #define RTC_TAMPERPIN_PA0  RTC_TAMPERPIN_POS1
 #define RTC_TAMPERPIN_PI8  RTC_TAMPERPIN_POS1
 
+#if defined(STM32H5)
+#define TAMP_SECRETDEVICE_ERASE_NONE        TAMP_DEVICESECRETS_ERASE_NONE
+#define TAMP_SECRETDEVICE_ERASE_BKP_SRAM    TAMP_DEVICESECRETS_ERASE_BKPSRAM
+#endif /* STM32H5 */
+
+#if defined(STM32WBA)
+#define TAMP_SECRETDEVICE_ERASE_NONE            TAMP_DEVICESECRETS_ERASE_NONE
+#define TAMP_SECRETDEVICE_ERASE_SRAM2           TAMP_DEVICESECRETS_ERASE_SRAM2
+#define TAMP_SECRETDEVICE_ERASE_RHUK            TAMP_DEVICESECRETS_ERASE_RHUK
+#define TAMP_SECRETDEVICE_ERASE_ICACHE          TAMP_DEVICESECRETS_ERASE_ICACHE
+#define TAMP_SECRETDEVICE_ERASE_SAES_AES_HASH   TAMP_DEVICESECRETS_ERASE_SAES_AES_HASH
+#define TAMP_SECRETDEVICE_ERASE_PKA_SRAM        TAMP_DEVICESECRETS_ERASE_PKA_SRAM
+#define TAMP_SECRETDEVICE_ERASE_ALL             TAMP_DEVICESECRETS_ERASE_ALL
+#endif /* STM32WBA */
+
+#if defined(STM32H5) || defined(STM32WBA)
+#define TAMP_SECRETDEVICE_ERASE_DISABLE     TAMP_DEVICESECRETS_ERASE_NONE
+#define TAMP_SECRETDEVICE_ERASE_ENABLE      TAMP_SECRETDEVICE_ERASE_ALL
+#endif /* STM32H5 || STM32WBA */
+
 #if defined(STM32F7)
 #define RTC_TAMPCR_TAMPXE          RTC_TAMPER_ENABLE_BITS_MASK
 #define RTC_TAMPCR_TAMPXIE         RTC_TAMPER_IT_ENABLE_BITS_MASK
@@ -1111,12 +1269,12 @@
 #define RTC_TAMPCR_TAMPXIE         RTC_TAMPER_X_INTERRUPT
 #endif /* STM32H7 */
 
-#if defined(STM32F7) || defined(STM32H7)
+#if defined(STM32F7) || defined(STM32H7) || defined(STM32L0)
 #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_TAMP
-#endif /* STM32F7 || STM32H7 */
+#endif /* STM32F7 || STM32H7 || STM32L0 */
 
 /**
   * @}
@@ -1396,30 +1554,40 @@
 #define ETH_MMCRFAECR          0x00000198U
 #define ETH_MMCRGUFCR          0x000001C4U
 
-#define ETH_MAC_TXFIFO_FULL                             0x02000000U  /* Tx FIFO full */
-#define ETH_MAC_TXFIFONOT_EMPTY                         0x01000000U  /* Tx FIFO not empty */
-#define ETH_MAC_TXFIFO_WRITE_ACTIVE                     0x00400000U  /* Tx FIFO write active */
-#define ETH_MAC_TXFIFO_IDLE                             0x00000000U  /* Tx FIFO read status: Idle */
-#define ETH_MAC_TXFIFO_READ                             0x00100000U  /* Tx FIFO read status: Read (transferring data to the MAC transmitter) */
-#define ETH_MAC_TXFIFO_WAITING                          0x00200000U  /* Tx FIFO read status: Waiting for TxStatus from MAC transmitter */
-#define ETH_MAC_TXFIFO_WRITING                          0x00300000U  /* Tx FIFO read status: Writing the received TxStatus or flushing the TxFIFO */
-#define ETH_MAC_TRANSMISSION_PAUSE                      0x00080000U  /* MAC transmitter in pause */
-#define ETH_MAC_TRANSMITFRAMECONTROLLER_IDLE            0x00000000U  /* MAC transmit frame controller: Idle */
-#define ETH_MAC_TRANSMITFRAMECONTROLLER_WAITING         0x00020000U  /* MAC transmit frame controller: Waiting for Status of previous frame or IFG/backoff period to be over */
-#define ETH_MAC_TRANSMITFRAMECONTROLLER_GENRATING_PCF   0x00040000U  /* MAC transmit frame controller: Generating and transmitting a Pause control frame (in full duplex mode) */
-#define ETH_MAC_TRANSMITFRAMECONTROLLER_TRANSFERRING    0x00060000U  /* MAC transmit frame controller: Transferring input frame for transmission */
+#define ETH_MAC_TXFIFO_FULL                           0x02000000U  /* Tx FIFO full */
+#define ETH_MAC_TXFIFONOT_EMPTY                       0x01000000U  /* Tx FIFO not empty */
+#define ETH_MAC_TXFIFO_WRITE_ACTIVE                   0x00400000U  /* Tx FIFO write active */
+#define ETH_MAC_TXFIFO_IDLE                           0x00000000U  /* Tx FIFO read status: Idle */
+#define ETH_MAC_TXFIFO_READ                           0x00100000U  /* Tx FIFO read status: Read (transferring data to 
+                                                                      the MAC transmitter) */
+#define ETH_MAC_TXFIFO_WAITING                        0x00200000U  /* Tx FIFO read status: Waiting for TxStatus from 
+                                                                      MAC transmitter */
+#define ETH_MAC_TXFIFO_WRITING                        0x00300000U  /* Tx FIFO read status: Writing the received TxStatus
+                                                                      or flushing the TxFIFO */
+#define ETH_MAC_TRANSMISSION_PAUSE                    0x00080000U  /* MAC transmitter in pause */
+#define ETH_MAC_TRANSMITFRAMECONTROLLER_IDLE          0x00000000U  /* MAC transmit frame controller: Idle */
+#define ETH_MAC_TRANSMITFRAMECONTROLLER_WAITING       0x00020000U  /* MAC transmit frame controller: Waiting for Status 
+                                                                   of previous frame or IFG/backoff period to be over */
+#define ETH_MAC_TRANSMITFRAMECONTROLLER_GENRATING_PCF 0x00040000U  /* MAC transmit frame controller: Generating and 
+                                                             transmitting a Pause control frame (in full duplex mode) */
+#define ETH_MAC_TRANSMITFRAMECONTROLLER_TRANSFERRING  0x00060000U  /* MAC transmit frame controller: Transferring input 
+                                                                      frame for transmission */
 #define ETH_MAC_MII_TRANSMIT_ACTIVE           0x00010000U  /* MAC MII transmit engine active */
 #define ETH_MAC_RXFIFO_EMPTY                  0x00000000U  /* Rx FIFO fill level: empty */
-#define ETH_MAC_RXFIFO_BELOW_THRESHOLD        0x00000100U  /* Rx FIFO fill level: fill-level below flow-control de-activate threshold */
-#define ETH_MAC_RXFIFO_ABOVE_THRESHOLD        0x00000200U  /* Rx FIFO fill level: fill-level above flow-control activate threshold */
+#define ETH_MAC_RXFIFO_BELOW_THRESHOLD        0x00000100U  /* Rx FIFO fill level: fill-level below flow-control 
+                                                              de-activate threshold */
+#define ETH_MAC_RXFIFO_ABOVE_THRESHOLD        0x00000200U  /* Rx FIFO fill level: fill-level above flow-control 
+                                                              activate threshold */
 #define ETH_MAC_RXFIFO_FULL                   0x00000300U  /* Rx FIFO fill level: full */
 #if defined(STM32F1)
 #else
 #define ETH_MAC_READCONTROLLER_IDLE           0x00000000U  /* Rx FIFO read controller IDLE state */
 #define ETH_MAC_READCONTROLLER_READING_DATA   0x00000020U  /* Rx FIFO read controller Reading frame data */
-#define ETH_MAC_READCONTROLLER_READING_STATUS 0x00000040U  /* Rx FIFO read controller Reading frame status (or time-stamp) */
+#define ETH_MAC_READCONTROLLER_READING_STATUS 0x00000040U  /* Rx FIFO read controller Reading frame status 
+                                                             (or time-stamp) */
 #endif
-#define ETH_MAC_READCONTROLLER_FLUSHING       0x00000060U  /* Rx FIFO read controller Flushing the frame data and status */
+#define ETH_MAC_READCONTROLLER_FLUSHING       0x00000060U  /* Rx FIFO read controller Flushing the frame data and 
+                                                              status */
 #define ETH_MAC_RXFIFO_WRITE_ACTIVE           0x00000010U  /* Rx FIFO write controller active */
 #define ETH_MAC_SMALL_FIFO_NOTACTIVE          0x00000000U  /* MAC small FIFO read / write controllers not active */
 #define ETH_MAC_SMALL_FIFO_READ_ACTIVE        0x00000002U  /* MAC small FIFO read controller active */
@@ -1427,6 +1595,8 @@
 #define ETH_MAC_SMALL_FIFO_RW_ACTIVE          0x00000006U  /* MAC small FIFO read / write controllers active */
 #define ETH_MAC_MII_RECEIVE_PROTOCOL_ACTIVE   0x00000001U  /* MAC MII receive protocol engine active */
 
+#define ETH_TxPacketConfig                    ETH_TxPacketConfig_t  /* Transmit Packet Configuration structure definition */
+
 /**
   * @}
   */
@@ -1590,7 +1760,8 @@
 #define HAL_EnableDBGStandbyMode HAL_DBGMCU_EnableDBGStandbyMode
 #define HAL_DisableDBGStandbyMode HAL_DBGMCU_DisableDBGStandbyMode
 #define HAL_DBG_LowPowerConfig(Periph, cmd) (((cmd\
-                                              )==ENABLE)? HAL_DBGMCU_DBG_EnableLowPowerConfig(Periph) : HAL_DBGMCU_DBG_DisableLowPowerConfig(Periph))
+                                              )==ENABLE)? HAL_DBGMCU_DBG_EnableLowPowerConfig(Periph) : \
+                                             HAL_DBGMCU_DBG_DisableLowPowerConfig(Periph))
 #define HAL_VREFINT_OutputSelect  HAL_SYSCFG_VREFINT_OutputSelect
 #define HAL_Lock_Cmd(cmd) (((cmd)==ENABLE) ? HAL_SYSCFG_Enable_Lock_VREFINT() : HAL_SYSCFG_Disable_Lock_VREFINT())
 #if defined(STM32L0)
@@ -1599,8 +1770,10 @@
 #endif
 #define HAL_ADC_EnableBuffer_Cmd(cmd)  (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
 #define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd\
-                                              )==ENABLE) ?  HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
-#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ)
+                                              )==ENABLE) ?  HAL_ADCEx_EnableVREFINTTempSensor() : \
+                                             HAL_ADCEx_DisableVREFINTTempSensor())
+#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || \
+    defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ)
 #define HAL_EnableSRDomainDBGStopMode      HAL_EnableDomain3DBGStopMode
 #define HAL_DisableSRDomainDBGStopMode     HAL_DisableDomain3DBGStopMode
 #define HAL_EnableSRDomainDBGStandbyMode   HAL_EnableDomain3DBGStandbyMode
@@ -1634,16 +1807,21 @@
 #define HAL_FMPI2CEx_AnalogFilter_Config      HAL_FMPI2CEx_ConfigAnalogFilter
 #define HAL_FMPI2CEx_DigitalFilter_Config     HAL_FMPI2CEx_ConfigDigitalFilter
 
-#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd\
-                                                                 )==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
+#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) ((cmd == ENABLE)? \
+                                                                HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): \
+                                                                HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
 
-#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4) || defined(STM32L1)
+#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || \
+    defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || \
+    defined(STM32L4) || defined(STM32L5) || defined(STM32G4) || defined(STM32L1)
 #define HAL_I2C_Master_Sequential_Transmit_IT  HAL_I2C_Master_Seq_Transmit_IT
 #define HAL_I2C_Master_Sequential_Receive_IT   HAL_I2C_Master_Seq_Receive_IT
 #define HAL_I2C_Slave_Sequential_Transmit_IT   HAL_I2C_Slave_Seq_Transmit_IT
 #define HAL_I2C_Slave_Sequential_Receive_IT    HAL_I2C_Slave_Seq_Receive_IT
-#endif /* STM32H7 || STM32WB  || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 || STM32L1 */
-#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)|| defined(STM32L1)
+#endif /* STM32H7 || STM32WB  || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 ||
+          STM32L4 || STM32L5 || STM32G4 || STM32L1 */
+#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || \
+    defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)|| defined(STM32L1)
 #define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA
 #define HAL_I2C_Master_Sequential_Receive_DMA  HAL_I2C_Master_Seq_Receive_DMA
 #define HAL_I2C_Slave_Sequential_Transmit_DMA  HAL_I2C_Slave_Seq_Transmit_DMA
@@ -1768,6 +1946,17 @@
 #define PWR_SRAM5_PAGE13_STOP_RETENTION               PWR_SRAM5_PAGE13_STOP
 #define PWR_SRAM5_FULL_STOP_RETENTION                 PWR_SRAM5_FULL_STOP
 
+#define PWR_SRAM6_PAGE1_STOP_RETENTION                PWR_SRAM6_PAGE1_STOP
+#define PWR_SRAM6_PAGE2_STOP_RETENTION                PWR_SRAM6_PAGE2_STOP
+#define PWR_SRAM6_PAGE3_STOP_RETENTION                PWR_SRAM6_PAGE3_STOP
+#define PWR_SRAM6_PAGE4_STOP_RETENTION                PWR_SRAM6_PAGE4_STOP
+#define PWR_SRAM6_PAGE5_STOP_RETENTION                PWR_SRAM6_PAGE5_STOP
+#define PWR_SRAM6_PAGE6_STOP_RETENTION                PWR_SRAM6_PAGE6_STOP
+#define PWR_SRAM6_PAGE7_STOP_RETENTION                PWR_SRAM6_PAGE7_STOP
+#define PWR_SRAM6_PAGE8_STOP_RETENTION                PWR_SRAM6_PAGE8_STOP
+#define PWR_SRAM6_FULL_STOP_RETENTION                 PWR_SRAM6_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
@@ -1776,6 +1965,8 @@
 #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_JPEGRAM_FULL_STOP_RETENTION               PWR_JPEGRAM_FULL_STOP
+
 
 #define PWR_SRAM2_PAGE1_STANDBY_RETENTION             PWR_SRAM2_PAGE1_STANDBY
 #define PWR_SRAM2_PAGE2_STANDBY_RETENTION             PWR_SRAM2_PAGE2_STANDBY
@@ -1786,6 +1977,7 @@
 #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_SRAM6_FULL_RUN_RETENTION                  PWR_SRAM6_FULL_RUN
 
 #define PWR_ALL_RAM_RUN_RETENTION_MASK                PWR_ALL_RAM_RUN_MASK
 #endif
@@ -1794,6 +1986,20 @@
   * @}
  */
 
+/** @defgroup HAL_RTC_Aliased_Functions HAL RTC Aliased Functions maintained for legacy purpose
+  * @{
+  */
+#if defined(STM32H5) || defined(STM32WBA)
+#define HAL_RTCEx_SetBoothardwareKey            HAL_RTCEx_LockBootHardwareKey
+#define HAL_RTCEx_BKUPBlock_Enable              HAL_RTCEx_BKUPBlock
+#define HAL_RTCEx_BKUPBlock_Disable             HAL_RTCEx_BKUPUnblock
+#define HAL_RTCEx_Erase_SecretDev_Conf          HAL_RTCEx_ConfigEraseDeviceSecrets
+#endif /* STM32H5 || STM32WBA */
+
+/**
+  * @}
+  */
+
 /** @defgroup HAL_SMBUS_Aliased_Functions HAL SMBUS Aliased Functions maintained for legacy purpose
   * @{
   */
@@ -1819,7 +2025,8 @@
 #define HAL_TIM_DMAError                                TIM_DMAError
 #define HAL_TIM_DMACaptureCplt                          TIM_DMACaptureCplt
 #define HAL_TIMEx_DMACommutationCplt                    TIMEx_DMACommutationCplt
-#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4)
+#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || \
+    defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4)
 #define HAL_TIM_SlaveConfigSynchronization              HAL_TIM_SlaveConfigSynchro
 #define HAL_TIM_SlaveConfigSynchronization_IT           HAL_TIM_SlaveConfigSynchro_IT
 #define HAL_TIMEx_CommutationCallback                   HAL_TIMEx_CommutCallback
@@ -2076,7 +2283,8 @@
 #define COMP_STOP                                        __HAL_COMP_DISABLE
 #define COMP_LOCK                                        __HAL_COMP_LOCK
 
-#if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
+#if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || defined(STM32F303x8) || \
+    defined(STM32F334x8) || defined(STM32F328xx)
 #define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__)   (((__EXTILINE__)  == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \
                                                           ((__EXTILINE__)  == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \
                                                           __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE())
@@ -2248,8 +2456,10 @@
 /** @defgroup HAL_COMP_Aliased_Functions HAL COMP Aliased Functions maintained for legacy purpose
   * @{
   */
-#define HAL_COMP_Start_IT       HAL_COMP_Start /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */
-#define HAL_COMP_Stop_IT        HAL_COMP_Stop  /* Function considered as legacy as EXTI event or IT configuration is done into HAL_COMP_Init() */
+#define HAL_COMP_Start_IT       HAL_COMP_Start /* Function considered as legacy as EXTI event or IT configuration is 
+                                                  done into HAL_COMP_Init() */
+#define HAL_COMP_Stop_IT        HAL_COMP_Stop  /* Function considered as legacy as EXTI event or IT configuration is 
+                                                  done into HAL_COMP_Init() */
 /**
   * @}
   */
@@ -2408,7 +2618,9 @@
 #define __HAL_PWR_INTERNALWAKEUP_ENABLE                          HAL_PWREx_EnableInternalWakeUpLine
 #define __HAL_PWR_PULL_UP_DOWN_CONFIG_DISABLE                    HAL_PWREx_DisablePullUpPullDownConfig
 #define __HAL_PWR_PULL_UP_DOWN_CONFIG_ENABLE                     HAL_PWREx_EnablePullUpPullDownConfig
-#define __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER()                  do { __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); } while(0)
+#define __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER()                  do { __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(); \
+                                                                      __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); \
+                                                                    } while(0)
 #define __HAL_PWR_PVD_EXTI_EVENT_DISABLE                         __HAL_PWR_PVD_EXTI_DISABLE_EVENT
 #define __HAL_PWR_PVD_EXTI_EVENT_ENABLE                          __HAL_PWR_PVD_EXTI_ENABLE_EVENT
 #define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_DISABLE                __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE
@@ -2417,8 +2629,12 @@
 #define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_ENABLE                  __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE
 #define __HAL_PWR_PVD_EXTI_SET_FALLING_EGDE_TRIGGER              __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE
 #define __HAL_PWR_PVD_EXTI_SET_RISING_EDGE_TRIGGER               __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE
-#define __HAL_PWR_PVM_DISABLE()                                  do { HAL_PWREx_DisablePVM1();HAL_PWREx_DisablePVM2();HAL_PWREx_DisablePVM3();HAL_PWREx_DisablePVM4(); } while(0)
-#define __HAL_PWR_PVM_ENABLE()                                   do { HAL_PWREx_EnablePVM1();HAL_PWREx_EnablePVM2();HAL_PWREx_EnablePVM3();HAL_PWREx_EnablePVM4(); } while(0)
+#define __HAL_PWR_PVM_DISABLE()                                  do { HAL_PWREx_DisablePVM1();HAL_PWREx_DisablePVM2(); \
+                                                                      HAL_PWREx_DisablePVM3();HAL_PWREx_DisablePVM4(); \
+                                                                    } while(0)
+#define __HAL_PWR_PVM_ENABLE()                                   do { HAL_PWREx_EnablePVM1();HAL_PWREx_EnablePVM2(); \
+                                                                      HAL_PWREx_EnablePVM3();HAL_PWREx_EnablePVM4(); \
+                                                                    } while(0)
 #define __HAL_PWR_SRAM2CONTENT_PRESERVE_DISABLE                  HAL_PWREx_DisableSRAM2ContentRetention
 #define __HAL_PWR_SRAM2CONTENT_PRESERVE_ENABLE                   HAL_PWREx_EnableSRAM2ContentRetention
 #define __HAL_PWR_VDDIO2_DISABLE                                 HAL_PWREx_DisableVddIO2
@@ -2454,8 +2670,8 @@
 #define RCC_StopWakeUpClock_HSI     RCC_STOP_WAKEUPCLOCK_HSI
 
 #define HAL_RCC_CCSCallback HAL_RCC_CSSCallback
-#define HAL_RC48_EnableBuffer_Cmd(cmd) (((cmd\
-                                         )==ENABLE) ? HAL_RCCEx_EnableHSI48_VREFINT() : HAL_RCCEx_DisableHSI48_VREFINT())
+#define HAL_RC48_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? \
+                                        HAL_RCCEx_EnableHSI48_VREFINT() : HAL_RCCEx_DisableHSI48_VREFINT())
 
 #define __ADC_CLK_DISABLE          __HAL_RCC_ADC_CLK_DISABLE
 #define __ADC_CLK_ENABLE           __HAL_RCC_ADC_CLK_ENABLE
@@ -2959,6 +3175,11 @@
 
 #define  __HAL_RCC_WWDG_IS_CLK_ENABLED    __HAL_RCC_WWDG1_IS_CLK_ENABLED
 #define  __HAL_RCC_WWDG_IS_CLK_DISABLED  __HAL_RCC_WWDG1_IS_CLK_DISABLED
+#define  RCC_SPI4CLKSOURCE_D2PCLK1       RCC_SPI4CLKSOURCE_D2PCLK2
+#define  RCC_SPI5CLKSOURCE_D2PCLK1       RCC_SPI5CLKSOURCE_D2PCLK2
+#define  RCC_SPI45CLKSOURCE_D2PCLK1      RCC_SPI45CLKSOURCE_D2PCLK2
+#define  RCC_SPI45CLKSOURCE_CDPCLK1      RCC_SPI45CLKSOURCE_CDPCLK2
+#define  RCC_SPI45CLKSOURCE_PCLK1        RCC_SPI45CLKSOURCE_PCLK2
 #endif
 
 #define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE
@@ -3423,7 +3644,8 @@
 #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) || defined(STM32C0)
+#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
@@ -3568,6 +3790,92 @@
 #define IS_RCC_PLLFRACN_VALUE                 IS_RCC_PLL_FRACN_VALUE
 #endif /* STM32U5 */
 
+#if defined(STM32H5)
+#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
+
+#define RCC_PLLSOURCE_NONE              RCC_PLL1_SOURCE_NONE
+#define RCC_PLLSOURCE_HSI               RCC_PLL1_SOURCE_HSI
+#define RCC_PLLSOURCE_CSI               RCC_PLL1_SOURCE_CSI
+#define RCC_PLLSOURCE_HSE               RCC_PLL1_SOURCE_HSE
+#define RCC_PLLVCIRANGE_0               RCC_PLL1_VCIRANGE_0
+#define RCC_PLLVCIRANGE_1               RCC_PLL1_VCIRANGE_1
+#define RCC_PLLVCIRANGE_2               RCC_PLL1_VCIRANGE_2
+#define RCC_PLLVCIRANGE_3               RCC_PLL1_VCIRANGE_3
+#define RCC_PLL1VCOWIDE                 RCC_PLL1_VCORANGE_WIDE
+#define RCC_PLL1VCOMEDIUM               RCC_PLL1_VCORANGE_MEDIUM
+
+#define IS_RCC_PLLSOURCE                IS_RCC_PLL1_SOURCE
+#define IS_RCC_PLLRGE_VALUE             IS_RCC_PLL1_VCIRGE_VALUE
+#define IS_RCC_PLLVCORGE_VALUE          IS_RCC_PLL1_VCORGE_VALUE
+#define IS_RCC_PLLCLOCKOUT_VALUE        IS_RCC_PLL1_CLOCKOUT_VALUE
+#define IS_RCC_PLL_FRACN_VALUE          IS_RCC_PLL1_FRACN_VALUE
+#define IS_RCC_PLLM_VALUE               IS_RCC_PLL1_DIVM_VALUE
+#define IS_RCC_PLLN_VALUE               IS_RCC_PLL1_MULN_VALUE
+#define IS_RCC_PLLP_VALUE               IS_RCC_PLL1_DIVP_VALUE
+#define IS_RCC_PLLQ_VALUE               IS_RCC_PLL1_DIVQ_VALUE
+#define IS_RCC_PLLR_VALUE               IS_RCC_PLL1_DIVR_VALUE
+
+#define __HAL_RCC_PLL_ENABLE            __HAL_RCC_PLL1_ENABLE
+#define __HAL_RCC_PLL_DISABLE           __HAL_RCC_PLL1_DISABLE
+#define __HAL_RCC_PLL_FRACN_ENABLE      __HAL_RCC_PLL1_FRACN_ENABLE
+#define __HAL_RCC_PLL_FRACN_DISABLE     __HAL_RCC_PLL1_FRACN_DISABLE
+#define __HAL_RCC_PLL_CONFIG            __HAL_RCC_PLL1_CONFIG
+#define __HAL_RCC_PLL_PLLSOURCE_CONFIG  __HAL_RCC_PLL1_PLLSOURCE_CONFIG
+#define __HAL_RCC_PLL_DIVM_CONFIG       __HAL_RCC_PLL1_DIVM_CONFIG
+#define __HAL_RCC_PLL_FRACN_CONFIG      __HAL_RCC_PLL1_FRACN_CONFIG
+#define __HAL_RCC_PLL_VCIRANGE          __HAL_RCC_PLL1_VCIRANGE
+#define __HAL_RCC_PLL_VCORANGE          __HAL_RCC_PLL1_VCORANGE
+#define __HAL_RCC_GET_PLL_OSCSOURCE     __HAL_RCC_GET_PLL1_OSCSOURCE
+#define __HAL_RCC_PLLCLKOUT_ENABLE      __HAL_RCC_PLL1_CLKOUT_ENABLE
+#define __HAL_RCC_PLLCLKOUT_DISABLE     __HAL_RCC_PLL1_CLKOUT_DISABLE
+#define __HAL_RCC_GET_PLLCLKOUT_CONFIG  __HAL_RCC_GET_PLL1_CLKOUT_CONFIG
+
+#define __HAL_RCC_PLL2FRACN_ENABLE      __HAL_RCC_PLL2_FRACN_ENABLE
+#define __HAL_RCC_PLL2FRACN_DISABLE     __HAL_RCC_PLL2_FRACN_DISABLE
+#define __HAL_RCC_PLL2CLKOUT_ENABLE     __HAL_RCC_PLL2_CLKOUT_ENABLE
+#define __HAL_RCC_PLL2CLKOUT_DISABLE    __HAL_RCC_PLL2_CLKOUT_DISABLE
+#define __HAL_RCC_PLL2FRACN_CONFIG      __HAL_RCC_PLL2_FRACN_CONFIG
+#define __HAL_RCC_GET_PLL2CLKOUT_CONFIG __HAL_RCC_GET_PLL2_CLKOUT_CONFIG
+
+#define __HAL_RCC_PLL3FRACN_ENABLE      __HAL_RCC_PLL3_FRACN_ENABLE
+#define __HAL_RCC_PLL3FRACN_DISABLE     __HAL_RCC_PLL3_FRACN_DISABLE
+#define __HAL_RCC_PLL3CLKOUT_ENABLE     __HAL_RCC_PLL3_CLKOUT_ENABLE
+#define __HAL_RCC_PLL3CLKOUT_DISABLE    __HAL_RCC_PLL3_CLKOUT_DISABLE
+#define __HAL_RCC_PLL3FRACN_CONFIG      __HAL_RCC_PLL3_FRACN_CONFIG
+#define __HAL_RCC_GET_PLL3CLKOUT_CONFIG __HAL_RCC_GET_PLL3_CLKOUT_CONFIG
+
+#define RCC_PLL2VCIRANGE_0              RCC_PLL2_VCIRANGE_0
+#define RCC_PLL2VCIRANGE_1              RCC_PLL2_VCIRANGE_1
+#define RCC_PLL2VCIRANGE_2              RCC_PLL2_VCIRANGE_2
+#define RCC_PLL2VCIRANGE_3              RCC_PLL2_VCIRANGE_3
+
+#define RCC_PLL2VCOWIDE                 RCC_PLL2_VCORANGE_WIDE
+#define RCC_PLL2VCOMEDIUM               RCC_PLL2_VCORANGE_MEDIUM
+
+#define RCC_PLL2SOURCE_NONE             RCC_PLL2_SOURCE_NONE
+#define RCC_PLL2SOURCE_HSI              RCC_PLL2_SOURCE_HSI
+#define RCC_PLL2SOURCE_CSI              RCC_PLL2_SOURCE_CSI
+#define RCC_PLL2SOURCE_HSE              RCC_PLL2_SOURCE_HSE
+
+#define RCC_PLL3VCIRANGE_0              RCC_PLL3_VCIRANGE_0
+#define RCC_PLL3VCIRANGE_1              RCC_PLL3_VCIRANGE_1
+#define RCC_PLL3VCIRANGE_2              RCC_PLL3_VCIRANGE_2
+#define RCC_PLL3VCIRANGE_3              RCC_PLL3_VCIRANGE_3
+
+#define RCC_PLL3VCOWIDE                 RCC_PLL3_VCORANGE_WIDE
+#define RCC_PLL3VCOMEDIUM               RCC_PLL3_VCORANGE_MEDIUM
+
+#define RCC_PLL3SOURCE_NONE             RCC_PLL3_SOURCE_NONE
+#define RCC_PLL3SOURCE_HSI              RCC_PLL3_SOURCE_HSI
+#define RCC_PLL3SOURCE_CSI              RCC_PLL3_SOURCE_CSI
+#define RCC_PLL3SOURCE_HSE              RCC_PLL3_SOURCE_HSE
+
+
+#endif /* STM32H5 */
+
 /**
   * @}
   */
@@ -3584,9 +3892,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) || \
-    defined (STM32C0)
+#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || \
+    defined (STM32L4P5xx)|| defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL) || defined (STM32U5) || \
+    defined (STM32WBA) || defined (STM32H5) || defined (STM32C0) 
 #else
 #define __HAL_RTC_CLEAR_FLAG                      __HAL_RTC_EXTI_CLEAR_FLAG
 #endif
@@ -3621,6 +3929,13 @@
                                                         __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()))
 #endif   /* STM32F1 */
 
+#if defined (STM32F0) || defined (STM32F2) || defined (STM32F3) || defined (STM32F4) || defined (STM32F7) || \
+    defined (STM32H7) || \
+    defined (STM32L0) || defined (STM32L1) || \
+    defined (STM32WB)
+#define __HAL_RTC_TAMPER_GET_IT                   __HAL_RTC_TAMPER_GET_FLAG
+#endif
+
 #define IS_ALARM                                  IS_RTC_ALARM
 #define IS_ALARM_MASK                             IS_RTC_ALARM_MASK
 #define IS_TAMPER                                 IS_RTC_TAMPER
@@ -3639,6 +3954,11 @@
 #define __RTC_WRITEPROTECTION_ENABLE  __HAL_RTC_WRITEPROTECTION_ENABLE
 #define __RTC_WRITEPROTECTION_DISABLE  __HAL_RTC_WRITEPROTECTION_DISABLE
 
+#if defined (STM32H5)
+#define __HAL_RCC_RTCAPB_CLK_ENABLE   __HAL_RCC_RTC_CLK_ENABLE
+#define __HAL_RCC_RTCAPB_CLK_DISABLE  __HAL_RCC_RTC_CLK_DISABLE
+#endif   /* STM32H5 */
+
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_can.h b/Inc/stm32f4xx_hal_can.h
index cf4557b..b4c229b 100644
--- a/Inc/stm32f4xx_hal_can.h
+++ b/Inc/stm32f4xx_hal_can.h
@@ -209,7 +209,11 @@
 /**
   * @brief  CAN handle Structure definition
   */
+#if USE_HAL_CAN_REGISTER_CALLBACKS == 1
 typedef struct __CAN_HandleTypeDef
+#else
+typedef struct
+#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
 {
   CAN_TypeDef                 *Instance;                 /*!< Register base address */
 
diff --git a/Inc/stm32f4xx_hal_cec.h b/Inc/stm32f4xx_hal_cec.h
index 7738946..2abdc3b 100644
--- a/Inc/stm32f4xx_hal_cec.h
+++ b/Inc/stm32f4xx_hal_cec.h
@@ -48,61 +48,70 @@
 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 pointer */
 
@@ -111,7 +120,8 @@
 
 /**
   * @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                               */
 
-  const 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)
 
 /**
   * @}
@@ -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 /* STM32F4xxHAL_CEC_H */
-
diff --git a/Inc/stm32f4xx_hal_cortex.h b/Inc/stm32f4xx_hal_cortex.h
index fdc96b5..ff5bc1a 100644
--- a/Inc/stm32f4xx_hal_cortex.h
+++ b/Inc/stm32f4xx_hal_cortex.h
@@ -286,6 +286,7 @@
 void HAL_MPU_Disable(void);
 void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init);
 #endif /* __MPU_PRESENT */
+void HAL_CORTEX_ClearEvent(void);
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_crc.h b/Inc/stm32f4xx_hal_crc.h
index 41edbe3..ac36ed8 100644
--- a/Inc/stm32f4xx_hal_crc.h
+++ b/Inc/stm32f4xx_hal_crc.h
@@ -157,7 +157,7 @@
 /** @defgroup CRC_Exported_Functions_Group3 Peripheral State functions
   * @{
   */
-HAL_CRC_StateTypeDef HAL_CRC_GetState(CRC_HandleTypeDef *hcrc);
+HAL_CRC_StateTypeDef HAL_CRC_GetState(const CRC_HandleTypeDef *hcrc);
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_dac.h b/Inc/stm32f4xx_hal_dac.h
index a79ca73..3ee217a 100644
--- a/Inc/stm32f4xx_hal_dac.h
+++ b/Inc/stm32f4xx_hal_dac.h
@@ -78,19 +78,19 @@
   __IO uint32_t               ErrorCode;     /*!< DAC Error code                    */
 
 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
-  void (* ConvCpltCallbackCh1)            (struct __DAC_HandleTypeDef *hdac);
-  void (* ConvHalfCpltCallbackCh1)        (struct __DAC_HandleTypeDef *hdac);
-  void (* ErrorCallbackCh1)               (struct __DAC_HandleTypeDef *hdac);
-  void (* DMAUnderrunCallbackCh1)         (struct __DAC_HandleTypeDef *hdac);
+  void (* ConvCpltCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
+  void (* ConvHalfCpltCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
+  void (* ErrorCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
+  void (* DMAUnderrunCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
 #if defined(DAC_CHANNEL2_SUPPORT)
-  void (* ConvCpltCallbackCh2)            (struct __DAC_HandleTypeDef *hdac);
-  void (* ConvHalfCpltCallbackCh2)        (struct __DAC_HandleTypeDef *hdac);
-  void (* ErrorCallbackCh2)               (struct __DAC_HandleTypeDef *hdac);
-  void (* DMAUnderrunCallbackCh2)         (struct __DAC_HandleTypeDef *hdac);
+  void (* ConvCpltCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
+  void (* ConvHalfCpltCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
+  void (* ErrorCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
+  void (* DMAUnderrunCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
 #endif /* DAC_CHANNEL2_SUPPORT */
 
-  void (* MspInitCallback)                (struct __DAC_HandleTypeDef *hdac);
-  void (* MspDeInitCallback)              (struct __DAC_HandleTypeDef *hdac);
+  void (* MspInitCallback)(struct __DAC_HandleTypeDef *hdac);
+  void (* MspDeInitCallback)(struct __DAC_HandleTypeDef *hdac);
 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
 
 } DAC_HandleTypeDef;
@@ -404,7 +404,7 @@
 /* IO operation functions *****************************************************/
 HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);
 HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel);
-HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t *pData, uint32_t Length,
+HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, const uint32_t *pData, uint32_t Length,
                                     uint32_t Alignment);
 HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel);
 void HAL_DAC_IRQHandler(DAC_HandleTypeDef *hdac);
@@ -430,8 +430,9 @@
   * @{
   */
 /* Peripheral Control functions ***********************************************/
-uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef *hdac, uint32_t Channel);
-HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac, DAC_ChannelConfTypeDef *sConfig, uint32_t Channel);
+uint32_t HAL_DAC_GetValue(const DAC_HandleTypeDef *hdac, uint32_t Channel);
+HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac,
+                                        const DAC_ChannelConfTypeDef *sConfig, uint32_t Channel);
 /**
   * @}
   */
@@ -440,8 +441,8 @@
   * @{
   */
 /* Peripheral State and Error functions ***************************************/
-HAL_DAC_StateTypeDef HAL_DAC_GetState(DAC_HandleTypeDef *hdac);
-uint32_t HAL_DAC_GetError(DAC_HandleTypeDef *hdac);
+HAL_DAC_StateTypeDef HAL_DAC_GetState(const DAC_HandleTypeDef *hdac);
+uint32_t HAL_DAC_GetError(const DAC_HandleTypeDef *hdac);
 
 /**
   * @}
@@ -477,4 +478,3 @@
 
 
 #endif /* STM32F4xx_HAL_DAC_H */
-
diff --git a/Inc/stm32f4xx_hal_dac_ex.h b/Inc/stm32f4xx_hal_dac_ex.h
index db10990..1bb5ce4 100644
--- a/Inc/stm32f4xx_hal_dac_ex.h
+++ b/Inc/stm32f4xx_hal_dac_ex.h
@@ -81,6 +81,7 @@
   * @}
   */
 
+
 /**
   * @}
   */
@@ -147,19 +148,18 @@
 HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Amplitude);
 
 #if defined(DAC_CHANNEL2_SUPPORT)
-#endif
 HAL_StatusTypeDef HAL_DACEx_DualStart(DAC_HandleTypeDef *hdac);
 HAL_StatusTypeDef HAL_DACEx_DualStop(DAC_HandleTypeDef *hdac);
 HAL_StatusTypeDef HAL_DACEx_DualSetValue(DAC_HandleTypeDef *hdac, uint32_t Alignment, uint32_t Data1, uint32_t Data2);
-uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef *hdac);
+uint32_t HAL_DACEx_DualGetValue(const DAC_HandleTypeDef *hdac);
+#endif /* DAC_CHANNEL2_SUPPORT */
 
 #if defined(DAC_CHANNEL2_SUPPORT)
-#endif
 void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef *hdac);
 void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef *hdac);
 void HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef *hdac);
 void HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef *hdac);
-
+#endif /* DAC_CHANNEL2_SUPPORT */
 
 /**
   * @}
@@ -202,4 +202,3 @@
 #endif
 
 #endif /* STM32F4xx_HAL_DAC_EX_H */
-
diff --git a/Inc/stm32f4xx_hal_dsi.h b/Inc/stm32f4xx_hal_dsi.h
index 6da9668..6b51ecb 100644
--- a/Inc/stm32f4xx_hal_dsi.h
+++ b/Inc/stm32f4xx_hal_dsi.h
@@ -976,7 +976,7 @@
 #define __HAL_DSI_WRAPPER_ENABLE(__HANDLE__) do { \
                                                   __IO uint32_t tmpreg = 0x00U; \
                                                   SET_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
-                                                  /* Delay after an DSI warpper enabling */ \
+                                                  /* Delay after an DSI wrapper enabling */ \
                                                   tmpreg = READ_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
                                                   UNUSED(tmpreg); \
                                                 } while(0U)
@@ -989,7 +989,7 @@
 #define __HAL_DSI_WRAPPER_DISABLE(__HANDLE__) do { \
                                                    __IO uint32_t tmpreg = 0x00U; \
                                                    CLEAR_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
-                                                   /* Delay after an DSI warpper disabling*/ \
+                                                   /* Delay after an DSI wrapper disabling*/ \
                                                    tmpreg = READ_BIT((__HANDLE__)->Instance->WCR, DSI_WCR_DSIEN);\
                                                    UNUSED(tmpreg); \
                                                  } while(0U)
@@ -1271,10 +1271,10 @@
                                                      || ((LooselyPacked) == DSI_LOOSELY_PACKED_DISABLE))
 #define IS_DSI_DE_POLARITY(DataEnable)              (((DataEnable) == DSI_DATA_ENABLE_ACTIVE_HIGH)\
                                                      || ((DataEnable) == DSI_DATA_ENABLE_ACTIVE_LOW))
-#define IS_DSI_VSYNC_POLARITY(VSYNC)                (((VSYNC) == DSI_VSYNC_ACTIVE_HIGH)\
-                                                     || ((VSYNC) == DSI_VSYNC_ACTIVE_LOW))
-#define IS_DSI_HSYNC_POLARITY(HSYNC)                (((HSYNC) == DSI_HSYNC_ACTIVE_HIGH)\
-                                                     || ((HSYNC) == DSI_HSYNC_ACTIVE_LOW))
+#define IS_DSI_VSYNC_POLARITY(Vsync)                (((Vsync) == DSI_VSYNC_ACTIVE_HIGH)\
+                                                     || ((Vsync) == DSI_VSYNC_ACTIVE_LOW))
+#define IS_DSI_HSYNC_POLARITY(Hsync)                (((Hsync) == DSI_HSYNC_ACTIVE_HIGH)\
+                                                     || ((Hsync) == DSI_HSYNC_ACTIVE_LOW))
 #define IS_DSI_VIDEO_MODE_TYPE(VideoModeType)       (((VideoModeType) == DSI_VID_MODE_NB_PULSES) || \
                                                      ((VideoModeType) == DSI_VID_MODE_NB_EVENTS) || \
                                                      ((VideoModeType) == DSI_VID_MODE_BURST))
diff --git a/Inc/stm32f4xx_hal_eth.h b/Inc/stm32f4xx_hal_eth.h
index ba5a09b..91fdb62 100644
--- a/Inc/stm32f4xx_hal_eth.h
+++ b/Inc/stm32f4xx_hal_eth.h
@@ -171,6 +171,7 @@
   *
   */
 
+#ifdef HAL_ETH_USE_PTP
 /**
   * @brief  ETH Timeupdate structure definition
   */
@@ -182,6 +183,7 @@
 /**
   *
   */
+#endif  /* HAL_ETH_USE_PTP */
 
 /**
   * @brief  DMA Receive Descriptors Wrapper structure definition
@@ -347,7 +349,6 @@
 
   uint32_t        BurstMode;               /*!< Sets the AHB Master interface burst transfers.
                                                      This parameter can be a value of @ref ETH_Burst_Mode */
-
   FunctionalState      DropTCPIPChecksumErrorFrame; /*!< Selects or not the Dropping of TCP/IP Checksum Error Frames */
 
   FunctionalState      ReceiveStoreForward;         /*!< Enables or disables the Receive store and forward mode */
@@ -407,6 +408,7 @@
   *
   */
 
+#ifdef HAL_ETH_USE_PTP
 /**
   * @brief  HAL ETH PTP Update type enum definition
   */
@@ -418,13 +420,13 @@
 /**
   *
   */
+#endif  /* HAL_ETH_USE_PTP */
 
 /**
   * @brief  ETH Init Structure definition
   */
 typedef struct
 {
-
   uint8_t
   *MACAddr;                  /*!< MAC Address of used Hardware: must be pointer on an array of 6 bytes */
 
@@ -443,6 +445,7 @@
   *
   */
 
+#ifdef HAL_ETH_USE_PTP
 /**
   * @brief  ETH PTP Init Structure definition
   */
@@ -470,6 +473,7 @@
 /**
   *
   */
+#endif  /* HAL_ETH_USE_PTP */
 
 /**
   * @brief  HAL State structures definition
@@ -538,7 +542,7 @@
 
   __IO HAL_ETH_StateTypeDef  gState;                   /*!< ETH state information related to global Handle management
                                                               and also related to Tx operations. This parameter can
-                                                              be a value of @ref HAL_ETH_StateTypeDef */
+                                                              be a value of @ref ETH_State_Codes */
 
   __IO uint32_t              ErrorCode;                 /*!< Holds the global Error code of the ETH HAL status machine
                                                              This parameter can be a value of @ref ETH_Error_Code.*/
@@ -595,14 +599,12 @@
 {
   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_ERROR_CB_ID              = 0x04U,    /*!< ETH Error Callback ID             */
   HAL_ETH_PMT_CB_ID                = 0x06U,    /*!< ETH Power Management Callback ID  */
   HAL_ETH_WAKEUP_CB_ID             = 0x08U     /*!< ETH Wake UP Callback ID           */
 
-
 } HAL_ETH_CallbackIDTypeDef;
 
 /**
@@ -1298,7 +1300,7 @@
   * @}
   */
 
-/** @defgroup HAL_ETH_StateTypeDef ETH States
+/** @defgroup ETH_State_Codes ETH States
   * @{
   */
 #define HAL_ETH_STATE_RESET       0x00000000U    /*!< Peripheral not yet Initialized or disabled */
@@ -1902,6 +1904,7 @@
   *   enabled @ref ETH_MAC_Interrupts
   * @retval None
   */
+
 #define __HAL_ETH_MAC_ENABLE_IT(__HANDLE__, __INTERRUPT__)                 ((__HANDLE__)->Instance->MACIER \
                                                                             |= (__INTERRUPT__))
 
@@ -1921,8 +1924,8 @@
   * @param  __INTERRUPT__: specifies the flag to check. @ref ETH_MAC_Interrupts
   * @retval The state of ETH MAC IT (SET or RESET).
   */
-#define __HAL_ETH_MAC_GET_IT(__HANDLE__, __INTERRUPT__)                   (((__HANDLE__)->Instance->MACSR &\
-                                                                            ( __INTERRUPT__)) == ( __INTERRUPT__))
+#define __HAL_ETH_MAC_GET_IT(__HANDLE__, __INTERRUPT__)                     (((__HANDLE__)->Instance->MACSR &\
+                                                                              ( __INTERRUPT__)) == ( __INTERRUPT__))
 
 /*!< External interrupt line 19 Connected to the ETH wakeup EXTI Line */
 #define ETH_WAKEUP_EXTI_LINE  0x00080000U
@@ -1991,6 +1994,7 @@
                                                            (__FLAG__)) == (__FLAG__)) ? SET : RESET)
 
 #define __HAL_ETH_SET_PTP_CONTROL(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->PTPTSCR |= (__FLAG__))
+
 /**
   * @}
   */
@@ -2059,7 +2063,7 @@
 HAL_StatusTypeDef HAL_ETH_Transmit(ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig, uint32_t Timeout);
 HAL_StatusTypeDef HAL_ETH_Transmit_IT(ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig);
 
-HAL_StatusTypeDef HAL_ETH_WritePHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
+HAL_StatusTypeDef HAL_ETH_WritePHYRegister(const ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
                                            uint32_t RegValue);
 HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
                                           uint32_t *pRegValue);
@@ -2095,12 +2099,14 @@
 
 /* MAC L2 Packet Filtering APIs  **********************************************/
 HAL_StatusTypeDef HAL_ETH_GetMACFilterConfig(ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig);
-HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig(ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig);
+HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig(ETH_HandleTypeDef *heth, const ETH_MACFilterConfigTypeDef *pFilterConfig);
 HAL_StatusTypeDef HAL_ETH_SetHashTable(ETH_HandleTypeDef *heth, uint32_t *pHashTable);
-HAL_StatusTypeDef HAL_ETH_SetSourceMACAddrMatch(ETH_HandleTypeDef *heth, uint32_t AddrNbr, uint8_t *pMACAddr);
+HAL_StatusTypeDef HAL_ETH_SetSourceMACAddrMatch(const ETH_HandleTypeDef *heth, uint32_t AddrNbr,
+                                                const uint8_t *pMACAddr);
 
 /* MAC Power Down APIs    *****************************************************/
-void              HAL_ETH_EnterPowerDownMode(ETH_HandleTypeDef *heth, ETH_PowerDownConfigTypeDef *pPowerDownConfig);
+void              HAL_ETH_EnterPowerDownMode(ETH_HandleTypeDef *heth,
+                                             const ETH_PowerDownConfigTypeDef *pPowerDownConfig);
 void              HAL_ETH_ExitPowerDownMode(ETH_HandleTypeDef *heth);
 HAL_StatusTypeDef HAL_ETH_SetWakeUpFilter(ETH_HandleTypeDef *heth, uint32_t *pFilter, uint32_t Count);
 
@@ -2112,11 +2118,11 @@
   * @{
   */
 /* Peripheral State functions  **************************************************/
-HAL_ETH_StateTypeDef HAL_ETH_GetState(ETH_HandleTypeDef *heth);
-uint32_t             HAL_ETH_GetError(ETH_HandleTypeDef *heth);
-uint32_t             HAL_ETH_GetDMAError(ETH_HandleTypeDef *heth);
-uint32_t             HAL_ETH_GetMACError(ETH_HandleTypeDef *heth);
-uint32_t             HAL_ETH_GetMACWakeUpSource(ETH_HandleTypeDef *heth);
+HAL_ETH_StateTypeDef HAL_ETH_GetState(const ETH_HandleTypeDef *heth);
+uint32_t             HAL_ETH_GetError(const ETH_HandleTypeDef *heth);
+uint32_t             HAL_ETH_GetDMAError(const ETH_HandleTypeDef *heth);
+uint32_t             HAL_ETH_GetMACError(const ETH_HandleTypeDef *heth);
+uint32_t             HAL_ETH_GetMACWakeUpSource(const ETH_HandleTypeDef *heth);
 /**
   * @}
   */
@@ -2140,5 +2146,3 @@
 #endif
 
 #endif /* STM32F4xx_HAL_ETH_H */
-
-
diff --git a/Inc/stm32f4xx_hal_fmpi2c.h b/Inc/stm32f4xx_hal_fmpi2c.h
index cde141e..60ed94b 100644
--- a/Inc/stm32f4xx_hal_fmpi2c.h
+++ b/Inc/stm32f4xx_hal_fmpi2c.h
@@ -119,8 +119,6 @@
   HAL_FMPI2C_STATE_BUSY_RX_LISTEN    = 0x2AU,   /*!< Address Listen Mode and Data Reception
                                                  process is ongoing                         */
   HAL_FMPI2C_STATE_ABORT             = 0x60U,   /*!< Abort user request ongoing                */
-  HAL_FMPI2C_STATE_TIMEOUT           = 0xA0U,   /*!< Timeout state                             */
-  HAL_FMPI2C_STATE_ERROR             = 0xE0U    /*!< Error                                     */
 
 } HAL_FMPI2C_StateTypeDef;
 
@@ -208,6 +206,7 @@
 
   DMA_HandleTypeDef          *hdmarx;        /*!< FMPI2C Rx DMA handle parameters              */
 
+
   HAL_LockTypeDef            Lock;           /*!< FMPI2C locking object                        */
 
   __IO HAL_FMPI2C_StateTypeDef  State;          /*!< FMPI2C communication state                   */
@@ -280,7 +279,7 @@
 typedef  void (*pFMPI2C_CallbackTypeDef)(FMPI2C_HandleTypeDef *hfmpi2c);
 /*!< pointer to an FMPI2C callback function */
 typedef  void (*pFMPI2C_AddrCallbackTypeDef)(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t TransferDirection,
-                                          uint16_t AddrMatchCode);
+                                             uint16_t AddrMatchCode);
 /*!< pointer to an FMPI2C Address Match callback function */
 
 #endif /* USE_HAL_FMPI2C_REGISTER_CALLBACKS */
@@ -462,10 +461,10 @@
   */
 #if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1)
 #define __HAL_FMPI2C_RESET_HANDLE_STATE(__HANDLE__)                do{                                             \
-                                                                    (__HANDLE__)->State = HAL_FMPI2C_STATE_RESET;  \
-                                                                    (__HANDLE__)->MspInitCallback = NULL;       \
-                                                                    (__HANDLE__)->MspDeInitCallback = NULL;     \
-                                                                  } while(0)
+                                                                       (__HANDLE__)->State = HAL_FMPI2C_STATE_RESET;  \
+                                                                       (__HANDLE__)->MspInitCallback = NULL;       \
+                                                                       (__HANDLE__)->MspDeInitCallback = NULL;     \
+                                                                     } while(0)
 #else
 #define __HAL_FMPI2C_RESET_HANDLE_STATE(__HANDLE__)                ((__HANDLE__)->State = HAL_FMPI2C_STATE_RESET)
 #endif /* USE_HAL_FMPI2C_REGISTER_CALLBACKS */
@@ -517,7 +516,7 @@
   * @retval The new state of __INTERRUPT__ (SET or RESET).
   */
 #define __HAL_FMPI2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)      ((((__HANDLE__)->Instance->CR1 & \
-                                                                   (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
+                                                                      (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
 
 /** @brief  Check whether the specified FMPI2C flag is set or not.
   * @param  __HANDLE__ specifies the FMPI2C Handle.
@@ -544,7 +543,7 @@
   */
 #define FMPI2C_FLAG_MASK  (0x0001FFFFU)
 #define __HAL_FMPI2C_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & \
-                                                    (__FLAG__)) == (__FLAG__)) ? SET : RESET)
+                                                       (__FLAG__)) == (__FLAG__)) ? SET : RESET)
 
 /** @brief  Clear the FMPI2C pending flags which are cleared by writing 1 in a specific bit.
   * @param  __HANDLE__ specifies the FMPI2C Handle.
@@ -564,8 +563,8 @@
   * @retval None
   */
 #define __HAL_FMPI2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == FMPI2C_FLAG_TXE) ? \
-                                                    ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \
-                                                    ((__HANDLE__)->Instance->ICR = (__FLAG__)))
+                                                       ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \
+                                                       ((__HANDLE__)->Instance->ICR = (__FLAG__)))
 
 /** @brief  Enable the specified FMPI2C peripheral.
   * @param  __HANDLE__ specifies the FMPI2C Handle.
@@ -608,7 +607,7 @@
 /* Callbacks Register/UnRegister functions  ***********************************/
 #if (USE_HAL_FMPI2C_REGISTER_CALLBACKS == 1)
 HAL_StatusTypeDef HAL_FMPI2C_RegisterCallback(FMPI2C_HandleTypeDef *hfmpi2c, HAL_FMPI2C_CallbackIDTypeDef CallbackID,
-                                           pFMPI2C_CallbackTypeDef pCallback);
+                                              pFMPI2C_CallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_FMPI2C_UnRegisterCallback(FMPI2C_HandleTypeDef *hfmpi2c, HAL_FMPI2C_CallbackIDTypeDef CallbackID);
 
 HAL_StatusTypeDef HAL_FMPI2C_RegisterAddrCallback(FMPI2C_HandleTypeDef *hfmpi2c, pFMPI2C_AddrCallbackTypeDef pCallback);
@@ -624,64 +623,64 @@
 /* IO operation functions  ****************************************************/
 /******* Blocking mode: Polling */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                          uint16_t Size, uint32_t Timeout);
+                                             uint16_t Size, uint32_t Timeout);
 HAL_StatusTypeDef HAL_FMPI2C_Master_Receive(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                         uint16_t Size, uint32_t Timeout);
+                                            uint16_t Size, uint32_t Timeout);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Transmit(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                         uint32_t Timeout);
+                                            uint32_t Timeout);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Receive(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                        uint32_t Timeout);
+                                           uint32_t Timeout);
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Write(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                    uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
+                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Read(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                   uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
+                                      uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
 HAL_StatusTypeDef HAL_FMPI2C_IsDeviceReady(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint32_t Trials,
-                                        uint32_t Timeout);
+                                           uint32_t Timeout);
 
 /******* Non-Blocking mode: Interrupt */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                             uint16_t Size);
+                                                uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Master_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                            uint16_t Size);
+                                               uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Write_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
+                                          uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Read_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                      uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
+                                         uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
 
 HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                                 uint16_t Size, uint32_t XferOptions);
+                                                    uint16_t Size, uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                                uint16_t Size, uint32_t XferOptions);
+                                                   uint16_t Size, uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                                uint32_t XferOptions);
+                                                   uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                               uint32_t XferOptions);
+                                                  uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPI2C_EnableListen_IT(FMPI2C_HandleTypeDef *hfmpi2c);
 HAL_StatusTypeDef HAL_FMPI2C_DisableListen_IT(FMPI2C_HandleTypeDef *hfmpi2c);
 HAL_StatusTypeDef HAL_FMPI2C_Master_Abort_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress);
 
 /******* Non-Blocking mode: DMA */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                              uint16_t Size);
+                                                 uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Master_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                             uint16_t Size);
+                                                uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Write_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                        uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
+                                           uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Read_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
+                                          uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
 
 HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                                  uint16_t Size, uint32_t XferOptions);
+                                                     uint16_t Size, uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                                 uint16_t Size, uint32_t XferOptions);
+                                                    uint16_t Size, uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                                 uint32_t XferOptions);
+                                                    uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                                uint32_t XferOptions);
+                                                   uint32_t XferOptions);
 /**
   * @}
   */
@@ -737,28 +736,28 @@
   */
 
 #define IS_FMPI2C_ADDRESSING_MODE(MODE)    (((MODE) == FMPI2C_ADDRESSINGMODE_7BIT) || \
-                                         ((MODE) == FMPI2C_ADDRESSINGMODE_10BIT))
+                                            ((MODE) == FMPI2C_ADDRESSINGMODE_10BIT))
 
 #define IS_FMPI2C_DUAL_ADDRESS(ADDRESS)    (((ADDRESS) == FMPI2C_DUALADDRESS_DISABLE) || \
-                                         ((ADDRESS) == FMPI2C_DUALADDRESS_ENABLE))
+                                            ((ADDRESS) == FMPI2C_DUALADDRESS_ENABLE))
 
 #define IS_FMPI2C_OWN_ADDRESS2_MASK(MASK)  (((MASK) == FMPI2C_OA2_NOMASK)  || \
-                                         ((MASK) == FMPI2C_OA2_MASK01) || \
-                                         ((MASK) == FMPI2C_OA2_MASK02) || \
-                                         ((MASK) == FMPI2C_OA2_MASK03) || \
-                                         ((MASK) == FMPI2C_OA2_MASK04) || \
-                                         ((MASK) == FMPI2C_OA2_MASK05) || \
-                                         ((MASK) == FMPI2C_OA2_MASK06) || \
-                                         ((MASK) == FMPI2C_OA2_MASK07))
+                                            ((MASK) == FMPI2C_OA2_MASK01) || \
+                                            ((MASK) == FMPI2C_OA2_MASK02) || \
+                                            ((MASK) == FMPI2C_OA2_MASK03) || \
+                                            ((MASK) == FMPI2C_OA2_MASK04) || \
+                                            ((MASK) == FMPI2C_OA2_MASK05) || \
+                                            ((MASK) == FMPI2C_OA2_MASK06) || \
+                                            ((MASK) == FMPI2C_OA2_MASK07))
 
 #define IS_FMPI2C_GENERAL_CALL(CALL)       (((CALL) == FMPI2C_GENERALCALL_DISABLE) || \
-                                         ((CALL) == FMPI2C_GENERALCALL_ENABLE))
+                                            ((CALL) == FMPI2C_GENERALCALL_ENABLE))
 
 #define IS_FMPI2C_NO_STRETCH(STRETCH)      (((STRETCH) == FMPI2C_NOSTRETCH_DISABLE) || \
-                                         ((STRETCH) == FMPI2C_NOSTRETCH_ENABLE))
+                                            ((STRETCH) == FMPI2C_NOSTRETCH_ENABLE))
 
 #define IS_FMPI2C_MEMADD_SIZE(SIZE)        (((SIZE) == FMPI2C_MEMADD_SIZE_8BIT) || \
-                                         ((SIZE) == FMPI2C_MEMADD_SIZE_16BIT))
+                                            ((SIZE) == FMPI2C_MEMADD_SIZE_16BIT))
 
 #define IS_TRANSFER_MODE(MODE)          (((MODE) == FMPI2C_RELOAD_MODE)   || \
                                          ((MODE) == FMPI2C_AUTOEND_MODE) || \
@@ -770,25 +769,25 @@
                                          ((REQUEST) == FMPI2C_NO_STARTSTOP))
 
 #define IS_FMPI2C_TRANSFER_OPTIONS_REQUEST(REQUEST)  (((REQUEST) == FMPI2C_FIRST_FRAME)          || \
-                                                   ((REQUEST) == FMPI2C_FIRST_AND_NEXT_FRAME) || \
-                                                   ((REQUEST) == FMPI2C_NEXT_FRAME)           || \
-                                                   ((REQUEST) == FMPI2C_FIRST_AND_LAST_FRAME) || \
-                                                   ((REQUEST) == FMPI2C_LAST_FRAME)           || \
-                                                   ((REQUEST) == FMPI2C_LAST_FRAME_NO_STOP)   || \
-                                                   IS_FMPI2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST))
+                                                      ((REQUEST) == FMPI2C_FIRST_AND_NEXT_FRAME) || \
+                                                      ((REQUEST) == FMPI2C_NEXT_FRAME)           || \
+                                                      ((REQUEST) == FMPI2C_FIRST_AND_LAST_FRAME) || \
+                                                      ((REQUEST) == FMPI2C_LAST_FRAME)           || \
+                                                      ((REQUEST) == FMPI2C_LAST_FRAME_NO_STOP)   || \
+                                                      IS_FMPI2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST))
 
 #define IS_FMPI2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == FMPI2C_OTHER_FRAME)     || \
-                                                        ((REQUEST) == FMPI2C_OTHER_AND_LAST_FRAME))
+                                                           ((REQUEST) == FMPI2C_OTHER_AND_LAST_FRAME))
 
 #define FMPI2C_RESET_CR2(__HANDLE__)                 ((__HANDLE__)->Instance->CR2 &= \
-                                                   (uint32_t)~((uint32_t)(FMPI2C_CR2_SADD   | FMPI2C_CR2_HEAD10R | \
-                                                                          FMPI2C_CR2_NBYTES | FMPI2C_CR2_RELOAD  | \
-                                                                          FMPI2C_CR2_RD_WRN)))
+                                                      (uint32_t)~((uint32_t)(FMPI2C_CR2_SADD   | FMPI2C_CR2_HEAD10R | \
+                                                                             FMPI2C_CR2_NBYTES | FMPI2C_CR2_RELOAD  | \
+                                                                             FMPI2C_CR2_RD_WRN)))
 
 #define FMPI2C_GET_ADDR_MATCH(__HANDLE__)            ((uint16_t)(((__HANDLE__)->Instance->ISR & FMPI2C_ISR_ADDCODE) \
-                                                              >> 16U))
+                                                                 >> 16U))
 #define FMPI2C_GET_DIR(__HANDLE__)                   ((uint8_t)(((__HANDLE__)->Instance->ISR & FMPI2C_ISR_DIR) \
-                                                             >> 16U))
+                                                                >> 16U))
 #define FMPI2C_GET_STOP_MODE(__HANDLE__)             ((__HANDLE__)->Instance->CR2 & FMPI2C_CR2_AUTOEND)
 #define FMPI2C_GET_OWN_ADDRESS1(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR1 & FMPI2C_OAR1_OA1))
 #define FMPI2C_GET_OWN_ADDRESS2(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR2 & FMPI2C_OAR2_OA2))
@@ -797,19 +796,19 @@
 #define IS_FMPI2C_OWN_ADDRESS2(ADDRESS2)             ((ADDRESS2) <= (uint16_t)0x00FFU)
 
 #define FMPI2C_MEM_ADD_MSB(__ADDRESS__)              ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & \
-                                                                         (uint16_t)(0xFF00U))) >> 8U)))
+                                                                            (uint16_t)(0xFF00U))) >> 8U)))
 #define FMPI2C_MEM_ADD_LSB(__ADDRESS__)              ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU))))
 
 #define FMPI2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == FMPI2C_ADDRESSINGMODE_7BIT) ? \
-                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (FMPI2C_CR2_SADD)) | \
-                                                                 (FMPI2C_CR2_START) | (FMPI2C_CR2_AUTOEND)) & \
-                                                                (~FMPI2C_CR2_RD_WRN)) : \
-                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (FMPI2C_CR2_SADD)) | \
-                                                                 (FMPI2C_CR2_ADD10) | (FMPI2C_CR2_START)) & \
-                                                                (~FMPI2C_CR2_RD_WRN)))
+                                                        (uint32_t)((((uint32_t)(__ADDRESS__) & (FMPI2C_CR2_SADD)) | \
+                                                                    (FMPI2C_CR2_START) | (FMPI2C_CR2_AUTOEND)) & \
+                                                                   (~FMPI2C_CR2_RD_WRN)) : \
+                                                        (uint32_t)((((uint32_t)(__ADDRESS__) & (FMPI2C_CR2_SADD)) | \
+                                                                    (FMPI2C_CR2_ADD10) | (FMPI2C_CR2_START) | \
+                                                                    (FMPI2C_CR2_AUTOEND)) & (~FMPI2C_CR2_RD_WRN)))
 
 #define FMPI2C_CHECK_FLAG(__ISR__, __FLAG__)         ((((__ISR__) & ((__FLAG__) & FMPI2C_FLAG_MASK)) == \
-                                                    ((__FLAG__) & FMPI2C_FLAG_MASK)) ? SET : RESET)
+                                                       ((__FLAG__) & FMPI2C_FLAG_MASK)) ? SET : RESET)
 #define FMPI2C_CHECK_IT_SOURCE(__CR1__, __IT__)      ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET)
 /**
   * @}
diff --git a/Inc/stm32f4xx_hal_fmpi2c_ex.h b/Inc/stm32f4xx_hal_fmpi2c_ex.h
index 8b90f40..995b5d3 100644
--- a/Inc/stm32f4xx_hal_fmpi2c_ex.h
+++ b/Inc/stm32f4xx_hal_fmpi2c_ex.h
@@ -115,12 +115,12 @@
   * @{
   */
 #define IS_FMPI2C_ANALOG_FILTER(FILTER)    (((FILTER) == FMPI2C_ANALOGFILTER_ENABLE) || \
-                                         ((FILTER) == FMPI2C_ANALOGFILTER_DISABLE))
+                                            ((FILTER) == FMPI2C_ANALOGFILTER_DISABLE))
 
 #define IS_FMPI2C_DIGITAL_FILTER(FILTER)   ((FILTER) <= 0x0000000FU)
 
 #define IS_FMPI2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & (FMPI2C_FASTMODEPLUS_SCL)) == FMPI2C_FASTMODEPLUS_SCL) || \
-                                         (((__CONFIG__) & (FMPI2C_FASTMODEPLUS_SDA)) == FMPI2C_FASTMODEPLUS_SDA))
+                                            (((__CONFIG__) & (FMPI2C_FASTMODEPLUS_SDA)) == FMPI2C_FASTMODEPLUS_SDA))
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_fmpsmbus.h b/Inc/stm32f4xx_hal_fmpsmbus.h
index 5f8f4fb..84c5400 100644
--- a/Inc/stm32f4xx_hal_fmpsmbus.h
+++ b/Inc/stm32f4xx_hal_fmpsmbus.h
@@ -101,8 +101,6 @@
 #define HAL_FMPSMBUS_STATE_MASTER_BUSY_RX  (0x00000022U)  /*!< Master Data Reception process is ongoing      */
 #define HAL_FMPSMBUS_STATE_SLAVE_BUSY_TX   (0x00000032U)  /*!< Slave Data Transmission process is ongoing    */
 #define HAL_FMPSMBUS_STATE_SLAVE_BUSY_RX   (0x00000042U)  /*!< Slave Data Reception process is ongoing       */
-#define HAL_FMPSMBUS_STATE_TIMEOUT         (0x00000003U)  /*!< Timeout state                                 */
-#define HAL_FMPSMBUS_STATE_ERROR           (0x00000004U)  /*!< Reception process is ongoing                  */
 #define HAL_FMPSMBUS_STATE_LISTEN          (0x00000008U)  /*!< Address Listen Mode is ongoing                */
 /**
   * @}
@@ -208,7 +206,7 @@
 typedef  void (*pFMPSMBUS_CallbackTypeDef)(FMPSMBUS_HandleTypeDef *hfmpsmbus);
 /*!< pointer to an FMPSMBUS callback function */
 typedef  void (*pFMPSMBUS_AddrCallbackTypeDef)(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint8_t TransferDirection,
-                                            uint16_t AddrMatchCode);
+                                               uint16_t AddrMatchCode);
 /*!< pointer to an FMPSMBUS Address Match callback function */
 
 #endif /* USE_HAL_FMPSMBUS_REGISTER_CALLBACKS */
@@ -372,9 +370,9 @@
 #define FMPSMBUS_IT_RXI                            FMPI2C_CR1_RXIE
 #define FMPSMBUS_IT_TXI                            FMPI2C_CR1_TXIE
 #define FMPSMBUS_IT_TX                             (FMPSMBUS_IT_ERRI | FMPSMBUS_IT_TCI | FMPSMBUS_IT_STOPI | \
-                                                 FMPSMBUS_IT_NACKI | FMPSMBUS_IT_TXI)
+                                                    FMPSMBUS_IT_NACKI | FMPSMBUS_IT_TXI)
 #define FMPSMBUS_IT_RX                             (FMPSMBUS_IT_ERRI | FMPSMBUS_IT_TCI | FMPSMBUS_IT_NACKI | \
-                                                 FMPSMBUS_IT_RXI)
+                                                    FMPSMBUS_IT_RXI)
 #define FMPSMBUS_IT_ALERT                          (FMPSMBUS_IT_ERRI)
 #define FMPSMBUS_IT_ADDR                           (FMPSMBUS_IT_ADDRI | FMPSMBUS_IT_STOPI | FMPSMBUS_IT_NACKI)
 /**
@@ -423,10 +421,10 @@
   */
 #if (USE_HAL_FMPSMBUS_REGISTER_CALLBACKS == 1)
 #define __HAL_FMPSMBUS_RESET_HANDLE_STATE(__HANDLE__)           do{                                               \
-                                                                 (__HANDLE__)->State = HAL_FMPSMBUS_STATE_RESET;  \
-                                                                 (__HANDLE__)->MspInitCallback = NULL;            \
-                                                                 (__HANDLE__)->MspDeInitCallback = NULL;          \
-                                                               } while(0)
+                                                                    (__HANDLE__)->State = HAL_FMPSMBUS_STATE_RESET;  \
+                                                                    (__HANDLE__)->MspInitCallback = NULL;            \
+                                                                    (__HANDLE__)->MspDeInitCallback = NULL;          \
+                                                                  } while(0)
 #else
 #define __HAL_FMPSMBUS_RESET_HANDLE_STATE(__HANDLE__)         ((__HANDLE__)->State = HAL_FMPSMBUS_STATE_RESET)
 #endif /* USE_HAL_FMPSMBUS_REGISTER_CALLBACKS */
@@ -526,8 +524,8 @@
   * @retval None
   */
 #define __HAL_FMPSMBUS_CLEAR_FLAG(__HANDLE__, __FLAG__)  (((__FLAG__) == FMPSMBUS_FLAG_TXE) ? \
-                                                       ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \
-                                                       ((__HANDLE__)->Instance->ICR = (__FLAG__)))
+                                                          ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \
+                                                          ((__HANDLE__)->Instance->ICR = (__FLAG__)))
 
 /** @brief  Enable the specified FMPSMBUS peripheral.
   * @param  __HANDLE__ specifies the FMPSMBUS Handle.
@@ -560,84 +558,84 @@
   */
 
 #define IS_FMPSMBUS_ANALOG_FILTER(FILTER)                  (((FILTER) == FMPSMBUS_ANALOGFILTER_ENABLE) || \
-                                                         ((FILTER) == FMPSMBUS_ANALOGFILTER_DISABLE))
+                                                            ((FILTER) == FMPSMBUS_ANALOGFILTER_DISABLE))
 
 #define IS_FMPSMBUS_DIGITAL_FILTER(FILTER)                 ((FILTER) <= 0x0000000FU)
 
 #define IS_FMPSMBUS_ADDRESSING_MODE(MODE)                  (((MODE) == FMPSMBUS_ADDRESSINGMODE_7BIT)  || \
-                                                         ((MODE) == FMPSMBUS_ADDRESSINGMODE_10BIT))
+                                                            ((MODE) == FMPSMBUS_ADDRESSINGMODE_10BIT))
 
 #define IS_FMPSMBUS_DUAL_ADDRESS(ADDRESS)                  (((ADDRESS) == FMPSMBUS_DUALADDRESS_DISABLE) || \
-                                                         ((ADDRESS) == FMPSMBUS_DUALADDRESS_ENABLE))
+                                                            ((ADDRESS) == FMPSMBUS_DUALADDRESS_ENABLE))
 
 #define IS_FMPSMBUS_OWN_ADDRESS2_MASK(MASK)                (((MASK) == FMPSMBUS_OA2_NOMASK)    || \
-                                                         ((MASK) == FMPSMBUS_OA2_MASK01)    || \
-                                                         ((MASK) == FMPSMBUS_OA2_MASK02)    || \
-                                                         ((MASK) == FMPSMBUS_OA2_MASK03)    || \
-                                                         ((MASK) == FMPSMBUS_OA2_MASK04)    || \
-                                                         ((MASK) == FMPSMBUS_OA2_MASK05)    || \
-                                                         ((MASK) == FMPSMBUS_OA2_MASK06)    || \
-                                                         ((MASK) == FMPSMBUS_OA2_MASK07))
+                                                            ((MASK) == FMPSMBUS_OA2_MASK01)    || \
+                                                            ((MASK) == FMPSMBUS_OA2_MASK02)    || \
+                                                            ((MASK) == FMPSMBUS_OA2_MASK03)    || \
+                                                            ((MASK) == FMPSMBUS_OA2_MASK04)    || \
+                                                            ((MASK) == FMPSMBUS_OA2_MASK05)    || \
+                                                            ((MASK) == FMPSMBUS_OA2_MASK06)    || \
+                                                            ((MASK) == FMPSMBUS_OA2_MASK07))
 
 #define IS_FMPSMBUS_GENERAL_CALL(CALL)                     (((CALL) == FMPSMBUS_GENERALCALL_DISABLE) || \
-                                                         ((CALL) == FMPSMBUS_GENERALCALL_ENABLE))
+                                                            ((CALL) == FMPSMBUS_GENERALCALL_ENABLE))
 
 #define IS_FMPSMBUS_NO_STRETCH(STRETCH)                    (((STRETCH) == FMPSMBUS_NOSTRETCH_DISABLE) || \
-                                                         ((STRETCH) == FMPSMBUS_NOSTRETCH_ENABLE))
+                                                            ((STRETCH) == FMPSMBUS_NOSTRETCH_ENABLE))
 
 #define IS_FMPSMBUS_PEC(PEC)                               (((PEC) == FMPSMBUS_PEC_DISABLE) || \
-                                                         ((PEC) == FMPSMBUS_PEC_ENABLE))
+                                                            ((PEC) == FMPSMBUS_PEC_ENABLE))
 
 #define IS_FMPSMBUS_PERIPHERAL_MODE(MODE)                  (((MODE) == FMPSMBUS_PERIPHERAL_MODE_FMPSMBUS_HOST)   || \
-                                                         ((MODE) == FMPSMBUS_PERIPHERAL_MODE_FMPSMBUS_SLAVE)  || \
-                                                         ((MODE) == FMPSMBUS_PERIPHERAL_MODE_FMPSMBUS_SLAVE_ARP))
+                                                            ((MODE) == FMPSMBUS_PERIPHERAL_MODE_FMPSMBUS_SLAVE)  || \
+                                                            ((MODE) == FMPSMBUS_PERIPHERAL_MODE_FMPSMBUS_SLAVE_ARP))
 
 #define IS_FMPSMBUS_TRANSFER_MODE(MODE)                 (((MODE) == FMPSMBUS_RELOAD_MODE)                          || \
-                                                      ((MODE) == FMPSMBUS_AUTOEND_MODE)                         || \
-                                                      ((MODE) == FMPSMBUS_SOFTEND_MODE)                         || \
-                                                      ((MODE) == FMPSMBUS_SENDPEC_MODE)                         || \
-                                                      ((MODE) == (FMPSMBUS_RELOAD_MODE | FMPSMBUS_SENDPEC_MODE))   || \
-                                                      ((MODE) == (FMPSMBUS_AUTOEND_MODE | FMPSMBUS_SENDPEC_MODE))  || \
-                                                      ((MODE) == (FMPSMBUS_AUTOEND_MODE | FMPSMBUS_RELOAD_MODE))   || \
-                                                      ((MODE) == (FMPSMBUS_AUTOEND_MODE | FMPSMBUS_SENDPEC_MODE | \
-                                                                  FMPSMBUS_RELOAD_MODE )))
+                                                         ((MODE) == FMPSMBUS_AUTOEND_MODE)                         || \
+                                                         ((MODE) == FMPSMBUS_SOFTEND_MODE)                         || \
+                                                         ((MODE) == FMPSMBUS_SENDPEC_MODE)                         || \
+                                                         ((MODE) == (FMPSMBUS_RELOAD_MODE | FMPSMBUS_SENDPEC_MODE))   || \
+                                                         ((MODE) == (FMPSMBUS_AUTOEND_MODE | FMPSMBUS_SENDPEC_MODE))  || \
+                                                         ((MODE) == (FMPSMBUS_AUTOEND_MODE | FMPSMBUS_RELOAD_MODE))   || \
+                                                         ((MODE) == (FMPSMBUS_AUTOEND_MODE | FMPSMBUS_SENDPEC_MODE | \
+                                                                     FMPSMBUS_RELOAD_MODE )))
 
 
 #define IS_FMPSMBUS_TRANSFER_REQUEST(REQUEST)              (((REQUEST) == FMPSMBUS_GENERATE_STOP)              || \
-                                                         ((REQUEST) == FMPSMBUS_GENERATE_START_READ)        || \
-                                                         ((REQUEST) == FMPSMBUS_GENERATE_START_WRITE)       || \
-                                                         ((REQUEST) == FMPSMBUS_NO_STARTSTOP))
+                                                            ((REQUEST) == FMPSMBUS_GENERATE_START_READ)        || \
+                                                            ((REQUEST) == FMPSMBUS_GENERATE_START_WRITE)       || \
+                                                            ((REQUEST) == FMPSMBUS_NO_STARTSTOP))
 
 
 #define IS_FMPSMBUS_TRANSFER_OPTIONS_REQUEST(REQUEST)   (IS_FMPSMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST)       || \
-                                                      ((REQUEST) == FMPSMBUS_FIRST_FRAME)                       || \
-                                                      ((REQUEST) == FMPSMBUS_NEXT_FRAME)                        || \
-                                                      ((REQUEST) == FMPSMBUS_FIRST_AND_LAST_FRAME_NO_PEC)       || \
-                                                      ((REQUEST) == FMPSMBUS_LAST_FRAME_NO_PEC)                 || \
-                                                      ((REQUEST) == FMPSMBUS_FIRST_FRAME_WITH_PEC)              || \
-                                                      ((REQUEST) == FMPSMBUS_FIRST_AND_LAST_FRAME_WITH_PEC)     || \
-                                                      ((REQUEST) == FMPSMBUS_LAST_FRAME_WITH_PEC))
+                                                         ((REQUEST) == FMPSMBUS_FIRST_FRAME)                       || \
+                                                         ((REQUEST) == FMPSMBUS_NEXT_FRAME)                        || \
+                                                         ((REQUEST) == FMPSMBUS_FIRST_AND_LAST_FRAME_NO_PEC)       || \
+                                                         ((REQUEST) == FMPSMBUS_LAST_FRAME_NO_PEC)                 || \
+                                                         ((REQUEST) == FMPSMBUS_FIRST_FRAME_WITH_PEC)              || \
+                                                         ((REQUEST) == FMPSMBUS_FIRST_AND_LAST_FRAME_WITH_PEC)     || \
+                                                         ((REQUEST) == FMPSMBUS_LAST_FRAME_WITH_PEC))
 
 #define IS_FMPSMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == FMPSMBUS_OTHER_FRAME_NO_PEC)             || \
-                                                          ((REQUEST) == FMPSMBUS_OTHER_AND_LAST_FRAME_NO_PEC)    || \
-                                                          ((REQUEST) == FMPSMBUS_OTHER_FRAME_WITH_PEC)           || \
-                                                          ((REQUEST) == FMPSMBUS_OTHER_AND_LAST_FRAME_WITH_PEC))
+                                                             ((REQUEST) == FMPSMBUS_OTHER_AND_LAST_FRAME_NO_PEC)    || \
+                                                             ((REQUEST) == FMPSMBUS_OTHER_FRAME_WITH_PEC)           || \
+                                                             ((REQUEST) == FMPSMBUS_OTHER_AND_LAST_FRAME_WITH_PEC))
 
 #define FMPSMBUS_RESET_CR1(__HANDLE__)                    ((__HANDLE__)->Instance->CR1 &= \
-                                                        (uint32_t)~((uint32_t)(FMPI2C_CR1_SMBHEN | FMPI2C_CR1_SMBDEN | \
-                                                                               FMPI2C_CR1_PECEN)))
+                                                           (uint32_t)~((uint32_t)(FMPI2C_CR1_SMBHEN | FMPI2C_CR1_SMBDEN | \
+                                                                       FMPI2C_CR1_PECEN)))
 #define FMPSMBUS_RESET_CR2(__HANDLE__)                    ((__HANDLE__)->Instance->CR2 &= \
-                                                        (uint32_t)~((uint32_t)(FMPI2C_CR2_SADD | FMPI2C_CR2_HEAD10R | \
-                                                                               FMPI2C_CR2_NBYTES | FMPI2C_CR2_RELOAD | \
-                                                                               FMPI2C_CR2_RD_WRN)))
+                                                           (uint32_t)~((uint32_t)(FMPI2C_CR2_SADD | FMPI2C_CR2_HEAD10R | \
+                                                                       FMPI2C_CR2_NBYTES | FMPI2C_CR2_RELOAD | \
+                                                                       FMPI2C_CR2_RD_WRN)))
 
 #define FMPSMBUS_GENERATE_START(__ADDMODE__,__ADDRESS__)     (((__ADDMODE__) == FMPSMBUS_ADDRESSINGMODE_7BIT) ? \
-                                                           (uint32_t)((((uint32_t)(__ADDRESS__) & (FMPI2C_CR2_SADD)) | \
-                                                                       (FMPI2C_CR2_START) | (FMPI2C_CR2_AUTOEND)) & \
-                                                                      (~FMPI2C_CR2_RD_WRN)) : \
-                                                           (uint32_t)((((uint32_t)(__ADDRESS__) & \
-                                                                        (FMPI2C_CR2_SADD)) | (FMPI2C_CR2_ADD10) | \
-                                                                       (FMPI2C_CR2_START)) & (~FMPI2C_CR2_RD_WRN)))
+                                                              (uint32_t)((((uint32_t)(__ADDRESS__) & (FMPI2C_CR2_SADD)) | \
+                                                                          (FMPI2C_CR2_START) | (FMPI2C_CR2_AUTOEND)) & \
+                                                                         (~FMPI2C_CR2_RD_WRN)) : \
+                                                              (uint32_t)((((uint32_t)(__ADDRESS__) & \
+                                                                           (FMPI2C_CR2_SADD)) | (FMPI2C_CR2_ADD10) | \
+                                                                          (FMPI2C_CR2_START)) & (~FMPI2C_CR2_RD_WRN)))
 
 #define FMPSMBUS_GET_ADDR_MATCH(__HANDLE__)                  (((__HANDLE__)->Instance->ISR & FMPI2C_ISR_ADDCODE) >> 17U)
 #define FMPSMBUS_GET_DIR(__HANDLE__)                         (((__HANDLE__)->Instance->ISR & FMPI2C_ISR_DIR) >> 16U)
@@ -646,7 +644,7 @@
 #define FMPSMBUS_GET_ALERT_ENABLED(__HANDLE__)                ((__HANDLE__)->Instance->CR1 & FMPI2C_CR1_ALERTEN)
 
 #define FMPSMBUS_CHECK_FLAG(__ISR__, __FLAG__)             ((((__ISR__) & ((__FLAG__) & FMPSMBUS_FLAG_MASK)) == \
-                                                          ((__FLAG__) & FMPSMBUS_FLAG_MASK)) ? SET : RESET)
+                                                             ((__FLAG__) & FMPSMBUS_FLAG_MASK)) ? SET : RESET)
 #define FMPSMBUS_CHECK_IT_SOURCE(__CR1__, __IT__)          ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET)
 
 #define IS_FMPSMBUS_OWN_ADDRESS1(ADDRESS1)                         ((ADDRESS1) <= 0x000003FFU)
@@ -679,13 +677,13 @@
 /* Callbacks Register/UnRegister functions  ***********************************/
 #if (USE_HAL_FMPSMBUS_REGISTER_CALLBACKS == 1)
 HAL_StatusTypeDef HAL_FMPSMBUS_RegisterCallback(FMPSMBUS_HandleTypeDef *hfmpsmbus,
-                                             HAL_FMPSMBUS_CallbackIDTypeDef CallbackID,
-                                             pFMPSMBUS_CallbackTypeDef pCallback);
+                                                HAL_FMPSMBUS_CallbackIDTypeDef CallbackID,
+                                                pFMPSMBUS_CallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_FMPSMBUS_UnRegisterCallback(FMPSMBUS_HandleTypeDef *hfmpsmbus,
-                                               HAL_FMPSMBUS_CallbackIDTypeDef CallbackID);
+                                                  HAL_FMPSMBUS_CallbackIDTypeDef CallbackID);
 
 HAL_StatusTypeDef HAL_FMPSMBUS_RegisterAddrCallback(FMPSMBUS_HandleTypeDef *hfmpsmbus,
-                                                 pFMPSMBUS_AddrCallbackTypeDef pCallback);
+                                                    pFMPSMBUS_AddrCallbackTypeDef pCallback);
 HAL_StatusTypeDef HAL_FMPSMBUS_UnRegisterAddrCallback(FMPSMBUS_HandleTypeDef *hfmpsmbus);
 #endif /* USE_HAL_FMPSMBUS_REGISTER_CALLBACKS */
 /**
@@ -702,7 +700,7 @@
   */
 /******* Blocking mode: Polling */
 HAL_StatusTypeDef HAL_FMPSMBUS_IsDeviceReady(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint16_t DevAddress, uint32_t Trials,
-                                          uint32_t Timeout);
+                                             uint32_t Timeout);
 /**
   * @}
   */
@@ -712,14 +710,14 @@
   */
 /******* Non-Blocking mode: Interrupt */
 HAL_StatusTypeDef HAL_FMPSMBUS_Master_Transmit_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint16_t DevAddress,
-                                               uint8_t *pData, uint16_t Size, uint32_t XferOptions);
+                                                  uint8_t *pData, uint16_t Size, uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPSMBUS_Master_Receive_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint16_t DevAddress,
-                                              uint8_t *pData, uint16_t Size, uint32_t XferOptions);
+                                                 uint8_t *pData, uint16_t Size, uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPSMBUS_Master_Abort_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint16_t DevAddress);
 HAL_StatusTypeDef HAL_FMPSMBUS_Slave_Transmit_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint8_t *pData, uint16_t Size,
-                                              uint32_t XferOptions);
+                                                 uint32_t XferOptions);
 HAL_StatusTypeDef HAL_FMPSMBUS_Slave_Receive_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint8_t *pData, uint16_t Size,
-                                             uint32_t XferOptions);
+                                                uint32_t XferOptions);
 
 HAL_StatusTypeDef HAL_FMPSMBUS_EnableAlert_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus);
 HAL_StatusTypeDef HAL_FMPSMBUS_DisableAlert_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus);
diff --git a/Inc/stm32f4xx_hal_fmpsmbus_ex.h b/Inc/stm32f4xx_hal_fmpsmbus_ex.h
index 001dc54..e83a598 100644
--- a/Inc/stm32f4xx_hal_fmpsmbus_ex.h
+++ b/Inc/stm32f4xx_hal_fmpsmbus_ex.h
@@ -104,9 +104,9 @@
   * @{
   */
 #define IS_FMPSMBUS_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & (FMPSMBUS_FASTMODEPLUS_SCL)) == \
-                                            FMPSMBUS_FASTMODEPLUS_SCL) || \
-                                           (((__CONFIG__) & (FMPSMBUS_FASTMODEPLUS_SDA)) == \
-                                            FMPSMBUS_FASTMODEPLUS_SDA))
+                                               FMPSMBUS_FASTMODEPLUS_SCL) || \
+                                              (((__CONFIG__) & (FMPSMBUS_FASTMODEPLUS_SDA)) == \
+                                               FMPSMBUS_FASTMODEPLUS_SDA))
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_hcd.h b/Inc/stm32f4xx_hal_hcd.h
index 9cd1486..a6fee35 100644
--- a/Inc/stm32f4xx_hal_hcd.h
+++ b/Inc/stm32f4xx_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)
 
@@ -167,6 +171,9 @@
 #define __HAL_HCD_UNMASK_HALT_HC_INT(chnum)           (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM)
 #define __HAL_HCD_MASK_ACK_HC_INT(chnum)              (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_ACKM)
 #define __HAL_HCD_UNMASK_ACK_HC_INT(chnum)            (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_ACKM)
+#define __HAL_HCD_SET_HC_CSPLT(chnum)                 (USBx_HC(chnum)->HCSPLT   |= USB_OTG_HCSPLT_COMPLSPLT)
+#define __HAL_HCD_CLEAR_HC_CSPLT(chnum)               (USBx_HC(chnum)->HCSPLT   &= ~USB_OTG_HCSPLT_COMPLSPLT)
+#define __HAL_HCD_CLEAR_HC_SSPLT(chnum)               (USBx_HC(chnum)->HCSPLT   &= ~USB_OTG_HCSPLT_SPLITEN)
 /**
   * @}
   */
@@ -248,6 +255,11 @@
                                            uint8_t token, uint8_t *pbuff,
                                            uint16_t length, uint8_t do_ping);
 
+HAL_StatusTypeDef HAL_HCD_HC_SetHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num,
+                                        uint8_t addr, uint8_t PortNbr);
+
+HAL_StatusTypeDef HAL_HCD_HC_ClearHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num);
+
 /* Non-Blocking mode: Interrupt */
 void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd);
 void HAL_HCD_WKUP_IRQHandler(HCD_HandleTypeDef *hhcd);
@@ -277,16 +289,13 @@
 /** @addtogroup HCD_Exported_Functions_Group4 Peripheral State functions
   * @{
   */
-HCD_StateTypeDef        HAL_HCD_GetState(HCD_HandleTypeDef *hhcd);
-HCD_URBStateTypeDef     HAL_HCD_HC_GetURBState(HCD_HandleTypeDef *hhcd, uint8_t chnum);
-HCD_HCStateTypeDef      HAL_HCD_HC_GetState(HCD_HandleTypeDef *hhcd, uint8_t chnum);
-uint32_t                HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef *hhcd, uint8_t chnum);
+HCD_StateTypeDef        HAL_HCD_GetState(HCD_HandleTypeDef const *hhcd);
+HCD_URBStateTypeDef     HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum);
+HCD_HCStateTypeDef      HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum);
+uint32_t                HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum);
 uint32_t                HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd);
 uint32_t                HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd);
 
-/**
-  * @}
-  */
 
 /**
   * @}
@@ -307,6 +316,9 @@
 /**
   * @}
   */
+/**
+  * @}
+  */
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
 #ifdef __cplusplus
diff --git a/Inc/stm32f4xx_hal_lptim.h b/Inc/stm32f4xx_hal_lptim.h
index dd4b2ca..fba2d52 100644
--- a/Inc/stm32f4xx_hal_lptim.h
+++ b/Inc/stm32f4xx_hal_lptim.h
@@ -727,7 +727,7 @@
   * @{
   */
 /* Peripheral State functions  ************************************************/
-HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(LPTIM_HandleTypeDef *hlptim);
+HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(const LPTIM_HandleTypeDef *hlptim);
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_ltdc.h b/Inc/stm32f4xx_hal_ltdc.h
index ab951d3..78349eb 100644
--- a/Inc/stm32f4xx_hal_ltdc.h
+++ b/Inc/stm32f4xx_hal_ltdc.h
@@ -338,14 +338,14 @@
 /** @defgroup LTDC_Pixelformat LTDC Pixel format
   * @{
   */
-#define LTDC_PIXEL_FORMAT_ARGB8888        0x00000000U   /*!< ARGB8888 LTDC pixel format */
-#define LTDC_PIXEL_FORMAT_RGB888          0x00000001U   /*!< RGB888 LTDC pixel format   */
-#define LTDC_PIXEL_FORMAT_RGB565          0x00000002U   /*!< RGB565 LTDC pixel format   */
-#define LTDC_PIXEL_FORMAT_ARGB1555        0x00000003U   /*!< ARGB1555 LTDC pixel format */
-#define LTDC_PIXEL_FORMAT_ARGB4444        0x00000004U   /*!< ARGB4444 LTDC pixel format */
-#define LTDC_PIXEL_FORMAT_L8              0x00000005U   /*!< L8 LTDC pixel format       */
-#define LTDC_PIXEL_FORMAT_AL44            0x00000006U   /*!< AL44 LTDC pixel format     */
-#define LTDC_PIXEL_FORMAT_AL88            0x00000007U   /*!< AL88 LTDC pixel format     */
+#define LTDC_PIXEL_FORMAT_ARGB8888        0x00000000U   /*!< ARGB8888 LTDC pixel format             */
+#define LTDC_PIXEL_FORMAT_RGB888          0x00000001U   /*!< RGB888 LTDC pixel format               */
+#define LTDC_PIXEL_FORMAT_RGB565          0x00000002U   /*!< RGB565 LTDC pixel format               */
+#define LTDC_PIXEL_FORMAT_ARGB1555        0x00000003U   /*!< ARGB1555 LTDC pixel format             */
+#define LTDC_PIXEL_FORMAT_ARGB4444        0x00000004U   /*!< ARGB4444 LTDC pixel format             */
+#define LTDC_PIXEL_FORMAT_L8              0x00000005U   /*!< L8 LTDC pixel format                   */
+#define LTDC_PIXEL_FORMAT_AL44            0x00000006U   /*!< AL44 LTDC pixel format                 */
+#define LTDC_PIXEL_FORMAT_AL88            0x00000007U   /*!< AL88 LTDC pixel format                 */
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_nand.h b/Inc/stm32f4xx_hal_nand.h
index 26f6502..9fc12a0 100644
--- a/Inc/stm32f4xx_hal_nand.h
+++ b/Inc/stm32f4xx_hal_nand.h
@@ -109,9 +109,8 @@
   FunctionalState ExtraCommandEnable;    /*!< NAND extra command needed for Page reading mode. This
                                               parameter is mandatory for some NAND parts after the read
                                               command (NAND_CMD_AREA_TRUE1) and before DATA reading sequence.
-                                              Example: Toshiba THTH58BYG3S0HBAI6.
                                               This parameter could be ENABLE or DISABLE
-                                              Please check the Read Mode sequnece in the NAND device datasheet */
+                                              Please check the Read Mode sequence in the NAND device datasheet */
 } NAND_DeviceConfigTypeDef;
 
 /**
@@ -131,7 +130,7 @@
 
   __IO HAL_NAND_StateTypeDef     State;      /*!< NAND device access state                              */
 
-  NAND_DeviceConfigTypeDef       Config;     /*!< NAND phusical characteristic information structure    */
+  NAND_DeviceConfigTypeDef       Config;     /*!< NAND physical characteristic information structure    */
 
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
   void (* MspInitCallback)(struct __NAND_HandleTypeDef *hnand);               /*!< NAND Msp Init callback              */
@@ -219,27 +218,27 @@
 /* IO operation functions  ****************************************************/
 HAL_StatusTypeDef  HAL_NAND_Reset(NAND_HandleTypeDef *hnand);
 
-HAL_StatusTypeDef  HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
-                                         uint32_t NumPageToRead);
-HAL_StatusTypeDef  HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
-                                          uint32_t NumPageToWrite);
-HAL_StatusTypeDef  HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+HAL_StatusTypeDef  HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                         uint8_t *pBuffer, uint32_t NumPageToRead);
+HAL_StatusTypeDef  HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                          const uint8_t *pBuffer, uint32_t NumPageToWrite);
+HAL_StatusTypeDef  HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
                                               uint8_t *pBuffer, uint32_t NumSpareAreaToRead);
-HAL_StatusTypeDef  HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
-                                               uint8_t *pBuffer, uint32_t NumSpareAreaTowrite);
+HAL_StatusTypeDef  HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                               const uint8_t *pBuffer, uint32_t NumSpareAreaTowrite);
 
-HAL_StatusTypeDef  HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer,
-                                          uint32_t NumPageToRead);
-HAL_StatusTypeDef  HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer,
-                                           uint32_t NumPageToWrite);
-HAL_StatusTypeDef  HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+HAL_StatusTypeDef  HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                          uint16_t *pBuffer, uint32_t NumPageToRead);
+HAL_StatusTypeDef  HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                           const uint16_t *pBuffer, uint32_t NumPageToWrite);
+HAL_StatusTypeDef  HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
                                                uint16_t *pBuffer, uint32_t NumSpareAreaToRead);
-HAL_StatusTypeDef  HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
-                                                uint16_t *pBuffer, uint32_t NumSpareAreaTowrite);
+HAL_StatusTypeDef  HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                                const uint16_t *pBuffer, uint32_t NumSpareAreaTowrite);
 
-HAL_StatusTypeDef  HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress);
+HAL_StatusTypeDef  HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress);
 
-uint32_t           HAL_NAND_Address_Inc(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress);
+uint32_t           HAL_NAND_Address_Inc(const NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress);
 
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
 /* NAND callback registering/unregistering */
@@ -269,8 +268,8 @@
   * @{
   */
 /* NAND State functions *******************************************************/
-HAL_NAND_StateTypeDef HAL_NAND_GetState(NAND_HandleTypeDef *hnand);
-uint32_t              HAL_NAND_Read_Status(NAND_HandleTypeDef *hnand);
+HAL_NAND_StateTypeDef HAL_NAND_GetState(const NAND_HandleTypeDef *hnand);
+uint32_t              HAL_NAND_Read_Status(const NAND_HandleTypeDef *hnand);
 /**
   * @}
   */
@@ -290,7 +289,7 @@
 #define NAND_DEVICE2               0x80000000UL
 #else
 #define NAND_DEVICE                0x80000000UL
-#endif
+#endif /* NAND_SECOND_BANK */
 #define NAND_WRITE_TIMEOUT         0x01000000UL
 
 #define CMD_AREA                   (1UL<<16U)  /* A16 = CLE high */
diff --git a/Inc/stm32f4xx_hal_nor.h b/Inc/stm32f4xx_hal_nor.h
index cc7f1b5..427c2cc 100644
--- a/Inc/stm32f4xx_hal_nor.h
+++ b/Inc/stm32f4xx_hal_nor.h
@@ -238,7 +238,7 @@
   */
 
 /* NOR State functions ********************************************************/
-HAL_NOR_StateTypeDef  HAL_NOR_GetState(NOR_HandleTypeDef *hnor);
+HAL_NOR_StateTypeDef  HAL_NOR_GetState(const NOR_HandleTypeDef *hnor);
 HAL_NOR_StatusTypeDef HAL_NOR_GetStatus(NOR_HandleTypeDef *hnor, uint32_t Address, uint32_t Timeout);
 /**
   * @}
diff --git a/Inc/stm32f4xx_hal_pcd.h b/Inc/stm32f4xx_hal_pcd.h
index 92488b2..de1ec24 100644
--- a/Inc/stm32f4xx_hal_pcd.h
+++ b/Inc/stm32f4xx_hal_pcd.h
@@ -190,14 +190,14 @@
   *  @brief macros to handle interrupts and specific clock configurations
   * @{
   */
-#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
 #define __HAL_PCD_ENABLE(__HANDLE__)                       (void)USB_EnableGlobalInt ((__HANDLE__)->Instance)
 #define __HAL_PCD_DISABLE(__HANDLE__)                      (void)USB_DisableGlobalInt ((__HANDLE__)->Instance)
 
 #define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) \
   ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__))
 
-#define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)    (((__HANDLE__)->Instance->GINTSTS) &=  (__INTERRUPT__))
+#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
+#define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)    (((__HANDLE__)->Instance->GINTSTS) &= (__INTERRUPT__))
 #define __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__)         (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U)
 
 #define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__) \
@@ -368,9 +368,11 @@
 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);
+#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
+HAL_StatusTypeDef HAL_PCD_SetTestMode(const PCD_HandleTypeDef *hpcd, uint8_t testmode);
+#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
-uint32_t          HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr);
+uint32_t          HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr);
 /**
   * @}
   */
@@ -379,7 +381,7 @@
 /** @addtogroup PCD_Exported_Functions_Group4 Peripheral State functions
   * @{
   */
-PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd);
+PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef const *hpcd);
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_pcd_ex.h b/Inc/stm32f4xx_hal_pcd_ex.h
index 72ded2b..0c6f2e0 100644
--- a/Inc/stm32f4xx_hal_pcd_ex.h
+++ b/Inc/stm32f4xx_hal_pcd_ex.h
@@ -51,15 +51,21 @@
 HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size);
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
-#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) \
+ || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) \
+ || defined(STM32F423xx)
 HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd);
 HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd);
-#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
-#if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||
+          defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||
+          defined(STM32F423xx) */
+#if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) \
+ || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
 HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd);
 HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd);
 void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd);
-#endif /* defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
+#endif /* defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||
+          defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
 void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg);
 void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg);
 
diff --git a/Inc/stm32f4xx_hal_pwr.h b/Inc/stm32f4xx_hal_pwr.h
index d97f255..a7273d5 100644
--- a/Inc/stm32f4xx_hal_pwr.h
+++ b/Inc/stm32f4xx_hal_pwr.h
@@ -114,6 +114,8 @@
   */
 #define PWR_SLEEPENTRY_WFI              ((uint8_t)0x01)
 #define PWR_SLEEPENTRY_WFE              ((uint8_t)0x02)
+#define PWR_SLEEPENTRY_WFE_NO_EVT_CLEAR ((uint8_t)0x03)
+
 /**
   * @}
   */
@@ -123,6 +125,7 @@
   */
 #define PWR_STOPENTRY_WFI               ((uint8_t)0x01)
 #define PWR_STOPENTRY_WFE               ((uint8_t)0x02)
+#define PWR_STOPENTRY_WFE_NO_EVT_CLEAR  ((uint8_t)0x03)
 /**
   * @}
   */
@@ -401,8 +404,14 @@
                               ((MODE) == PWR_PVD_MODE_NORMAL))
 #define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON) || \
                                      ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON))
-#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || ((ENTRY) == PWR_SLEEPENTRY_WFE))
-#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || ((ENTRY) == PWR_STOPENTRY_WFE))
+
+#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || \
+                                   ((ENTRY) == PWR_SLEEPENTRY_WFE) || \
+                                   ((ENTRY) == PWR_SLEEPENTRY_WFE_NO_EVT_CLEAR))
+
+#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || \
+                                  ((ENTRY) == PWR_STOPENTRY_WFE) || \
+                                  ((ENTRY) == PWR_STOPENTRY_WFE_NO_EVT_CLEAR))
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_rcc.h b/Inc/stm32f4xx_hal_rcc.h
index 3dafcd1..c348e5e 100644
--- a/Inc/stm32f4xx_hal_rcc.h
+++ b/Inc/stm32f4xx_hal_rcc.h
@@ -660,7 +660,6 @@
   * @brief  Force or release AHB1 peripheral reset.
   * @{
   */
-#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0xFFFFFFFFU)
 #define __HAL_RCC_GPIOA_FORCE_RESET()   (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOARST))
 #define __HAL_RCC_GPIOB_FORCE_RESET()   (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOBRST))
 #define __HAL_RCC_GPIOC_FORCE_RESET()   (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOCRST))
@@ -683,7 +682,6 @@
   * @brief  Force or release APB1 peripheral reset.
   * @{
   */
-#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0xFFFFFFFFU)
 #define __HAL_RCC_TIM5_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM5RST))
 #define __HAL_RCC_WWDG_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_WWDGRST))
 #define __HAL_RCC_SPI2_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI2RST))
@@ -708,7 +706,6 @@
   * @brief  Force or release APB2 peripheral reset.
   * @{
   */
-#define __HAL_RCC_APB2_FORCE_RESET()     (RCC->APB2RSTR = 0xFFFFFFFFU)
 #define __HAL_RCC_TIM1_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM1RST))
 #define __HAL_RCC_USART1_FORCE_RESET()   (RCC->APB2RSTR |= (RCC_APB2RSTR_USART1RST))
 #define __HAL_RCC_USART6_FORCE_RESET()   (RCC->APB2RSTR |= (RCC_APB2RSTR_USART6RST))
diff --git a/Inc/stm32f4xx_hal_rcc_ex.h b/Inc/stm32f4xx_hal_rcc_ex.h
index bfba11f..983f205 100644
--- a/Inc/stm32f4xx_hal_rcc_ex.h
+++ b/Inc/stm32f4xx_hal_rcc_ex.h
@@ -1665,6 +1665,7 @@
   * @brief  Force or release AHB1 peripheral reset.
   * @{
   */
+#define __HAL_RCC_AHB1_FORCE_RESET()     (RCC->AHB1RSTR = 0x22E017FFU)
 #define __HAL_RCC_GPIOD_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIODRST))
 #define __HAL_RCC_GPIOE_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOERST))
 #define __HAL_RCC_GPIOF_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOFRST))
@@ -1696,7 +1697,12 @@
   * @brief  Force or release AHB2 peripheral reset.
   * @{
   */
-#define __HAL_RCC_AHB2_FORCE_RESET()    (RCC->AHB2RSTR = 0xFFFFFFFFU) 
+#if defined(STM32F427xx) || defined(STM32F429xx) || defined(STM32F469xx)
+#define __HAL_RCC_AHB2_FORCE_RESET()   (RCC->AHB2RSTR = 0x000000C1U)
+#endif /* STM32F427xx || STM32F429xx || STM32F469xx */
+#if defined(STM32F437xx) || defined(STM32F439xx) || defined(STM32F479xx)
+#define __HAL_RCC_AHB2_FORCE_RESET()   (RCC->AHB2RSTR = 0x000000F1U)
+#endif /* STM32F437xx || STM32F439xx || STM32F479xx */
 #define __HAL_RCC_USB_OTG_FS_FORCE_RESET()   (RCC->AHB2RSTR |= (RCC_AHB2RSTR_OTGFSRST))
 #define __HAL_RCC_RNG_FORCE_RESET()    (RCC->AHB2RSTR |= (RCC_AHB2RSTR_RNGRST))
 #define __HAL_RCC_DCMI_FORCE_RESET()   (RCC->AHB2RSTR |= (RCC_AHB2RSTR_DCMIRST))
@@ -1720,8 +1726,13 @@
 /** @defgroup RCCEx_AHB3_Force_Release_Reset AHB3 Force Release Reset 
   * @brief  Force or release AHB3 peripheral reset.
   * @{
-  */ 
-#define __HAL_RCC_AHB3_FORCE_RESET() (RCC->AHB3RSTR = 0xFFFFFFFFU)
+  */
+#if defined(STM32F427xx) || defined(STM32F429xx) || defined(STM32F437xx) || defined(STM32F439xx)
+#define __HAL_RCC_AHB3_FORCE_RESET()   (RCC->AHB3RSTR = 0x00000001U)
+#endif /* STM32F427xx || STM32F429xx || STM32F437xx || STM32F439xx */
+#if defined(STM32F469xx) || defined(STM32F479xx)
+#define __HAL_RCC_AHB3_FORCE_RESET()   (RCC->AHB3RSTR = 0x00000003U)
+#endif /* STM32F469xx || STM32F479xx */
 #define __HAL_RCC_AHB3_RELEASE_RESET() (RCC->AHB3RSTR = 0x00U) 
 #define __HAL_RCC_FMC_FORCE_RESET()    (RCC->AHB3RSTR |= (RCC_AHB3RSTR_FMCRST))
 #define __HAL_RCC_FMC_RELEASE_RESET()  (RCC->AHB3RSTR &= ~(RCC_AHB3RSTR_FMCRST))
@@ -1737,7 +1748,8 @@
 /** @defgroup RCCEx_APB1_Force_Release_Reset APB1 Force Release Reset 
   * @brief  Force or release APB1 peripheral reset.
   * @{
-  */ 
+  */
+#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0xF6FEC9FFU)
 #define __HAL_RCC_TIM6_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST))
 #define __HAL_RCC_TIM7_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM7RST))
 #define __HAL_RCC_TIM12_FORCE_RESET()    (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM12RST))
@@ -1783,6 +1795,15 @@
   * @brief  Force or release APB2 peripheral reset.
   * @{
   */
+#if defined(STM32F469xx) || defined(STM32F479xx)
+#define __HAL_RCC_APB2_FORCE_RESET()   (RCC->APB2RSTR = 0x0C777933U)
+#endif /* STM32F469xx || STM32F479xx */
+#if defined(STM32F429xx) || defined(STM32F439xx)
+#define __HAL_RCC_APB2_FORCE_RESET()   (RCC->APB2RSTR = 0x04777933U)
+#endif /* STM32F429xx || STM32F439xx */
+#if defined(STM32F427xx) || defined(STM32F437xx)
+#define __HAL_RCC_APB2_FORCE_RESET()   (RCC->APB2RSTR = 0x00777933U)
+#endif /* STM32F427xx || STM32F437xx */
 #define __HAL_RCC_TIM8_FORCE_RESET()   (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM8RST))
 #define __HAL_RCC_SPI5_FORCE_RESET()   (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI5RST))
 #define __HAL_RCC_SPI6_FORCE_RESET()   (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI6RST))
@@ -2590,6 +2611,12 @@
   * @brief  Force or release AHB1 peripheral reset.
   * @{
   */
+#if defined (STM32F405xx) || defined (STM32F415xx)
+#define __HAL_RCC_AHB1_FORCE_RESET()     (RCC->AHB1RSTR = 0x206011FFU)
+#endif /* STM32F405xx || STM32F415xx */
+#if defined (STM32F407xx) || defined (STM32F417xx)
+#define __HAL_RCC_AHB1_FORCE_RESET()     (RCC->AHB1RSTR = 0x226011FFU)
+#endif /* STM32F407xx || STM32F417xx */
 #define __HAL_RCC_GPIOD_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIODRST))
 #define __HAL_RCC_GPIOE_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOERST))
 #define __HAL_RCC_GPIOF_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOFRST))
@@ -2615,7 +2642,12 @@
   * @brief  Force or release AHB2 peripheral reset.
   * @{
   */
-#define __HAL_RCC_AHB2_FORCE_RESET()         (RCC->AHB2RSTR = 0xFFFFFFFFU) 
+#if defined (STM32F415xx) || defined (STM32F417xx)
+#define __HAL_RCC_AHB2_FORCE_RESET()         (RCC->AHB2RSTR = 0x000000F1U)
+#endif /* STM32F415xx || STM32F417xx */
+#if defined (STM32F405xx) || defined (STM32F407xx)
+#define __HAL_RCC_AHB2_FORCE_RESET()         (RCC->AHB2RSTR = 0x000000C1U)
+#endif /* STM32F405xx || STM32F407xx */
 #define __HAL_RCC_AHB2_RELEASE_RESET()       (RCC->AHB2RSTR = 0x00U)
 
 #if defined(STM32F407xx)|| defined(STM32F417xx)  
@@ -2644,7 +2676,7 @@
   * @brief  Force or release AHB3 peripheral reset.
   * @{
   */ 
-#define __HAL_RCC_AHB3_FORCE_RESET() (RCC->AHB3RSTR = 0xFFFFFFFFU)
+#define __HAL_RCC_AHB3_FORCE_RESET()   (RCC->AHB3RSTR = 0x00000001U)
 #define __HAL_RCC_AHB3_RELEASE_RESET() (RCC->AHB3RSTR = 0x00U) 
 
 #define __HAL_RCC_FSMC_FORCE_RESET()   (RCC->AHB3RSTR |= (RCC_AHB3RSTR_FSMCRST))
@@ -2657,6 +2689,7 @@
   * @brief  Force or release APB1 peripheral reset.
   * @{
   */
+#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0xF6FEC9FFU)
 #define __HAL_RCC_TIM6_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST))
 #define __HAL_RCC_TIM7_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM7RST))
 #define __HAL_RCC_TIM12_FORCE_RESET()    (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM12RST))
@@ -2698,6 +2731,7 @@
   * @brief  Force or release APB2 peripheral reset.
   * @{
   */
+#define __HAL_RCC_APB2_FORCE_RESET()   (RCC->APB2RSTR = 0x04777933U)
 #define __HAL_RCC_TIM8_FORCE_RESET()   (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM8RST))
 #define __HAL_RCC_SDIO_FORCE_RESET()   (RCC->APB2RSTR |= (RCC_APB2RSTR_SDIORST))
 #define __HAL_RCC_SPI4_FORCE_RESET()   (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI4RST))
@@ -3097,7 +3131,7 @@
   * @brief  Force or release AHB1 peripheral reset.
   * @{
   */  
-#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0xFFFFFFFFU)
+#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0x0060109FU)
 #define __HAL_RCC_GPIOD_FORCE_RESET()   (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIODRST))
 #define __HAL_RCC_GPIOE_FORCE_RESET()   (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOERST))
 #define __HAL_RCC_CRC_FORCE_RESET()     (RCC->AHB1RSTR |= (RCC_AHB1RSTR_CRCRST))
@@ -3114,7 +3148,7 @@
   * @brief  Force or release AHB2 peripheral reset.
   * @{
   */
-#define __HAL_RCC_AHB2_FORCE_RESET()    (RCC->AHB2RSTR = 0xFFFFFFFFU) 
+#define __HAL_RCC_AHB2_FORCE_RESET()         (RCC->AHB2RSTR = 0x00000080U)
 #define __HAL_RCC_USB_OTG_FS_FORCE_RESET()   (RCC->AHB2RSTR |= (RCC_AHB2RSTR_OTGFSRST))
 
 #define __HAL_RCC_AHB2_RELEASE_RESET()  (RCC->AHB2RSTR = 0x00U)
@@ -3127,7 +3161,7 @@
   * @brief  Force or release APB1 peripheral reset.
   * @{
   */
-#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0xFFFFFFFFU)  
+#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0x10E2C80FU)
 #define __HAL_RCC_TIM2_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM2RST))
 #define __HAL_RCC_TIM3_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM3RST))
 #define __HAL_RCC_TIM4_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM4RST))
@@ -3148,7 +3182,7 @@
   * @brief  Force or release APB2 peripheral reset.
   * @{
   */
-#define __HAL_RCC_APB2_FORCE_RESET()     (RCC->APB2RSTR = 0xFFFFFFFFU)  
+#define __HAL_RCC_APB2_FORCE_RESET()     (RCC->APB2RSTR = 0x00077931U)
 #define __HAL_RCC_SDIO_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_SDIORST))
 #define __HAL_RCC_SPI4_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI4RST))
 #define __HAL_RCC_TIM10_FORCE_RESET()    (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM10RST))
@@ -3413,6 +3447,7 @@
   * @brief  Force or release AHB1 peripheral reset.
   * @{
   */
+#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0x80601087U)
 #define __HAL_RCC_CRC_FORCE_RESET()     (RCC->AHB1RSTR |= (RCC_AHB1RSTR_CRCRST))
 #define __HAL_RCC_RNG_FORCE_RESET()     (RCC->AHB1RSTR |= (RCC_AHB1RSTR_RNGRST))
 #define __HAL_RCC_CRC_RELEASE_RESET()   (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_CRCRST))
@@ -3445,6 +3480,12 @@
   * @brief  Force or release APB1 peripheral reset.
   * @{
   */
+#if defined (STM32F410Rx) || defined (STM32F410Cx)
+#define __HAL_RCC_APB1_FORCE_RESET()      (RCC->APB1RSTR = 0x31624A18U)
+#endif /* STM32F410Rx || STM32F410Cx */
+#if defined (STM32F410Tx)
+#define __HAL_RCC_APB1_FORCE_RESET()      (RCC->APB1RSTR = 0x31620A18U)
+#endif /* STM32F410Tx */
 #define __HAL_RCC_TIM6_FORCE_RESET()      (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST))
 #define __HAL_RCC_LPTIM1_FORCE_RESET()    (RCC->APB1RSTR |= (RCC_APB1RSTR_LPTIM1RST))
 #define __HAL_RCC_FMPI2C1_FORCE_RESET()   (RCC->APB1RSTR |= (RCC_APB1RSTR_FMPI2C1RST))
@@ -3462,6 +3503,12 @@
   * @brief  Force or release APB2 peripheral reset.
   * @{
   */
+#if defined (STM32F410Rx) || defined (STM32F410Cx)
+#define __HAL_RCC_APB2_FORCE_RESET()      (RCC->APB2RSTR = 0x00155131U)
+#endif /* STM32F410Rx || STM32F410Cx */
+#if defined (STM32F410Tx)
+#define __HAL_RCC_APB2_FORCE_RESET()      (RCC->APB2RSTR = 0x00055111U)
+#endif /* STM32F410Tx */
 #define __HAL_RCC_SPI5_FORCE_RESET()      (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI5RST))
 #define __HAL_RCC_SPI5_RELEASE_RESET()    (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI5RST))                                        
 /**
@@ -3753,7 +3800,8 @@
 /** @defgroup RCCEx_AHB1_Force_Release_Reset AHB1 Force Release Reset 
   * @brief  Force or release AHB1 peripheral reset.
   * @{
-  */ 
+  */
+#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0x0060109FU)
 #define __HAL_RCC_GPIOD_FORCE_RESET()   (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIODRST))
 #define __HAL_RCC_GPIOE_FORCE_RESET()   (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOERST))
 #define __HAL_RCC_CRC_FORCE_RESET()     (RCC->AHB1RSTR |= (RCC_AHB1RSTR_CRCRST))
@@ -3769,7 +3817,7 @@
   * @brief  Force or release AHB2 peripheral reset.
   * @{
   */
-#define __HAL_RCC_AHB2_FORCE_RESET()    (RCC->AHB2RSTR = 0xFFFFFFFFU) 
+#define __HAL_RCC_AHB2_FORCE_RESET()    (RCC->AHB2RSTR = 0x00000080U)
 #define __HAL_RCC_USB_OTG_FS_FORCE_RESET()   (RCC->AHB2RSTR |= (RCC_AHB2RSTR_OTGFSRST))
 
 #define __HAL_RCC_AHB2_RELEASE_RESET()  (RCC->AHB2RSTR = 0x00U)
@@ -3792,6 +3840,7 @@
   * @brief  Force or release APB1 peripheral reset.
   * @{
   */
+#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0x10E2C80FU)
 #define __HAL_RCC_TIM2_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM2RST))
 #define __HAL_RCC_TIM3_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM3RST))
 #define __HAL_RCC_TIM4_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM4RST))
@@ -3811,6 +3860,7 @@
   * @brief  Force or release APB2 peripheral reset.
   * @{
   */
+#define __HAL_RCC_APB2_FORCE_RESET()     (RCC->APB2RSTR = 0x00177931U)
 #define __HAL_RCC_SPI5_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI5RST))
 #define __HAL_RCC_SDIO_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_SDIORST))
 #define __HAL_RCC_SPI4_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI4RST))
@@ -4430,6 +4480,7 @@
   * @brief  Force or release AHB1 peripheral reset.
   * @{
   */
+#define __HAL_RCC_AHB1_FORCE_RESET()     (RCC->AHB1RSTR = 0x206010FFU)
 #define __HAL_RCC_GPIOD_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIODRST))
 #define __HAL_RCC_GPIOE_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOERST))
 #define __HAL_RCC_GPIOF_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOFRST))
@@ -4451,7 +4502,7 @@
   * @brief  Force or release AHB2 peripheral reset.
   * @{
   */
-#define __HAL_RCC_AHB2_FORCE_RESET()    (RCC->AHB2RSTR = 0xFFFFFFFFU) 
+#define __HAL_RCC_AHB2_FORCE_RESET()   (RCC->AHB2RSTR = 0x00000081U)
 #define __HAL_RCC_USB_OTG_FS_FORCE_RESET()   (RCC->AHB2RSTR |= (RCC_AHB2RSTR_OTGFSRST))
 #define __HAL_RCC_RNG_FORCE_RESET()    (RCC->AHB2RSTR |= (RCC_AHB2RSTR_RNGRST))
 #define __HAL_RCC_DCMI_FORCE_RESET()   (RCC->AHB2RSTR |= (RCC_AHB2RSTR_DCMIRST))
@@ -4468,7 +4519,7 @@
   * @brief  Force or release AHB3 peripheral reset.
   * @{
   */ 
-#define __HAL_RCC_AHB3_FORCE_RESET() (RCC->AHB3RSTR = 0xFFFFFFFFU)
+#define __HAL_RCC_AHB3_FORCE_RESET()   (RCC->AHB3RSTR = 0x00000003U)
 #define __HAL_RCC_AHB3_RELEASE_RESET() (RCC->AHB3RSTR = 0x00U) 
 
 #define __HAL_RCC_FMC_FORCE_RESET()    (RCC->AHB3RSTR |= (RCC_AHB3RSTR_FMCRST))
@@ -4484,6 +4535,7 @@
   * @brief  Force or release APB1 peripheral reset.
   * @{
   */
+#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0x3FFFC9FFU)
 #define __HAL_RCC_TIM6_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST))
 #define __HAL_RCC_TIM7_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM7RST))
 #define __HAL_RCC_TIM12_FORCE_RESET()    (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM12RST))
@@ -4531,6 +4583,7 @@
   * @brief  Force or release APB2 peripheral reset.
   * @{
   */
+#define __HAL_RCC_APB2_FORCE_RESET()     (RCC->APB2RSTR = 0x00C77933U)
 #define __HAL_RCC_TIM8_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM8RST))
 #define __HAL_RCC_SAI1_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_SAI1RST)) 
 #define __HAL_RCC_SAI2_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_SAI2RST))
@@ -5343,6 +5396,18 @@
   * @brief  Force or release AHB1 peripheral reset.
   * @{
   */
+#if defined (STM32F412Zx) || defined(STM32F413xx) || defined (STM32F423xx)
+#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0x006010FFU)
+#endif /* STM32F412Zx ||  STM32F413xx || STM32F423xx */
+#if defined (STM32F412Cx)
+#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0x00601087U)
+#endif /* STM32F412Cx */
+#if defined (STM32F412Vx)
+#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0x0060109FU)
+#endif /* STM32F412Vx */
+#if defined (STM32F412Rx)
+#define __HAL_RCC_AHB1_FORCE_RESET()    (RCC->AHB1RSTR = 0x0060108FU)
+#endif /* STM32F412Rx */
 #if defined(STM32F412Rx) || defined(STM32F412Vx) || defined(STM32F412Zx) || defined(STM32F413xx) || defined(STM32F423xx)
 #define __HAL_RCC_GPIOD_FORCE_RESET()    (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIODRST))
 #endif /* STM32F412Rx || STM32F412Vx || STM32F412Zx ||  STM32F413xx || STM32F423xx */
@@ -5374,10 +5439,11 @@
   * @brief  Force or release AHB2 peripheral reset.
   * @{
   */
-#define __HAL_RCC_AHB2_FORCE_RESET()    (RCC->AHB2RSTR = 0xFFFFFFFFU)
+#define __HAL_RCC_AHB2_FORCE_RESET()    (RCC->AHB2RSTR = 0x000000C0U)
 #define __HAL_RCC_AHB2_RELEASE_RESET()  (RCC->AHB2RSTR = 0x00U)
 
 #if defined(STM32F423xx)
+#define __HAL_RCC_AHB2_FORCE_RESET()   (RCC->AHB2RSTR = 0x000000D0U)
 #define __HAL_RCC_AES_FORCE_RESET()    (RCC->AHB2RSTR |= (RCC_AHB2RSTR_AESRST))
 #define __HAL_RCC_AES_RELEASE_RESET()  (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_AESRST))                                        
 #endif /* STM32F423xx */ 
@@ -5396,7 +5462,7 @@
   * @{
   */ 
 #if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F413xx) || defined(STM32F423xx)
-#define __HAL_RCC_AHB3_FORCE_RESET() (RCC->AHB3RSTR = 0xFFFFFFFFU)
+#define __HAL_RCC_AHB3_FORCE_RESET()   (RCC->AHB3RSTR = 0x00000003U)
 #define __HAL_RCC_AHB3_RELEASE_RESET() (RCC->AHB3RSTR = 0x00U) 
 
 #define __HAL_RCC_FSMC_FORCE_RESET()    (RCC->AHB3RSTR |= (RCC_AHB3RSTR_FSMCRST))
@@ -5423,6 +5489,12 @@
   * @brief  Force or release APB1 peripheral reset.
   * @{
   */
+#if defined(STM32F413xx) || defined(STM32F423xx)
+#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0xFFFECBFFU)
+#endif /* STM32F413xx || STM32F423xx */
+#if defined (STM32F412Zx) || defined (STM32F412Vx) || defined (STM32F412Rx) || defined (STM32F412Cx)
+#define __HAL_RCC_APB1_FORCE_RESET()     (RCC->APB1RSTR = 0x17E6C9FFU)
+#endif /* STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
 #define __HAL_RCC_TIM2_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM2RST))
 #define __HAL_RCC_TIM3_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM3RST)) 
 #define __HAL_RCC_TIM4_FORCE_RESET()     (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM4RST))                                        
@@ -5486,6 +5558,12 @@
   * @brief  Force or release APB2 peripheral reset.
   * @{
   */
+#if defined(STM32F413xx)|| defined(STM32F423xx)
+#define __HAL_RCC_APB2_FORCE_RESET()     (RCC->APB2RSTR = 0x035779F3U)
+#endif /* STM32F413xx || STM32F423xx */
+#if defined (STM32F412Zx) || defined (STM32F412Vx) || defined (STM32F412Rx) || defined (STM32F412Cx) 
+#define __HAL_RCC_APB2_FORCE_RESET()     (RCC->APB2RSTR = 0x01177933U)
+#endif /* STM32F412Zx || STM32F412Vx || STM32F412Rx || STM32F412Cx */
 #define __HAL_RCC_TIM8_FORCE_RESET()     (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM8RST))
 #if defined(STM32F413xx) || defined(STM32F423xx)
 #define __HAL_RCC_UART9_FORCE_RESET()    (RCC->APB2RSTR |= (RCC_APB2RSTR_UART9RST))
diff --git a/Inc/stm32f4xx_hal_rng.h b/Inc/stm32f4xx_hal_rng.h
index 7d4dca1..87279ef 100644
--- a/Inc/stm32f4xx_hal_rng.h
+++ b/Inc/stm32f4xx_hal_rng.h
@@ -304,7 +304,7 @@
                                     *hrng); /* Obsolete, use HAL_RNG_GenerateRandomNumber_IT() instead */
 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit);
 HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber_IT(RNG_HandleTypeDef *hrng);
-uint32_t HAL_RNG_ReadLastRandomNumber(RNG_HandleTypeDef *hrng);
+uint32_t HAL_RNG_ReadLastRandomNumber(const RNG_HandleTypeDef *hrng);
 
 void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng);
 void HAL_RNG_ErrorCallback(RNG_HandleTypeDef *hrng);
@@ -317,8 +317,8 @@
 /** @defgroup RNG_Exported_Functions_Group3 Peripheral State functions
   * @{
   */
-HAL_RNG_StateTypeDef HAL_RNG_GetState(RNG_HandleTypeDef *hrng);
-uint32_t             HAL_RNG_GetError(RNG_HandleTypeDef *hrng);
+HAL_RNG_StateTypeDef HAL_RNG_GetState(const RNG_HandleTypeDef *hrng);
+uint32_t             HAL_RNG_GetError(const RNG_HandleTypeDef *hrng);
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_rtc.h b/Inc/stm32f4xx_hal_rtc.h
index 6254ad6..9d58161 100644
--- a/Inc/stm32f4xx_hal_rtc.h
+++ b/Inc/stm32f4xx_hal_rtc.h
@@ -6,7 +6,7 @@
   ******************************************************************************
   * @attention
   *
-  * Copyright (c) 2017 STMicroelectronics.
+  * Copyright (c) 2016 STMicroelectronics.
   * All rights reserved.
   *
   * This software is licensed under terms that can be found in the LICENSE file
@@ -489,7 +489,6 @@
                                                           (__HANDLE__)->Instance->WPR = 0xFFU;  \
                                                         } while(0U)
 
-
 /**
   * @brief  Check whether the RTC Calendar is initialized.
   * @param  __HANDLE__ specifies the RTC handle.
@@ -779,6 +778,7 @@
                                             RTC_DR_MT | RTC_DR_MU | \
                                             RTC_DR_DT | RTC_DR_DU | \
                                             RTC_DR_WDU))
+#define RTC_ISR_RESERVED_MASK   ((uint32_t)(RTC_FLAGS_MASK | RTC_ISR_INIT))
 #define RTC_INIT_MASK           0xFFFFFFFFU
 #define RTC_RSF_MASK            ((uint32_t)~(RTC_ISR_INIT | RTC_ISR_RSF))
 #define RTC_FLAGS_MASK          ((uint32_t)(RTC_FLAG_INITF   | RTC_FLAG_INITS  | \
diff --git a/Inc/stm32f4xx_hal_rtc_ex.h b/Inc/stm32f4xx_hal_rtc_ex.h
index ff5f14d..bee4e32 100644
--- a/Inc/stm32f4xx_hal_rtc_ex.h
+++ b/Inc/stm32f4xx_hal_rtc_ex.h
@@ -6,7 +6,7 @@
   ******************************************************************************
   * @attention
   *
-  * Copyright (c) 2017 STMicroelectronics.
+  * Copyright (c) 2016 STMicroelectronics.
   * All rights reserved.
   *
   * This software is licensed under terms that can be found in the LICENSE file
@@ -162,7 +162,7 @@
   * @{
   */
 #define RTC_TAMPERTRIGGER_RISINGEDGE       0x00000000U
-#define RTC_TAMPERTRIGGER_FALLINGEDGE      RTC_TAFCR_TAMP1TRG
+#define RTC_TAMPERTRIGGER_FALLINGEDGE      0x00000002U
 #define RTC_TAMPERTRIGGER_LOWLEVEL         RTC_TAMPERTRIGGER_RISINGEDGE
 #define RTC_TAMPERTRIGGER_HIGHLEVEL        RTC_TAMPERTRIGGER_FALLINGEDGE
 /**
@@ -636,18 +636,6 @@
 #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__)       ((__HANDLE__)->Instance->TAFCR &= ~(__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_TAMP1: Tamper 1 interrupt
-  *            @arg RTC_IT_TAMP2: Tamper 2 interrupt
-  * @note   RTC_IT_TAMP2 is not applicable to all devices.
-  * @retval None
-  */
-#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.
diff --git a/Inc/stm32f4xx_hal_smbus.h b/Inc/stm32f4xx_hal_smbus.h
index ea92afa..d0ffed8 100644
--- a/Inc/stm32f4xx_hal_smbus.h
+++ b/Inc/stm32f4xx_hal_smbus.h
@@ -150,35 +150,35 @@
   */
 typedef struct __SMBUS_HandleTypeDef
 {
-  I2C_TypeDef                 *Instance;        /*!< SMBUS registers base address                  */
+  I2C_TypeDef                 *Instance;        /*!< SMBUS registers base address                            */
 
-  SMBUS_InitTypeDef             Init;           /*!< SMBUS communication parameters              */
+  SMBUS_InitTypeDef             Init;           /*!< SMBUS communication parameters                          */
 
-  uint8_t                       *pBuffPtr;      /*!< Pointer to SMBUS transfer buffer            */
+  uint8_t                       *pBuffPtr;      /*!< Pointer to SMBUS transfer buffer                        */
 
-  uint16_t                      XferSize;       /*!< SMBUS transfer size                         */
+  uint16_t                      XferSize;       /*!< SMBUS transfer size                                     */
 
-  __IO uint16_t                 XferCount;      /*!< SMBUS transfer counter                      */
+  __IO uint16_t                 XferCount;      /*!< SMBUS transfer counter                                  */
 
   __IO uint32_t                 XferOptions;    /*!< SMBUS transfer options this parameter can
-                                                     be a value of @ref SMBUS_OPTIONS            */
+                                                     be a value of @ref SMBUS_XferOptions_definition         */
 
   __IO uint32_t                 PreviousState;  /*!< SMBUS communication Previous state and mode
-                                                     context for internal usage                  */
+                                                     context for internal usage                              */
 
-  HAL_LockTypeDef               Lock;           /*!< SMBUS locking object                        */
+  HAL_LockTypeDef               Lock;           /*!< SMBUS locking object                                    */
 
-  __IO HAL_SMBUS_StateTypeDef   State;          /*!< SMBUS communication state                   */
+  __IO HAL_SMBUS_StateTypeDef   State;          /*!< SMBUS communication state                               */
 
-  __IO HAL_SMBUS_ModeTypeDef    Mode;           /*!< SMBUS communication mode                    */
+  __IO HAL_SMBUS_ModeTypeDef    Mode;           /*!< SMBUS communication mode                                */
 
-  __IO uint32_t                 ErrorCode;      /*!< SMBUS Error code                            */
+  __IO uint32_t                 ErrorCode;      /*!< SMBUS Error code                                        */
 
-  __IO uint32_t                 Devaddress;     /*!< SMBUS Target device address                 */
+  __IO uint32_t                 Devaddress;     /*!< SMBUS Target device address                             */
 
-  __IO uint32_t                 EventCount;     /*!< SMBUS Event counter                         */
+  __IO uint32_t                 EventCount;     /*!< SMBUS Event counter                                     */
 
-  uint8_t                       XferPEC;        /*!< SMBUS PEC data in reception mode            */
+  uint8_t                       XferPEC;        /*!< SMBUS PEC data in reception mode                        */
 
 #if (USE_HAL_SMBUS_REGISTER_CALLBACKS == 1)
   void (* MasterTxCpltCallback)(struct __SMBUS_HandleTypeDef *hsmbus);           /*!< SMBUS Master Tx Transfer completed callback */
@@ -608,6 +608,10 @@
   * @}
   */
 
+/**
+  * @}
+  */
+
 /** @addtogroup SMBUS_Exported_Functions_Group3 Peripheral State, Mode and Error functions
   * @{
   */
@@ -718,10 +722,6 @@
   * @}
   */
 
-/**
-* @}
-*/
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/Inc/stm32f4xx_hal_spdifrx.h b/Inc/stm32f4xx_hal_spdifrx.h
index 7ea04aa..386903b 100644
--- a/Inc/stm32f4xx_hal_spdifrx.h
+++ b/Inc/stm32f4xx_hal_spdifrx.h
@@ -56,7 +56,8 @@
   uint32_t WaitForActivity;          /*!< Specifies the wait for activity on SPDIF selected input.
                                           This parameter can be a value of @ref SPDIFRX_Wait_For_Activity. */
 
-  uint32_t ChannelSelection;         /*!< Specifies whether the control flow will take the channel status from channel A or B.
+  uint32_t ChannelSelection;         /*!< Specifies whether the control flow will take the channel status
+                                          from channel A or B.
                                           This parameter can be a value of @ref SPDIFRX_Channel_Selection */
 
   uint32_t DataFormat;               /*!< Specifies the Data samples format (LSB, MSB, ...).
@@ -65,16 +66,19 @@
   uint32_t StereoMode;               /*!< Specifies whether the peripheral is in stereo or mono mode.
                                           This parameter can be a value of @ref SPDIFRX_Stereo_Mode */
 
-  uint32_t PreambleTypeMask;          /*!< Specifies whether The preamble type bits are copied or not into the received frame.
-                                           This parameter can be a value of @ref SPDIFRX_PT_Mask */
+  uint32_t PreambleTypeMask;         /*!< Specifies whether The preamble type bits are copied or not
+                                          into the received frame.
+                                          This parameter can be a value of @ref SPDIFRX_PT_Mask */
 
-  uint32_t ChannelStatusMask;        /*!< Specifies whether the channel status and user bits are copied or not into the received frame.
+  uint32_t ChannelStatusMask;        /*!< Specifies whether the channel status and user bits are copied or not
+                                          into the received frame.
                                           This parameter can be a value of @ref SPDIFRX_ChannelStatus_Mask */
 
   uint32_t ValidityBitMask;          /*!< Specifies whether the validity bit is copied or not into the received frame.
                                           This parameter can be a value of @ref SPDIFRX_V_Mask */
 
-  uint32_t ParityErrorMask;          /*!< Specifies whether the parity error bit is copied or not into the received frame.
+  uint32_t ParityErrorMask;          /*!< Specifies whether the parity error bit is copied or not
+                                          into the received frame.
                                           This parameter can be a value of @ref SPDIFRX_PE_Mask */
 } SPDIFRX_InitTypeDef;
 
@@ -89,17 +93,20 @@
   uint32_t StereoMode;               /*!< Specifies whether the peripheral is in stereo or mono mode.
                                           This parameter can be a value of @ref SPDIFRX_Stereo_Mode */
 
-  uint32_t PreambleTypeMask;          /*!< Specifies whether The preamble type bits are copied or not into the received frame.
-                                                                                   This parameter can be a value of @ref SPDIFRX_PT_Mask */
+  uint32_t PreambleTypeMask;         /*!< Specifies whether The preamble type bits are copied or not
+                                          into the received frame.
+                                          This parameter can be a value of @ref SPDIFRX_PT_Mask */
 
-  uint32_t ChannelStatusMask;        /*!< Specifies whether the channel status and user bits are copied or not into the received frame.
-                                                                                  This parameter can be a value of @ref SPDIFRX_ChannelStatus_Mask */
+  uint32_t ChannelStatusMask;        /*!< Specifies whether the channel status and user bits are copied or not
+                                          into the received frame.
+                                          This parameter can be a value of @ref SPDIFRX_ChannelStatus_Mask */
 
   uint32_t ValidityBitMask;          /*!< Specifies whether the validity bit is copied or not into the received frame.
-                                                                                  This parameter can be a value of @ref SPDIFRX_V_Mask */
+                                          This parameter can be a value of @ref SPDIFRX_V_Mask */
 
-  uint32_t ParityErrorMask;          /*!< Specifies whether the parity error bit is copied or not into the received frame.
-                                                                                  This parameter can be a value of @ref SPDIFRX_PE_Mask */
+  uint32_t ParityErrorMask;          /*!< Specifies whether the parity error bit is copied or not
+                                          into the received frame.
+                                          This parameter can be a value of @ref SPDIFRX_PE_Mask */
 
 } SPDIFRX_SetDataFormatTypeDef;
 
@@ -151,7 +158,8 @@
                                                decremented when a sample is received.
                                                NbSamplesReceived = RxBufferSize-RxBufferCount) */
 
-  DMA_HandleTypeDef          *hdmaCsRx;    /* SPDIFRX EC60958_channel_status and user_information DMA handle parameters */
+  DMA_HandleTypeDef          *hdmaCsRx;    /* SPDIFRX EC60958_channel_status and user_information
+                                              DMA handle parameters */
 
   DMA_HandleTypeDef          *hdmaDrRx;    /* SPDIFRX Rx DMA handle parameters */
 
@@ -162,9 +170,11 @@
   __IO uint32_t  ErrorCode;                /* SPDIFRX Error code */
 
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
-  void (*RxHalfCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);   /*!< SPDIFRX Data flow half completed callback */
+  void (*RxHalfCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);   /*!< SPDIFRX Data flow half completed
+                                                                             callback */
   void (*RxCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);       /*!< SPDIFRX Data flow completed callback */
-  void (*CxHalfCpltCallback)(struct __SPDIFRX_HandleTypeDef *hspdif);   /*!< SPDIFRX Control flow half completed callback */
+  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  */
@@ -172,9 +182,6 @@
 #endif /* USE_HAL_SPDIFRX_REGISTER_CALLBACKS */
 
 } SPDIFRX_HandleTypeDef;
-/**
-  * @}
-  */
 
 #if (USE_HAL_SPDIFRX_REGISTER_CALLBACKS == 1)
 /**
@@ -194,9 +201,12 @@
 /**
   * @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 --------------------------------------------------------*/
 /** @defgroup SPDIFRX_Exported_Constants SPDIFRX Exported Constants
   * @{
@@ -260,8 +270,10 @@
 /** @defgroup SPDIFRX_ChannelStatus_Mask  SPDIFRX Channel Status Mask
   * @{
   */
-#define SPDIFRX_CHANNELSTATUS_OFF   ((uint32_t)0x00000000U)        /* The channel status and user bits are copied into the SPDIF_DR */
-#define SPDIFRX_CHANNELSTATUS_ON    ((uint32_t)SPDIFRX_CR_CUMSK)  /* The channel status and user bits are not copied into the SPDIF_DR, zeros are written instead*/
+#define SPDIFRX_CHANNELSTATUS_OFF   ((uint32_t)0x00000000U)       /* The channel status and user bits are copied
+                                                                     into the SPDIF_DR */
+#define SPDIFRX_CHANNELSTATUS_ON    ((uint32_t)SPDIFRX_CR_CUMSK)  /* The channel status and user bits are not copied
+                                                                     into the SPDIF_DR, zeros are written instead*/
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_hal_sram.h b/Inc/stm32f4xx_hal_sram.h
index e135aa1..a6e6111 100644
--- a/Inc/stm32f4xx_hal_sram.h
+++ b/Inc/stm32f4xx_hal_sram.h
@@ -209,7 +209,7 @@
   */
 
 /* SRAM  State functions ******************************************************/
-HAL_SRAM_StateTypeDef HAL_SRAM_GetState(SRAM_HandleTypeDef *hsram);
+HAL_SRAM_StateTypeDef HAL_SRAM_GetState(const SRAM_HandleTypeDef *hsram);
 
 /**
   * @}
diff --git a/Inc/stm32f4xx_hal_tim.h b/Inc/stm32f4xx_hal_tim.h
index 3a1da9d..1a8357c 100644
--- a/Inc/stm32f4xx_hal_tim.h
+++ b/Inc/stm32f4xx_hal_tim.h
@@ -385,29 +385,28 @@
   */
 typedef enum
 {
-  HAL_TIM_BASE_MSPINIT_CB_ID              = 0x00U   /*!< TIM Base MspInit Callback ID                              */
-  , HAL_TIM_BASE_MSPDEINIT_CB_ID          = 0x01U   /*!< TIM Base MspDeInit Callback ID                            */
-  , HAL_TIM_IC_MSPINIT_CB_ID              = 0x02U   /*!< TIM IC MspInit Callback ID                                */
-  , HAL_TIM_IC_MSPDEINIT_CB_ID            = 0x03U   /*!< TIM IC MspDeInit Callback ID                              */
-  , HAL_TIM_OC_MSPINIT_CB_ID              = 0x04U   /*!< TIM OC MspInit Callback ID                                */
-  , HAL_TIM_OC_MSPDEINIT_CB_ID            = 0x05U   /*!< TIM OC MspDeInit Callback ID                              */
-  , HAL_TIM_PWM_MSPINIT_CB_ID             = 0x06U   /*!< TIM PWM MspInit Callback ID                               */
-  , HAL_TIM_PWM_MSPDEINIT_CB_ID           = 0x07U   /*!< TIM PWM MspDeInit Callback ID                             */
-  , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID       = 0x08U   /*!< TIM One Pulse MspInit Callback ID                         */
-  , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID     = 0x09U   /*!< TIM One Pulse MspDeInit Callback ID                       */
-  , HAL_TIM_ENCODER_MSPINIT_CB_ID         = 0x0AU   /*!< TIM Encoder MspInit Callback ID                           */
-  , HAL_TIM_ENCODER_MSPDEINIT_CB_ID       = 0x0BU   /*!< TIM Encoder MspDeInit Callback ID                         */
-  , HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID     = 0x0CU   /*!< TIM Hall Sensor MspDeInit Callback ID                     */
-  , HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID   = 0x0DU   /*!< TIM Hall Sensor MspDeInit Callback ID                     */
+  HAL_TIM_BASE_MSPINIT_CB_ID              = 0x00U   /*!< TIM Base MspInit Callback ID                               */
+  , HAL_TIM_BASE_MSPDEINIT_CB_ID          = 0x01U   /*!< TIM Base MspDeInit Callback ID                             */
+  , HAL_TIM_IC_MSPINIT_CB_ID              = 0x02U   /*!< TIM IC MspInit Callback ID                                 */
+  , HAL_TIM_IC_MSPDEINIT_CB_ID            = 0x03U   /*!< TIM IC MspDeInit Callback ID                               */
+  , HAL_TIM_OC_MSPINIT_CB_ID              = 0x04U   /*!< TIM OC MspInit Callback ID                                 */
+  , HAL_TIM_OC_MSPDEINIT_CB_ID            = 0x05U   /*!< TIM OC MspDeInit Callback ID                               */
+  , HAL_TIM_PWM_MSPINIT_CB_ID             = 0x06U   /*!< TIM PWM MspInit Callback ID                                */
+  , HAL_TIM_PWM_MSPDEINIT_CB_ID           = 0x07U   /*!< TIM PWM MspDeInit Callback ID                              */
+  , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID       = 0x08U   /*!< TIM One Pulse MspInit Callback ID                          */
+  , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID     = 0x09U   /*!< TIM One Pulse MspDeInit Callback ID                        */
+  , HAL_TIM_ENCODER_MSPINIT_CB_ID         = 0x0AU   /*!< TIM Encoder MspInit Callback ID                            */
+  , HAL_TIM_ENCODER_MSPDEINIT_CB_ID       = 0x0BU   /*!< TIM Encoder MspDeInit Callback ID                          */
+  , HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID     = 0x0CU   /*!< TIM Hall Sensor MspDeInit Callback ID                      */
+  , HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID   = 0x0DU   /*!< TIM Hall Sensor MspDeInit Callback ID                      */
   , HAL_TIM_PERIOD_ELAPSED_CB_ID          = 0x0EU   /*!< TIM Period Elapsed Callback ID                             */
   , HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID     = 0x0FU   /*!< TIM Period Elapsed half complete Callback ID               */
   , HAL_TIM_TRIGGER_CB_ID                 = 0x10U   /*!< TIM Trigger Callback ID                                    */
   , HAL_TIM_TRIGGER_HALF_CB_ID            = 0x11U   /*!< TIM Trigger half complete Callback ID                      */
-
   , HAL_TIM_IC_CAPTURE_CB_ID              = 0x12U   /*!< TIM Input Capture Callback ID                              */
   , HAL_TIM_IC_CAPTURE_HALF_CB_ID         = 0x13U   /*!< TIM Input Capture half complete Callback ID                */
   , HAL_TIM_OC_DELAY_ELAPSED_CB_ID        = 0x14U   /*!< TIM Output Compare Delay Elapsed Callback ID               */
-  , HAL_TIM_PWM_PULSE_FINISHED_CB_ID      = 0x15U   /*!< TIM PWM Pulse Finished Callback ID           */
+  , HAL_TIM_PWM_PULSE_FINISHED_CB_ID      = 0x15U   /*!< TIM PWM Pulse Finished Callback ID                         */
   , HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U   /*!< TIM PWM Pulse Finished half complete Callback ID           */
   , HAL_TIM_ERROR_CB_ID                   = 0x17U   /*!< TIM Error Callback ID                                      */
   , HAL_TIM_COMMUTATION_CB_ID             = 0x18U   /*!< TIM Commutation Callback ID                                */
@@ -1654,6 +1653,10 @@
 #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))
@@ -1705,7 +1708,6 @@
 
 #define IS_TIM_BREAK_FILTER(__BRKFILTER__) ((__BRKFILTER__) <= 0xFUL)
 
-
 #define IS_TIM_BREAK_STATE(__STATE__)      (((__STATE__) == TIM_BREAK_ENABLE) || \
                                             ((__STATE__) == TIM_BREAK_DISABLE))
 
@@ -1994,7 +1996,7 @@
   * @{
   */
 /* Timer Encoder functions ****************************************************/
-HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef *sConfig);
+HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, const TIM_Encoder_InitTypeDef *sConfig);
 HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim);
 void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim);
 void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim);
@@ -2043,7 +2045,8 @@
 HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig);
 HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig);
 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
-                                              uint32_t BurstRequestSrc, const uint32_t  *BurstBuffer, uint32_t  BurstLength);
+                                              uint32_t BurstRequestSrc, const uint32_t  *BurstBuffer,
+                                              uint32_t  BurstLength);
 HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
                                                    uint32_t BurstRequestSrc, const uint32_t *BurstBuffer,
                                                    uint32_t BurstLength,  uint32_t DataLength);
diff --git a/Inc/stm32f4xx_hal_usart.h b/Inc/stm32f4xx_hal_usart.h
index e4bfcf3..a7cb4a1 100644
--- a/Inc/stm32f4xx_hal_usart.h
+++ b/Inc/stm32f4xx_hal_usart.h
@@ -624,7 +624,7 @@
   */
 
 /* Private functions ---------------------------------------------------------*/
-/** @defgroup USART_Private_Functions USART Private Functions
+/** @addtogroup USART_Private_Functions
   * @{
   */
 
diff --git a/Inc/stm32f4xx_ll_cortex.h b/Inc/stm32f4xx_ll_cortex.h
index d478e13..3861f55 100644
--- a/Inc/stm32f4xx_ll_cortex.h
+++ b/Inc/stm32f4xx_ll_cortex.h
@@ -372,6 +372,16 @@
 }
 
 /**
+  * @brief  Clear pending events.
+  * @retval None
+  */
+__STATIC_INLINE void LL_LPM_ClearEvent(void)
+{
+  __SEV();
+  __WFE();
+}
+
+/**
   * @}
   */
 
diff --git a/Inc/stm32f4xx_ll_crc.h b/Inc/stm32f4xx_ll_crc.h
index 0a28006..8ada06d 100644
--- a/Inc/stm32f4xx_ll_crc.h
+++ b/Inc/stm32f4xx_ll_crc.h
@@ -135,7 +135,7 @@
   * @param  CRCx CRC Instance
   * @retval Current CRC calculation result as stored in CRC_DR register (32 bits).
   */
-__STATIC_INLINE uint32_t LL_CRC_ReadData32(CRC_TypeDef *CRCx)
+__STATIC_INLINE uint32_t LL_CRC_ReadData32(const CRC_TypeDef *CRCx)
 {
   return (uint32_t)(READ_REG(CRCx->DR));
 }
@@ -173,7 +173,7 @@
   * @{
   */
 
-ErrorStatus LL_CRC_DeInit(CRC_TypeDef *CRCx);
+ErrorStatus LL_CRC_DeInit(const CRC_TypeDef *CRCx);
 
 /**
   * @}
diff --git a/Inc/stm32f4xx_ll_dac.h b/Inc/stm32f4xx_ll_dac.h
index ea1500b..4bff015 100644
--- a/Inc/stm32f4xx_ll_dac.h
+++ b/Inc/stm32f4xx_ll_dac.h
@@ -118,10 +118,10 @@
 
 /* DAC registers bits positions */
 #if defined(DAC_CHANNEL2_SUPPORT)
-#endif
 #define DAC_DHR12RD_DACC2DHR_BITOFFSET_POS                DAC_DHR12RD_DACC2DHR_Pos
 #define DAC_DHR12LD_DACC2DHR_BITOFFSET_POS                DAC_DHR12LD_DACC2DHR_Pos
 #define DAC_DHR8RD_DACC2DHR_BITOFFSET_POS                 DAC_DHR8RD_DACC2DHR_Pos
+#endif /* DAC_CHANNEL2_SUPPORT */
 
 /* Miscellaneous data */
 #define DAC_DIGITAL_SCALE_12BITS                  4095UL   /* Full-scale digital value with a resolution of 12
@@ -429,7 +429,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval 1...2 (value "2" depending on DAC channel 2 availability)
   */
@@ -449,36 +449,26 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   */
 #if defined(DAC_CHANNEL2_SUPPORT)
-#define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__)                         \
-  (((__DECIMAL_NB__) == 1UL)                                                   \
-    ? (                                                                        \
-       LL_DAC_CHANNEL_1                                                        \
-      )                                                                        \
-      :                                                                        \
-      (((__DECIMAL_NB__) == 2UL)                                               \
-        ? (                                                                    \
-           LL_DAC_CHANNEL_2                                                    \
-          )                                                                    \
-          :                                                                    \
-          (                                                                    \
-           0UL                                                                 \
-          )                                                                    \
-      )                                                                        \
+#define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
+  (((__DECIMAL_NB__) == 1UL)                           \
+   ? (LL_DAC_CHANNEL_1)                                \
+   :                                                   \
+   (((__DECIMAL_NB__) == 2UL)                          \
+    ? (LL_DAC_CHANNEL_2)                               \
+    :                                                  \
+    (0UL)                                              \
+   )                                                   \
   )
 #else
-#define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__)                         \
-  (((__DECIMAL_NB__) == 1UL)                                                   \
-    ? (                                                                        \
-       LL_DAC_CHANNEL_1                                                        \
-      )                                                                        \
-      :                                                                        \
-      (                                                                        \
-       0UL                                                                     \
-      )                                                                        \
+#define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \
+  (((__DECIMAL_NB__) == 1UL)                           \
+   ? (LL_DAC_CHANNEL_1)                                \
+   :                                                   \
+   (0UL)                                               \
   )
 #endif /* DAC_CHANNEL2_SUPPORT */
 
@@ -514,12 +504,10 @@
   *         @arg @ref LL_DAC_RESOLUTION_8B
   * @retval DAC conversion data (unit: digital value)
   */
-#define __LL_DAC_CALC_VOLTAGE_TO_DATA(__VREFANALOG_VOLTAGE__,\
-                                      __DAC_VOLTAGE__,\
-                                      __DAC_RESOLUTION__)                      \
-((__DAC_VOLTAGE__) * __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__)              \
- / (__VREFANALOG_VOLTAGE__)                                                  \
-)
+#define __LL_DAC_CALC_VOLTAGE_TO_DATA(__VREFANALOG_VOLTAGE__, __DAC_VOLTAGE__, __DAC_RESOLUTION__)     \
+  ((__DAC_VOLTAGE__) * __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__)                                      \
+   / (__VREFANALOG_VOLTAGE__)                                                                          \
+  )
 
 /**
   * @}
@@ -534,6 +522,7 @@
 /** @defgroup DAC_LL_Exported_Functions DAC Exported Functions
   * @{
   */
+
 /**
   * @brief  Set the conversion trigger source for the selected DAC channel.
   * @note   For conversion trigger source to be effective, DAC trigger
@@ -549,7 +538,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  TriggerSource This parameter can be one of the following values:
   *         @arg @ref LL_DAC_TRIG_SOFTWARE
@@ -582,7 +571,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval Returned value can be one of the following values:
   *         @arg @ref LL_DAC_TRIG_SOFTWARE
@@ -594,7 +583,7 @@
   *         @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO
   *         @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9
   */
-__STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
                     >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
@@ -611,7 +600,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  WaveAutoGeneration This parameter can be one of the following values:
   *         @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE
@@ -636,14 +625,14 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval Returned value can be one of the following values:
   *         @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE
   *         @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE
   *         @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE
   */
-__STATIC_INLINE uint32_t LL_DAC_GetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_GetWaveAutoGeneration(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
                     >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
@@ -665,7 +654,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  NoiseLFSRMask This parameter can be one of the following values:
   *         @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0
@@ -699,7 +688,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval Returned value can be one of the following values:
   *         @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0
@@ -715,7 +704,7 @@
   *         @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0
   *         @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0
   */
-__STATIC_INLINE uint32_t LL_DAC_GetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_GetWaveNoiseLFSR(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
                     >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
@@ -737,7 +726,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  TriangleAmplitude This parameter can be one of the following values:
   *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1
@@ -772,7 +761,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval Returned value can be one of the following values:
   *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1
@@ -788,7 +777,7 @@
   *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047
   *         @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095
   */
-__STATIC_INLINE uint32_t LL_DAC_GetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_GetWaveTriangleAmplitude(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
                     >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
@@ -804,7 +793,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  OutputBuffer This parameter can be one of the following values:
   *         @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE
@@ -827,13 +816,13 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval Returned value can be one of the following values:
   *         @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE
   *         @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE
   */
-__STATIC_INLINE uint32_t LL_DAC_GetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_GetOutputBuffer(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_BOFF1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
                     >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)
@@ -859,7 +848,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval None
   */
@@ -880,7 +869,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval None
   */
@@ -900,11 +889,11 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   return ((READ_BIT(DACx->CR,
                     DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
@@ -938,7 +927,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  Register This parameter can be one of the following values:
   *         @arg @ref LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED
@@ -946,7 +935,7 @@
   *         @arg @ref LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED
   * @retval DAC register address
   */
-__STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register)
+__STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(const DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register)
 {
   /* Retrieve address of register DHR12Rx, DHR12Lx or DHR8Rx depending on     */
   /* DAC channel selected.                                                    */
@@ -973,7 +962,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval None
   */
@@ -992,7 +981,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval None
   */
@@ -1012,11 +1001,11 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_DAC_IsEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_IsEnabled(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   return ((READ_BIT(DACx->CR,
                     DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
@@ -1040,7 +1029,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval None
   */
@@ -1059,7 +1048,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval None
   */
@@ -1079,11 +1068,11 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   return ((READ_BIT(DACx->CR,
                     DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))
@@ -1110,7 +1099,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval None
   */
@@ -1131,7 +1120,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  Data Value between Min_Data=0x000 and Max_Data=0xFFF
   * @retval None
@@ -1155,7 +1144,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  Data Value between Min_Data=0x000 and Max_Data=0xFFF
   * @retval None
@@ -1179,7 +1168,7 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  Data Value between Min_Data=0x00 and Max_Data=0xFF
   * @retval None
@@ -1267,11 +1256,11 @@
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
   *
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @retval Value between Min_Data=0x000 and Max_Data=0xFFF
   */
-__STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(DAC_TypeDef *DACx, uint32_t DAC_Channel)
+__STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(const DAC_TypeDef *DACx, uint32_t DAC_Channel)
 {
   __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->DOR1, (DAC_Channel >> DAC_REG_DORX_REGOFFSET_BITOFFSET_POS)
                                                    & DAC_REG_DORX_REGOFFSET_MASK_POSBIT0);
@@ -1293,7 +1282,7 @@
   * @param  DACx DAC instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(DAC_TypeDef *DACx)
+__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(const DAC_TypeDef *DACx)
 {
   return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR1) == (LL_DAC_FLAG_DMAUDR1)) ? 1UL : 0UL);
 }
@@ -1305,7 +1294,7 @@
   * @param  DACx DAC instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(DAC_TypeDef *DACx)
+__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(const DAC_TypeDef *DACx)
 {
   return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR2) == (LL_DAC_FLAG_DMAUDR2)) ? 1UL : 0UL);
 }
@@ -1397,7 +1386,7 @@
   * @param  DACx DAC instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(DAC_TypeDef *DACx)
+__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(const DAC_TypeDef *DACx)
 {
   return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1) == (LL_DAC_IT_DMAUDRIE1)) ? 1UL : 0UL);
 }
@@ -1409,7 +1398,7 @@
   * @param  DACx DAC instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(DAC_TypeDef *DACx)
+__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(const DAC_TypeDef *DACx)
 {
   return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2) == (LL_DAC_IT_DMAUDRIE2)) ? 1UL : 0UL);
 }
@@ -1424,8 +1413,8 @@
   * @{
   */
 
-ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx);
-ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct);
+ErrorStatus LL_DAC_DeInit(const DAC_TypeDef *DACx);
+ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, const LL_DAC_InitTypeDef *DAC_InitStruct);
 void        LL_DAC_StructInit(LL_DAC_InitTypeDef *DAC_InitStruct);
 
 /**
@@ -1452,4 +1441,3 @@
 #endif
 
 #endif /* STM32F4xx_LL_DAC_H */
-
diff --git a/Inc/stm32f4xx_ll_fmc.h b/Inc/stm32f4xx_ll_fmc.h
index fe28f87..f453803 100644
--- a/Inc/stm32f4xx_ll_fmc.h
+++ b/Inc/stm32f4xx_ll_fmc.h
@@ -369,7 +369,7 @@
                                         delay between ALE low and RE low.
                                         This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
 } FMC_NAND_InitTypeDef;
-#endif
+#endif /* FMC_Bank3 || FMC_Bank2_3 */
 
 #if defined(FMC_Bank3) || defined(FMC_Bank2_3) || defined(FMC_Bank4)
 /**
@@ -1388,7 +1388,7 @@
 HAL_StatusTypeDef  FMC_SDRAM_ProgramRefreshRate(FMC_SDRAM_TypeDef *Device, uint32_t RefreshRate);
 HAL_StatusTypeDef  FMC_SDRAM_SetAutoRefreshNumber(FMC_SDRAM_TypeDef *Device,
                                                   uint32_t AutoRefreshNumber);
-uint32_t           FMC_SDRAM_GetModeStatus(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
+uint32_t           FMC_SDRAM_GetModeStatus(const FMC_SDRAM_TypeDef *Device, uint32_t Bank);
 /**
   * @}
   */
diff --git a/Inc/stm32f4xx_ll_fmpi2c.h b/Inc/stm32f4xx_ll_fmpi2c.h
index 5f6f07d..a3c14b6 100644
--- a/Inc/stm32f4xx_ll_fmpi2c.h
+++ b/Inc/stm32f4xx_ll_fmpi2c.h
@@ -295,7 +295,7 @@
 #define LL_FMPI2C_GENERATE_RESTART_7BIT_WRITE  (uint32_t)(0x80000000U | FMPI2C_CR2_START)
 /*!< Generate Restart for write request, slave 7Bit address. */
 #define LL_FMPI2C_GENERATE_RESTART_10BIT_READ  (uint32_t)(0x80000000U | FMPI2C_CR2_START | \
-                                                       FMPI2C_CR2_RD_WRN | FMPI2C_CR2_HEAD10R)
+                                                          FMPI2C_CR2_RD_WRN | FMPI2C_CR2_HEAD10R)
 /*!< Generate Restart for read request, slave 10Bit address. */
 #define LL_FMPI2C_GENERATE_RESTART_10BIT_WRITE (uint32_t)(0x80000000U | FMPI2C_CR2_START)
 /*!< Generate Restart for write request, slave 10Bit address.*/
@@ -343,7 +343,7 @@
 #define LL_FMPI2C_FMPSMBUS_TIMEOUTB               FMPI2C_TIMEOUTR_TEXTEN                   /*!< TimeoutB (extended clock)
                                                                                        enable bit                   */
 #define LL_FMPI2C_FMPSMBUS_ALL_TIMEOUT            (uint32_t)(FMPI2C_TIMEOUTR_TIMOUTEN | \
-                                                       FMPI2C_TIMEOUTR_TEXTEN)       /*!< TimeoutA and TimeoutB
+                                                             FMPI2C_TIMEOUTR_TEXTEN)       /*!< TimeoutA and TimeoutB
 (extended clock) enable bits */
 /**
   * @}
@@ -1082,7 +1082,7 @@
   * @retval None
   */
 __STATIC_INLINE void LL_FMPI2C_ConfigSMBusTimeout(FMPI2C_TypeDef *FMPI2Cx, uint32_t TimeoutA, uint32_t TimeoutAMode,
-                                               uint32_t TimeoutB)
+                                                  uint32_t TimeoutB)
 {
   MODIFY_REG(FMPI2Cx->TIMEOUTR, FMPI2C_TIMEOUTR_TIMEOUTA | FMPI2C_TIMEOUTR_TIDLE | FMPI2C_TIMEOUTR_TIMEOUTB,
              TimeoutA | TimeoutAMode | (TimeoutB << FMPI2C_TIMEOUTR_TIMEOUTB_Pos));
@@ -2092,13 +2092,20 @@
   * @retval None
   */
 __STATIC_INLINE void LL_FMPI2C_HandleTransfer(FMPI2C_TypeDef *FMPI2Cx, uint32_t SlaveAddr, uint32_t SlaveAddrSize,
-                                           uint32_t TransferSize, uint32_t EndMode, uint32_t Request)
+                                              uint32_t TransferSize, uint32_t EndMode, uint32_t Request)
 {
+  /* Declaration of tmp to prevent undefined behavior of volatile usage */
+  uint32_t tmp = ((uint32_t)(((uint32_t)SlaveAddr & FMPI2C_CR2_SADD) | \
+                             ((uint32_t)SlaveAddrSize & FMPI2C_CR2_ADD10) | \
+                             (((uint32_t)TransferSize << FMPI2C_CR2_NBYTES_Pos) & FMPI2C_CR2_NBYTES) | \
+                             (uint32_t)EndMode | (uint32_t)Request) & (~0x80000000U));
+
+  /* update CR2 register */
   MODIFY_REG(FMPI2Cx->CR2, FMPI2C_CR2_SADD | FMPI2C_CR2_ADD10 |
              (FMPI2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - FMPI2C_CR2_RD_WRN_Pos))) |
              FMPI2C_CR2_START | FMPI2C_CR2_STOP | FMPI2C_CR2_RELOAD |
              FMPI2C_CR2_NBYTES | FMPI2C_CR2_AUTOEND | FMPI2C_CR2_HEAD10R,
-             SlaveAddr | SlaveAddrSize | (TransferSize << FMPI2C_CR2_NBYTES_Pos) | EndMode | Request);
+             tmp);
 }
 
 /**
@@ -2202,8 +2209,8 @@
   * @{
   */
 
-ErrorStatus LL_FMPI2C_Init(FMPI2C_TypeDef *FMPI2Cx, LL_FMPI2C_InitTypeDef *FMPI2C_InitStruct);
-ErrorStatus LL_FMPI2C_DeInit(FMPI2C_TypeDef *FMPI2Cx);
+ErrorStatus LL_FMPI2C_Init(FMPI2C_TypeDef *FMPI2Cx, const LL_FMPI2C_InitTypeDef *FMPI2C_InitStruct);
+ErrorStatus LL_FMPI2C_DeInit(const FMPI2C_TypeDef *FMPI2Cx);
 void LL_FMPI2C_StructInit(LL_FMPI2C_InitTypeDef *FMPI2C_InitStruct);
 
 
diff --git a/Inc/stm32f4xx_ll_fsmc.h b/Inc/stm32f4xx_ll_fsmc.h
index 8b0ceb7..5fb1c4f 100644
--- a/Inc/stm32f4xx_ll_fsmc.h
+++ b/Inc/stm32f4xx_ll_fsmc.h
@@ -304,7 +304,7 @@
                                         delay between ALE low and RE low.
                                         This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
 } FSMC_NAND_InitTypeDef;
-#endif
+#endif /* FSMC_Bank2_3 */
 
 #if defined(FSMC_Bank2_3) || defined(FSMC_Bank4)
 /**
diff --git a/Inc/stm32f4xx_ll_i2c.h b/Inc/stm32f4xx_ll_i2c.h
index babba6b..92d4a74 100644
--- a/Inc/stm32f4xx_ll_i2c.h
+++ b/Inc/stm32f4xx_ll_i2c.h
@@ -263,7 +263,7 @@
   * @}
   */
 
-/** @defgroup I2C_LL_EM_Exported_Macros_Helper Exported_Macros_Helper
+/** @defgroup I2C_LL_EM_Exported_Macros_Helper Exported Macros Helper
   * @{
   */
 
@@ -869,7 +869,7 @@
 
 /**
   * @brief  Configure peripheral mode.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          SMBUS         LL_I2C_SetMode\n
   *         CR1          SMBTYPE       LL_I2C_SetMode\n
@@ -889,7 +889,7 @@
 
 /**
   * @brief  Get peripheral mode.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          SMBUS         LL_I2C_GetMode\n
   *         CR1          SMBTYPE       LL_I2C_GetMode\n
@@ -908,7 +908,7 @@
 
 /**
   * @brief  Enable SMBus alert (Host or Device mode)
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   SMBus Device mode:
   *         - SMBus Alert pin is drived low and
@@ -926,7 +926,7 @@
 
 /**
   * @brief  Disable SMBus alert (Host or Device mode)
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   SMBus Device mode:
   *         - SMBus Alert pin is not drived (can be used as a standard GPIO) and
@@ -944,7 +944,7 @@
 
 /**
   * @brief  Check if SMBus alert (Host or Device mode) is enabled or disabled.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          ALERT         LL_I2C_IsEnabledSMBusAlert
   * @param  I2Cx I2C Instance.
@@ -957,7 +957,7 @@
 
 /**
   * @brief  Enable SMBus Packet Error Calculation (PEC).
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          ENPEC         LL_I2C_EnableSMBusPEC
   * @param  I2Cx I2C Instance.
@@ -970,7 +970,7 @@
 
 /**
   * @brief  Disable SMBus Packet Error Calculation (PEC).
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          ENPEC         LL_I2C_DisableSMBusPEC
   * @param  I2Cx I2C Instance.
@@ -983,7 +983,7 @@
 
 /**
   * @brief  Check if SMBus Packet Error Calculation (PEC) is enabled or disabled.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          ENPEC         LL_I2C_IsEnabledSMBusPEC
   * @param  I2Cx I2C Instance.
@@ -1166,7 +1166,7 @@
 
 /**
   * @brief  Enable Error interrupts.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   Any of these errors will generate interrupt :
   *         Bus Error detection (BERR)
@@ -1187,7 +1187,7 @@
 
 /**
   * @brief  Disable Error interrupts.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   Any of these errors will generate interrupt :
   *         Bus Error detection (BERR)
@@ -1370,7 +1370,7 @@
 
 /**
   * @brief  Indicate the status of SMBus PEC error flag in reception.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll SR1          PECERR        LL_I2C_IsActiveSMBusFlag_PECERR
   * @param  I2Cx I2C Instance.
@@ -1383,7 +1383,7 @@
 
 /**
   * @brief  Indicate the status of SMBus Timeout detection flag.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll SR1          TIMEOUT       LL_I2C_IsActiveSMBusFlag_TIMEOUT
   * @param  I2Cx I2C Instance.
@@ -1396,7 +1396,7 @@
 
 /**
   * @brief  Indicate the status of SMBus alert flag.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll SR1          SMBALERT      LL_I2C_IsActiveSMBusFlag_ALERT
   * @param  I2Cx I2C Instance.
@@ -1435,7 +1435,7 @@
 
 /**
   * @brief  Indicate the status of SMBus Host address reception (Slave mode).
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   RESET: No SMBus Host address
   *         SET: SMBus Host address received.
@@ -1451,7 +1451,7 @@
 
 /**
   * @brief  Indicate the status of SMBus Device default address reception (Slave mode).
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   RESET: No SMBus Device default address
   *         SET: SMBus Device default address received.
@@ -1583,7 +1583,7 @@
 
 /**
   * @brief  Clear SMBus Timeout detection flag.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll SR1          TIMEOUT       LL_I2C_ClearSMBusFlag_TIMEOUT
   * @param  I2Cx I2C Instance.
@@ -1596,7 +1596,7 @@
 
 /**
   * @brief  Clear SMBus Alert flag.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll SR1          SMBALERT      LL_I2C_ClearSMBusFlag_ALERT
   * @param  I2Cx I2C Instance.
@@ -1774,7 +1774,7 @@
 
 /**
   * @brief  Enable transfer or internal comparison of the SMBus Packet Error byte (transmission or reception mode).
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @note   This feature is cleared by hardware when the PEC byte is transferred or compared,
   *         or by a START or STOP condition, it is also cleared by software.
@@ -1789,7 +1789,7 @@
 
 /**
   * @brief  Disable transfer or internal comparison of the SMBus Packet Error byte (transmission or reception mode).
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          PEC           LL_I2C_DisableSMBusPECCompare
   * @param  I2Cx I2C Instance.
@@ -1802,7 +1802,7 @@
 
 /**
   * @brief  Check if the SMBus Packet Error byte transfer or internal comparison is requested or not.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll CR1          PEC           LL_I2C_IsEnabledSMBusPECCompare
   * @param  I2Cx I2C Instance.
@@ -1815,7 +1815,7 @@
 
 /**
   * @brief  Get the SMBus Packet Error byte calculated.
-  * @note   Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
+  * @note   Macro IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not
   *         SMBus feature is supported by the I2Cx Instance.
   * @rmtoll SR2          PEC           LL_I2C_GetSMBusPEC
   * @param  I2Cx I2C Instance.
diff --git a/Inc/stm32f4xx_ll_lptim.h b/Inc/stm32f4xx_ll_lptim.h
index f84ed6b..273d89d 100644
--- a/Inc/stm32f4xx_ll_lptim.h
+++ b/Inc/stm32f4xx_ll_lptim.h
@@ -315,12 +315,25 @@
   * @{
   */
 
+/** Legacy definitions for compatibility purpose
+@cond 0
+  */
+#define LL_LPTIM_ClearFLAG_CMPM  LL_LPTIM_ClearFlag_CMPM
+#define LL_LPTIM_ClearFLAG_CC1   LL_LPTIM_ClearFlag_CC1
+#define LL_LPTIM_ClearFLAG_CC2   LL_LPTIM_ClearFlag_CC2
+#define LL_LPTIM_ClearFLAG_CC1O  LL_LPTIM_ClearFlag_CC1O
+#define LL_LPTIM_ClearFLAG_CC2O  LL_LPTIM_ClearFlag_CC2O
+#define LL_LPTIM_ClearFLAG_ARRM  LL_LPTIM_ClearFlag_ARRM
+/**
+@endcond
+  */
+
 #if defined(USE_FULL_LL_DRIVER)
 /** @defgroup LPTIM_LL_EF_Init Initialisation and deinitialisation functions
   * @{
   */
 
-ErrorStatus LL_LPTIM_DeInit(LPTIM_TypeDef *LPTIMx);
+ErrorStatus LL_LPTIM_DeInit(const LPTIM_TypeDef *LPTIMx);
 void LL_LPTIM_StructInit(LL_LPTIM_InitTypeDef *LPTIM_InitStruct);
 ErrorStatus LL_LPTIM_Init(LPTIM_TypeDef *LPTIMx, const LL_LPTIM_InitTypeDef *LPTIM_InitStruct);
 void LL_LPTIM_Disable(LPTIM_TypeDef *LPTIMx);
@@ -956,13 +969,14 @@
   * @{
   */
 
+
 /**
   * @brief  Clear the compare match flag (CMPMCF)
-  * @rmtoll ICR          CMPMCF        LL_LPTIM_ClearFLAG_CMPM
+  * @rmtoll ICR          CMPMCF        LL_LPTIM_ClearFlag_CMPM
   * @param  LPTIMx Low-Power Timer instance
   * @retval None
   */
-__STATIC_INLINE void LL_LPTIM_ClearFLAG_CMPM(LPTIM_TypeDef *LPTIMx)
+__STATIC_INLINE void LL_LPTIM_ClearFlag_CMPM(LPTIM_TypeDef *LPTIMx)
 {
   SET_BIT(LPTIMx->ICR, LPTIM_ICR_CMPMCF);
 }
@@ -980,11 +994,11 @@
 
 /**
   * @brief  Clear the autoreload match flag (ARRMCF)
-  * @rmtoll ICR          ARRMCF        LL_LPTIM_ClearFLAG_ARRM
+  * @rmtoll ICR          ARRMCF        LL_LPTIM_ClearFlag_ARRM
   * @param  LPTIMx Low-Power Timer instance
   * @retval None
   */
-__STATIC_INLINE void LL_LPTIM_ClearFLAG_ARRM(LPTIM_TypeDef *LPTIMx)
+__STATIC_INLINE void LL_LPTIM_ClearFlag_ARRM(LPTIM_TypeDef *LPTIMx)
 {
   SET_BIT(LPTIMx->ICR, LPTIM_ICR_ARRMCF);
 }
diff --git a/Inc/stm32f4xx_ll_rng.h b/Inc/stm32f4xx_ll_rng.h
index 151cb4a..21c7330 100644
--- a/Inc/stm32f4xx_ll_rng.h
+++ b/Inc/stm32f4xx_ll_rng.h
@@ -38,6 +38,7 @@
   */
 
 /* Private types -------------------------------------------------------------*/
+/* Private defines -----------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private constants ---------------------------------------------------------*/
 /* Private macros ------------------------------------------------------------*/
@@ -145,7 +146,7 @@
   * @param  RNGx RNG Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_RNG_IsEnabled(RNG_TypeDef *RNGx)
+__STATIC_INLINE uint32_t LL_RNG_IsEnabled(const RNG_TypeDef *RNGx)
 {
   return ((READ_BIT(RNGx->CR, RNG_CR_RNGEN) == (RNG_CR_RNGEN)) ? 1UL : 0UL);
 }
@@ -164,7 +165,7 @@
   * @param  RNGx RNG Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_DRDY(RNG_TypeDef *RNGx)
+__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_DRDY(const RNG_TypeDef *RNGx)
 {
   return ((READ_BIT(RNGx->SR, RNG_SR_DRDY) == (RNG_SR_DRDY)) ? 1UL : 0UL);
 }
@@ -175,7 +176,7 @@
   * @param  RNGx RNG Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_CECS(RNG_TypeDef *RNGx)
+__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_CECS(const RNG_TypeDef *RNGx)
 {
   return ((READ_BIT(RNGx->SR, RNG_SR_CECS) == (RNG_SR_CECS)) ? 1UL : 0UL);
 }
@@ -186,7 +187,7 @@
   * @param  RNGx RNG Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_SECS(RNG_TypeDef *RNGx)
+__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_SECS(const RNG_TypeDef *RNGx)
 {
   return ((READ_BIT(RNGx->SR, RNG_SR_SECS) == (RNG_SR_SECS)) ? 1UL : 0UL);
 }
@@ -197,7 +198,7 @@
   * @param  RNGx RNG Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_CEIS(RNG_TypeDef *RNGx)
+__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_CEIS(const RNG_TypeDef *RNGx)
 {
   return ((READ_BIT(RNGx->SR, RNG_SR_CEIS) == (RNG_SR_CEIS)) ? 1UL : 0UL);
 }
@@ -208,7 +209,7 @@
   * @param  RNGx RNG Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_SEIS(RNG_TypeDef *RNGx)
+__STATIC_INLINE uint32_t LL_RNG_IsActiveFlag_SEIS(const RNG_TypeDef *RNGx)
 {
   return ((READ_BIT(RNGx->SR, RNG_SR_SEIS) == (RNG_SR_SEIS)) ? 1UL : 0UL);
 }
@@ -274,7 +275,7 @@
   * @param  RNGx RNG Instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_RNG_IsEnabledIT(RNG_TypeDef *RNGx)
+__STATIC_INLINE uint32_t LL_RNG_IsEnabledIT(const RNG_TypeDef *RNGx)
 {
   return ((READ_BIT(RNGx->CR, RNG_CR_IE) == (RNG_CR_IE)) ? 1UL : 0UL);
 }
@@ -293,7 +294,7 @@
   * @param  RNGx RNG Instance
   * @retval Generated 32-bit random value
   */
-__STATIC_INLINE uint32_t LL_RNG_ReadRandData32(RNG_TypeDef *RNGx)
+__STATIC_INLINE uint32_t LL_RNG_ReadRandData32(const RNG_TypeDef *RNGx)
 {
   return (uint32_t)(READ_REG(RNGx->DR));
 }
@@ -306,7 +307,7 @@
 /** @defgroup RNG_LL_EF_Init Initialization and de-initialization functions
   * @{
   */
-ErrorStatus LL_RNG_DeInit(RNG_TypeDef *RNGx);
+ErrorStatus LL_RNG_DeInit(const RNG_TypeDef *RNGx);
 
 /**
   * @}
diff --git a/Inc/stm32f4xx_ll_rtc.h b/Inc/stm32f4xx_ll_rtc.h
index bceea23..74a0aee 100644
--- a/Inc/stm32f4xx_ll_rtc.h
+++ b/Inc/stm32f4xx_ll_rtc.h
@@ -6,7 +6,7 @@
   ******************************************************************************
   * @attention
   *
-  * Copyright (c) 2017 STMicroelectronics.
+  * Copyright (c) 2016 STMicroelectronics.
   * All rights reserved.
   *
   * This software is licensed under terms that can be found in the LICENSE file
diff --git a/Inc/stm32f4xx_ll_sdmmc.h b/Inc/stm32f4xx_ll_sdmmc.h
index a4092d0..1d3c652 100644
--- a/Inc/stm32f4xx_ll_sdmmc.h
+++ b/Inc/stm32f4xx_ll_sdmmc.h
@@ -300,10 +300,14 @@
 #define SDMMC_SINGLE_BUS_SUPPORT                      0x00010000U
 #define SDMMC_CARD_LOCKED                             0x02000000U
 
-#ifndef SDMMC_DATATIMEOUT
-#define SDMMC_DATATIMEOUT                             0xFFFFFFFFU
+#ifndef SDMMC_DATATIMEOUT /*Hardware Data Timeout (ms) */
+#define SDMMC_DATATIMEOUT                  ((uint32_t)0xFFFFFFFFU)
 #endif /* SDMMC_DATATIMEOUT */
 
+#ifndef SDMMC_SWDATATIMEOUT /*Software Data Timeout (ms) */
+#define SDMMC_SWDATATIMEOUT                SDMMC_DATATIMEOUT
+#endif /* SDMMC_SWDATATIMEOUT */
+
 #define SDMMC_0TO7BITS                                0x000000FFU
 #define SDMMC_8TO15BITS                               0x0000FF00U
 #define SDMMC_16TO23BITS                              0x00FF0000U
diff --git a/Inc/stm32f4xx_ll_tim.h b/Inc/stm32f4xx_ll_tim.h
index a5cbe24..a11f561 100644
--- a/Inc/stm32f4xx_ll_tim.h
+++ b/Inc/stm32f4xx_ll_tim.h
@@ -562,10 +562,10 @@
 /** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode
   * @{
   */
-#define LL_TIM_COUNTERMODE_UP                  0x00000000U          /*!<Counter used as upcounter */
+#define LL_TIM_COUNTERMODE_UP                  0x00000000U          /*!< Counter used as upcounter */
 #define LL_TIM_COUNTERMODE_DOWN                TIM_CR1_DIR          /*!< Counter used as downcounter */
 #define LL_TIM_COUNTERMODE_CENTER_DOWN         TIM_CR1_CMS_0        /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels  are set only when the counter is counting down. */
-#define LL_TIM_COUNTERMODE_CENTER_UP           TIM_CR1_CMS_1        /*!<The counter counts up and down alternatively. Output compare interrupt flags of output channels  are set only when the counter is counting up */
+#define LL_TIM_COUNTERMODE_CENTER_UP           TIM_CR1_CMS_1        /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels  are set only when the counter is counting up */
 #define LL_TIM_COUNTERMODE_CENTER_UP_DOWN      TIM_CR1_CMS          /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels  are set only when the counter is counting up or down. */
 /**
   * @}
@@ -825,11 +825,11 @@
 #define LL_TIM_ETR_FILTER_FDIV2_N8             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fDTS/2, N=8 */
 #define LL_TIM_ETR_FILTER_FDIV4_N6             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1)                    /*!< fSAMPLING=fDTS/4, N=6 */
 #define LL_TIM_ETR_FILTER_FDIV4_N8             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/4, N=8 */
-#define LL_TIM_ETR_FILTER_FDIV8_N6             TIM_SMCR_ETF_3                                       /*!< fSAMPLING=fDTS/8, N=8 */
-#define LL_TIM_ETR_FILTER_FDIV8_N8             (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fDTS/16, N=5 */
-#define LL_TIM_ETR_FILTER_FDIV16_N5            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1)                    /*!< fSAMPLING=fDTS/16, N=6 */
-#define LL_TIM_ETR_FILTER_FDIV16_N6            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/16, N=8 */
-#define LL_TIM_ETR_FILTER_FDIV16_N8            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2)                    /*!< fSAMPLING=fDTS/16, N=5 */
+#define LL_TIM_ETR_FILTER_FDIV8_N6             TIM_SMCR_ETF_3                                       /*!< fSAMPLING=fDTS/8, N=6 */
+#define LL_TIM_ETR_FILTER_FDIV8_N8             (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fDTS/16, N=8 */
+#define LL_TIM_ETR_FILTER_FDIV16_N5            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1)                    /*!< fSAMPLING=fDTS/16, N=5 */
+#define LL_TIM_ETR_FILTER_FDIV16_N6            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/16, N=6 */
+#define LL_TIM_ETR_FILTER_FDIV16_N8            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2)                    /*!< fSAMPLING=fDTS/16, N=8 */
 #define LL_TIM_ETR_FILTER_FDIV32_N5            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/32, N=5 */
 #define LL_TIM_ETR_FILTER_FDIV32_N6            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1)   /*!< fSAMPLING=fDTS/32, N=6 */
 #define LL_TIM_ETR_FILTER_FDIV32_N8            TIM_SMCR_ETF                                         /*!< fSAMPLING=fDTS/32, N=8 */
@@ -975,6 +975,7 @@
 
 #endif /* LPTIM_OR_TIM1_ITR2_RMP &&  LPTIM_OR_TIM5_ITR1_RMP && LPTIM_OR_TIM9_ITR1_RMP */
 
+
 /**
   * @}
   */
@@ -1007,10 +1008,6 @@
   * @}
   */
 
-/** @defgroup TIM_LL_EM_Exported_Macros Exported_Macros
-  * @{
-  */
-
 /**
   * @brief  HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested dead time duration.
   * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120);
@@ -1102,11 +1099,6 @@
   * @}
   */
 
-
-/**
-  * @}
-  */
-
 /* Exported functions --------------------------------------------------------*/
 /** @defgroup TIM_LL_Exported_Functions TIM Exported Functions
   * @{
@@ -1525,6 +1517,17 @@
 }
 
 /**
+  * @brief  Indicates whether the capture/compare control bits (CCxE, CCxNE and OCxM) preload is enabled.
+  * @rmtoll CR2          CCPC          LL_TIM_CC_IsEnabledPreload
+  * @param  TIMx Timer instance
+  * @retval State of bit (1 or 0).
+  */
+__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledPreload(const TIM_TypeDef *TIMx)
+{
+  return ((READ_BIT(TIMx->CR2, TIM_CR2_CCPC) == (TIM_CR2_CCPC)) ? 1UL : 0UL);
+}
+
+/**
   * @brief  Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM).
   * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
   *       whether or not a timer instance is able to generate a commutation event.
@@ -1656,7 +1659,7 @@
   *         @arg @ref LL_TIM_CHANNEL_CH4
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(TIM_TypeDef *TIMx, uint32_t Channels)
+__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(const TIM_TypeDef *TIMx, uint32_t Channels)
 {
   return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL);
 }
@@ -1941,7 +1944,7 @@
   *         @arg @ref LL_TIM_CHANNEL_CH4
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel)
+__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(const TIM_TypeDef *TIMx, uint32_t Channel)
 {
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
@@ -2005,7 +2008,7 @@
   *         @arg @ref LL_TIM_CHANNEL_CH4
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel)
+__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(const TIM_TypeDef *TIMx, uint32_t Channel)
 {
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
@@ -2078,7 +2081,7 @@
   *         @arg @ref LL_TIM_CHANNEL_CH4
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel)
+__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(const TIM_TypeDef *TIMx, uint32_t Channel)
 {
   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
@@ -2553,7 +2556,7 @@
   * @param  TIMx Timer instance
   * @retval State of bit (1 or 0).
   */
-__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(TIM_TypeDef *TIMx)
+__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(const TIM_TypeDef *TIMx)
 {
   return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL);
 }
@@ -4054,7 +4057,7 @@
   * @{
   */
 
-ErrorStatus LL_TIM_DeInit(TIM_TypeDef *TIMx);
+ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx);
 void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct);
 ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct);
 void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
diff --git a/Inc/stm32f4xx_ll_usart.h b/Inc/stm32f4xx_ll_usart.h
index 14b9cb6..ed83b6c 100644
--- a/Inc/stm32f4xx_ll_usart.h
+++ b/Inc/stm32f4xx_ll_usart.h
@@ -345,7 +345,7 @@
   * @}
   */
 
-/** @defgroup USART_LL_EM_Exported_Macros_Helper Exported_Macros_Helper
+/** @defgroup USART_LL_EM_Exported_Macros_Helper Exported Macros Helper
   * @{
   */
 
@@ -632,7 +632,7 @@
 
 /**
   * @brief  Configure if Clock pulse of the last data bit is output to the SCLK pin or not
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          LBCL          LL_USART_SetLastClkPulseOutput
   * @param  USARTx USART Instance
@@ -649,7 +649,7 @@
 /**
   * @brief  Retrieve Clock pulse of the last data bit output configuration
   *         (Last bit Clock pulse output to the SCLK pin or not)
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          LBCL          LL_USART_GetLastClkPulseOutput
   * @param  USARTx USART Instance
@@ -664,7 +664,7 @@
 
 /**
   * @brief  Select the phase of the clock output on the SCLK pin in synchronous mode
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          CPHA          LL_USART_SetClockPhase
   * @param  USARTx USART Instance
@@ -680,7 +680,7 @@
 
 /**
   * @brief  Return phase of the clock output on the SCLK pin in synchronous mode
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          CPHA          LL_USART_GetClockPhase
   * @param  USARTx USART Instance
@@ -695,7 +695,7 @@
 
 /**
   * @brief  Select the polarity of the clock output on the SCLK pin in synchronous mode
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          CPOL          LL_USART_SetClockPolarity
   * @param  USARTx USART Instance
@@ -711,7 +711,7 @@
 
 /**
   * @brief  Return polarity of the clock output on the SCLK pin in synchronous mode
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          CPOL          LL_USART_GetClockPolarity
   * @param  USARTx USART Instance
@@ -726,7 +726,7 @@
 
 /**
   * @brief  Configure Clock signal format (Phase Polarity and choice about output of last bit clock pulse)
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @note   Call of this function is equivalent to following function call sequence :
   *         - Clock Phase configuration using @ref LL_USART_SetClockPhase() function
@@ -754,7 +754,7 @@
 
 /**
   * @brief  Enable Clock output on SCLK pin
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          CLKEN         LL_USART_EnableSCLKOutput
   * @param  USARTx USART Instance
@@ -767,7 +767,7 @@
 
 /**
   * @brief  Disable Clock output on SCLK pin
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          CLKEN         LL_USART_DisableSCLKOutput
   * @param  USARTx USART Instance
@@ -780,7 +780,7 @@
 
 /**
   * @brief  Indicate if Clock output on SCLK pin is enabled
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @rmtoll CR2          CLKEN         LL_USART_IsEnabledSCLKOutput
   * @param  USARTx USART Instance
@@ -882,7 +882,7 @@
 
 /**
   * @brief  Enable RTS HW Flow Control
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          RTSE          LL_USART_EnableRTSHWFlowCtrl
   * @param  USARTx USART Instance
@@ -895,7 +895,7 @@
 
 /**
   * @brief  Disable RTS HW Flow Control
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          RTSE          LL_USART_DisableRTSHWFlowCtrl
   * @param  USARTx USART Instance
@@ -908,7 +908,7 @@
 
 /**
   * @brief  Enable CTS HW Flow Control
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          CTSE          LL_USART_EnableCTSHWFlowCtrl
   * @param  USARTx USART Instance
@@ -921,7 +921,7 @@
 
 /**
   * @brief  Disable CTS HW Flow Control
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          CTSE          LL_USART_DisableCTSHWFlowCtrl
   * @param  USARTx USART Instance
@@ -934,7 +934,7 @@
 
 /**
   * @brief  Configure HW Flow Control mode (both CTS and RTS)
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          RTSE          LL_USART_SetHWFlowCtrl\n
   *         CR3          CTSE          LL_USART_SetHWFlowCtrl
@@ -953,7 +953,7 @@
 
 /**
   * @brief  Return HW Flow Control configuration (both CTS and RTS)
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          RTSE          LL_USART_GetHWFlowCtrl\n
   *         CR3          CTSE          LL_USART_GetHWFlowCtrl
@@ -1077,7 +1077,7 @@
 
 /**
   * @brief  Enable IrDA mode
-  * @note   Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
   *         IrDA feature is supported by the USARTx instance.
   * @rmtoll CR3          IREN          LL_USART_EnableIrda
   * @param  USARTx USART Instance
@@ -1090,7 +1090,7 @@
 
 /**
   * @brief  Disable IrDA mode
-  * @note   Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
   *         IrDA feature is supported by the USARTx instance.
   * @rmtoll CR3          IREN          LL_USART_DisableIrda
   * @param  USARTx USART Instance
@@ -1103,7 +1103,7 @@
 
 /**
   * @brief  Indicate if IrDA mode is enabled
-  * @note   Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
   *         IrDA feature is supported by the USARTx instance.
   * @rmtoll CR3          IREN          LL_USART_IsEnabledIrda
   * @param  USARTx USART Instance
@@ -1116,7 +1116,7 @@
 
 /**
   * @brief  Configure IrDA Power Mode (Normal or Low Power)
-  * @note   Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
   *         IrDA feature is supported by the USARTx instance.
   * @rmtoll CR3          IRLP          LL_USART_SetIrdaPowerMode
   * @param  USARTx USART Instance
@@ -1132,7 +1132,7 @@
 
 /**
   * @brief  Retrieve IrDA Power Mode configuration (Normal or Low Power)
-  * @note   Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
   *         IrDA feature is supported by the USARTx instance.
   * @rmtoll CR3          IRLP          LL_USART_GetIrdaPowerMode
   * @param  USARTx USART Instance
@@ -1148,7 +1148,7 @@
 /**
   * @brief  Set Irda prescaler value, used for dividing the USART clock source
   *         to achieve the Irda Low Power frequency (8 bits value)
-  * @note   Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
   *         IrDA feature is supported by the USARTx instance.
   * @rmtoll GTPR         PSC           LL_USART_SetIrdaPrescaler
   * @param  USARTx USART Instance
@@ -1163,7 +1163,7 @@
 /**
   * @brief  Return Irda prescaler value, used for dividing the USART clock source
   *         to achieve the Irda Low Power frequency (8 bits value)
-  * @note   Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
   *         IrDA feature is supported by the USARTx instance.
   * @rmtoll GTPR         PSC           LL_USART_GetIrdaPrescaler
   * @param  USARTx USART Instance
@@ -1184,7 +1184,7 @@
 
 /**
   * @brief  Enable Smartcard NACK transmission
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll CR3          NACK          LL_USART_EnableSmartcardNACK
   * @param  USARTx USART Instance
@@ -1197,7 +1197,7 @@
 
 /**
   * @brief  Disable Smartcard NACK transmission
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll CR3          NACK          LL_USART_DisableSmartcardNACK
   * @param  USARTx USART Instance
@@ -1210,7 +1210,7 @@
 
 /**
   * @brief  Indicate if Smartcard NACK transmission is enabled
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll CR3          NACK          LL_USART_IsEnabledSmartcardNACK
   * @param  USARTx USART Instance
@@ -1223,7 +1223,7 @@
 
 /**
   * @brief  Enable Smartcard mode
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll CR3          SCEN          LL_USART_EnableSmartcard
   * @param  USARTx USART Instance
@@ -1236,7 +1236,7 @@
 
 /**
   * @brief  Disable Smartcard mode
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll CR3          SCEN          LL_USART_DisableSmartcard
   * @param  USARTx USART Instance
@@ -1249,7 +1249,7 @@
 
 /**
   * @brief  Indicate if Smartcard mode is enabled
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll CR3          SCEN          LL_USART_IsEnabledSmartcard
   * @param  USARTx USART Instance
@@ -1263,7 +1263,7 @@
 /**
   * @brief  Set Smartcard prescaler value, used for dividing the USART clock
   *         source to provide the SMARTCARD Clock (5 bits value)
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll GTPR         PSC           LL_USART_SetSmartcardPrescaler
   * @param  USARTx USART Instance
@@ -1278,7 +1278,7 @@
 /**
   * @brief  Return Smartcard prescaler value, used for dividing the USART clock
   *         source to provide the SMARTCARD Clock (5 bits value)
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll GTPR         PSC           LL_USART_GetSmartcardPrescaler
   * @param  USARTx USART Instance
@@ -1292,7 +1292,7 @@
 /**
   * @brief  Set Smartcard Guard time value, expressed in nb of baud clocks periods
   *         (GT[7:0] bits : Guard time value)
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll GTPR         GT            LL_USART_SetSmartcardGuardTime
   * @param  USARTx USART Instance
@@ -1307,7 +1307,7 @@
 /**
   * @brief  Return Smartcard Guard time value, expressed in nb of baud clocks periods
   *         (GT[7:0] bits : Guard time value)
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @rmtoll GTPR         GT            LL_USART_GetSmartcardGuardTime
   * @param  USARTx USART Instance
@@ -1328,7 +1328,7 @@
 
 /**
   * @brief  Enable Single Wire Half-Duplex mode
-  * @note   Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not
   *         Half-Duplex mode is supported by the USARTx instance.
   * @rmtoll CR3          HDSEL         LL_USART_EnableHalfDuplex
   * @param  USARTx USART Instance
@@ -1341,7 +1341,7 @@
 
 /**
   * @brief  Disable Single Wire Half-Duplex mode
-  * @note   Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not
   *         Half-Duplex mode is supported by the USARTx instance.
   * @rmtoll CR3          HDSEL         LL_USART_DisableHalfDuplex
   * @param  USARTx USART Instance
@@ -1354,7 +1354,7 @@
 
 /**
   * @brief  Indicate if Single Wire Half-Duplex mode is enabled
-  * @note   Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not
   *         Half-Duplex mode is supported by the USARTx instance.
   * @rmtoll CR3          HDSEL         LL_USART_IsEnabledHalfDuplex
   * @param  USARTx USART Instance
@@ -1375,7 +1375,7 @@
 
 /**
   * @brief  Set LIN Break Detection Length
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll CR2          LBDL          LL_USART_SetLINBrkDetectionLen
   * @param  USARTx USART Instance
@@ -1391,7 +1391,7 @@
 
 /**
   * @brief  Return LIN Break Detection Length
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll CR2          LBDL          LL_USART_GetLINBrkDetectionLen
   * @param  USARTx USART Instance
@@ -1406,7 +1406,7 @@
 
 /**
   * @brief  Enable LIN mode
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll CR2          LINEN         LL_USART_EnableLIN
   * @param  USARTx USART Instance
@@ -1419,7 +1419,7 @@
 
 /**
   * @brief  Disable LIN mode
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll CR2          LINEN         LL_USART_DisableLIN
   * @param  USARTx USART Instance
@@ -1432,7 +1432,7 @@
 
 /**
   * @brief  Indicate if LIN mode is enabled
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll CR2          LINEN         LL_USART_IsEnabledLIN
   * @param  USARTx USART Instance
@@ -1493,7 +1493,7 @@
   *           - IREN bit in the USART_CR3 register,
   *           - HDSEL bit in the USART_CR3 register.
   *         This function also sets the USART in Synchronous mode.
-  * @note   Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not
   *         Synchronous mode is supported by the USARTx instance.
   * @note   Call of this function is equivalent to following function call sequence :
   *         - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function
@@ -1531,7 +1531,7 @@
   *           - IREN bit in the USART_CR3 register,
   *           - HDSEL bit in the USART_CR3 register.
   *         This function also set the UART/USART in LIN mode.
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @note   Call of this function is equivalent to following function call sequence :
   *         - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function
@@ -1571,7 +1571,7 @@
   *           - SCEN bit in the USART_CR3 register,
   *           - IREN bit in the USART_CR3 register,
   *         This function also sets the UART/USART in Half Duplex mode.
-  * @note   Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not
   *         Half-Duplex mode is supported by the USARTx instance.
   * @note   Call of this function is equivalent to following function call sequence :
   *         - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function
@@ -1610,7 +1610,7 @@
   *         This function also configures Stop bits to 1.5 bits and
   *         sets the USART in Smartcard mode (SCEN bit).
   *         Clock Output is also enabled (CLKEN).
-  * @note   Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not
   *         Smartcard feature is supported by the USARTx instance.
   * @note   Call of this function is equivalent to following function call sequence :
   *         - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function
@@ -1652,7 +1652,7 @@
   *           - SCEN bit in the USART_CR3 register,
   *           - HDSEL bit in the USART_CR3 register.
   *         This function also sets the UART/USART in IRDA mode (IREN bit).
-  * @note   Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not
   *         IrDA feature is supported by the USARTx instance.
   * @note   Call of this function is equivalent to following function call sequence :
   *         - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function
@@ -1818,7 +1818,7 @@
 
 /**
   * @brief  Check if the USART LIN Break Detection Flag is set or not
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll SR           LBD           LL_USART_IsActiveFlag_LBD
   * @param  USARTx USART Instance
@@ -1831,7 +1831,7 @@
 
 /**
   * @brief  Check if the USART CTS Flag is set or not
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll SR           CTS           LL_USART_IsActiveFlag_nCTS
   * @param  USARTx USART Instance
@@ -1983,7 +1983,7 @@
 
 /**
   * @brief  Clear LIN Break Detection Flag
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll SR           LBD           LL_USART_ClearFlag_LBD
   * @param  USARTx USART Instance
@@ -1996,7 +1996,7 @@
 
 /**
   * @brief  Clear CTS Interrupt Flag
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll SR           CTS           LL_USART_ClearFlag_nCTS
   * @param  USARTx USART Instance
@@ -2072,7 +2072,7 @@
 
 /**
   * @brief  Enable LIN Break Detection Interrupt
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll CR2          LBDIE         LL_USART_EnableIT_LBD
   * @param  USARTx USART Instance
@@ -2100,7 +2100,7 @@
 
 /**
   * @brief  Enable CTS Interrupt
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          CTSIE         LL_USART_EnableIT_CTS
   * @param  USARTx USART Instance
@@ -2168,7 +2168,7 @@
 
 /**
   * @brief  Disable LIN Break Detection Interrupt
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll CR2          LBDIE         LL_USART_DisableIT_LBD
   * @param  USARTx USART Instance
@@ -2196,7 +2196,7 @@
 
 /**
   * @brief  Disable CTS Interrupt
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          CTSIE         LL_USART_DisableIT_CTS
   * @param  USARTx USART Instance
@@ -2264,7 +2264,7 @@
 
 /**
   * @brief  Check if the USART LIN Break Detection Interrupt is enabled or disabled.
-  * @note   Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not
   *         LIN feature is supported by the USARTx instance.
   * @rmtoll CR2          LBDIE         LL_USART_IsEnabledIT_LBD
   * @param  USARTx USART Instance
@@ -2288,7 +2288,7 @@
 
 /**
   * @brief  Check if the USART CTS Interrupt is enabled or disabled.
-  * @note   Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
+  * @note   Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not
   *         Hardware Flow control feature is supported by the USARTx instance.
   * @rmtoll CR3          CTSIE         LL_USART_IsEnabledIT_CTS
   * @param  USARTx USART Instance
diff --git a/Inc/stm32f4xx_ll_usb.h b/Inc/stm32f4xx_ll_usb.h
index a7114cd..caabcf3 100644
--- a/Inc/stm32f4xx_ll_usb.h
+++ b/Inc/stm32f4xx_ll_usb.h
@@ -37,18 +37,24 @@
   */
 
 /* Exported types ------------------------------------------------------------*/
+#ifndef HAL_USB_TIMEOUT
+#define HAL_USB_TIMEOUT                                       0xF000000U
+#endif /* define HAL_USB_TIMEOUT */
+
+#ifndef HAL_USB_CURRENT_MODE_MAX_DELAY_MS
+#define HAL_USB_CURRENT_MODE_MAX_DELAY_MS                           200U
+#endif /* define HAL_USB_CURRENT_MODE_MAX_DELAY_MS */
 
 /**
   * @brief  USB Mode definition
   */
-#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
 
 typedef enum
 {
-  USB_DEVICE_MODE  = 0,
-  USB_HOST_MODE    = 1,
-  USB_DRD_MODE     = 2
-} USB_OTG_ModeTypeDef;
+  USB_DEVICE_MODE = 0,
+  USB_HOST_MODE   = 1,
+  USB_DRD_MODE    = 2
+} USB_ModeTypeDef;
 
 /**
   * @brief  URB States definition
@@ -61,7 +67,7 @@
   URB_NYET,
   URB_ERROR,
   URB_STALL
-} USB_OTG_URBStateTypeDef;
+} USB_URBStateTypeDef;
 
 /**
   * @brief  Host channel States  definition
@@ -71,13 +77,14 @@
   HC_IDLE = 0,
   HC_XFRC,
   HC_HALTED,
+  HC_ACK,
   HC_NAK,
   HC_NYET,
   HC_STALL,
   HC_XACTERR,
   HC_BBLERR,
   HC_DATATGLERR
-} USB_OTG_HCStateTypeDef;
+} USB_HCStateTypeDef;
 
 
 /**
@@ -85,40 +92,41 @@
   */
 typedef struct
 {
-  uint32_t dev_endpoints;           /*!< Device Endpoints number.
+  uint8_t dev_endpoints;            /*!< Device Endpoints number.
                                          This parameter depends on the used USB core.
                                          This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
 
-  uint32_t Host_channels;           /*!< Host Channels number.
+  uint8_t Host_channels;            /*!< Host Channels number.
                                          This parameter Depends on the used USB core.
                                          This parameter must be a number between Min_Data = 1 and Max_Data = 15 */
 
-  uint32_t speed;                   /*!< USB Core speed.
-                                         This parameter can be any value of @ref PCD_Speed/HCD_Speed
-                                                                                 (HCD_SPEED_xxx, HCD_SPEED_xxx) */
+  uint8_t dma_enable;              /*!< USB DMA state.
+                                         If DMA is not supported this parameter shall be set by default to zero */
 
-  uint32_t dma_enable;              /*!< Enable or disable of the USB embedded DMA used only for OTG HS.        */
+  uint8_t speed;                   /*!< USB Core speed.
+                                        This parameter can be any value of @ref PCD_Speed/HCD_Speed
+                                                                                (HCD_SPEED_xxx, HCD_SPEED_xxx) */
 
-  uint32_t ep0_mps;                 /*!< Set the Endpoint 0 Max Packet size.                                    */
+  uint8_t ep0_mps;                 /*!< Set the Endpoint 0 Max Packet size.                                    */
 
-  uint32_t phy_itface;              /*!< Select the used PHY interface.
-                                         This parameter can be any value of @ref PCD_PHY_Module/HCD_PHY_Module  */
+  uint8_t phy_itface;              /*!< Select the used PHY interface.
+                                        This parameter can be any value of @ref PCD_PHY_Module/HCD_PHY_Module  */
 
-  uint32_t Sof_enable;              /*!< Enable or disable the output of the SOF signal.                        */
+  uint8_t Sof_enable;              /*!< Enable or disable the output of the SOF signal.                        */
 
-  uint32_t low_power_enable;        /*!< Enable or disable the low power mode.                                  */
+  uint8_t low_power_enable;        /*!< Enable or disable the low Power Mode.                                  */
 
-  uint32_t lpm_enable;              /*!< Enable or disable Link Power Management.                               */
+  uint8_t lpm_enable;              /*!< Enable or disable Link Power Management.                               */
 
-  uint32_t battery_charging_enable; /*!< Enable or disable Battery charging.                                    */
+  uint8_t battery_charging_enable; /*!< Enable or disable Battery charging.                                    */
 
-  uint32_t vbus_sensing_enable;     /*!< Enable or disable the VBUS Sensing feature.                            */
+  uint8_t vbus_sensing_enable;     /*!< Enable or disable the VBUS Sensing feature.                            */
 
-  uint32_t use_dedicated_ep1;       /*!< Enable or disable the use of the dedicated EP1 interrupt.              */
+  uint8_t use_dedicated_ep1;       /*!< Enable or disable the use of the dedicated EP1 interrupt.              */
 
-  uint32_t use_external_vbus;       /*!< Enable or disable the use of the external VBUS.                        */
+  uint8_t use_external_vbus;       /*!< Enable or disable the use of the external VBUS.                        */
 
-} USB_OTG_CfgTypeDef;
+} USB_CfgTypeDef;
 
 typedef struct
 {
@@ -140,25 +148,25 @@
   uint8_t   data_pid_start;       /*!< Initial data PID
                                        This parameter must be a number between Min_Data = 0 and Max_Data = 1    */
 
+  uint32_t  maxpacket;            /*!< Endpoint Max packet size
+                                       This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */
+
+  uint8_t   *xfer_buff;           /*!< Pointer to transfer buffer                                               */
+
+  uint32_t  xfer_len;             /*!< Current transfer length                                                  */
+
+  uint32_t  xfer_count;           /*!< Partial transfer length in case of multi packet transfer                 */
+
   uint8_t   even_odd_frame;       /*!< IFrame parity
                                        This parameter must be a number between Min_Data = 0 and Max_Data = 1    */
 
   uint16_t  tx_fifo_num;          /*!< Transmission FIFO number
                                        This parameter must be a number between Min_Data = 1 and Max_Data = 15   */
 
-  uint32_t  maxpacket;            /*!< Endpoint Max packet size
-                                       This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */
-
-  uint8_t   *xfer_buff;           /*!< Pointer to transfer buffer                                               */
-
   uint32_t  dma_addr;             /*!< 32 bits aligned transfer buffer address                                  */
 
-  uint32_t  xfer_len;             /*!< Current transfer length                                                  */
-
   uint32_t  xfer_size;            /*!< requested transfer size                                                  */
-
-  uint32_t  xfer_count;           /*!< Partial transfer length in case of multi packet transfer                 */
-} USB_OTG_EPTypeDef;
+} USB_EPTypeDef;
 
 typedef struct
 {
@@ -179,8 +187,13 @@
                                                                              (HCD_DEVICE_SPEED_xxx)             */
 
   uint8_t   do_ping;            /*!< Enable or disable the use of the PING protocol for HS mode.                */
+  uint8_t   do_ssplit;          /*!< Enable start split transaction in HS mode.                                 */
+  uint8_t   do_csplit;          /*!< Enable complete split transaction in HS mode.                              */
+  uint8_t   ep_ss_schedule;     /*!< Enable periodic endpoint start split schedule .                            */
+  uint32_t  iso_splt_xactPos;   /*!< iso split transfer transaction position.                                   */
 
-  uint8_t   process_ping;       /*!< Execute the PING protocol for HS mode.                                     */
+  uint8_t   hub_port_nbr;       /*!< USB HUB port number                                                        */
+  uint8_t   hub_addr;           /*!< USB HUB address                                                            */
 
   uint8_t   ep_type;            /*!< Endpoint Type.
                                      This parameter can be any value of @ref USB_LL_EP_Type                     */
@@ -193,7 +206,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.                                                   */
 
@@ -208,15 +221,21 @@
   uint32_t  dma_addr;           /*!< 32 bits aligned transfer buffer address.                                   */
 
   uint32_t  ErrCnt;             /*!< Host channel error count.                                                  */
+  uint32_t  NyetErrCnt;         /*!< Complete Split NYET Host channel error count.                              */
 
-  USB_OTG_URBStateTypeDef urb_state;  /*!< URB state.
-                                            This parameter can be any value of @ref USB_OTG_URBStateTypeDef */
+  USB_URBStateTypeDef urb_state;  /*!< URB state.
+                                       This parameter can be any value of @ref USB_URBStateTypeDef              */
 
-  USB_OTG_HCStateTypeDef state;       /*!< Host Channel state.
-                                            This parameter can be any value of @ref USB_OTG_HCStateTypeDef  */
-} USB_OTG_HCTypeDef;
-#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
+  USB_HCStateTypeDef state;       /*!< Host Channel state.
+                                       This parameter can be any value of @ref USB_HCStateTypeDef               */
+} USB_HCTypeDef;
 
+typedef USB_ModeTypeDef     USB_OTG_ModeTypeDef;
+typedef USB_CfgTypeDef      USB_OTG_CfgTypeDef;
+typedef USB_EPTypeDef       USB_OTG_EPTypeDef;
+typedef USB_URBStateTypeDef USB_OTG_URBStateTypeDef;
+typedef USB_HCStateTypeDef  USB_OTG_HCStateTypeDef;
+typedef USB_HCTypeDef       USB_OTG_HCTypeDef;
 
 /* Exported constants --------------------------------------------------------*/
 
@@ -244,18 +263,6 @@
   * @}
   */
 
-/** @defgroup USB_LL Device Speed
-  * @{
-  */
-#define USBD_HS_SPEED                          0U
-#define USBD_HSINFS_SPEED                      1U
-#define USBH_HS_SPEED                          0U
-#define USBD_FS_SPEED                          2U
-#define USBH_FSLS_SPEED                        1U
-/**
-  * @}
-  */
-
 /** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed
   * @{
   */
@@ -319,7 +326,7 @@
 /**
   * @}
   */
-
+#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 /** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS
   * @{
   */
@@ -331,16 +338,6 @@
   * @}
   */
 
-/** @defgroup USB_LL_EP_Speed USB Low Layer EP Speed
-  * @{
-  */
-#define EP_SPEED_LOW                           0U
-#define EP_SPEED_FULL                          1U
-#define EP_SPEED_HIGH                          2U
-/**
-  * @}
-  */
-
 /** @defgroup USB_LL_EP_Type USB Low Layer EP Type
   * @{
   */
@@ -353,6 +350,40 @@
   * @}
   */
 
+/** @defgroup USB_LL_EP_Speed USB Low Layer EP Speed
+  * @{
+  */
+#define EP_SPEED_LOW                           0U
+#define EP_SPEED_FULL                          1U
+#define EP_SPEED_HIGH                          2U
+/**
+  * @}
+  */
+
+/** @defgroup USB_LL_CH_PID_Type USB Low Layer Channel PID Type
+  * @{
+  */
+#define HC_PID_DATA0                           0U
+#define HC_PID_DATA2                           1U
+#define HC_PID_DATA1                           2U
+#define HC_PID_SETUP                           3U
+/**
+  * @}
+  */
+
+/** @defgroup USB_LL Device Speed
+  * @{
+  */
+#define USBD_HS_SPEED                          0U
+#define USBD_HSINFS_SPEED                      1U
+#define USBH_HS_SPEED                          0U
+#define USBD_FS_SPEED                          2U
+#define USBH_FSLS_SPEED                        1U
+/**
+  * @}
+  */
+
+#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
 /** @defgroup USB_LL_STS_Defines USB Low Layer STS Defines
   * @{
   */
@@ -375,6 +406,16 @@
   * @}
   */
 
+/** @defgroup USB_LL_HFIR_Defines USB Low Layer frame interval Defines
+  * @{
+  */
+#define HFIR_6_MHZ                          6000U
+#define HFIR_60_MHZ                        60000U
+#define HFIR_48_MHZ                        48000U
+/**
+  * @}
+  */
+
 /** @defgroup USB_LL_HPRT0_PRTSPD_SPEED_Defines USB Low Layer HPRT0 PRTSPD Speed Defines
   * @{
   */
@@ -390,16 +431,21 @@
 #define HCCHAR_BULK                            2U
 #define HCCHAR_INTR                            3U
 
-#define HC_PID_DATA0                           0U
-#define HC_PID_DATA2                           1U
-#define HC_PID_DATA1                           2U
-#define HC_PID_SETUP                           3U
-
 #define GRXSTS_PKTSTS_IN                       2U
 #define GRXSTS_PKTSTS_IN_XFER_COMP             3U
 #define GRXSTS_PKTSTS_DATA_TOGGLE_ERR          5U
 #define GRXSTS_PKTSTS_CH_HALTED                7U
 
+#define CLEAR_INTERRUPT_MASK          0xFFFFFFFFU
+
+#define HC_MAX_PKT_CNT                       256U
+#define ISO_SPLT_MPS                         188U
+
+#define HCSPLT_BEGIN                           1U
+#define HCSPLT_MIDDLE                          2U
+#define HCSPLT_END                             3U
+#define HCSPLT_FULL                            4U
+
 #define TEST_J                                 1U
 #define TEST_K                                 2U
 #define TEST_SE0_NAK                           3U
@@ -423,13 +469,9 @@
                                                         + USB_OTG_HOST_CHANNEL_BASE\
                                                         + ((i) * USB_OTG_HOST_CHANNEL_SIZE)))
 
-#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
 #define EP_ADDR_MSK                            0xFU
-
-#ifndef USE_USB_DOUBLE_BUFFER
-#define USE_USB_DOUBLE_BUFFER                  1U
-#endif /* USE_USB_DOUBLE_BUFFER */
+#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 /**
   * @}
   */
@@ -460,55 +502,55 @@
 HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx);
 HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed);
 HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_OTG_ModeTypeDef mode);
-HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed);
+HAL_StatusTypeDef USB_SetDevSpeed(const USB_OTG_GlobalTypeDef *USBx, uint8_t speed);
 HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx);
 HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num);
-HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
-HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
-HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
-HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
+HAL_StatusTypeDef USB_ActivateEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep);
+HAL_StatusTypeDef USB_DeactivateEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep);
+HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep);
+HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep);
 HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep, uint8_t dma);
-HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep, uint8_t dma);
-HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src,
+HAL_StatusTypeDef USB_WritePacket(const USB_OTG_GlobalTypeDef *USBx, uint8_t *src,
                                   uint8_t ch_ep_num, uint16_t len, uint8_t dma);
 
-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);
+void             *USB_ReadPacket(const USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len);
+HAL_StatusTypeDef USB_EPSetStall(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep);
+HAL_StatusTypeDef USB_EPClearStall(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep);
+HAL_StatusTypeDef USB_EPStopXfer(const USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep);
+HAL_StatusTypeDef USB_SetDevAddress(const USB_OTG_GlobalTypeDef *USBx, uint8_t address);
+HAL_StatusTypeDef USB_DevConnect(const USB_OTG_GlobalTypeDef *USBx);
+HAL_StatusTypeDef USB_DevDisconnect(const USB_OTG_GlobalTypeDef *USBx);
 HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx);
-HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx);
-HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t dma, uint8_t *psetup);
-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_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx);
-uint32_t          USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum);
-uint32_t          USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx);
-uint32_t          USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum);
+HAL_StatusTypeDef USB_ActivateSetup(const USB_OTG_GlobalTypeDef *USBx);
+HAL_StatusTypeDef USB_EP0_OutStart(const USB_OTG_GlobalTypeDef *USBx, uint8_t dma, const uint8_t *psetup);
+uint8_t           USB_GetDevSpeed(const USB_OTG_GlobalTypeDef *USBx);
+uint32_t          USB_GetMode(const USB_OTG_GlobalTypeDef *USBx);
+uint32_t          USB_ReadInterrupts(USB_OTG_GlobalTypeDef const *USBx);
+uint32_t          USB_ReadChInterrupts(const USB_OTG_GlobalTypeDef *USBx, uint8_t chnum);
+uint32_t          USB_ReadDevAllOutEpInterrupt(const USB_OTG_GlobalTypeDef *USBx);
+uint32_t          USB_ReadDevOutEPInterrupt(const USB_OTG_GlobalTypeDef *USBx, uint8_t epnum);
+uint32_t          USB_ReadDevAllInEpInterrupt(const USB_OTG_GlobalTypeDef *USBx);
+uint32_t          USB_ReadDevInEPInterrupt(const USB_OTG_GlobalTypeDef *USBx, uint8_t epnum);
 void              USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt);
 
 HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg);
-HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq);
-HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx);
-HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state);
-uint32_t          USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx);
-uint32_t          USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx);
+HAL_StatusTypeDef USB_InitFSLSPClkSel(const USB_OTG_GlobalTypeDef *USBx, uint8_t freq);
+HAL_StatusTypeDef USB_ResetPort(const USB_OTG_GlobalTypeDef *USBx);
+HAL_StatusTypeDef USB_DriveVbus(const USB_OTG_GlobalTypeDef *USBx, uint8_t state);
+uint32_t          USB_GetHostSpeed(USB_OTG_GlobalTypeDef const *USBx);
+uint32_t          USB_GetCurrentFrame(USB_OTG_GlobalTypeDef const *USBx);
 HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num,
                               uint8_t epnum, uint8_t dev_address, uint8_t speed,
                               uint8_t ep_type, uint16_t mps);
 HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx,
                                    USB_OTG_HCTypeDef *hc, uint8_t dma);
 
-uint32_t          USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx);
-HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num);
-HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num);
+uint32_t          USB_HC_ReadInterrupt(const USB_OTG_GlobalTypeDef *USBx);
+HAL_StatusTypeDef USB_HC_Halt(const USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num);
+HAL_StatusTypeDef USB_DoPing(const USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num);
 HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx);
-HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx);
-HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx);
+HAL_StatusTypeDef USB_ActivateRemoteWakeup(const USB_OTG_GlobalTypeDef *USBx);
+HAL_StatusTypeDef USB_DeActivateRemoteWakeup(const USB_OTG_GlobalTypeDef *USBx);
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
 /**
diff --git a/Release_Notes.html b/Release_Notes.html
index 215114f..997f338 100644
--- a/Release_Notes.html
+++ b/Release_Notes.html
@@ -1,11459 +1,4189 @@
-<!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"><title>Release Notes for STM32F4xx HAL Drivers</title></head>
-<body lang="EN-US" link="blue" vlink="blue">
-    <div class="WordSection1">
-      <div>
-        <p class="MsoNormal" style=""><span style="font-family: &quot;Arial&quot;,sans-serif;"><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 style="">
-                <td style="padding: 0in;" valign="top">
-                  <table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" cellspacing="0" width="900">
-                    <tbody>
-                      <tr style="">
-                        <td style="padding: 0in 5.4pt;" valign="top">
-                          <p class="MsoNormal" style=""><span style="font-size: 8pt; font-family: &quot;Arial&quot;,sans-serif; color: blue;"><a href="../../Release_Notes.html">Back to
-                                Release page</a></span><span style="font-size: 10pt;"><o:p></o:p></span></p>
-                        </td>
-                      </tr>
-                      <tr style="">
-                        <td style="padding: 1.5pt;">
-                          <h1 style="margin-bottom: 0.25in; text-align: center;" align="center"><span style="font-size: 20pt; font-family: &quot;Verdana&quot;,sans-serif; color: rgb(51, 102, 255);">Release
-
-
-
-                              Notes for STM32F4xx 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_i1044" 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; display: none;"><o:p>&nbsp;</o:p></span></p>
-                  <table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" width="900">
-                    <tbody>
-                      <tr style="">
-                        <td style="padding: 0in;" valign="top">
-                          <table class="MsoNormalTable" style="width: 846.25pt;" border="0" cellpadding="0" width="1128">
-                            <tbody>
-                              <tr style="">
-                                <td style="padding: 0in; width: 843.25pt;" valign="top" width="1124">
-                                  <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;"><font color="#ffffff"><a name="History"></a><span style="font-size: 12pt;">Update
-
-
-
-                                        History</span><span style=""><o:p></o:p></span></font></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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.8.1
-                                        / 24-June-2022</span></font></h3>
-                                  <blockquote>
-                                    <p><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main
-
-
-
-
-                                            Changes<br>
-                                          </span></u></b></p>
-                                  </blockquote>
-                                  <ul style="orphans: 2; text-align: start; widows: 2; word-spacing: 0px;" type="disc"><li><font face="Verdana" size="-1">General updates to fix HAL ETH defects and implementation enhancements.</font></li><li><p><font face="Verdana" size="-1"><strong>HAL</strong>
-                                          updates</font></p>
-                                      <font face="Verdana" size="-1"> </font>
-                                      
-                      <ul><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL ETH </strong>update</font></li><ul><li style="font-family: -apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,sans-serif; line-height: 1.4;">Remove useless assert_param(IS_ETH_MAC_ADDRESS0123(MacAddr)) from static function ETH_MACAddressConfig().</li><li style="font-family: -apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,sans-serif; line-height: 1.4;">Replace hard coded Rx buffer size (1000U) by macro ETH_RX_BUF_SIZE.</li><li style="font-family: -apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,sans-serif; line-height: 1.4;">Correct
-bit positions when getting MAC and DMA configurations and replace
-‘UnicastSlowProtocolPacketDetect’ by ‘UnicastPausePacketDetect’ in the
-MAC default configuration structure.</li><li style="font-family: -apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,sans-serif; line-height: 1.4;">Ensure a delay of 4 TX_CLK/RX_CLK cycles between two successive write operations to the same register.</li><li style="font-family: -apple-system,BlinkMacSystemFont,&quot;Segoe UI&quot;,Roboto,Ubuntu,&quot;Helvetica Neue&quot;,Helvetica,sans-serif; line-height: 1.4;">Disable DMA transmission in both HAL_ETH_Stop_IT() and HAL_ETH_Stop() APIs.<br><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;"></span></font></li></ul></ul></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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.8.0
-                                        / 11-February-2022</span></font></h3>
-                                  <blockquote>
-                                    <p><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main
-
-
-
-
-                                            Changes<br>
-                                          </span></u></b></p>
-                                  </blockquote>
-                                  <ul style="orphans: 2; text-align: start; widows: 2; word-spacing: 0px;" type="disc">
-                                    <li><font face="Verdana" size="-1">General updates to fix known defects and implementation enhancements.</font></li>
-                    <li><font face="Verdana" size="-1">All source files: update disclaimer to add reference to the new license agreement.<br>
-</font></li>
-<li><font face="Verdana" size="-1"><b>The following changes done on the HAL drivers require an update of the application code based on older HAL versions</b></font></li><ul><li><font face="Verdana" size="-1">Rework of HAL Ethernet driver to resolve problems and improve performance (<b>compatibility break</b>).&nbsp;</font></li><li><font face="Verdana" size="-1">A new HAL Ethernet driver has been redesigned with new APIs, to bypass limitations with previous HAL Ethernet driver version.</font></li><li><font face="Verdana" size="-1">The new HAL Ethernet driver is the
-recommended version. It is located as usual in
-Drivers/STM32F4xx_HAL_Driver/Src and Drivers/STM32F4xx_HAL_Driver/Inc
-folders.&nbsp;</font></li><ul><li><font face="Verdana" size="-1">It can be enabled through switch HAL_ETH_MODULE_ENABLED in stm32f4xx_hal_conf.h</font></li></ul><li><font face="Verdana" size="-1">The legacy HAL Ethernet driver is also
-present in the release in Drivers/STM32F4xx_HAL_Driver/Src/Legacy and
-Drivers/STM32F4xx_HAL_Driver/Inc/Legacy folders for software
-compatibility reasons.</font></li><ul><li><font face="Verdana" size="-1">Its usage is not recommended as
-deprecated. It can however be enabled through switch
-HAL_ETH_LEGACY_MODULE_ENABLED in stm32f4xx_hal_conf.h</font></li></ul></ul>
-                    <li><p><font face="Verdana" size="-1"><strong>HAL</strong>
-                                          updates</font></p>
-                                      <font face="Verdana" size="-1"> </font>
-                                      
-                      <ul>
-
-                                        <font face="Verdana" size="-1">
-                                        </font>
-                                        
-                        <li><font face="Verdana" size="-1"><strong>HAL ETH </strong>update </font>
-                                          <br><ul>
-                                            <li><font face="Verdana" size="-1">Entire receive process reworked.</font></li><li><font face="Verdana" size="-1">Resolve the problem of received data corruption.</font></li><li><font face="Verdana" size="-1">Implement transmission in interrupt mode.</font></li><li><font face="Verdana" size="-1">Handle one interrupt for multiple transmitted packets.</font></li><li><font face="Verdana" size="-1">Implement APIs to handle PTP feature.</font></li><li><font face="Verdana" size="-1">Implement APIs to handle Timestamp feature.</font></li><li><font face="Verdana" size="-1">Add support of receive buffer unavailable.</font></li>
-                            <li><font face="Verdana" size="-1">Update HAL_ETH_IRQHandler() to handle receive buffer unavailable.</font></li>
-
-                                          </ul></li>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL SMBUS</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">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.</font></li>
-                          <ul>
-                            <li><font face="Verdana" size="-1">Add flush on TX register.</font></li>
-                          </ul>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL TIM</span> update</font></li>
-                        <ul>
-<li><font face="Verdana" size="-1">__LL_TIM_CALC_PSC() macro update to round up the evaluate value when the fractional part of the division is greater than 0.5.</font></li>
-                        </ul>
-
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL LPTIM</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1"> Add check on PRIMASK register to prevent from enabling unwanted global interrupts within LPTIM_Disable() and LL_LPTIM_Disable()</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL UART</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Add const qualifier for read only pointers.</font></li>
-                          <li><font face="Verdana" size="-1">Improve header description of UART_WaitOnFlagUntilTimeout() function.</font></li>
-                          <li><font face="Verdana" size="-1">Add a check on the UART parity before enabling the parity error interruption.</font></li>
-                          <li><font face="Verdana" size="-1">Fix typo in UART_IT_TXE bit description.<br>
-</font></li>
-
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL IRDA </span>update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Improve header description of IRDA_WaitOnFlagUntilTimeout() function.</font></li>
-                          <li><font face="Verdana" size="-1">Add a check on the IRDA parity before enabling the parity error interrupt.</font></li>
-                          <li><font face="Verdana" size="-1">Add const qualifier for read only pointers.</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL SMARTCARD</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Improve header description of SMARTCARD_WaitOnFlagUntilTimeout() function</font></li>
-                          <li><font face="Verdana" size="-1">Add const qualifier for read only pointers.</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL NOR</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Apply adequate commands according to the command set field value</font></li>
-                          <li><font face="Verdana" size="-1">command set 1 for Micron JS28F512P33</font></li>
-                          <li><font face="Verdana" size="-1">command set 2 for Micron M29W128G and Cypress S29GL128P</font></li>
-                          <li><font face="Verdana" size="-1">Add new command operations:</font></li>
-                          <ul>
-                            <li><font face="Verdana" size="-1">NOR_CMD_READ_ARRAY</font></li>
-                            <li><font face="Verdana" size="-1">NOR_CMD_WORD_PROGRAM</font></li>
-                            <li><font face="Verdana" size="-1">NOR_CMD_BUFFERED_PROGRAM</font></li>
-                            <li><font face="Verdana" size="-1">NOR_CMD_CONFIRM</font></li>
-                            <li><font face="Verdana" size="-1">NOR_CMD_BLOCK_ERASE</font></li>
-                            <li><font face="Verdana" size="-1">NOR_CMD_BLOCK_UNLOCK</font></li>
-                            <li><font face="Verdana" size="-1">NOR_CMD_READ_STATUS_REG</font></li>
-                            <li><font face="Verdana" size="-1">NOR_CMD_CLEAR_STATUS_REG</font></li>
-                          </ul>
-                          <li><font face="Verdana" size="-1">Update some APIs in order to be compliant for memories with different command set, the updated APIs are:</font></li>
-                          <ul>
-                            <li><font face="Verdana" size="-1">HAL_NOR_Init()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_Read_ID()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_ReturnToReadMode()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_Read()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_Program()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_ReadBuffer()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_ProgramBuffer()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_Erase_Block()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_Erase_Chip()</font></li>
-                            <li><font face="Verdana" size="-1">HAL_NOR_GetStatus()</font></li>
-                          </ul>
-                          <li><font face="Verdana" size="-1">Align HAL_NOR_Init() API with core of the function when write operation is disabled to avoid HardFault.</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL SDMMC</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Take into account the voltage range in the CMD1 command.</font></li>
-                          <li><font face="Verdana" size="-1">Add new LL function to have correct response for MMC driver.</font></li>
-                          <li><font face="Verdana" size="-1">Update the driver to have all fields correctly initialized.</font></li>
-                          <li><font face="Verdana" size="-1">Add an internal variable to manage the power class and call it before to update speed of bus width.</font></li>
-                          <li><font face="Verdana" size="-1">Add new API to get the value of the Extended CSD register and populate the ExtCSD field of the MMC handle.</font></li>
-                          <li><font face="Verdana" size="-1">In HAL_MMC_InitCard(), call to SDIO_PowerState_ON() moved after
-__HAL_MMC_ENABLE() to ensure MMC clock is enabled before the call to
-HAL_Delay() from within SDIO_PowerState_ON().</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL DMA</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Manage the case of an invalid value of CallbackID passed to the HAL_DMA_RegisterCallback() API.</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL LTDC</span> update</font></li>
-                        <ul>
-<li><font face="Verdana" size="-1">Update HAL_LTDC_DeInit() to fix MCU Hang up during LCD turn OFF.</font></li>
-                        </ul>
-
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL I2C</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Update to fix issue detected due to low system frequency execution (HSI).</font></li>
-                          <li><font face="Verdana" size="-1">Declare an internal macro link to DMA macro to check remaining data: I2C_GET_DMA_REMAIN_DATA</font></li>
-                          <li><font face="Verdana" size="-1">Update HAL I2C Master Receive IT process to safe manage data N= 2 and N= 3.</font></li>
-                          <ul>
-                            <li><font face="Verdana" size="-1">Disable RxNE interrupt if nothing to do.</font></li>
-                          </ul>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL USART</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Improve header description of USART_WaitOnFlagUntilTimeout() function.</font></li>
-                          <li><font face="Verdana" size="-1">Add a check on the USART parity before enabling the parity error interrupt.</font></li>
-                          <li><font face="Verdana" size="-1">Add const qualifier for read only pointers.</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL/LL ADC</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Update LL_ADC_IsActiveFlag_MST_EOCS() API to get the appropriate flag.</font></li>
-                          <li><font face="Verdana" size="-1">Better performance by removing multiple volatile reads or writes in interrupt handler.</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL FMPI2C</span> update <br>
-                          </font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Update to handle errors in polling mode.</font></li>
-                          <ul>
-                            <li><font face="Verdana" size="-1">Rename I2C_IsAcknowledgeFailed() to I2C_IsErrorOccurred() and correctly manage when error occurs.</font></li>
-                          </ul>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL EXTI</span> update</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Update HAL_EXTI_GetConfigLine() API to fix wrong calculation of GPIOSel value.</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL QSPI</span> update</font></li>
-                        <ul>
-<li><font face="Verdana" size="-1">Update HAL_QSPI_Abort() and&nbsp;
-HAL_QSPI_Abort_IT() APIs to check on QSPI BUSY flag status before
-executing the abort procedure.</font></li>
-                        </ul>
-
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL/LL RTC</span> cleanup</font></li>
-                        <ul>
-                          <li><font face="Verdana" size="-1">Use bits definitions from CMSIS Device header file instead of hard-coded values.</font></li>
-                          <li><font face="Verdana" size="-1">Wrap comments to be 80-character long and correct typos.</font></li>
-                          <li><font face="Verdana" size="-1">Move constants RTC_IT_TAMP. from hal_rtc.h to hal_rtc_ex.h.</font></li>
-                          <li><font face="Verdana" size="-1">Gather all instructions related to exiting the "init" mode into new function RTC_ExitInitMode().</font></li>
-                          <li><font face="Verdana" size="-1">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.</font></li>
-                          <li><font face="Verdana" size="-1">Rework functions HAL_RTCEx_SetTamper() and HAL_RTCEx_SetTamper_IT() to:</font></li>
-                          <ul>
-                            <li><font face="Verdana" size="-1">Write in TAFCR register in one single access instead of two.</font></li>
-                            <li><font face="Verdana" size="-1">Avoid modifying user structure sTamper.</font></li>
-                          </ul>
-                          <li><font face="Verdana" size="-1">Remove functions LL_RTC_EnablePushPullMode() and LL_RTC_DisablePushPullMode() as related to non-supported features.</font></li>
-                          <li><font face="Verdana" size="-1">Remove any reference to non-supported features (e.g., LL_RTC_ISR_TAMP3F).</font></li>
-                          <li><font face="Verdana" size="-1">Remove
-useless conditional defines as corresponding features are supported by
-all part-numbers (e.g., #if defined(RTC_TAFCR_TAMPPRCH)).</font></li>
-                        </ul>
-                        <li><font face="Verdana" size="-1"><span style="font-weight: bold;">HAL USB OTG</span> update</font></li>
-                        <ul>
-                          
-                          
-                          <li><font face="Verdana" size="-1">Fix USB_FlushRxFifo() and USB_FlushTxFifo() APIs by adding check on AHB master IDLE state before flushing the USB FIFO</font></li>
-                          <li><font face="Verdana" size="-1">Fix to avoid resetting host channel direction during channel halt</font></li>
-                          <li><font face="Verdana" size="-1">Fix to report correct received amount of data with USB DMA enabled</font></li>
-                          <li><font face="Verdana" size="-1">Fix to avoid compiler optimization on count variable used for USB HAL timeout loop check</font></li>
-                          <li><font face="Verdana" size="-1">Add missing registered callbacks check for HAL_HCD_HC_NotifyURBChange_Callback()</font></li>
-                          <li><font face="Verdana" size="-1">Add new API HAL_PCD_SetTestMode() APIs to handle USB device high speed Test modes</font></li>
-                          <li><font face="Verdana" size="-1">Setting SNAK for EPs not required during device reset</font></li>
-                          <li><font face="Verdana" size="-1">Update USB IRQ handler to enable EP OUT disable</font></li>
-                          <li><font face="Verdana" size="-1">Add support of USB IN/OUT Iso incomplete</font></li>
-                          <li><font face="Verdana" size="-1">Fix USB BCD data contact timeout<br>
-                            <br>
-                            </font></li>
-
-                        </ul>
-                      </ul>
-                    </li>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta name="generator" content="pandoc" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+  <title>Release Notes for STM32F4xx HAL Drivers</title>
+  <style type="text/css">
+      code{white-space: pre-wrap;}
+      span.smallcaps{font-variant: small-caps;}
+      span.underline{text-decoration: underline;}
+      div.column{display: inline-block; vertical-align: top; width: 50%;}
+  </style>
+  <link rel="stylesheet" href="_htmresc/mini-st_2020.css" />
+  <!--[if lt IE 9]>
+    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
+  <![endif]-->
+  <link rel="icon" type="image/x-icon" href="../_htmresc/favicon.png" />
+</head>
+<body>
+<div class="row">
+<div class="col-sm-12 col-lg-4">
+<center>
+<h1 id="release-notes-for-stm32f4xx-hal-drivers"><small>Release Notes for</small> STM32F4xx HAL Drivers</h1>
+<p>Copyright © 2017 STMicroelectronics<br />
+</p>
+<a href="https://www.st.com" class="logo"><img src="_htmresc/st_logo_2020.png" alt="ST logo" /></a>
+</center>
+<h1 id="purpose">Purpose</h1>
+<p>The STM32Cube HAL and LL, an STM32 abstraction layer embedded software, ensure maximized portability across STM32 portfolio.</p>
+<p>The Portable APIs layer provides a generic, multi instanced and simple set of APIs to interact with the upper layer (application, libraries and stacks). It is composed of native and extended APIs set. It is directly built around a generic architecture and allows the build-upon layers, like the middleware layer, to implement its functions without knowing in-depth the used STM32 device. This improves the library code reusability and guarantees an easy portability on other devices and STM32 families.</p>
+<p>The Low Layer (LL) drivers are part of the STM32Cube firmware HAL that provide basic set of optimized and one shot services. The Low layer drivers, contrary to the HAL ones are not Fully Portable across the STM32 families; the availability of some functions depend on the physical availability of the relative features on the product. The Low Layer (LL) drivers are designed to offer the following features:</p>
+<ul>
+<li>New set of inline function for direct and atomic register access</li>
+<li>One-shot operations that can be used by the HAL drivers or from application level.</li>
+<li>Fully Independent from HAL and can be used in standalone usage (without HAL drivers)</li>
+<li>Full features coverage of the all the supported peripherals.</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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.13
-                                        / 16-July-2021</span></font></h3>
-                                  <blockquote>
-                                    <p><b><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">Main
-
-
-
-
-                                            Changes<br>
-                                          </span></u></b></p>
-                                  </blockquote>
-                                  <ul style="orphans: 2; text-align: start; widows: 2; word-spacing: 0px;" type="disc"><li>
-                                      <p><font face="Verdana" size="-1"><strong>HAL</strong>
-                                          updates</font></p>
-                                      <font face="Verdana" size="-1"> </font>
-                                      <ul><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL EXTI</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Update
-                                                HAL_EXTI_GetConfigLine()
-                                                API to set default
-                                                configuration value of
-                                                Trigger and GPIOSel
-                                                before checking each
-                                                corresponding registers.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL GPIO</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Update
-                                                HAL_GPIO_Init() API to
-                                                avoid the configuration
-                                                of PUPDR register when
-                                                Analog mode is selected.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL DMA</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Update
-                                                HAL_DMA_IRQHandler() API
-                                                to set the DMA state
-                                                before unlocking access
-                                                to the DMA handle.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL/LL ADC</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Update
-                                                LL_ADC_DeInit() API to
-                                                clear missing SQR3
-                                                register.</font></li><li><font face="Verdana" size="-1">Update
-                                                LL_ADC_DMA_GetRegAddr()
-                                                API to prevent unused
-                                                argument compilation
-                                                warning.</font></li><li><font face="Verdana" size="-1">Update HAL
-                                                timeout mechanism to
-                                                avoid false timeout
-                                                detection in case of
-                                                preemption.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL CAN</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Update
-                                                HAL_CAN_Init() API to be
-                                                aligned with referance
-                                                manual and to avoid
-                                                timeout error:</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL/LL
-                                              RTC_BKP</strong> update </font>
-                                          <ul><li><font face="Verdana" size="-1">Update
-                                                __HAL_RTC_Â…(__HANDLE__,
-                                                Â…) macros to access
-                                                registers through
-                                                (__HANDLE__)-&gt;Instance
-                                                pointer and avoid
-                                                “unused variable”
-                                                warnings.</font></li><li><font face="Verdana" size="-1">Correct month
-                                                management in
-                                                IS_LL_RTC_MONTH() macro.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL RNG</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Update timeout
-                                                mechanism to avoid false
-                                                timeout detection in
-                                                case of preemption.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL QSPI</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">ES0305
-                                                workaround disabled for
-                                                STM32412xx devices.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL I2C</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Update
-                                                HAL_I2C_Mem_Write_DMA()
-                                                and
-                                                HAL_I2C_Mem_Read_DMA()
-                                                APIs to initialize
-                                                Devaddress, Memaddress
-                                                and EventCount
-                                                parameters.</font></li><li><font face="Verdana" size="-1">Update to
-                                                prevent several calls of
-                                                Start bit: </font>
-                                              <ul><li><font face="Verdana" size="-1">Update
-                                                    I2C_MemoryTransmit_TXE_BTF()
-                                                    API to increment
-                                                    EventCount.</font></li></ul>
-                                            </li><li><font face="Verdana" size="-1">Update to
-                                                avoid I2C interrupt in
-                                                endless loop: </font>
-                                              <ul><li><font face="Verdana" size="-1">Update
-                                                    HAL_I2C_Master_Transmit_IT(),
-                                                    HAL_I2C_Master_Receive_IT(),
-
-                                                    HAL_I2C_Master_Transmit_DMA()
-
-                                                    and
-                                                    HAL_I2C_Master_Receive_DMA()
-                                                    APIs to unlock the
-                                                    I2C peripheral
-                                                    before generating
-                                                    the start.</font></li></ul>
-                                            </li><li><font face="Verdana" size="-1">Update to use
-                                                the right macro to clear
-                                                I2C ADDR flag inside
-                                                I2C_Slave_ADDR() API as
-                                                itÂ’s indicated in the
-                                                reference manual.</font></li><li><font face="Verdana" size="-1">Update
-                                                I2C_IsAcknowledgeFailed()
-                                                API to avoid I2C in busy
-                                                state if NACK received
-                                                after transmitting
-                                                register address.</font></li><li><font face="Verdana" size="-1">Update
-                                                HAL_I2C_EV_IRQHandler()
-                                                and
-                                                I2C_MasterTransmit_BTF()
-                                                APIs to correctly manage
-                                                memory transfers: </font>
-                                              <ul><li><font face="Verdana" size="-1">Add check
-                                                    on memory mode
-                                                    before calling
-                                                    callbacks
-                                                    procedures.</font></li></ul>
-                                            </li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>LL USART</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Handling of
-                                                UART concurrent register
-                                                access in case of race
-                                                condition between Tx and
-                                                Rx transfers (HAL UART
-                                                and LL LPUART)</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL SMBUS</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Updated
-                                                HAL_SMBUS_ER_IRQHandler()
-                                                API to return the
-                                                correct error code
-                                                “SMBUS_FLAG_PECERR” in
-                                                case of packet error
-                                                occurs.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL/LL SPI</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Updated to fix
-                                                MISRA-C 2012 Rule-13.2.</font></li><li><font face="Verdana" size="-1">Update
-                                                LL_SPI_TransmitData8()
-                                                API to avoid casting the
-                                                result to 8 bits.</font></li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL UART</strong>
-                                            update </font>
-                                          <ul><li><font face="Verdana" size="-1">Fix wrong
-                                                comment related to RX
-                                                pin configuration within
-                                                the description section</font></li><li><font face="Verdana" size="-1">Correction on
-                                                UART ReceptionType
-                                                management in case of
-                                                ReceptionToIdle API are
-                                                called from RxEvent
-                                                callback</font></li><li><font face="Verdana" size="-1">Handling of
-                                                UART concurrent register
-                                                access in case of race
-                                                condition between Tx and
-                                                Rx transfers (HAL UART
-                                                and LL LPUART) </font>
-                                              <ul><li><font face="Verdana" size="-1">Update CAN
-                                                    Initialization
-                                                    sequence to set
-                                                    "request
-                                                    initialization" bit
-                                                    before exit from
-                                                    sleep mode.</font></li></ul>
-                                            </li></ul>
-                                        </li><font face="Verdana" size="-1">
-                                        </font><li><font face="Verdana" size="-1"><strong>HAL USB</strong>
-                                            update </font>
-                                          <ul><font face="Verdana" size="-1"> </font><li><font face="Verdana" size="-1">HAL PCD: add
-                                                fix transfer complete
-                                                for IN Interrupt
-                                                transaction in single
-                                                buffer mode</font></li><font face="Verdana" size="-1"> </font><li><font face="Verdana" size="-1">Race condition
-                                                in USB PCD control
-                                                endpoint receive ISR.</font><br><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;"></span></font></li></ul>
-                                        </li></ul>
-                                    </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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.12
-                                        / 26-March-2021</span><span style=""><o:p></o:p></span></font></h3>
-                                  <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 118.5pt; text-indent: -97.5pt;"><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="orphans: 2; text-align: start; widows: 2; word-spacing: 0px;" type="disc">
-                                    <li class="MsoNormal" style="color: rgb(17, 17, 17);"><b><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL<o:p></o:p></span></b></li>
-                                    <ul type="circle">
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><b><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL
-                                            USART</span></b><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;"> update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix typo in
-                                            USART_Receive_IT() and
-                                            USART_TransmitReceive_IT()
-                                            APIs to avoid possible
-                                            compilation issues if the
-                                            UART driver files are not
-                                            included.<o:p></o:p></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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.11
-                                        / 12-February-2021</span><span style=""><o:p></o:p></span></font></h3>
-                                  <p class="MsoNormal" style="margin: 4.5pt 0in 4.5pt 118.5pt; text-indent: -97.5pt;"><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="orphans: 2; text-align: start; widows: 2; word-spacing: 0px;" type="disc">
-                                    <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">General
-
-
-
-                                        updates to fix known defects and
-                                        enhancements <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</span></span><o:p></o:p></span></li>
-                                    <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Added
-
-
-
-                                        new&nbsp;<strong><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            FMPSMBUS extended</span></strong>&nbsp;driver
-
-
-
-
-                                        to support FMPSMBUS fast Mode
-                                        Plus.<o:p></o:p></span></li>
-                                    <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Removed
-
-
-
-                                        “register” keyword to be
-                                        compliant with new C++ rules:<o:p></o:p></span></li>
-                                    <ul type="circle">
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">The register
-                                          storage class specifier was
-                                          deprecated in C++11 and
-                                          removed in C++17.<o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    <ul type="circle">
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">General
-                                          updates to fix known defects
-                                          and enhancements
-                                          implementation.<o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Added new
-                                          defines for ARM compiler V6:<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">__weak<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">__packed<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">__NOINLINE<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated HAL <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TimeBase</span></span>
-                                          TIM, RTC alarm and RTC <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WakeUp</span></span>
-                                          templates for more robustness<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Hal_Init_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Tick(</span></span>)
-                                            API to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">propoerty</span></span>
-                                            store the priority when
-                                            using the non-default time
-                                            base.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                          PPP_MODULE_ENABLED for
-                                          FMPSMBUS.<o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL ADC</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated to
-                                            add include of the LL ADC
-                                            driver.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated the
-                                            following APIs to set status
-                                            HAL_ADC_STATE_ERROR_INTERNAL
-                                            and error code
-                                            HAL_ADC_ERROR_INTERNAL when
-                                            error occurs:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_Start_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_Start_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADCEx_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">InjectedStart(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADCEx_InjectedStart_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADCEx_MultiModeStart_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_Stop_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                            API to check if DMA state is
-                                            Busy before calling <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_Abort</span></span>()
-
-
-
-
-                                            API to avoid DMA internal
-                                            error.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                            IS_ADC_CHANNEL to support
-                                            temperature sensor for:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">STM32F411xE<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">STM32F413xx<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">STM32F423xx<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Fixed wrong
-                                            defined values for:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_ADC_MULTI_REG_DMA_LIMIT_3<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_ADC_MULTI_REG_DMA_UNLMT_3<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Added
-                                            __LL_ADC_CALC_VREFANALOG_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">VOLTAGE(</span></span>)
-                                            macro to evaluate analog
-                                            reference voltage.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Removed
-                                            __LL_ADC_CALC_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TEMPERATURE(</span></span>)
-                                            macro for STM32F4x9 devices
-                                            as the TS_CAL2 is not
-                                            available.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL DAC</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Added <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">restruction</span></span>
-                                            on DAC Channel 2 defines and
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">parametres</span></span>.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DAC_MSPINIT_CB_ID
-
-
-
-
-                                            and HAL_DAC_MSPDEINIT_CB_ID
-                                            used instead of
-                                            HAL_DAC_MSP_INIT_CB_ID and
-                                            HAL_DAC_MSP_DEINIT_CB_ID.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated to
-                                            support dual mode:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Added two
-                                              new APIs:<o:p></o:p></span></li>
-                                          <ul type="square">
-                                            <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DACEx_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DualStart(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                            <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DACEx_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DualStop(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          </ul>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Added
-                                            position bit definition to
-                                            be used instead of
-                                            __DAC_MASK_SHIFT macro<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">__DAC_MASK_SHIFT
-
-
-
-                                              macro has been removed.<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DAC_Start_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                            API to return HAL_ERROR when
-                                            error occurs.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DAC_Stop_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                            API to not return HAL_ERROR
-                                            when DAC is already
-                                            disabled.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CEC</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;"> update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            API to avoid appending an
-                                            extra byte to the end of a
-                                            message.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL GPIO</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                            IS_GPIO_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AF(</span></span>) to
-                                            add missing values for
-                                            STM32F401xC and STM32F401xE
-                                            devices:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">GPIO_AF3_TIM9<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">GPIO_AF3_TIM10<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">GPIO_AF3_TIM11<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                            LL/HAL <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GPIO_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TogglePin(</span></span>)
-                                            APIs to allow multi PinÂ’s
-                                            toggling.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                            API to avoid the
-                                            configuration of PUPDR
-                                            register when Analog mode is
-                                            selected.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL RCC</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OscConfig(</span></span>)
-                                            API to add missing checks
-                                            and to donÂ’t return
-                                            HAL_ERROR if request repeats
-                                            the current PLL
-                                            configuration.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                            IS_RCC_PLLN_VALUE(VALUE)
-                                            macro in case of STM32F411xE
-                                            device <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">in order to</span></span>
-                                            be aligned with reference
-                                            manual.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SD</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;"> update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            function <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FindSCR(</span></span>)
-                                            to resolve issue of FIFO
-                                            blocking when reading.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            read/write functions in DMA
-                                            mode <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">in
-
-
-
-                                                order to</span></span>
-                                            force the DMA direction,
-                                            updated functions:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_ReadBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_WriteBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the
-                                            block size settings in the
-                                            initialization functions and
-                                            remove it from read/write
-                                            transactions to avoid
-                                            repeated and inefficient
-                                            reconfiguration, updated
-                                            functions:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">InitCard(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">GetCardStatus(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">ConfigWideBusOperation(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)&nbsp;<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">ReadBlocks(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">WriteBlocks(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_ReadBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_WriteBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_ReadBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_WriteBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        </ul>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL&nbsp;MMC</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;"> update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the
-                                            block size settings in the
-                                            initialization function and
-                                            remove it from read/write
-                                            transactions to avoid
-                                            repeated and inefficient
-                                            reconfiguration, updated
-                                            functions:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">InitCard(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">ReadBlocks(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">WriteBlocks(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_ReadBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_WriteBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_ReadBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_WriteBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            read/write functions in DMA
-                                            mode <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">in
-
-
-
-                                                order to</span></span>
-                                            force the DMA direction,
-                                            updated functions:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_ReadBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span class="spelle"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_WriteBlocks_</span></span><span class="grame"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Deploy new
-                                            functions <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MMC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ReadExtCSD(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SDMMC_CmdSendEXTCSD</span></span>
-                                            () that read and check the
-                                            sectors&nbsp;number of the
-                                            device in order to resolve
-                                            the issue of wrongly reading
-                                            big memory size.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><b><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL NAND
-                                            update<o:p></o:p></span></b></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            functions
-                                            HAL_NAND_Read_SpareArea_16<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">b(</span></span>)
-                                            and
-                                            HAL_NAND_Write_SpareArea_16b()
-                                            to fix column address
-                                            calculation issue.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">LL SDMMC
-                                            update</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Update the
-                                            definition of
-                                            SDMMC_DATATIMEOUT constant <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">in
-
-
-
-                                                order to</span></span>
-                                            allow the user to redefine
-                                            it in his proper
-                                            application.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove
-                                            'register' storage class
-                                            specifier from LL SDMMC
-                                            driver.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Deploy new
-                                            functions <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MMC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ReadExtCSD(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SDMMC_CmdSendEXTCSD</span></span>
-                                            () that read and check the
-                                            sectors number of the device
-                                            in order to resolve the
-                                            issue of wrongly reading big
-                                            memory size.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SMBUS</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Support for
-                                            Fast Mode Plus to be SMBUS
-                                            rev 3 compliant.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Added <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPSMBUSEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnableFastModePlus(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPSMBUSEx_DisableFastModePlus</span></span>()
-
-
-
-
-                                            APIs to manage Fm+.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMBUS_MasterTransmit_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BTF(</span></span>)
-                                            , <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMBUS_MasterTransmit_TXE</span></span>()
-
-
-
-
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMBUS_MasterReceive_BTF</span></span>()
-
-
-
-
-                                            APIs to&nbsp;allow stop
-                                            generation when <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CurrentXferOptions</span></span>
-                                            is different from
-                                            SMBUS_FIRST_FRAME and
-                                            SMBUS_NEXT_FRAME.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMBUS_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ITError(</span></span>)
-                                            API to correct the twice
-                                            call of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SMBUS_ErrorCallback</span></span>.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SPI</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                            API<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">To avoid
-                                              setting the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BaudRatePrescaler</span></span>
-                                              in case of Slave Motorola
-                                              Mode.<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Use the <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">bit-mask</span></span>
-                                              for SPI configuration.<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                            Transmit/Receive processes
-                                            in half-duplex <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</span></span><o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Disable
-                                              the SPI instance before
-                                              setting BDIOE bit.<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Fixed wrong
-                                            timeout <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">management</span></span><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Calculate
-                                            Timeout based on a software
-                                            loop to avoid blocking issue
-                                            if <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Systick</span></span>
-                                            is disabled.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-                                            SPDIFRX&nbsp;</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove
-                                            'register' storage class
-                                            specifier from HAL SPDIFRX
-                                            driver.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL I2S</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                            I2SEx APIs to correctly
-                                            support circular <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transfers</span></span><o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                              I2SEx_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxRxDMACplt(</span></span>)
-                                              API to manage DMA circular
-                                              mode.<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated
-                                            HAL_I2SEx_TransmitReceive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                            API to set <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmatx</span></span>
-                                            (<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transfert</span></span>
-                                            callback and half) to NULL.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL SAI</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated to
-                                            avoid the incorrect
-                                            left/right synchronization.<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Transmit_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                              API to follow the sequence
-                                              described in the reference
-                                              manual for slave
-                                              transmitter mode.<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                            API to correct the formula
-                                            in case of SPDIF is wrong.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL CRYP</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_GetConfig</span></span>()
-
-
-
-
-                                            APIs to set/get the
-                                            continent of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">KeyIVConfigSkip</span></span>
-                                            correctly.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL EXTI</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">__EXTI_LINE__
-
-
-
-                                            is now used instead of
-                                            __LINE__ which is a standard
-                                            C macro.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DCMI</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Support of
-                                            HAL callback registration
-                                            feature for DCMI extended
-                                            driver.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL TIM</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_OnePulseN_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_OnePulseN_Stop</span></span>()
-
-
-
-
-                                            APIs (pooling and IT mode)
-                                            to take into consideration
-                                            all <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OutputChannel</span></span>
-                                            parameters.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Corrected
-                                            reversed description of
-                                            TIM_LL_EC_ONEPULSEMODE One
-                                            Pulse Mode.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetCounterMode(</span></span>)
-                                            API to return the correct
-                                            counter mode.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL
-                                            SMARTCARD</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Fixed
-                                            invalid initialization of
-                                            SMARTCARD configuration by
-                                            removing FIFO mode
-                                            configuration as it is not
-                                            member of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_InitTypeDef</span></span>
-                                            Structure.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Fixed typos
-                                            in SMARTCARD State
-                                            definition description<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/LL IRDA</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Fixed typos
-                                            in IRDA State definition
-                                            description<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">LL USART</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove
-                                            useless check on maximum BRR
-                                            value by removing
-                                            IS_LL_USART_BRR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MAX(</span></span>)
-                                            macro.<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            USART polling and
-                                            interruption processes to
-                                            fix issues related to
-                                            accesses out of user
-                                            specified buffer.<o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: rgb(17, 17, 17);"><strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL USB</span></strong><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;update<o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">Enhanced
-                                            USB OTG host HAL with USB
-                                            DMA is enabled:<o:p></o:p></span></li>
-                                        <ul type="square">
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">fixed
-                                              ping and data toggle
-                                              issue,<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: rgb(17, 17, 17);"><span style="font-size: 10.5pt; font-family: &quot;Verdana&quot;,sans-serif;">reworked
-                                              Channel error report
-                                              management<o:p></o:p></span></li>
-                                        </ul>
-                                      </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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">V1.7.10
-
-
-
-                                        / 22-October-2020</span><span style="font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></font></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.</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
-
-
-
-                                          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>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <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;">&nbsp; Update
-                                          to fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hardfault</span></span>
-                                          issue with HAL_I2C_Mem_Write_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                          API:<o:p></o:p></span></li>
-                                      <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;">&nbsp;
-                                            Abort the right ongoing DMA
-                                            transfer when memory write
-                                            access request operation
-                                            failed: fix typo “<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmarx</span></span>”
-                                            replaced by “<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmatx”</span></span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.9
-
-
-
-                                        / 14-August-2020</span><span style=""><o:p></o:p></span></font></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL/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>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <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;">&nbsp; Update
-                                          HAL_I2C_ER_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          API to fix acknowledge failure
-                                          issue with I2C memory IT
-                                          processes<o:p></o:p></span></li>
-                                      <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;">&nbsp; Add
-                                            stop condition generation
-                                            when NACK occurs.<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; Update
-                                          I2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAXferCplt(</span></span>),
-
-
-
-
-                                          I2C_DMAError() and
-                                          I2C_DMAAbort() APIs to fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hardfault</span></span>
-                                          issue when <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmatx</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmarx</span></span>
-                                          parameters in i2c handle
-                                          aren't initialized (NULL
-                                          pointer).<o:p></o:p></span></li>
-                                      <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;">&nbsp; Add
-                                            additional check on
-                                            hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmtx</span></span>
-                                            and hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmarx</span></span>
-                                            before resetting DMA Tx/Rx
-                                            complete <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">callbacks</span></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;">&nbsp; Update
-                                          Sequential transfer APIs to
-                                          adjust <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">xfermode</span></span>
-                                          condition.<o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <li class="MsoNormal" style="color: rgb(0, 32, 82); margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;
-
-
-
-
-                                            Replace hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferCount</span></span>
-                                            &lt; MAX_NBYTE_SIZE by
-                                            hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferCount</span></span>
-                                            &lt;= MAX_NBYTE_SIZE which
-                                            corresponds to a case
-                                            without reload</span><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <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;">&nbsp;<b>HAL/LL
-
-
-
-                                          USB </b>update</span><span style=""><o:p></o:p></span></li>
-                                    <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;">&nbsp;&nbsp;Bug
-
-
-
-                                          fix: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ReadPMA(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_WritePMA</span></span>()
-
-
-
-
-                                          by ensuring 16-bits access to
-                                          USB PMA memory<o:p></o:p></span></li>
-                                      <li class="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;&nbsp;Bug
-
-
-
-                                          fix: correct USB RX count
-                                          calculation<o:p></o:p></span></li>
-                                      <li class="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
-                                          USB Bulk transfer double
-                                          buffer <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</span></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;">&nbsp; Remove
-                                          register keyword from USB
-                                          defined macros as no more
-                                          supported by C++ <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">compiler</span></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;">&nbsp; Minor
-                                          rework on <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USBD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USBD_Stop</span></span>()
-
-
-
-
-                                          APIs: stopping device will be
-                                          handled by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_DeInit</span></span>()
-
-
-
-
-                                          API.<o:p></o:p></span></li>
-                                      <li class="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; Remove
-                                          non used API for USB device
-                                          mode.<o:p></o:p></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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.8
-
-
-
-                                        / 12-February-2020</span><span style=""><o:p></o:p></span></font></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;">Add
-                                        new <b>HAL FMPSMBUS</b> and <b>LL
-
-
-
-                                          FMPI2C</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General
-
-
-
-                                        updates to fix known defects and
-                                        enhancements <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</span></span></span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <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
-
-
-
-                                        HAL CRYP driver to support block
-                                        by block decryption without
-                                        reinitializes the IV and KEY for
-                                        each call.</span><span style=""><o:p></o:p></span></li>
-                                    <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 12pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Improve
-
-
-
-                                        code quality by fixing
-                                        MisraC-2012 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">violations</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;"><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="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;">&nbsp;Add
-                                          handling USB host babble error
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">interrupt</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;">&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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">deactivation</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;">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="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;">&nbsp;Update
-                                          HAL CRYP driver to support
-                                          block by block decryption
-                                          without initializing the IV
-                                          and KEY at each call.</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add new
-                                            CRYP Handler parameters: "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">KeyIVConfig</span></span>"
-                                            and "<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SizesSum"</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;">Add new
-                                            CRYP <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">init</span></span>
-                                            parameter: "<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">KeyIVConfigSkip"</span></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
-
-
-
-                                          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="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
-                                          HAL_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAStop(</span></span>)
-                                          API to be more safe</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add a check
-                                            on BSY, TXE and RXNE flags
-                                            before disabling the <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">I2S</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                          HAL_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAStop(</span></span>)
-                                          API to fix multi-call transfer
-                                          issue(to avoid re-initializing
-                                          the I2S for the next
-                                          transfer).</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add
-                                            __HAL_I2SEXT_FLUSH_RX_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DR(</span></span>)
-                                            and __HAL_I2S_FLUSH_RX_DR()
-                                            macros to flush the
-                                            remaining data inside 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;">Add new <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span>
-                                            define:
-                                            HAL_I2S_ERROR_BUSY_LINE_RX</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.7
-
-
-
-                                        / 06-December-2019</span><span style=""><o:p></o:p></span></font></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;"><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="disc">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetTickFreq(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update to
-                                          restore the previous tick
-                                          frequency&nbsp;when <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_InitTick</span></span>()
-
-
-
-
-                                          configuration failed.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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 </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                    <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 GPIO
-                                          initialization sequence<b> </b>to
-
-
-
-                                          avoid unwanted pulse on GPIO <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Pin's</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;">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>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="disc">
-                                      <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;">General
-                                            update to enhance HAL EXTI
-                                            driver <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">robustness</span></span>&nbsp;</span></span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <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;">Add
-                                              additional assert check on
-                                              EXTI config <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">lines</span></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="orphans: 2; widows: 2; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to
-                                              compute EXTI line mask
-                                              before read/write access
-                                              to EXTI registers<br style="">
-                                              <!--[if !supportLineBreakNewLine]--><br style="">
-                                              <!--[endif]--></span><span style=""><o:p></o:p></span></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&nbsp;PR
-                                          register for rising and
-                                          falling interrupts.</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <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
-                                              parameters&nbsp;in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EXTI_HandleTypeDef</span></span>
-                                              structure: merge&nbsp;HAL
-                                              EXTI <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RisingCallback</span></span>
-                                              and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FallingCallback</span></span>
-                                              in only one <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PendingCallback</span></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="orphans: 2; widows: 2; float: none; word-spacing: 0px;"><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 </span><span class="spelle"><span style="orphans: 2; widows: 2; float: none; word-spacing: 0px;"><span style="">EXTI_CallbackIDTypeDef</span>
-                                                enumeration.</span></span><span style=""><br style="">
-                                              <!--[if !supportLineBreakNewLine]--><br style="">
-                                              <!--[endif]--><o:p></o:p></span></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;"></span>Update
-                                        <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_EXTI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                        API to serve interrupts
-                                        correctly.<span style=""><o:p></o:p></span></li>
-                                      <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
-                                            compute EXTI line mask
-                                            before handle
-                                            EXTI&nbsp;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="orphans: 2; widows: 2; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to
-                                            support&nbsp;GPIO port
-                                            interrupts:</span></span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <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;">Add new "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GPIOSel</span></span>"
-                                              parameter in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EXTI_ConfigTypeDef</span></span>
-                                              structure</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
-
-
-
-                                          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="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PeriphCLKConfig(</span></span>)
-                                          API to support PLLI2S
-                                          configuration for STM32F42xxx
-                                          and STM32F43xxx 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;">Update the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ClockConfig(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_DeInit</span></span>()
-
-
-
-
-                                          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;">Fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span>)
-                                          failure detected with <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gcc</span></span>
-                                          compiler and high optimization
-                                          level is selected(-03)</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OscConfig(</span></span>)
-                                          API to don't&nbsp;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
-
-
-
-                                          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="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_ADC_REG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          to fix wrong ADC CR1 register
-                                          configuration</span><span style=""><o:p></o:p></span></li>
-                                      <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;">The ADC
-                                            sequencer length is part
-                                            of&nbsp;ADC SQR1
-                                            register&nbsp;not of ADC CR1
-                                            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
-
-
-
-                                          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="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&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Encrypt(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Decrypt</span></span>()
-
-
-
-
-                                          APIs&nbsp;to take into
-                                          consideration the datatype fed
-                                          to the DIN register (1-, 8-,
-                                          16-, or 32-bit&nbsp;data) when
-                                          padding the last block of the
-                                          payload, in case the size of
-                                          this last block is less than
-                                          128 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;">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="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          API to fix error code
-                                          management issue: error code
-                                          is assigned
-                                          "HAL_RNG_ERROR_CLOCK" in case
-                                          of clock error and
-                                          "HAL_RNG_ERROR_SEED" in case
-                                          of seed error, not the
-                                          opposite.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          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="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DFSDM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetChannelFromInstance(</span></span>)
-                                          API to remove unreachable
-                                          check condition</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_Start_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          API to omit the FIFO 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
-
-
-
-                                          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="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLASH_Program_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DoubleWord(</span></span>)
-                                          API to fix with EWARM high
-                                          level optimization 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
-
-
-
-                                          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="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;">Remove Lock
-                                          mechanism from <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_DeInit</span></span>()
-
-
-
-
-                                          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><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="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;">Null pointer
-                                          on handler "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hhash</span></span>"
-                                          is now checked <b>before</b>
-                                          accessing structure member "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hhash</span></span>-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init.DataType</span></span>"
-                                          in the following API:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="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;">HAL_HASH_SHA1_Accmlt_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</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;">HAL_HASH_MD5_Accmlt_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</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;">HAL_HASHEx_SHA224_Accmlt_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</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;">HAL_HASHEx_SHA256_Accmlt_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</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;"><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="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;">HAL_HASH_SHA1_Accmlt_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">End(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">End(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">End(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">End(</span></span>)
-                                            to be used instead of
-                                            HAL_HASHEx_SHA256_Start()</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="disc">
-                                      <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;">HAL_HASHEx_SHA224_Accmlt_End_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            to be used instead of
-                                            HAL_HASHEx_SHA256_Start_IT()</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <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;">MISRAC-2012
-                                          rule R.5.1&nbsp;(identifiers
-                                          shall be distinct in the first
-                                          31 characters) constrained the
-                                          naming of the above listed
-                                          aliases&nbsp;<b>(</b>e.g.
-                                          HAL_HASHEx_SHA256_<b>Accmlt</b>_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">End(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)<b>)</b>.
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">In
-
-
-
-
-                                              order to</span></span>
-                                          have aligned names following
-                                          APIs have been renamed:</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="disc">
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <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;">HAL_HASH_MD5_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Accumulate(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Accumulate(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Accumulate(</span></span>)
-                                              renamed
-                                              HAL_HASHEx_SHA224_Accmlt()</span><span style=""><o:p></o:p></span></li>
-                                        </ul>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="disc">
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <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;">HAL_HASHEx_SHA256_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Accumulate(</span></span>)
-                                              renamed
-                                              HAL_HASHEx_SHA256_Accmlt()</span><span style=""><o:p></o:p></span></li>
-                                        </ul>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <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;">HASH <b>handler</b>
-                                          state is <b>no <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">more</span></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="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;">HAL_HASH_MD5_Start_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</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;">HAL_HMAC_MD5_Start_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</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;">HAL_HASH_SHA1_Start_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</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;">HAL_HMAC_SHA1_Start_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</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;"><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="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;">HASH_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HMAC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Processing(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HASH_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HASH_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Finish(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="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;">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>
-                                  </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&nbsp;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="disc">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetRxMessage(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          get the correct value for the
-                                          RTR&nbsp;(type of frame for
-                                          the message that will be
-                                          transmitted) field in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CAN_RxHeaderTypeDef</span></span>
-                                          structure.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="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;">Add new <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DCMI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigSyncUnmask(</span></span>)
-                                          API to set embedded
-                                          synchronization delimiters
-                                          unmasks.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: black;"><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="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;">Following IRQ
-                                          handlers' implementation has
-                                          been aligned with the
-                                          STM32Cube firmware
-                                          specification (in case of
-                                          interrupt lines shared by
-                                          multiple events, first check
-                                          the IT enable bit is set then
-                                          check the IT flag is set too):</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="circle">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AlarmIRQHandler(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTCEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">WakeUpTimerIRQHandler(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTCEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TamperTimeStampIRQHandler(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </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
-
-
-
-                                          WWDG</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> update</span><span style=""><o:p></o:p></span></li>
-                                    <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;">In "#####
-                                          WWDG Specific features #####"
-                                          descriptive comment section:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="circle">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Maximal <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">prescaler</span></span>
-                                            value has been corrected (8
-                                            instead of 128).</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Maximal APB
-                                            frequency has been corrected
-                                            (42MHz instead of 56MHz) and
-                                            possible timeout values
-                                            updated.</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
-
-
-
-                                          DMA2D </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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 API's to Start DMA2D
-                                          CLUT Loading.</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="circle">
-                                        <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CLUTStartLoad(</span></span>)
-                                            Start 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_CLUTStartLoad_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            Start DMA2D CLUT Loading
-                                            with interrupt 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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The following
-                                          old wrong services will be
-                                          kept in the HAL DCMI driver
-                                          for legacy purpose and a
-                                          specific Note&nbsp;is added:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="circle">
-                                        <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CLUTLoad(</span></span>)
-                                            can be replaced with
-                                            HAL_DMA2D_CLUTStartLoad()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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_CLUTLoad_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)&nbsp;can
-
-
-
-
-                                            be replaced with
-                                            HAL_DMA2D_CLUTStartLoad_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_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigCLUT(</span></span>)
-                                            can be omitted as the config
-                                            can be performed using
-                                            the&nbsp;HAL_DMA2D_CLUTStartLoad()
-                                            API.</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </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
-
-
-
-                                          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 class="grame"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">Fix&nbsp;
-                                            typo</span></span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;"> in "<span class="spelle"><span style="font-family: &quot;Calibri&quot;,sans-serif;">FileFormatGroup</span></span>"
-                                          parameter&nbsp;in the <span class="spelle"><span style="font-family: &quot;Calibri&quot;,sans-serif;">HAL_MMC_CardCSDTypeDef</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Calibri&quot;,sans-serif;">HAL_SD_CardCSDTypeDef</span></span>
-                                          structures&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;">Fix an
-                                          improve&nbsp;handle state and
-                                          error <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">management</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;">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="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 <b>MMC_HIGH_VOLTAGE_CARD</b>&nbsp;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>
-                                      <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;">Fix
-                                            management of peripheral
-                                            flags depending on commands
-                                            or&nbsp;data <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transfers</span></span></span></span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <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;">Add new
-                                              defines
-                                              "SDIO_STATIC_CMD_FLAGS"
-                                              and "SDIO_STATIC_DATA_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAGS"</span></span>&nbsp;</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="orphans: 2; widows: 2; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Updates&nbsp;HAL
-
-
-
-                                              SD and HAL MMC drivers to
-                                              manage the new SDIO static
-                                              flags.<br style="">
-                                              <!--[if !supportLineBreakNewLine]--><br style="">
-                                              <!--[endif]--></span><span style=""><o:p></o:p></span></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;"></span>Due to
-                                        limitation SDIO hardware flow
-                                        control indicated in Errata
-                                        Sheet:<span style=""><o:p></o:p></span></li>
-                                      <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;">In 4-bits
-                                            bus wide mode, do not use
-                                            the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_WriteBlocks_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            or <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_WriteBlocks</span></span>()
-
-
-
-
-                                            APIs otherwise underrun will
-                                            occur and it isn't possible
-                                            to activate the flow
-                                            control.</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Use DMA
-                                            mode when using 4-bits bus
-                                            wide mode or decrease the
-                                            SDIO_CK frequency.</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;">Update UART
-                                          polling processes to handle
-                                          efficiently the Lock <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mechanism</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">&nbsp;Move
-                                            the process unlock at the
-                                            top of the&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_UART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Receive(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_UART_Transmit</span></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;">Fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation error for clock
-                                          higher than <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">172Mhz</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add a
-                                            forced cast on
-                                            UART_DIV_SAMPLING8() and
-                                            UART_DIV_SAMPLING16()
-                                            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
-                                            useless parenthesis from
-                                            UART_DIVFRAQ_SAMPLING8(),
-                                            UART_DIVFRAQ_SAMPLING16(),
-                                            UART_BRR_SAMPLING8() and
-                                            UART_BRR_SAMPLING16() macros
-                                            to solve some MISRA
-                                            warnings.</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 UART
-                                          interruption handler to manage
-                                          correctly the overrun <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">interrupt</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add&nbsp;in
-                                            the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_UART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            API a check on
-                                            USART_CR1_RXNEIE bit when an
-                                            overrun interrupt 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;">Fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation error&nbsp;UART9
-                                          and <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART10</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">In <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span>)
-                                            API fix UART9 and UART10
-                                            clock source when computing
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                            values by adding a check on
-                                            these instances and setting
-                                            clock sourcePCLK2 instead of
-                                            PCLK1.</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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span>)
-                                          API</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Split
-                                            HAL_RCC_GetPCLK1<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Freq(</span></span>)
-                                            and HAL_RCC_GetPCLK2Freq()
-                                            macros from the
-                                            UART_BRR_SAMPLING8() and
-                                            UART_BRR_SAMPLING8()
-                                            macros&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;">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;">Fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation error for clock
-                                          higher than <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">172Mhz</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add a
-                                            forced cast on USART_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DIV(</span></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&nbsp;parenthesis
-                                            from USART_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DIVFRAQ(</span></span>)
-                                            macro to solve some MISRA
-                                            warnings.</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
-                                          interruption handler to manage
-                                          correctly the overrun <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">interrupt</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add&nbsp;in
-                                            the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            API a check on
-                                            USART_CR1_RXNEIE bit when an
-                                            overrun interrupt 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;">Fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation error&nbsp;UART9
-                                          and <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART10</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">In <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span>)
-                                            API fix UART9 and UART10
-                                            clock source when computing
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                            values by adding a check on
-                                            these instances and setting
-                                            clock sourcePCLK2 instead of
-                                            PCLK1.</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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span>)
-                                          API</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Split
-                                            HAL_RCC_GetPCLK1<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Freq(</span></span>)
-                                            and HAL_RCC_GetPCLK2Freq()
-                                            macros from the USART_BRR()
-                                            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;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          IRDA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation error for clock
-                                          higher than <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">172Mhz</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add a
-                                            forced cast on IRDA_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DIV(</span></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&nbsp;parenthesis
-                                            from IRDA_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DIVFRAQ(</span></span>)
-                                            macro&nbsp;to solve some
-                                            MISRA warnings.</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 IRDA
-                                          interruption handler to manage
-                                          correctly the overrun <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">interrupt</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add&nbsp;in
-                                            the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            API a check on
-                                            USART_CR1_RXNEIE bit when an
-                                            overrun interrupt 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;">Fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation error&nbsp;UART9
-                                          and <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART10</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">In <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span>)
-                                            API fix UART9 and UART10
-                                            clock source when computing
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                            values by adding a check on
-                                            these instances and setting
-                                            clock sourcePCLK2 instead of
-                                            PCLK1.</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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span>)
-                                          API</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Split
-                                            HAL_RCC_GetPCLK1<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Freq(</span></span>)
-                                            and HAL_RCC_GetPCLK2Freq()
-                                            macros from the IRDA_BRR()
-                                            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;"><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;">Fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation error for clock
-                                          higher than <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">172Mhz</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add a
-                                            forced cast on SMARTCARD_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DIV(</span></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&nbsp;useless&nbsp;parenthesis
-
-
-
-
-                                            from SMARTCARD_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DIVFRAQ(</span></span>)
-                                            macro&nbsp;to solve some
-                                            MISRA warnings.</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
-                                          SMARTCARD interruption handler
-                                          to manage correctly the
-                                          overrun <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">interrupti</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add&nbsp;in
-                                            the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SMARTCARD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            API a check on
-                                            USART_CR1_RXNEIE bit when an
-                                            overrun interrupt 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span>)
-                                          API</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Split
-                                            HAL_RCC_GetPCLK1<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Freq(</span></span>)
-                                            and HAL_RCC_GetPCLK2Freq()
-                                            macros from the
-                                            SMARTCARD_BRR() 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;"><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;">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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">delay</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">__<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_ENABLE_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OCxFAST(</span></span>)
-                                            and __<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_DISABLE_OCxFAST</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                          Encoder interface mode to
-                                          keep&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TIM_CCER_CCxNP</span></span>
-                                          bits <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">low</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add&nbsp;TIM_ENCODERINPUTPOLARITY_RISING
-
-
-
-
-                                            and
-                                            TIM_ENCODERINPUTPOLARITY_FALLING
-                                            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
-                                            IS_TIM_ENCODERINPUT_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">POLARITY(</span></span>)
-                                            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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_Encoder_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                            API&nbsp;</span><span style=""><o:p></o:p></span></li>
-                                        <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;">Replace
-                                              IS_TIM_IC_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">POLARITY(</span></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;">Update TIM
-                                          remapping input configuration
-                                          in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RemapConfig(</span></span>)
-                                          API</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Remove
-                                            redundant check on
-                                            LPTIM_OR_TIM5_ITR1_RMP bit
-                                            and replace it by check on
-                                            LPTIM_OR_TIM9_ITR1_RMP bit.</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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MasterConfigSynchronization(</span></span>)
-                                          API to avoid functional errors
-                                          and assert fails when using
-                                          some TIM instances as input
-                                          trigger.</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Replace&nbsp;IS_TIM_SYNCHRO_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">INSTANCE(</span></span>)
-                                            macro by
-                                            IS_TIM_MASTER_INSTANCE()
-                                            macro.&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;">Add&nbsp;IS_TIM_SLAVE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">INSTANCE(</span></span>)
-                                            macro to&nbsp;check on
-                                            TIM_SMCR_MSM bit.</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 lacking
-                                          TIM input remapping <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">definition</span></span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add
-                                            LL_TIM_TIM11_TI1_RMP_SPDIFRX
-                                            and
-                                            LL_TIM_TIM2_ITR1_RMP_ETH_PTP.</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add lacking
-                                            definition for linked
-                                            LPTIM_TIM input trigger <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">remapping</span></span>&nbsp;&nbsp;</span><span style=""><o:p></o:p></span></li>
-                                        <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;">Add
-                                              following <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">definitions
-
-
-
-
-                                                  :</span></span>
-                                              LL_TIM_TIM9_ITR1_RMP_TIM3_TRGO,
-                                              LL_TIM_TIM9_ITR1_RMP_LPTIM,
-
-
-
-                                              LL_TIM_TIM5_ITR1_RMP_TIM3_TRGO,
-
-
-
-
-                                              LL_TIM_TIM5_ITR1_RMP_LPTIM,
-
-
-
-                                              LL_TIM_TIM1_ITR2_RMP_TIM3_TRGO
-
-
-
-                                              and
-                                              LL_TIM_TIM1_ITR2_RMP_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;">Add a new
-                                              mechanism in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetRemap(</span></span>)
-                                              API to remap TIM1, TIM9,
-                                              and TIM5&nbsp;input
-                                              triggers mapped on LPTIM
-                                              register.&nbsp;</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
-
-
-
-                                          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;">Add a polling
-                                          mechanism to check
-                                          on&nbsp;LPTIM_FLAG_XXOK flags
-                                          in different <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">API</span></span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <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;
-                                            </span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LPTIM_WaitForFlag</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">() API 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;">Add lacking
-                                          definitions of LPTIM input
-                                          trigger remapping and its
-                                          related&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">API</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <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;">LL_LPTIM_INPUT1_SRC_PAD_AF,
-
-
-
-
-                                              LL_LPTIM_INPUT1_SRC_PAD_PA4,
-
-
-
-                                              LL_LPTIM_INPUT1_SRC_PAD_PB9
-
-
-
-                                              and
-                                              LL_LPTIM_INPUT1_SRC_TIM_DAC.</span><span style=""><o:p></o:p></span></li>
-                                          <li class="MsoNormal" 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
-                                              API LL_LPTIM_SetInput1<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Src(</span></span>)
-                                              to access to the LPTIM_OR
-                                              register and remap the
-                                              LPTIM input trigger.</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;">Perform a new
-                                          check on indirect EXTI23 line
-                                          associated to the LPTIM wake
-                                          up <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">timer</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">Condition
-                                            the use of the LPTIM Wake-up
-                                            Timer associated EXTI
-                                            line&nbsp;configuration's
-                                            macros by&nbsp;EXTI_IMR_MR23
-                                            bit in different <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">API
-
-
-
-                                                :</span></span></span><span style=""><o:p></o:p></span></li>
-                                        <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;">__HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE/DDISABLE_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">__HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">__HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></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_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">__HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">__HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">__HAL_LPTIM_WAKEUPTIMER_EXTI_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</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;">__HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</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;">__HAL_LPTIM_WAKEUPTIMER_EXTI_GENERATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SWIT(</span></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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update</span><span style="">&nbsp;</span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_TimeOut_Start_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">), <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_TimeOut_Stop_IT</span></span>(),
-
-
-
-
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_Counter_Start_IT</span></span>()
-
-
-
-
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_Counter_Stop_IT</span></span>()
-
-
-
-
-                                            API by adding Enable/Disable
-                                            rising edge trigger on
-                                            the&nbsp;LPTIM Wake-up Timer
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Exti</span></span>
-                                            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
-                                            __HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                            in the end of the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_IRQHandler</span></span>()
-
-
-
-
-                                            API conditioned by
-                                            EXTI_IMR_MR23 bit.</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 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          API to fix I2C send break
-                                          issue&nbsp;</span><span style=""><o:p></o:p></span></li>
-                                      <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;">Add
-                                            additional check on
-                                            hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmatx</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmatx</span></span>-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferCpltCallback</span></span>,
-                                            hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmarx</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmarx</span></span>-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferCpltCallback</span></span>
-                                            in I2C_Master_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SB(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          API to fix acknowledge failure
-                                          issue with I2C memory IT
-                                          processes</span><span style=""><o:p></o:p></span></li>
-                                      <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;">&nbsp;Add&nbsp;stop
-
-
-
-
-                                            condition generation when
-                                            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
-                                          HAL_I2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span>
-                                          when wrong I2C start condition
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">occurs</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <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;">&nbsp;Add
-                                            new&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span>
-                                            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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span>
-                                            parameter in&nbsp;I2C handle
-                                            to 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAXferCplt(</span></span>),
-
-
-
-
-                                          I2C_DMAError() and
-                                          I2C_DMAAbort() APIs to fix <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hardfault</span></span>
-                                          issue when <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmatx</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmarx</span></span>&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="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;">Add
-                                            additional check on
-                                            hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmtx</span></span>
-                                            and hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmarx</span></span>
-                                            before resetting&nbsp;DMA
-                                            Tx/Rx complete <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">callbacks</span></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
-
-
-
-                                          FMPI2C </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="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
-                                          FMPI2C slave interrupt
-                                          handling issue with I2C
-                                          sequential transfers.</span><span style=""><o:p></o:p></span></li>
-                                      <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
-                                            FMPI2C_Slave_ISR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            and FMPI2C_Slave_ISR_DMA()
-                                            APIs to check on STOP
-                                            condition and handle it
-                                            before clearing the ADDR
-                                            flag</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
-
-
-
-                                          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_Write_Page_8<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">b(</span></span>),
-
-
-
-                                          HAL_NAND_Write_Page_16b()
-                                          and&nbsp;
-                                          HAL_NAND_Write_SpareArea_16b()
-                                          to manage correctly the time
-                                          out condition.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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;">Optimize <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMATxCplt(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_DMARxCplt</span></span>()
-
-
-
-
-                                          APIs to check on "Mode"
-                                          parameter instead of&nbsp;CIRC
-                                          bit in the CR 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;">Remove unused
-                                          SAI_FIFO_SIZE define</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Receive_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                          programming sequence to be <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">inline</span></span>
-                                          with reference manual</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.6
-
-
-
-                                        / 12-April-2019</span><span style=""><o:p></o:p></span></font></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;"><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;">Fix I2C send
-                                          break issue in IT <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">processes</span></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
-                                            additional check on
-                                            hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmatx</span></span>
-                                            and hi2c-&gt;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdmarx</span></span>&nbsp;to
-
-
-
-
-                                            avoid the&nbsp;DMA request
-                                            enable when IT mode is used.</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
-
-
-
-                                          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 to
-                                          implement <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Erratasheet</span></span>:
-                                          BSY bit may stay high at the
-                                          end of a data transfer in
-                                          Slave <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</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;">LL
-
-
-
-                                          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;">Fix
-                                          compilation errors with <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_LPTIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WriteReg(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_LPTIM_ReadReg</span></span>()
-
-
-
-
-                                          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;">HAL
-
-
-
-                                          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;">Fix
-                                          preprocessing compilation
-                                          issue with SDIO
-                                          STA&nbsp;STBITERR 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/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;">Updated <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WritePacket(</span></span>),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_ReadPacket</span></span>()
-
-
-
-
-                                          APIs to prevent compilation
-                                          warning with GCC GNU v8.2.0<o:p></o:p></span></li>
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EPStartXfer(</span></span>)
-                                          API to enable the USB endpoint
-                                          before unmasking the TX <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FiFo</span></span>
-                                          empty interrupt in case DMA is
-                                          not used<o:p></o:p></span></li>
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_HCD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_Init</span></span>()
-
-
-
-
-                                          APIs updated to avoid enabling
-                                          USB DMA feature for OTG FS
-                                          instance, USB DMA feature is
-                                          available only on OTG HS
-                                          Instance<o:p></o:p></span></li>
-                                      <li class="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 line in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hal_hcd.c</span></span>
-                                          header file comment <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">section</span></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;">Rework USB
-                                          HAL driver to use instance <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PCD_SPEED_xxx</span></span>,
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HCD_SPEED_xx</span></span>
-                                          speeds instead of OTG register
-                                          Core speed definition during
-                                          the instance <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">initialization</span></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;">Software
-                                          Quality improvement with a fix
-                                          of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CodeSonar</span></span>
-                                          warning on <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PCD_Port_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          and &nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HCD_Port_IRQHandler</span></span>()
-
-
-
-
-                                          interrupt handlers<o:p></o:p></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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.5
-
-
-
-                                        / 08-February-2019</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CodeSonar</span></span>
-                                        compilation <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">warnings</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 SW4STM32
-                                        compilation errors under <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Linux</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 the user manual
-                                        .chm <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">files</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;">Add
-                                        support of HAL callback
-                                        registration <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">feature</span></span></span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="MsoNormal" 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 style="font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><b>HAL
-
-
-
-                                          EXTI</b><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;"> </span></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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                        new<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><b>HAL
-
-
-
-                                          SMBUS</b><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;"> </span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">versions</span></span></span></b><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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/STM32F4xx_HAL_Driver/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Src</span></span>
-                                            and
-                                            Drivers/STM32f4xx_HAL_Driver/Inc
-                                            folders. It can be enabled
-                                            through switch
-                                            HAL_CRYP_MODULE_ENABLED in
-                                            stm32f4xx_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>
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AutoReloadPreload</span></span>
-                                          field in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TIM_Base_InitTypeDef</span></span>
-                                          structure&nbsp;to allow the
-                                          possibilities to enable or
-                                          disable the TIM Auto Reload
-                                          Preload.</span><span style=""><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/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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">feature</span></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,
-                                                FMPI2C, SMBUS,<br>
-                                                UART, USART, IRDA,
-                                                SMARTCARD, LPTIM, LTDC,
-                                                MMC, NAND, <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NOR,</span></span>
-                                                PCCARD, PCD, QSPI, RNG,</span></b><span style=""><br>
-                                            </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">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
-                                            stm32f4xx_hal_conf.h project
-                                            configuration file (template
-                                            file
-                                            stm32f4xx_hal_conf_template.h
-                                            available <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">from&nbsp;
-
-
-
-                                                Drivers</span></span>/STM32F4xx_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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">enabled
-
-
-
-                                                ,</span></span> the user
-                                            application may resort to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_RegisterCallback</span></span>()
-
-
-
-
-                                            to register specific
-                                            callback function(s) and
-                                            unregister it(them) with <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_<i>PPP</i>_UnRegisterCallback</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">General
-                                          updates to fix MISRA 2012
-                                          compilation <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">errors</span></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;">Replace <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetUID(</span></span>)
-                                            API by HAL_GetUIDw0(),
-                                            HAL_GetUIDw1() and
-                                            HAL_GetUIDw2()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CLR(</span></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;">"<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">stdio.h</span></span>"
-                                            include updated with "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">stddef.</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">h</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GPIO&nbsp;
-
-
-
-                                            </span></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;">Add missing
-                                          define for SPI3 alternate
-                                          function "GPIO_AF5_SPI3" for
-                                          STM32F401VE 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;">Remove
-                                          "GPIO_AF9_TIM14" from defined
-                                          alternate function list for
-                                          STM32F401xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TogglePin(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) reentrancy
-                                          robustness improvement</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) API update
-                                          to avoid potential pending
-                                          interrupt after call</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                          GPIO_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">INDEX(</span></span>)
-                                          API for more compliance with
-                                          STM32F412Vx/STM32F412Rx/STM32F412Cx
-                                          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;">Update
-                                          GPIO_BRR registers with
-                                          Reference Manual regarding
-                                          registers and bit definition
-                                          values</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CRYP_InitTypeDef</span></span>
-                                          </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">is no more
-                                          supported, changed by <span class="spelle"><b><span style="font-family: &quot;Verdana&quot;,sans-serif;">CRYP_ConfigTypedef</span></b></span>
-                                          to allow changing parameters
-                                          using <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">setConfig(</span></span>)
-                                          API without reinitialize the
-                                          CRYP IP using the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Init</span></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;">New
-                                          parameters added in the <span class="spelle"><b><span style="font-family: &quot;Verdana&quot;,sans-serif;">CRYP_ConfigTypeDef</span></b></span>
-                                          structure: <b>B0</b> and <span class="grame"><b><span style="font-family: &quot;Verdana&quot;,sans-serif;">DataWidthUnit</span></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
-                                          <span class="spelle"><b><span style="font-family: &quot;Verdana&quot;,sans-serif;">CRYP_HandleTypeDef</span></b></span>
-                                          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;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetConfig(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableAutoKeyDerivation(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DisableAutoKeyDerivation(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Encypt(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Decypt(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Encypt_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Decypt_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Encypt_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_Decypt_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_AES<b>GCM</b>_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GenerateAuthTAG(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_AES<b>CCM</b>_Generago</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">teAuthTAG(</span></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;">Remove
-                                          useless LPTIM Wakeup EXTI
-                                          related macros from <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_TimeOut_Start_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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
-
-
-
-                                          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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                            to
-                                            HAL_I2C_Slave_Seq_Receive_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;">SMBUS defined
-                                          flags are removed as not used
-                                          by the HAL I2C driver</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="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_FLAG_SMBALERT</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_FLAG_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;">I2C_FLAG_PECERR</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_FLAG_SMBHOST</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_FLAG_SMBDEFAULT</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;">Add support
-                                          of I2C repeated start feature
-                                          in DMA Mode:</span><span style="font-size: 10pt;"><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;">With the
-                                            following new API's</span><span style="font-size: 10pt;"><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;">HAL_I2C_Master_Seq_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Seq_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Slave_Seq_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Slave_Seq_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        </ul>
-                                      </ul>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new I2C
-                                          transfer options to easy
-                                          manage the sequential <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transfers</span></span></span><span style="font-size: 10pt;"><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;">I2C_FIRST_AND_NEXT_FRAME</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">I2C_LAST_FRAME_NO_STOP</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">I2C_OTHER_FRAME</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">I2C_OTHER_AND_LAST_FRAME</span><span style="font-size: 10pt;"><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
-
-
-
-                                          FMPI2C</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> update</span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="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_FMPI2C_Master_Sequential_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            to
-                                            HAL_FMPI2C_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_FMPI2C_Master_Sequentiel_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            to
-                                            HAL_FMPI2C_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_FMPI2C_Master_Sequentiel_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                            to
-                                            HAL_FMPI2C_Master_Seq_Transmit_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_FMPI2C_Master_Sequentiel_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                            to
-                                            HAL_FMPI2C_Master_Seq_Receive_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;">Rename
-                                          FMPI2C_CR1_DFN to
-                                          FMPI2C_CR1_DNF for more
-                                          compliance with Reference
-                                          Manual regarding registers and
-                                          bit definition <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">naming</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style=""><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: 10pt;"><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;">With the
-                                            following new API's</span><span style="font-size: 10pt;"><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;">HAL_FMPI2C_Master_Seq_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_Master_Seq_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_Slave_Seq_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_Slave_Seq_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style="font-size: 10pt;"><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
-
-
-
-                                          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 the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLASH_OB_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetRDP(</span></span>)
-                                          API to return the correct RDP
-                                          level</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 class="grame"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL&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;">Remove GPIOD
-                                          CLK macros for STM32F412Cx
-                                          devices (X = D)</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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 GPIOE
-                                          CLK macros for
-                                          STM32F412Rx\412Cx devices: (X
-                                          = E)</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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
-                                          GPIOF/G CLK macros for
-                                          STM32F412Vx\412Rx\412Cx
-                                          devices (X= F or G)</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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_GPIO<b>X</b>_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</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;">__HAL_RCC_GPIO<b>X</b>_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</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;">__HAL_RCC_GPIO<b>X</b>_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED(</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;">__HAL_RCC_GPIO<b>X</b>_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLED(</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;">__HAL_RCC_GPIO<b>X</b>_FORCE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RESET(</span></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
-
-
-
-                                          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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span>
-                                            parameter in HAL RNG Handler
-                                            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;">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;">Add
-                                          __LL_ADC_CALC_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TEMPERATURE(</span></span>)
-                                          helper macro to calculate the
-                                          temperature (unit: degree
-                                          Celsius) from ADC conversion
-                                          data of internal temperature
-                                          sensor.</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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 ADC
-                                          channels configuration issues
-                                          on STM32F413xx/423xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></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;">To allow
-                                            possibility to switch
-                                            between VBAT and TEMPERATURE
-                                            channels <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">configurations</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;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">), <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_Start_IT</span></span>()
-
-
-
-
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADC_Start_DMA</span></span>()
-
-
-
-
-                                          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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DFSDM&nbsp;
-
-
-
-                                            </span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CAN&nbsp;
-
-
-
-                                            </span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FilterActivation</span></span>
-                                          parameter in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CAN_FilterTypeDef</span></span>
-                                          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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE</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;">CAN_FILTER_DISABLE
-
-
-
-
-                                            instead of <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC&nbsp;
-
-
-
-                                            </span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_StateTypeDef</span></span>
-                                            structure <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">parameters</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;">Add new
-                                            defines for CEC <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">states</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA&nbsp;
-
-
-
-                                            </span></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;">Add clean of
-                                          callbacks in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></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
-
-
-
-                                          DMA2<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">D&nbsp;
-
-
-
-                                            </span></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
-
-
-
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DSI&nbsp;
-
-
-
-                                            </span></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;">Fix read
-                                          multibyte issue: remove extra
-                                          call to __HAL_UNLOCK__ from <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DSI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ShortWrite(</span></span>)
-                                          API.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">drivers</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">variables</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;">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
-
-
-
-                                          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="square">
-                                      <li class="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
-                                          followings API's as feature
-                                          not supported by
-                                          STM32F469xx/479xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableWakeUpPinPolarityRisingEdge(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableWakeUpPinPolarityRisingEdge(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_StateTypeDef</span></span>
-                                          structure to add new state:
-                                          HAL_SPI_STATE_ABORT</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AutoReloadPreload</span></span>
-                                          field in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TIM_Base_InitTypeDef</span></span>
-                                          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;">Refer to
-                                            the TIM examples to identify
-                                            the <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">changes</span></span><b>
-                                            </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;">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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_MasterConfigTypeDef</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_BreakDeadTimeConfigTypeDef</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 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PeriodElapsedHalfCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_IC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CaptureHalfCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_PWM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PulseFinishedHalfCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TriggerHalfCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_SlaveConfigSynchronization</span></span>
-                                            to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_SlaveConfigSynchro</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_SlaveConfigSynchronization_IT</span></span>
-                                            to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_SlaveConfigSynchro_IT</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_ConfigCommutationEvent</span></span>
-                                            to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_ConfigCommutEvent</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_ConfigCommutationEvent_IT</span></span>
-                                            to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_ConfigCommutEvent_IT</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_ConfigCommutationEvent_DMA</span></span>
-                                            to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_ConfigCommutEvent_DMA</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_CommutationCallback</span></span>
-                                            to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_CommutCallback</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_DMACommutationCplt</span></span>
-                                            to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TIMEx_DMACommutationCplt</span></span></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</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;">Fix BCD
-                                          handling <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">fr</span></span> OTG
-                                          instance in device <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</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;">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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FIFO</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;">Fix Toggle
-                                          OUT interrupt channel in host
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</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;">Update USB
-                                          OTG max number of endpoints (6
-                                          FS and 9 HS instead of 5 and
-                                          8)</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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
-                                          OTG IP to enable internal
-                                          transceiver when starting USB
-                                          device after committee BCD <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">negotiation</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;">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="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IWDGx</span></span>
-                                          parameter instead of IWDG
-                                          instance defined in CMSIS <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">device</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.4
-
-
-
-                                        / 02-February-2018</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;"><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="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UNUSED(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UNUSED(</span></span>)
-                                            macro is called from C++
-                                            file</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
-                                          make RAMFUNC define as generic
-                                          type instead of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_StatusTypdef</span></span>
-                                          type.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" 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;prototypes of the
-                                          following APIs after change on
-                                          RAMFUNC <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">defines</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FLASHEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">StopFlashInterfaceClk(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FLASHEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">StartFlashInterfaceClk(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FLASHEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableFlashSleepMode(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FLASHEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DisableFlashSleepMode(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAStop(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Abort</span></span>()
-
-
-
-
-                                          process to fix the lock/unlock
-                                          audio issue</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.3
-
-
-
-                                        / 22-December-2017</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;"><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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">versions</span></span></span></b><span style=""><o:p></o: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;">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/STM32F4xx_HAL_Driver/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Src</span></span>
-                                            and
-                                            Drivers/STM32f4xx_HAL_Driver/Inc
-                                            folders. It can be enabled
-                                            through switch
-                                            HAL_CAN_MODULE_ENABLED in
-                                            stm32f4xx_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/STM32F4xx_HAL_Driver/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Src</span></span>/Legacy
-
-
-
-                                            and
-                                            Drivers/STM32F4xx_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 stm32f4xx_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="square">
-                                      <li class="MsoNormal" 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
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">systick</span></span>
-                                          period to 1ms, 10 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ms</span></span>
-                                          or 100 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ms :</span></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 the
-                                            following <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">API's
-
-
-
-                                                :</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetTickPrio(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">):
-                                              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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetTickFreq(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetTickFreq(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">):
-                                              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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TickFreqTypeDef</span></span>
-                                            enumeration for the
-                                            different Tick Frequencies:
-                                            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="square">
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CAN_InitTypeDef</span></span>
-                                          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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SyncJumpWidth</span></span>,
-                                            BS1 to TimeSeg1, BS2 to
-                                            TimeSeg2, TTCM to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TimeTriggeredMode</span></span>,
-                                            ABOM to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AutoBusOff</span></span>,
-                                            AWUM to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AutoWakeUp</span></span>,
-                                            NART to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AutoRetransmission</span></span>
-                                            (inversed), RFLM to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ReceiveFifoLocked</span></span>
-                                            and TXFP to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TransmitFifoPriority</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;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) is split
-                                          into both <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Init</span></span>()
-
-
-
-
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Start</span></span>()
-
-
-
-
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) is replaced
-                                          by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_AddTxMessage</span></span>()
-
-
-
-
-                                          to place Tx Request, then <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_GetTxMailboxesFreeLevel</span></span>()
-
-
-
-
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Transmit_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) is replaced
-                                          by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_ActivateNotification</span></span>()
-
-
-
-
-                                          to enable transmit IT, then <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_AddTxMessage</span></span>()
-
-
-
-
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Receive(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) is replaced
-                                          by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_GetRxFifoFillLevel</span></span>()
-
-
-
-
-                                          for polling until reception,
-                                          then <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_GetRxMessage</span></span>()
-
-
-
-
-                                          <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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Receive_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) is replaced
-                                          by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_ActivateNotification</span></span>()&nbsp;to
-
-
-
-
-                                          enable receive IT, then <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_GetRxMessage</span></span>()<br>
-                                          in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">receivecallback</span></span>
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Slepp(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) is renamed
-                                          as <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_RequestSleep</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TxCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_RxCpltCallback</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> is split
-                                          into HAL_CAN_RxFifo0<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MsgPendingCallback(</span></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
-
-
-
-                                          FMPI2C </span></b><span style="font-size: 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
-                                          option
-                                          FMPI2C_LAST_FRAME_NO_STOP for
-                                          the sequential transfer <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">management</span></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;">This option
-                                            allows to manage a restart
-                                            condition after several call
-                                            of the same master
-                                            sequential interface.&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;">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="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">macros</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SOURCE(</span></span>)
-                                            allowing to get the RTC
-                                            clock source</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PRESCALER(</span></span>)
-                                            allowing to get the HSE
-                                            clock divider for RTC
-                                            peripheral</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;">Ensure reset
-                                          of CIR and CSR registers when
-                                          issuing <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span>)/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_RCC_DeInit</span></span>
-                                          functions</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OscConfig(</span></span>)&nbsp;to
-
-
-
-
-                                          keep backup domain enabled
-                                          when configuring
-                                          respectively&nbsp;LSE and RTC
-                                          clock source</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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
-                                          interfaces allowing to control
-                                          the activation or deactivation
-                                          of PLLI2S and PLLSAI:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_EnablePLLI2<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">S(</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;">HAL_RCCEx_DisablePLLI2<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">S(</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnablePLLSAI(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DisablePLLSAI(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">LL
-
-
-
-                                          RCC</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="square">
-                                      <li class="MsoNormal" 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
-                                          RCC macro </span><span style=""><o:p></o:p></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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_RCC_PLL_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetMainSource(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) allowing
-                                            to configure PLL main clock
-                                            source</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 / LL FSMC </span></b><span style="font-size: 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 clear of
-                                          the PTYP bit to select the
-                                          PCARD mode in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_PCCARD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          / <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FSMC_PCCARD_Init</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.2
-
-
-
-                                        / 06-October-2017</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;">Fix
-                                        compilation&nbsp;warning with
-                                        GCC <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">compiler</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;">Remove
-
-
-
-                                        Date and version
-                                        from&nbsp;header <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">files</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;">Update
-
-
-
-                                        HAL drivers to refer to the
-                                        new&nbsp;CMSIS bit position
-                                        defines instead of usage the
-                                        POSITION_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">VAL(</span></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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f4xx_hal_def.h
-
-
-
-                                          file changes:&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;">Update
-                                            __weak and __packed defined
-                                            values for&nbsp;ARM compiler</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            __ALIGN_BEGIN and
-                                            __ALIGN_END defined values
-                                            for&nbsp;ARM <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">compiler</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f4xx_ll_system.h
-
-
-
-
-                                          file:
-                                          add&nbsp;LL_SYSCFG_REMAP_SDRAM
-                                          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;">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="square">
-                                      <li class="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
-                                          definition of ADC channel
-                                          temperature sensor for
-                                          STM32F413xx and STM32F423xx
-                                          devices.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" 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;values
-
-
-
-                                          for the following defines:
-                                          DMA_FLAG_FEIF0_4 and
-                                          DMA_FLAG_DMEIF0_4&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
-
-
-
-                                          DSI </span></b><span style="font-size: 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;">Fix Extra
-                                          warning with SW4STM32 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">compiler</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;">Fix DSI
-                                          display issue when using EWARM
-                                          w/ high level <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">optimization</span></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;">Fix
-                                          MISRAC&nbsp;errors</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FLASH_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Unlock(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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
-
-
-
-                                          FMPI2C&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="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">address</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;">Update
-                                          FMPI2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WaitOnRXNEFlagUntilTimeout(</span></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
-                                          FMPI2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TransferConfig(</span></span>)
-                                          to fix wrong bit 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 code
-                                          comments to use DMA stream
-                                          instead of DMA <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">channel</span></span><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableWakeUpPin(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update
-                                          description to add support of
-                                          PWR_WAKEUP_PIN2 and
-                                          PWR_WAKEUP_PIN3</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" 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 STM32F412Rx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</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;">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="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mesage</span></span>
-                                          about device <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">address</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;">Update
-                                          I2C_MasterReceive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RXNE(</span></span>)
-                                          and I2C_MasterReceive_BTF()
-                                          static APIs to fix bad
-                                          Handling of NACK in I2C master
-                                          receive process.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetOscConfig(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RCC_OscInitStruct</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;">check on
-                                            null <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pointer</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ClockConfig(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pointer</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;">optimize&nbsp;code
-
-
-
-                                            size by updating the
-                                            handling method of the SWS <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">bits</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;">update to <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">use&nbsp;
-
-
-
-
-                                                _</span></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>
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span>)
-                                          &nbsp;and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_RCC_DeInit</span></span>()
-
-
-
-
-                                          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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">S
-                                                &nbsp;ready</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">falgs</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;">Initialize
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">systick</span></span>
-                                            interrupt <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">period</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetSysClockFreq(</span></span>)
-                                          to avoid risk of rounding
-                                          error which may leads to a
-                                          wrong returned value.</span><span style="font-size: 7pt;"><span style="font-size-adjust: none; font-stretch: normal;">&nbsp;</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin: 4.5pt 0in 4.5pt 1in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;"><o:p>&nbsp;</o:p></span></p>
-                                  <p class="MsoListParagraph" style="margin: 4.5pt 0in 4.5pt 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;"><o:p>&nbsp;</o:p></span></p>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) remove
-                                          Lock()/Unlock()</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_MMC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Erase(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)
-                                          API:&nbsp;add missing () to
-                                          fix&nbsp;compilation warning
-                                          detected with SW4STM32 when
-                                          extra feature 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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) API: update
-                                          to force the wait for synchro
-                                          before setting TAFCR register
-                                          when BYPSHAD bit in CR
-                                          register is 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;">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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAStop(</span></span>)
-                                          API to flush <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">fifo</span></span>
-                                          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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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
-                                          DMA fullduplex process to
-                                          handle I2S Rx and Tx DMA Half
-                                          transfer complete <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">callback</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;">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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_OCN_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">xxxx(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_PWMN_xxx</span></span>()
-
-
-
-
-                                          API description&nbsp;to remove
-                                          support of TIM_CHANNEL_4</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" 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="square">
-                                      <li class="MsoNormal" 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
-                                          clear DMA flags using WRITE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">REG(</span></span>)
-                                          instead SET_REG() API to avoid
-                                          read access to the IFCR
-                                          register that is write only.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" 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="square">
-                                      <li class="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 warning
-                                          with static <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">analyzer</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;">LL
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BaudRate</span></span>
-                                          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;">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="square">
-                                      <li class="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
-                                          IS_I2C_CLOCK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPEED(</span></span>)
-                                          and IS_I2C_DUTY_CYCLE()
-                                          respectively to
-                                          IS_LL_I2C_CLOCK_SPEED() and
-                                          IS_LL_I2C_DUTY_CYCLE() to
-                                          avoid incompatible macros
-                                          redefinition.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" 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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnableUpdateEvent(</span></span>)
-                                          API to clear UDIS bit in TIM
-                                          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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DisableUpdateEvent(</span></span>)
-                                          API to set UDIS bit in TIM 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
-
-
-
-                                          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="square">
-                                      <li class="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 MISRA
-                                          error w/ IS_LL_USART_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BRR(</span></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 wrong
-                                          check when UART10 instance is
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">used</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.1
-
-
-
-                                        / 14-April-2017</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UserManuals</span></span>
-                                          to support LL <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">drivers</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;"><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="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRANSMIT(</span></span>)
-                                          call to abort transmission
-                                          when timeout is reached</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnterUnderDriveSTOPMode(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) API: remove
-                                          check on UDRDY flag</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">configuration</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LL_ADC_INJ_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetSequencerRanks(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LL_ADC_INJ_GetSequencerRanks</span></span>()
-
-
-
-
-                                            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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">seqencer</span></span>
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ranks</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.7.0
-
-
-
-                                        / 17-February-2017</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">optimization</span></span></span></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;">Low Layer <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">drivers</span></span>
-                                          APIs provide register level
-                                          programming: require deep
-                                          knowledge of peripherals
-                                          described in STM32F4xx
-                                          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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">additionnal</span></span>
-                                            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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">drivers</span></span>
-                                          APIs are implemented as static
-                                          inline function in new<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><i>Inc/stm32f4xx_ll_ppp.h</i><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>files
-
-
-
-
-                                          for PPP peripherals, there is
-                                          no configuration file and each<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><i>stm32f4xx_ll_ppp.h</i><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;">Fix&nbsp;extra
-
-
-
-                                        warnings with GCC <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">compiler</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;">HAL
-                                        drivers&nbsp;clean up: remove
-                                        double casting 'uint32_t' and '<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">U</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;">Add
-                                        new<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><b>HAL
-
-
-
-                                          MMC</b><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">versions</span></span></span></b><span style=""><o:p></o: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;">HAL SD</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">structures</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;">Modify
-                                              Read / Write sequences:
-                                              separate transfer process
-                                              and SD Cards state <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">management</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_IRQHandler</span></span>
-                                              function by optimizing the
-                                              management of interrupt <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">errors</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to
-                                            the following example to
-                                            identify the changes: BSP
-                                            example and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_Device</span></span>/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MSC_Standalone</span></span>
-                                            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 NAND</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NAND_AddressTypeDef</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NAND_DeviceConfigTypeDef</span></span>
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NAND_HandleTypeDef</span></span>
-                                            structures <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">fields</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;">Add new <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_NAND_ConfigDevice</span></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="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL DFSDM</span></b><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="square">
-                                        <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;">Add
-                                              support of Multichannel
-                                              Delay 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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DFSDM_ConfigMultiChannelDelay</span></span>
-                                                API</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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">The
-                                                following APIs are moved
-                                                to internal static
-                                                functions: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DFSDM_ClockIn_SourceSelection</span></span>,
-                                                <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DFSDM_ClockOut_SourceSelection</span></span>,
-                                                <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DFSDM_DataInX_SourceSelection</span></span>
-                                                (X=0,2,4,6), <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DFSDM_BitStreamClkDistribution_Config</span></span></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 I2S</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</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&nbsp;specific
-
-
-
-
-                                            callback API to manage I2S
-                                            full duplex end of transfer
-                                            process:</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_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxCpltCallback(</span></span>)
-                                              and
-                                              HAL_I2S_RxCpltCallback()
-                                              API's will be replaced
-                                              with only
-                                              HAL_I2SEx_TxRxCpltCallback()
-                                              API.&nbsp;</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
-
-
-
-                                        </span></b><span style="font-size: 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Modifiy</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> default <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_Delay</span></span>
-                                          implementation to guarantee
-                                          minimum <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">delay</span></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
-
-
-
-                                          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="square">
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_MPU_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Disable(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_MPU_Enable</span></span>()
-
-
-
-
-                                          from stm32f4xx_hal_cortex.h to
-                                          stm32f4xx_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;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_MPU_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Disable(</span></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
-
-
-
-                                          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="square">
-                                      <li class="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_FLASH_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ADDRESS(</span></span>)
-                                          macro update to support OTP
-                                          range</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FLASH_Program_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DoubleWord(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): 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;">LL
-
-
-
-                                          GPIO</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><span style="font-size: 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;">Update
-                                          IS_GPIO_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PIN(</span></span>)
-                                          macro implementation to be
-                                          more safe</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" 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
-
-
-
-                                          RCC</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><span style="font-size: 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;">Update
-                                          IS_RCC_PLLQ_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">VALUE(</span></span>)
-                                          macro implementation: the
-                                          minimum accepted&nbsp;value is
-                                          2 instead of 4</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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;">Fix
-                                          compilation issue w/
-                                          __HAL_RCC_USB_OTG_FS_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED(</span></span>)
-                                          and
-                                          __HAL_RCC_USB_OTG_FS_IS_CLK_DISABLED()
-                                          macros for STM32F401xx 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;">Add the
-                                          following&nbsp;is clock
-                                          enabled macros for STM32F401xx
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></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;__HAL_RCC_SDIO_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED(</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;">__HAL_RCC_SPI4_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED(</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;">__HAL_RCC_TIM10_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED(</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the
-                                          following&nbsp;is clock
-                                          enabled macros for STM32F410xx
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></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;__HAL_RCC_CRC_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED(</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;">__HAL_RCC_RNG_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED(</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span>)
-                                          to reset the RCC clock
-                                          configuration to the default
-                                          reset state.</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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 macros
-                                          to configure BKPSRAM from
-                                          STM32F401xx devices&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 to
-                                          refer to <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AHBPrescTable[</span></span>]
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">APBPrescTable</span></span>[]
-
-
-
-
-                                          tables defined in
-                                          system_stm32f4xx.c file
-                                          instead of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">APBAHBPrescTable</span></span>[]
-
-
-
-
-                                          table.</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="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            FMPI2C</span></b><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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          FMPI2C_FIRST_AND_NEXT_FRAME
-                                          define in&nbsp;Sequential
-                                          Transfer Options</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="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_ADCEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">InjectedConfigChannel(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update the
-                                          external trigger injected
-                                          condition</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="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update to
-                                          check compatibility between
-                                          FIFO threshold level and size
-                                          of the memory burst&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="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">QSPI_HandleTypeDef</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> structure:
-                                          Update transfer parameters on
-                                          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
-
-
-
-                                          UART/USART/IrDA/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 type="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA Receive
-                                          process; the code has been
-                                          updated to clear the USART
-                                          OVR&nbsp;flag before
-                                          enabling&nbsp;DMA receive
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">UART_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          manage correctly USART6
-                                          instance that is not available
-                                          on STM32F410Tx devices</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="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Transmit_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Receive_IT</span></span>()
-
-
-
-
-                                          processes</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="widows: 1; float: none; word-spacing: 0px;"><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><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
-                                          __HAL_TIM_MOE_DISABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UNCONDITIONALLY(</span></span>)
-                                          macro to disable Master output
-                                          without check on TIM channel
-                                          state.&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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigBreakDeadTime(</span></span>)
-                                          to fix TIM BDTR register
-                                          corruption.</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="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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_Master_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span>)
-                                          and HAL_I2C_Slave_Transmit()
-                                          to avoid sending extra
-                                          bytes&nbsp;at the end of the
-                                          transmit processes</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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_Mem_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Read(</span></span>)
-                                          API to fix wrong check on
-                                          misused parameter “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
-                                          I2C_MasterReceive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RXNE(</span></span>)
-                                          and I2C_MasterReceive_BTF()
-                                          static APIs to enhance Master
-                                          sequential reception 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;"><span style="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add transfer
-                                          abort APIs&nbsp;and associated
-                                          callbacks in interrupt <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Abort(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_Abort_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="widows: 1; float: none; word-spacing: 0px;"><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><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&nbsp;specific
-
-
-
-
-                                          callback API to manage I2S
-                                          full duplex end of transfer
-                                          process:</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_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxCpltCallback(</span></span>)
-                                            and HAL_I2S_RxCpltCallback()
-                                            API's will be replaced with
-                                            only
-                                            HAL_I2SEx_TxRxCpltCallback()
-                                            API.&nbsp;</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;">Update I2S
-                                          Transmit/Receive polling
-                                          process to manage&nbsp;Overrun
-                                          and Underrun errors</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;">Move
-                                          the&nbsp;I2S clock input
-                                          frequency calculation&nbsp;to
-                                          HAL RCC driver.</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 the
-                                          HAL I2SEx driver to keep only
-                                          full duplex 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_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          API updated 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 wrong
-                                            I2S clock calculation when
-                                            PCM mode is used.</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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
-                                            state&nbsp;HAL_I2S_ERROR_PRESCALER&nbsp;when
-                                            the I2S clock is wrongly <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">configured</span></span></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" type="square">
-                                    <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;">HAL
-
-
-
-                                            LTDC </span></b><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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt;">Optimize <span class="spelle"><span style="font-family: &quot;Segoe&quot;,UI;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Segoe&quot;,UI;">IRQHandler(</span></span>)
-                                          function by using direct
-                                          register read</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt;">Rename the
-                                          following <span class="grame"><span style="font-family: &quot;Segoe&quot;,UI;">API's</span></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 class="spelle"><span style="font-size: 10pt;">HAL_LTDC_</span></span><span class="grame"><span style="font-size: 10pt;">Relaod(</span></span><span style="font-size: 10pt;">) by <span class="spelle"><span style="font-family: &quot;Segoe&quot;,UI;">HAL_LTDC_Reload</span></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 class="spelle"><span style="font-size: 10pt;">HAL_LTDC_</span></span><span class="grame"><span style="font-size: 10pt;">StructInitFromVideoConfig(</span></span><span style="font-size: 10pt;">) by <span class="spelle"><span style="font-family: &quot;Segoe&quot;,UI;">HAL_LTDCEx_StructInitFromVideoConfig</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 class="spelle"><span style="font-size: 10pt;">HAL_LTDC_</span></span><span class="grame"><span style="font-size: 10pt;">StructInitFromAdaptedCommandConfig(</span></span><span style="font-size: 10pt;">) by <span class="spelle"><span style="font-family: &quot;Segoe&quot;,UI;">HAL_LTDCEx_StructInitFromAdaptedCommandConfig</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;"><span style="font-size: 10pt;">Add new
-                                          defines for LTDC layers
-                                          (LTDC_LAYER_1 / LTDC_LAYER_2)</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt;">Remove unused
-                                          <span class="grame"><span style="font-family: &quot;Segoe&quot;,UI;">asserts</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;">HAL
-
-
-
-                                          USB</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <b>PCD</b>
-                                        </span></span><span style="font-size: 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;">Flush all TX
-                                          FIFOs on USB Reset</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_EP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_EP_Receive</span></span>()
-
-
-
-
-                                          API's</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">LL
-
-
-
-                                          USB</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><span style="font-size: 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;">Enable DMA
-                                          Burst mode for USB OTG HS</span><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;">Fix SD card
-                                            detection <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">issue</span></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;">LL
-
-
-
-                                          SDMMC</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SDMMC_CmdSDEraseStartAdd</span></span>,
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SDMMC_CmdSDEraseEndAdd</span></span>,
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SDMMC_CmdOpCondition</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SDMMC_CmdSwitch</span></span>
-                                          functions</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.6.0
-
-
-
-                                        / 04-November-2016</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <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;">Add<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span><span style="">support of</span><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><b><span style="">STM32F413xx
-                                            and&nbsp;STM32F423xx</span></b><span style="">
-                                          devices</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;">General
-
-
-
-                                        updates to fix known defects and
-                                        enhancements <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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 add
-                                          the support of 3 CAN <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">management</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;"><span style="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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 add
-                                          the support of AES <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">features</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;"><span style="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            DFSDM</span></b><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="square">
-                                      <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;">Add
-                                            definitions for new external
-                                            trigger <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">filters</span></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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                            definition for new Channels
-                                            4, 5, 6 and <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">7</span></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="widows: 1; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                            functions and API for Filter
-                                            state configuration and <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">management</span></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;">Add new
-                                          functions:&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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DFSDM_BitstreamClock_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DFSDM_BitstreamClock_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Stop(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DFSDM_BitStreamClkDistribution_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Config(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)&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;"><span style="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            DMA</span></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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the
-                                            support of DMA Channels from
-                                            8 to 15</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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span>)
-                                            function with the check on
-                                            DMA stream instance</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
-
-
-
-                                          DSI</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>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigHostTimeouts(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_Init</span></span>()
-
-
-
-
-                                          functions to avoid scratch in
-                                          DSI_CCR 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
-
-
-
-                                          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;">Enhance <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WaitForLastOperation(</span></span>)
-                                          function 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;">Update
-                                          __HAL_FLASH_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                          macro 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;"><span style="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            GPIO</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                            specific alternate functions
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">definitions</span></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;">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 I2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAError(</span></span>)
-                                          function implementation to
-                                          ignore DMA FIFO 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
-
-
-
-                                          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;">Enhance
-                                          HAL_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          implementation to test on
-                                          PCM_SHORT and PCM_LONG
-                                          standards</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          IRDA</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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
-                                          functions and call backs for
-                                          Transfer <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Abort</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Abort(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortTransmit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortReceive(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_Abort_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_AbortTransmit_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_AbortReceive_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortTransmitCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortReceiveCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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
-
-
-
-                                          PCD</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetRxCount(</span></span>)
-                                          &nbsp;function 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;"><span style="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            RCC</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            __HAL_RCC_HSE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                            macro 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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;<span style="widows: 1; float: none; word-spacing: 0px;"></span></span></span><span style="">__HAL_RCC_LSE_<span class="grame">CONFIG(</span>)
-                                              macro implementation</span><o:p></o:p></span></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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 class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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
-                                          functions and call backs for
-                                          Transfer <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Abort</span></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;">HAL_</span><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Abort(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortTransmit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortReceive(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_Abort_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_AbortTransmit_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_AbortReceive_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortTransmitCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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><span class="apple-converted-space"><span style="">&nbsp;</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">AbortReceiveCpltCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            TIM</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><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="square">
-                                      <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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RemapConfig(</span></span>)
-                                            function to manage TIM
-                                            internal trigger remap:
-                                            LPTIM or TIM3_TRGO</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="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            UART<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></b><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="square">
-                                      <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;">Add
-                                            Transfer abort functions and
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">callbacks</span></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;"><span style="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            USART<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></b><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="square">
-                                      <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;">Add
-                                            Transfer abort functions and
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">callbacks</span></span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.5.2
-
-
-
-                                        / 22-September-2016</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <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;">HAL
-
-
-
-                                            I2C</span></b><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="square">
-                                      <li class="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
-                                          behavior in consecutive
-                                          transfers in case of single
-                                          byte transmission
-                                          (Master/Memory Receive <br>
-                                          interfaces)</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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_Master_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                          /
-                                          HAL_I2C_Master_Receive_DMA()/
-                                          HAL_I2C_Slave_Transmit_DMA() <br>
-                                          and
-                                          HAL_I2C_Slave_Receive_DMA() to
-                                          manage addressing phase
-                                          through interruption instead
-                                          of polling</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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&nbsp;check on I2C handle
-                                          state at start of all I2C
-                                          API's to ensure that I2C is <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ready</span></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 I2C
-                                          API's (Polling, IT and DMA
-                                          interfaces) to manage I2C <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferSize</span></span>
-                                          and&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferCount</span></span>
-                                          handle parameters instead of
-                                          API size parameter to help
-                                          user to get information of
-                                          counter in case of
-                                          error.&nbsp;</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 Abort
-                                          functionality to manage DMA
-                                          use <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">case</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;"><span style="widows: 1; float: none; word-spacing: 0px;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                            FMPI2C</span></b><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="square">
-                                      <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 to
-                                            disable Own Address<span style="widows: 1; float: none; word-spacing: 0px;"></span><span style="">
-                                              before&nbsp;setting the </span><span style="widows: 1; float: none; word-spacing: 0px;">new Own
-                                              Address</span><span style="widows: 1; float: none; word-spacing: 0px;">
-                                              configuration:</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="widows: 1; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                              HAL_FMPI2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                              to disable FMPI2C_OARx_EN
-                                              bit before any
-                                              configuration in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OARx</span></span>
-                                              registers</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;"><span style="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <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 CAN
-                                            receive processes to set CAN
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxMsg</span></span>
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FIFONumber</span></span>
-                                            parameter</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="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <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&nbsp;UART
-
-
-
-                                            handle </span><span class="spelle"><span style="widows: 1; float: none; word-spacing: 0px;"><span style="">TxXferCount</span>
-                                              and RxXferCount <span style="widows: 1; float: none; word-spacing: 0px;"></span></span><span style="">parameters
-
-
-
-
-                                              as volatile to avoid
-                                              eventual&nbsp;issue with <span class="grame">High Speed</span>
-                                              optimization &nbsp;</span><o:p></o:p></span></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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.5.1
-
-
-
-                                        / 01-July-2016</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <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;">HAL
-
-
-
-                                            GPIO</span></b><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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="widows: 1; float: none; word-spacing: 0px;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_Init</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">()/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span>)
-                                            API's:
-                                            update&nbsp;GPIO_GET_INDEX()
-                                            macro implementation to
-                                            support all GPIO'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;"><span style="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <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;">Fix
-                                            regression issue:
-                                            retore&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAPause(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_DMAResume</span></span>()&nbsp;<span style="widows: 1; float: none; word-spacing: 0px;"></span><span style="">API's</span><span style="widows: 1; float: none; word-spacing: 0px;">
-                                              <o:p></o:p></span></span></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <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;">Fix FSMC
-                                            macros compilation warnings
-                                            with STM32F412Rx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></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;"><span style="widows: 1; float: none; word-spacing: 0px;"><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><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="widows: 1; float: none; word-spacing: 0px;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PollFortransfer(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) API clean
-                                            up <br style="">
-                                            <!--[if !supportLineBreakNewLine]--><br style="">
-                                            <!--[endif]--></span><span style=""><o:p></o:p></span></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          PPP </span></b><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PPP refers to
-                                        IRDA, UART, USART and SMARTCARD)</span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: rgb(31, 73, 125); 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
-
-
-
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            to add a check on interrupt
-                                            source before managing the
-                                            error</span></span><span style="font-size: 7pt;"><span style="font-size-adjust: none; font-stretch: normal;">&nbsp;</span></span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" type="square">
-                                    <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;">HAL
-
-
-
-                                            QSPI </span></b><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="square">
-                                      <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;">Implement
-                                            workaround to fix the
-                                            limitation&nbsp;</span><span style="">pronounced
-
-
-
-                                            <span style="widows: 1; float: none; word-spacing: 0px;">in
-                                              the&nbsp;Errata
-                                              sheet&nbsp;2.1.8 section:
-                                              In some specific cases,
-                                              DMA2 data corruption
-                                              occurs when managing AHB
-                                              and APB2 peripherals in a
-                                              concurrent <span class="grame">way</span></span></span><o:p></o:p></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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.5.0
-
-
-
-                                        / 06-May-2016</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <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;">Add<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span><span style="">support of</span><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><b><span style="">STM32F412cx,
-
-
-
-
-                                            STM32F412rx, STM32F412vx and
-                                            STM32F412zx&nbsp;</span></b><span style="">devices</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;">General
-
-
-
-                                        updates to fix known defects and
-                                        enhancements <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;">Add
-                                        new HAL driver for <b>DFSDM </b><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">peripheral</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;">Enhance
-
-
-
-                                        HAL delay and time base
-                                        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;">Add new
-                                          drivers
-                                          stm32f4xx_hal_timebase_rtc_alarm_template.c
-                                          and
-                                          stm32f4xx_hal_timebase_rtc_wakeup_template.c
-                                          which override the native HAL
-                                          time base functions (defined
-                                          as weak) to either use the RTC
-                                          as time base tick source. For
-                                          more details about the usage
-                                          of these drivers, please refer
-                                          to HAL\<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TimeBase_RTC</span></span>
-                                          examples&nbsp;<span style="widows: 1; float: none; word-spacing: 0px;">and
-
-
-
-
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FreeRTOS</span></span>-based
-
-
-
-
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">applications</span></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.4.4</span></b><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <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,
-                                            I2<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">C,FMPI</span></span>2C,
-
-
-
-
-                                            QSPI<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">(referenced
-                                          as<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><i>PPP</i><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>here
-
-
-
-
-                                          below)<span class="apple-converted-space"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></i></span>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;">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
-                                              <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>stm32f4xx_it.c
-
-
-
-
-                                              file,<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                              function:<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>add
-
-
-
-
-                                              a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_IRQHandler</span></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 and
-                                              customize the Error
-                                              Callback API: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCallback(</span></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 class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">, FMPI2C </span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">(referenced
-                                          as<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><i>PPP</i><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>here
-
-
-
-
-                                          below)<span class="apple-converted-space"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></i></span>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<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>STOPF/BTF/AF
-
-
-
-
-                                            flag under DMA ISR by using
-                                            the<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>PPP
-
-
-
-                                            end of transfer interrupt in
-                                            the DMA transfer process.<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>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
-                                              <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>stm32f4xx_it.c
-
-
-
-
-                                              file,<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                              function:<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>add
-
-
-
-
-                                              a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_IRQHandler</span></span>()
-
-
-
-
-                                              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 I2C </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">driver:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="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
-                                            transfer processes IT
-                                            update: NACK during
-                                            addressing phase is managed
-                                            through I2C Error
-                                            interrupt&nbsp;instead of
-                                            HAL&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">state</span></span></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <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 class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></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;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span>),<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_MspInit</span></span>()
-
-
-
-
-                                            and<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_GetState</span></span>()&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 class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span>),<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_Start_IT</span></span>(),<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_MspDeInit</span></span>()
-
-
-
-
-                                            and<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_GetState</span></span>()
-
-
-
-
-                                            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 class="spelle"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">Refresh(</span></span><span class="spelle"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">WWDG_HandleTypeDef</span></span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;"> *<span class="spelle"><span style="font-family: &quot;Calibri&quot;,sans-serif;">hwwdg</span></span>,
-                                            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 class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>stm32f4xx_it.c
-
-
-
-
-                                            file,<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">QSPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            function:<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>add
-
-
-
-                                            a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_IRQHandler</span></span>()
-
-
-
-
-                                            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 class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></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: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_Receive</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;">Remove HAL
-                                            CEC receive interrupt
-                                            process function&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_Receive_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetReceivedFrameSize(</span></span>)
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">funtion</span></span>
-                                            to&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_GetLastReceivedFrameSize</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;">Add new HAL
-                                            APIs: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetDeviceAddress(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_ChangeRxBuffer</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;">Remove
-                                            the&nbsp;'<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">InitiatorAddress</span></span>'
-                                            field from the&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC_InitTypeDef</span></span>
-                                            structure&nbsp;and manage
-                                            it&nbsp;as a parameter in
-                                            the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_Transmit_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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 '<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxFrameSize</span></span>'
-                                            in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxCpltCallback(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC_HandleTypeDef</span></span>
-                                            structure to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC_InitTypeDef</span></span>
-                                            structure</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ClockConfig(</span></span>)
-                                          function to adjust the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SystemCoreClock</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;">Rename macros
-                                          and Literals:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RCC_PERIPHCLK_CK48&nbsp;by&nbsp;RCC_PERIPHCLK_C<b>L</b>K48</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_RCC_CK48CLKSOURCE&nbsp;by
-
-
-
-
-                                            IS_RCC_C<b>L</b>K48CLKSOURCE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RCC_CK48CLKSOURCE_PLLSAIP
-
-
-
-
-                                            by RCC_C<b>L</b>K48CLKSOURCE_PLLSAIP</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RCC_SDIOCLKSOURCE_CK48
-
-
-
-                                            by RCC_SDIOCLKSOURCE_C<b>L</b>K48</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RCC_CK48CLKSOURCE_PLLQ
-
-
-
-
-                                            by RCC_C<b>L</b>K48CLKSOURCE_PLLQ</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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetPeriphCLKConfig(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_PeriphCLKConfig</span></span>()
-
-
-
-
-                                          functions to support TIM <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Prescaler</span></span>
-                                          for STM32F411xx 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PeriphCLKConfig(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) API: update
-                                          to fix the RTC clock
-                                          configuration 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
-
-
-
-                                          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="square">
-                                      <li class="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.4.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: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_Receive</span></span>()</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <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;">Remove the
-                                            HAL CEC receive interrupt
-                                            process (<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_Receive_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetReceivedFrameSize(</span></span>)
-                                            function to&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_GetLastReceivedFrameSize</span></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 HAL
-                                            APIs: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetDeviceAddress(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_ChangeRxBuffer</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;">Remove
-                                            the&nbsp;'<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">InitiatorAddress</span></span>'
-                                            field from the&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC_InitTypeDef</span></span>
-                                            structure&nbsp;and manage
-                                            it&nbsp;as a parameter in
-                                            the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_Transmit_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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 '<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxFrameSize</span></span>'
-                                            in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CEC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxCpltCallback(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC_HandleTypeDef</span></span>
-                                            structure to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC_InitTypeDef</span></span>
-                                            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;"<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">rxState</span></span>"<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>field
-
-
-
-
-                                            in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC_HandleTypeDef</span></span>
-                                            structure to provide the<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>CEC<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>state
-
-
-
-
-                                            information related to Rx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Operations</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;">Rename
-                                            "state" field in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CEC_HandleTypeDef</span></span>
-                                            structure to "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gstate</span></span>":
-
-
-
-                                            CEC<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>state
-
-
-
-
-                                            information related to
-                                            global Handle management and
-                                            Tx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Operations</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;">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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">STATE(</span></span>)
-                                            macro to handle the new CEC
-                                            state parameters (<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gState</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">rxState</span></span>)</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">update</span></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="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">the</span></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
-                                              <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                              stm32f4xx_it.c file, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                              function: add a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_IRQHandler</span></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 and
-                                              customize the Error
-                                              Callback API: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCallback(</span></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
-
-
-
-                                          FMC</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_NORSRAM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_SDRAM_Timing_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></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 class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HCD_Port_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          to unmask disconnect IT only
-                                          when the port is disabled</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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/FMPI2C</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="square">
-                                      <li class="MsoNormal" 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="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">the</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">interrupt</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AbortCpltCallback(</span></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<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>HAL_I2C_StateTypeDef<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                            stm32f4xx_it.c file, I2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCallback(</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;">Refer to
-                                            the I2C_EEPROM or
-                                            I2C_TwoBoards_ComDMA project
-                                            examples usage of the <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">API</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NACK error
-                                          during addressing phase is
-                                          returned through interrupt
-                                          instead of previously through
-                                          I2C transfer <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">API's</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;">I2C
-                                          addressing phase is updated to
-                                          be managed using interrupt
-                                          instead of&nbsp;polling (Only
-                                          for HAL I2C driver)</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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
-                                            static functions to manage
-                                            I2C SB, ADDR and ADD10 flags</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
-
-
-
-                                          SPI<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; widows: 1; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">frequency</span></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="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Replace
-                                              the use of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WaitOnFlagUnitTimeout(</span></span>)
-                                              function by "if" statement
-                                              to check on RXNE/TXE <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">flage</span></span>
-                                              while transferring data</span><span style="font-size: 13.5pt;"><o:p></o:p></span></li>
-                                        </ul>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; widows: 1; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="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="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Minimize
-                                              access on SPI <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">registers</span></span></span><span style="font-size: 13.5pt;"><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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">disabled</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;">Update&nbsp;timeout
-
-
-
-
-                                              management to check on
-                                              global <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">processes</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;">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:<o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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
-                                              <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                              stm32f4xx_it.c file, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                              function: add a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_IRQHandler</span></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 and
-                                              customize the Error
-                                              Callback API: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCallback(</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;">Refer to
-                                              the following example
-                                              which describe the
-                                              changes: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_FullDuplex_ComDMA</span></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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix
-                                          regression in polling 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;">Add
-                                            preparing data to transmit
-                                            in case of slave mode in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TransmitReceive(</span></span>)
-                                            and&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_Transmit</span></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;">Add to
-                                            manage properly the overrun
-                                            flag at the end of a <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TransmitReceive(</span></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;">Fix
-                                          regression in interrupt 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;">Add a wait
-                                            on TXE flag in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_CloseTx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ISR(</span></span>)
-                                            and in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_CloseTxRx_ISR</span></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;">Add to
-                                            manage properly
-                                            the&nbsp;overrun flag in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_CloseRxTx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ISR(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_CloseRx_ISR</span></span>()</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">HAL
-
-
-
-                                          DMA2D<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></b><span style="font-size: 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;">Update the
-                                          HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">registers</span></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;">Update
-                                          HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Abort(</span></span>)
-                                          to disable DMA2D interrupts
-                                          after stopping transfer</span><span style="font-size: 13.5pt;"><o:p></o:p></span></li>
-                                      <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ProgramLineEvent(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">value</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;">Enable line
-                                            interrupt after setting the
-                                            line watermark <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">configuration</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new
-                                          HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CLUTLoad(</span></span>)
-                                          and<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>HAL_DMA2D_CLUTLoad_IT()<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span>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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Abort(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Suspend(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Resume(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnableDeadTime(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DisableDeadTime(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigDeadTime(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">more
-
-
-
-                                              clear</span></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>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; widows: 1; word-spacing: 0px;" 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;">HAL
-
-
-
-                                          LTDC<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; widows: 1; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></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 new
-                                          callback API <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ReloadEventCallback(</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;">Add <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Reload(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">APIs</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_ConfigLayer_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetWindowSize_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetWindowPosition_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetPixelFormat_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetAlpha_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetAddress_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_SetPitch_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_ConfigColorKeying_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_EnableColorKeying_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_DisableColorKeying_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_EnableCLUT_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_DisableCLUT_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoReload(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) 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 class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Variant
-                                            functions with “_<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NoReload</span></span>”
-                                            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 “<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Reload</span></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
-
-
-
-                                          RTC<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></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="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">cpu</span></span>
-                                          cycles
-                                          for&nbsp;ALRAWF,&nbsp;ALRBWF
-                                          and WUTWF flags</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; widows: 1; word-spacing: 0px;" 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;">HAL
-
-
-
-                                          SAI<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update<o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span>)
-                                          / <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Receive</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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_IRQHandler</span></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 error
-                                            management in case DMA
-                                            errors through <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferAbortCallback(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_Abort_IT</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;">Add error
-                                            management in case of <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Move <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BlockSynchroConfig(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_GetInputClock</span></span>()
-
-
-
-
-                                          functions to
-                                          stm32f4xx_hal_sai.c/.h files
-                                          (extension files are kept
-                                          empty for projects
-                                          compatibility reason)</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; widows: 1; word-spacing: 0px;" 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;">HAL
-
-
-
-                                          DCMI<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update<o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DCMI_DMAConvCplt</span></span>
-                                          to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DCMI_DMAXferCplt</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;">Update<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DCMI_Start_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">cpu</span></span>
-                                          cycles for DCMI <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">stop</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;">Add <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DCMI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Suspend(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DCMI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Resume(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DCMI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferAbortCallback(</span></span>)
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_Abort_IT</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;">Optimize
-                                            code by using direct
-                                            register <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">read</span></span></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">HAL
-
-
-
-                                          <i>DMA</i></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="square">
-                                      <li class="MsoNormal" 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
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RegisterCallback(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_UnRegisterCallback</span></span>
-                                          to register/unregister the
-                                          different callbacks identified
-                                          by the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">enum</span></span>
-                                          typedef <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_CallbackIDTypeDef</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;">Add new API <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_Abort_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">completed</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;"><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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></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: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove all
-                                          DMA states related to
-                                          MEM0/MEM1 in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_StateTypeDef</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;">HAL
-
-
-
-                                          IWDG</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="square">
-                                      <li class="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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetState(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refresh(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): 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: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IWDG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Example</span></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><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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_TimeOut_Start_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_Counter_Start_IT</span></span>(
-                                          ) APIs to configure <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WakeUp</span></span>
-                                          Timer EXTI interrupt to be
-                                          able to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">wakeup</span></span>
-                                          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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_TimeOut_Stop_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LPTIM_Counter_Stop_IT</span></span>(
-                                          ) APIs to disable <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WakeUp</span></span>
-                                          Timer EXTI interrupt.&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
-
-
-
-                                          NOR</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 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;">Update
-                                          NOR_ADDR_SHIFT macro <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;">HAL
-
-
-
-                                          PCD</span></b><span class="apple-converted-space"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><span style="font-size: 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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></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><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>
-                                  <ul style="margin-top: 0in; text-align: start; widows: 1; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">process</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;">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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                            stm32f4xx_it.c file, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">QSPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            function: add a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_IRQHandler</span></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 and
-                                            customize the Error Callback
-                                            API: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCallback(</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the
-                                          management of non-blocking
-                                          transfer abort service:&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_Abort_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AbortCpltCallback(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_StateTypeDef</span></span>
-                                            provides the current state
-                                            during the abort <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">phase</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;"><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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">the</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">QSPI_ReadWrite_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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">QSPI_MemoryMapped</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">QSPI_ExecuteInPlace</span></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; widows: 1; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">fifo</span></span>
-                                          threshold:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="circle">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetFifoThreshold(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">):
-                                            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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetFifoThreshold(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_QSPI_Receive_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">HAL
-
-
-
-                                          ADC</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="square">
-                                      <li class="MsoNormal" 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_ADC_PATH_INTERNAL_VBAT_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-                                          macro&nbsp;for STM32F42x and
-                                          STM32F43x devices to
-                                          provide&nbsp;the possibility
-                                          to convert <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">VrefInt</span></span>
-                                          channel when both <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">VrefInt</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Vbat</span></span>
-                                          channels are selected.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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 class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></span></b><span style="font-size: 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 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">driver</span></span>
-                                          update for wait on flag
-                                          management optimization<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</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;">HAL
-
-
-
-                                          WWDG<span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span></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="square">
-                                      <li class="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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Start(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_Start_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">MspDeInit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetState(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""><o:p></o:p></span></li>
-                                          <ul style="margin-top: 0in;" type="square">
-                                            <li class="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;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EWIMode</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;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refresh(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)&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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">counter</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;">The
-                                                "counter" parameter has
-                                                been <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">removed</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;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EarlyWakeupCallback(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) is the
-                                              new prototype of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_WakeUpCallback</span></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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Refer to the
-                                          following example to identify
-                                          the changes: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WWDG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Example</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.4.4
-
-
-
-                                        / 22-January-2016</span><span style=""><o:p></o:p></span></font></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="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;">HAL
-
-
-
-                                          Generic </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update<o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f4xx_hal_conf_template.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;">Optimize
-                                            HSE Startup Timeout value
-                                            from 5000ms to 100 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ms</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;">Add new
-                                            define LSE_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;">Add new
-                                            define USE_SPI_CRC for code
-                                            cleanup when the CRC
-                                            calculation is disabled.</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
-                                          drivers to support MISRA C
-                                          2004 rule <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">10.6</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;">Add new
-                                          template&nbsp;driver to
-                                          configure <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">timebase</span></span>
-                                          using <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TIMER :</span></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="">s</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">tm32f4xx_hal_timebase_tim_template.c</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <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;">HAL
-
-
-
-                                          CAN </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</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;">Update&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CAN_Transmit_IT</span></span>()
-
-
-
-
-                                          functions to&nbsp;unlock
-                                          process when all Mailboxes are
-                                          busy</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <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;">HAL
-
-
-
-                                          DSI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update<o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetPHYTimings(</span></span>)
-                                          functions to use the correct
-                                          mask</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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=""> </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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Several
-                                          update on HAL UART driver to
-                                          implement the new UART state
-                                          machine:&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 new
-                                            field in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART_HandleTypeDef</span></span>
-                                            structure: "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">rxState</span></span>",
-
-
-
-
-                                            UART state information
-                                            related to Rx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Operations</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;">Rename
-                                            "state" field in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART_HandleTypeDef</span></span>
-                                            structure by "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gstate</span></span>":
-
-
-
-                                            UART state information
-                                            related to global Handle
-                                            management and Tx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Operations</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;">Update UART
-                                            process to manage the new
-                                            UART 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_UART_RESET_HANDLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">STATE(</span></span>)
-                                            macro to handle the new UART
-                                            state parameters (<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gState</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">rxState</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                          UART_BRR_SAMPLING16() and
-                                          UART_BRR_SAMPLING8() Macros to
-                                          fix wrong <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <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;">HAL
-
-
-
-                                          IRDA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Several
-                                          update on HAL IRDA driver to
-                                          implement the new UART state
-                                          machine:&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 new
-                                            field in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRDA_HandleTypeDef</span></span>
-                                            structure: "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">rxState</span></span>",
-
-
-
-
-                                            IRDA state information
-                                            related to Rx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Operations</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;">Rename
-                                            "state" field in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART_HandleTypeDef</span></span>
-                                            structure by "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gstate</span></span>":
-
-
-
-                                            IRDA state information
-                                            related to global Handle
-                                            management and Tx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Operations</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;">Update IRDA
-                                            process to manage the new
-                                            UART 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_IRDA_RESET_HANDLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">STATE(</span></span>)
-                                            macro to handle the new IRDA
-                                            state parameters (<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gState</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">rxState</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Removal of
-                                          IRDA_TIMEOUT_VALUE define</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BRR(</span></span>)
-                                          Macro to fix wrong <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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=""> </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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Several
-                                          update on HAL SMARTCARD driver
-                                          to implement the new UART
-                                          state machine:&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 new
-                                            field in&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD_HandleTypeDef</span></span>
-                                            structure: "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">rxState</span></span>",
-
-
-
-
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARDstate</span></span>
-                                            information related to Rx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Operations</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;">Rename
-                                            "state" field in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UART_HandleTypeDef</span></span>
-                                            structure by "<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gstate</span></span>":
-
-
-
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARDstate</span></span>
-                                            information related to
-                                            global Handle management and
-                                            Tx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Operations</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;">Update&nbsp;SMARTCARD
-
-
-
-
-                                            process to manage the new
-                                            UART 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_SMARTCARD_RESET_HANDLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">STATE(</span></span>)
-                                            macro to handle the
-                                            new&nbsp;SMARTCARD state
-                                            parameters (<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">gState</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">rxState</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                          SMARTCARD_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BRR(</span></span>)
-                                          macro to fix wrong <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">baudrate</span></span>
-                                          calculation</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <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;">HAL&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="square">
-                                      <li class="MsoNormal" 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
-                                          default define value for HSI
-                                          calibration
-                                          "RCC_HSICALIBRATION_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DEFAULT"</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;">Optimize
-                                          Internal oscillators and PLL
-                                          startup <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">timeout</span></span>&nbsp;</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to
-                                          avoid the disable for HSE/LSE
-                                          oscillators before setting the
-                                          new RCC HSE/LSE configuration
-                                          and add the following notes in
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OscConfig(</span></span>)
-                                          API description:</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoNormal" style=""><span style="font-size: 10pt;">&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;
-
-
-
-                                      &nbsp; &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;*
-                                      @note&nbsp;&nbsp; Transitions LSE
-                                      Bypass to LSE On and LSE On to LSE
-                                      Bypass are not</span><span style="font-size: 10pt;"> <br>
-                                    </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;
-
-
-
-
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;&nbsp;
-                                      *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                                      &nbsp; &nbsp; supported by this
-                                      API. User should request a
-                                      transition to LSE Off</span><span style="font-size: 10pt;"> <br>
-                                    </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;
-
-
-
-
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;&nbsp;
-                                      *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                                      &nbsp; &nbsp; first and then LSE
-                                      On or LSE Bypass.</span><span style="font-size: 10pt;"> <br>
-                                    </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;
-
-
-
-
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;&nbsp; *
-                                      @note&nbsp;&nbsp; Transition HSE
-                                      Bypass to HSE On and HSE On to HSE
-                                      Bypass are not</span><span style="font-size: 10pt;"> <br>
-                                    </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;
-
-
-
-
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;&nbsp;
-                                      *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                                      &nbsp; &nbsp; supported by this
-                                      API. User should request a
-                                      transition to HSE Off</span><span style="font-size: 10pt;"> <br>
-                                    </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;&nbsp;
-
-
-
-
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp;
-                                      &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;
-                                      &nbsp; &nbsp;&nbsp;
-                                      *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                                      &nbsp; &nbsp; first and then HSE
-                                      On or HSE Bypass.</span><span style="font-size: 10pt;"> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></p>
-                                  <ul type="disc">
-                                    <ul type="circle">
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Optimize
-                                          the&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ClockConfig(</span></span>)
-                                          API implementation.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul type="disc">
-                                    <li class="MsoNormal" style=""><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</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Abort(</span></span>)
-                                          Function to end current DMA2D
-                                          transfer properly</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PollForTransfer(</span></span>)
-                                          function to add poll for
-                                          background CLUT loading (layer
-                                          0 and layer 1).</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PollForTransfer(</span></span>)
-                                          to set the corresponding <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span>
-                                          in case of error occurrence</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigCLUT(</span></span>)
-                                          function to fix wrong CLUT
-                                          size and color mode settings</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Removal of
-                                          useless macro __HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</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;">Update
-                                          HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Suspend(</span></span>)
-                                          to manage correctly the case
-                                          where no transfer is on going</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Resume(</span></span>)&nbsp;to
-
-
-
-
-                                          manage correctly the case
-                                          where no transfer is on going</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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_Start_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          to enable all required
-                                          interrupts before enabling the
-                                          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;">Add
-                                          HAL_DMA2D_CLUTLoad_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          Function to allow loading a
-                                          CLUT with interruption model.</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style=""><span style="font-size: 7pt;"><span style="font-size-adjust: none; font-stretch: normal;">&nbsp;</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                          HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          to manage the following
-                                          cases&nbsp;:</span><span style="font-size: 7pt;"><span style="font-size-adjust: none; font-stretch: normal;"><br style="">
-                                            <!--[if !supportLineBreakNewLine]--><br style="">
-                                            <!--[endif]--><o:p></o:p></span></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CLUT
-                                            transfer <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">complete</span></span></span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CLUT access
-                                            error</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Transfer
-                                            watermark <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">reached</span></span></span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new
-                                          Callback APIs:</span><span style="font-size: 10pt;"><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;">&nbsp;HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LineEventCallback(</span></span>)
-                                            to signal a transfer
-                                            watermark reached event</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CLUTLoadingCpltCallback(</span></span>)
-                                            to signal a CLUT loading
-                                            complete event <o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul type="disc">
-                                    <ul type="circle">
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Miscellaneous
-                                          Improvement:</span><span style="font-size: 10pt;"><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;">Add
-                                            "HAL_DMA2D_ERROR_CAE" new
-                                            define for CLUT Access error
-                                            management.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add </span><span style="font-size: 7pt;"><span style="font-size-adjust: none; font-stretch: normal;">&nbsp;<span class="grame">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">“</span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">assert_param</span></span>”
-                                            used for parameters check is
-                                            now done on the top of the
-                                            exported functions : before
-                                            locking the process using
-                                            __HAL_LOCK</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p>&nbsp;</o:p></span></p>
-                                  <ul type="square">
-                                    <li class="MsoNormal" style=""><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: 10pt;"><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;">Add support
-                                          of I2C repeated start feature:</span><span style="font-size: 10pt;"><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;">With the
-                                            following new API's</span><span style="font-size: 10pt;"><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;">HAL_I2C_Master_Sequential_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Sequential_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Master_Abort_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Slave_Sequential_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_Slave_Sequential_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_EnableListen_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_DisableListen_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt;">Add new
-                                            user callbacks:<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;">HAL_I2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ListenCpltCallback(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AddrCallback(</span></span>)</span><span style="font-size: 10pt;"><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 to
-                                          generate STOP condition when a
-                                          acknowledge failure error is <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">detected</span></span></span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Several
-                                          update on HAL I2C driver to
-                                          implement the new I2C state
-                                          machine:&nbsp;</span><span style="font-size: 10pt;"><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;">Add new API
-                                            to get the I2C mode:
-                                            HAL_I2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetMode(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update I2C
-                                            process to manage the new
-                                            I2C states.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix wrong <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">behaviour</span></span>
-                                          in single byte <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transmission</span></span>&nbsp;</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update I2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WaitOnFlagUntilTimeout(</span></span>)&nbsp;to
-
-
-
-
-                                          manage the NACK feature.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style=""><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update&nbsp;&nbsp;I</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">2C
-                                          transmission process to
-                                          support the case data size
-                                          equal 0</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul type="square">
-                                    <li class="MsoNormal" style=""><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          FMPI2C </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style="font-size: 10pt;"><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;">Add support
-                                          of FMPI2C repeated start
-                                          feature:</span><span style="font-size: 10pt;"><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;">With the
-                                            following new API's</span><span style="font-size: 10pt;"><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;">HAL_FMPI2C_Master_Sequential_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_Master_Sequential_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_Master_Abort_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_Slave_Sequential_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_Slave_Sequential_Receive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_EnableListen_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_DisableListen_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt;">Add new
-                                            user callbacks:<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;">HAL_FMPI2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ListenCpltCallback(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_FMPI2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AddrCallback(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        </ul>
-                                      </ul>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Several
-                                          update on HAL I2C driver to
-                                          implement the new I2C state
-                                          machine:&nbsp;</span><span style="font-size: 10pt;"><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;">Add new API
-                                            to get the FMPI2C mode:
-                                            HAL_FMPI2C_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetMode(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            FMPI2C process to manage the
-                                            new FMPI2C states.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul type="square">
-                                    <li class="MsoNormal" style=""><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="font-size: 10pt;"> </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></b></li>
-                                    <ul type="square">
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Major Update
-                                          to improve performance in
-                                          polling/interrupt mode to
-                                          reach max frequency:</span><span style="font-size: 10pt;"><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;">Polling <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode
-
-
-
-                                                :</span></span></span><span style="font-size: 10pt;"><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
-                                              use of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WaitOnFlagUnitTimeout(</span></span>)
-                                              <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">funnction</span></span>
-                                              by "if" statement to check
-                                              on RXNE/TXE <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">flage</span></span>
-                                              while transferring data.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Use API
-                                              data pointer instead of
-                                              SPI handle data pointer.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Use a <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Goto</span></span>
-                                              implementation instead of
-                                              "<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">if..</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">else</span></span>"
-                                              statements.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        </ul>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul type="square">
-                                    <ul type="square">
-                                      <ul type="square">
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt;">Interrupt
-                                            mode<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 registers.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Split the
-                                              SPI modes into dedicated
-                                              static functions to
-                                              minimize checking
-                                              statements under <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>):</span><span style="font-size: 10pt;"><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;">1lines/2lines
-
-
-
-                                                modes</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                            <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">8 bit/
-                                                16 bits data formats</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                            <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CRC
-                                                calculation
-                                                enabled/disabled.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          </ul>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt;">Remove
-                                              waiting loop under ISR
-                                              when <span class="grame">closing
-
-
-
-                                                &nbsp;the</span>
-                                              communication.<o:p></o:p></span></li>
-                                        </ul>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">All
-                                            modes:&nbsp;&nbsp;</span><span style="font-size: 10pt;"><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;">Adding
-                                              switch USE_SPI_CRC to
-                                              minimize number of
-                                              statements when CRC
-                                              calculation is disabled.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                              Timeout management to
-                                              check on global process.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                              Error code management in
-                                              all processes.</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        </ul>
-                                      </ul>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt;">Add note to
-                                          the max frequencies reached in
-                                          all modes.<o:p></o:p></span></li>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt;">Add note
-                                          about Master Receive mode <span class="grame">restrictions :</span><o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: rgb(0, 32, 82);"><span style="font-size: 10pt;">Master
-
-
-
-                                            Receive mode restriction:<br>
-                                            &nbsp;&nbsp;&nbsp;<span class="grame">&nbsp;&nbsp;
-                                              (</span>#) In Master
-                                            unidirectional receive-only
-                                            mode (MSTR =1, BIDIMODE=0,
-                                            RXONLY=0) or <br>
-                                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-
-
-
-
-                                            bidirectional receive mode
-                                            (MSTR=1, BIDIMODE=1,
-                                            BIDIOE=0), to ensure that
-                                            the SPI <br>
-                                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-
-
-
-                                            does not initiate a new
-                                            transfer the following
-                                            procedure has to be
-                                            respected:<br>
-                                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-
-
-
-                                            (##) <span class="spelle">HAL_SPI_DeInit</span>()<br>
-                                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-
-
-
-                                            (##) <span class="spelle">HAL_SPI_Init</span>()
-
-
-
-                                          </span><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul type="square">
-                                    <li class="MsoNormal" style=""><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          SAI&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style="font-size: 10pt;"> </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="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">selection</span></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;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Init</span></span>
-                                            () <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">funciton</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;">update
-                                            definition of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_Block_SyncExt</span></span>
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_Block_Synchronization</span></span>
-                                            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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">X
-                                              &nbsp;defines</span></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;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          function for proper <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">companding</span></span>
-                                          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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_Transmit_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ITxxBit(</span></span>)
-                                          functions to add the check on
-                                          transfer counter before
-                                          writing new data to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAIx_DR</span></span>
-                                          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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FillFifo(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnableRxMuteMode(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">InitPCM(</span></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
-
-
-
-                                          ETH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Removal of
-                                          ETH MAC debug register <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">defines</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;">HAL
-
-
-
-                                          FLASH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MassErase(</span></span>)
-                                          function to apply correctly
-                                          voltage range parameter</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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><b><span style=""> </span></b><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="square">
-                                      <li class="MsoNormal" 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_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMATxCplt(</span></span>)
-                                          and I2S_DMARxCplt() to manage
-                                          properly <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FullDuplex</span></span>
-                                          mode without any risk of
-                                          missing data.</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" 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<b> <o:p></o:p></b></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_NORSRAM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          function to use <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BurstAccessMode</span></span>
-                                          field properly</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" 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
-
-
-
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FSMC&nbsp;
-
-
-
-                                            </span></span></span></b><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">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="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FSMC_NORSRAM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          function to use <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BurstAccessMode</span></span>
-                                          field properly</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoNormal" style=""><span style="font-size: 10pt;"><br style="">
-                                      <!--[if !supportLineBreakNewLine]--><br style="">
-                                      <!--[endif]--><o:p></o:p></span></p>
-                                  <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;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.4.4
-                                        / 11-December-2015</span><span style=""><o:p></o:p></span></font></h3>
-                                  <p class="MsoNormal" style=""><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;"><o:p></o:p></span></p>
-                                  <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;">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="square">
-                                      <li class="MsoNormal" 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">hppp</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">);</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;">STM32Fxxx_User_Manual.chm
-
-
-
-
-                                          files regenerated for HAL
-                                          V1.4.3</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_ETH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.4.2
-
-
-
-                                        / 10-November-2015</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;"><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.4.1</span></b><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_DESECB_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Decrypt(</span></span>)
-                                          API to&nbsp;invert <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pPlainData</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pCypherData</span></span>
-                                          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="square">
-                                      <li class="MsoNormal" 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: 12pt;"><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">UNUSED(</span></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">hppp</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">);</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                          macro</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_STATETypeDef</span></span>
-                                          to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_StateTypeDef</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_PhaseTypeDef</span></span>
-                                          to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_PhaseTypeDef</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;">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="square">
-                                      <li class="MsoNormal" 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 __HAL_RCC_<i>PPP</i>_IS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED(</span></span>)
-                                          to check on Clock
-                                          enable/disable 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;">Update
-                                          __HAL_RCC_USB_OTG_FS_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-                                          macro to remove the disable
-                                          for the SYSCFG</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MCOConfig(</span></span>)
-                                          API to use new defines for the
-                                          GPIO Speed</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Generic
-                                          update to improve the
-                                          PLL&nbsp;VCO min
-                                          value(100MHz): PLLN, PLLI2S
-                                          and PLLSAI min value is 50
-                                          instead of <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">192</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;">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="square">
-                                      <li class="MsoNormal" style="color: rgb(2, 3, 2); margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="text-align: start; float: none; word-spacing: 0px;"><span style="font-size: 9pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_FLASH_INSTRUCTION_CACHE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RESET(</span></span>)
-                                            macro: update to&nbsp;<span style="text-align: start; float: none; word-spacing: 0px;"></span><span style="">reset
-                                              &nbsp;</span><span style="text-align: start; float: none; word-spacing: 0px;">ICRST </span><span style="text-align: start; float: none; word-spacing: 0px;">bit in
-                                              the ACR register after
-                                              setting it.</span></span></span><span style="font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: rgb(2, 3, 2); margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to
-                                          support until 15 FLASH wait
-                                          state (FLASH_LATENCY_15) for
-                                          STM32F446xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></span>
-                                        </span><span style="font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL CRYP&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_DESECB_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Decrypt(</span></span>)
-                                          API to fix the inverted <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pPlainData</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pCypherData</span></span>
-                                          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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          API&nbsp;to call
-                                          __HAL_RCC_I2S_CONFIG() macro
-                                          when external I2S clock is
-                                          selected</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetWindowPosition(</span></span>)
-                                          API&nbsp;to configure
-                                          Immediate&nbsp;reload&nbsp;register
-                                          instead of vertical blanking
-                                          reload 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
-
-
-
-                                          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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigClockSource(</span></span>)
-                                          API to&nbsp;check only the
-                                          required 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
-
-
-
-                                          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;">Update
-                                          HAL_NAND_Read_Page()/HAL_NAND_Write_Page()/HAL_NAND_Read_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SpareArea(</span></span>)
-                                          APIs to manage correctly the
-                                          NAND Page access</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" 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
-                                          "=" instead of "|=" to clear
-                                          flags in the MSR, TSR, RF0R
-                                          and RF1R registers</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="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 typo in
-                                          __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></span>)
-                                          macro 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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          API to avoid issue
-                                          when&nbsp;DMA mode enabled for
-                                          Status Phase IN stage</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" 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="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_NORSRAM_Extended_Timing_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          API to remove the check
-                                          on&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CLKDIvison</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DataLatency</span></span>
-                                          parameters</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_NORSRAM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          API to add a check on the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PageSize</span></span>
-                                          parameter for STM32F42/43xx
-                                          devices</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" 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
-
-
-
-                                          FSMC </span></b><span style="font-size: 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;">Update the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FSMC_NORSRAM_Extended_Timing_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          API to remove the check
-                                          on&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CLKDIvison</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DataLatency</span></span>
-                                          parameters</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.4.1
-
-
-
-                                        / 09-October-2015</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" 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;">HAL
-
-
-
-                                          DSI </span></b><span style="font-size: 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;">Update TCCR
-                                          register&nbsp;assigned value
-                                          in&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigHostTimeouts(</span></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;">Update WPCR
-                                          register&nbsp;assigned value
-                                          in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_SetSlewRateAndDelayTuning</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_SetSlewRateAndDelayTuning</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_SetLowPowerRXFilter</span></span>()
-
-
-
-
-                                          / <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_SetSDD</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_SetLanePinsConfiguration</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_SetPHYTimings</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_ForceTXStopMode</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_ForceRXLowPower</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_ForceDataLanesInRX</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_SetPullDown</span></span>()
-
-
-
-
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DSI_SetContentionDetectionOff</span></span>()
-
-
-
-
-                                          functions</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                          DSI_HS_PM_ENABLE define <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">value</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;">Implement
-                                          workaround for the hardware
-                                          limitation: “The time to
-                                          activate the clock between HS
-                                          transmissions is not
-                                          calculated <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">correctly”</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.4.0
-
-
-
-                                        / 14-August-2015</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="MsoNormal" 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="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><b>STM32F469xx</b><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">, <b>STM32F479xx</b>,
-                                            <b>STM32F410Cx, STM32F410Rx
-                                            </b>and<b> STM32F410</b></span></span><span class="grame"><b><span style="font-family: &quot;Verdana&quot;,sans-serif;">Tx&nbsp;</span></b></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">
-                                            devices</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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;">Add
-                                        new HAL drivers for <b>DSI&nbsp;</b>and<b>&nbsp;LPTIM
-
-
-
-
-                                        </b>peripherals</span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="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
-                                          ADC_CLOCKPRESCALER_PCLK_DIV2
-                                          define to
-                                          ADC_CLOCK_SYNC_PCLK_DIV2</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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
-                                          ADC_CLOCKPRESCALER_PCLK_DIV4
-                                          define to
-                                          ADC_CLOCK_SYNC_PCLK_DIV4</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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
-                                          ADC_CLOCKPRESCALER_PCLK_DIV6
-                                          define to
-                                          ADC_CLOCK_SYNC_PCLK_DIV6</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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
-                                          ADC_CLOCKPRESCALER_PCLK_DIV8
-                                          define to
-                                          ADC_CLOCK_SYNC_PCLK_DIV8 </span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add specific
-                                          API for MPU 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;">add <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MPU_Region_InitTypeDef</span></span>
-                                            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
-                                            function <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_MPU_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigRegion(</span></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
-
-
-
-                                          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="square">
-                                      <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">driver</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">StreamBaseAddress</span></span>
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">StreamIndex</span></span>
-                                            new fields in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA_HandleTypeDef</span></span>
-                                            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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA_Base_Registers</span></span>
-                                            private <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">structure</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;">add static
-                                            function <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CalcBaseAndBitshift(</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;">update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_Start_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PollForTransfer(</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_FLASH_Program_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          function by removing the
-                                          pending flag 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;">update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_FLASH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          function to improve erase
-                                          operation procedure</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WaitForLastOperation(</span></span>)
-                                          function by checking on end of
-                                          operation flag</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="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
-
-
-
-                                          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="square">
-                                      <li class="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
-                                          I2S_Clock_Source defines to
-                                          extension file to properly add
-                                          the support of STM32F410xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</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;">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="square">
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LineEvenCallback(</span></span>)
-                                          function to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_LineEventCallback</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;">add new
-                                          function <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetPitch(</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;">add new
-                                          functions <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">StructInitFromVideoConfig(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_StructInitFromAdaptedCommandConfig</span></span>()
-
-
-
-
-                                          applicable only to STM32F469xx
-                                          and STM32F479xx devices</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="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_PWR_VOLTAGESCALING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                          macro to extension file</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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
-                                          PWR_WAKEUP_PIN2 define to
-                                          extension <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">file</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;">add
-                                          PWR_WAKEUP_PIN3 define,
-                                          applicable only to STM32F10xx
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</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;">add new
-                                          functions <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnableWakeUpPinPolarityRisingEdge(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_EnableWakeUpPinPolarityFallingEdge</span></span>(),
-
-
-
-
-                                          applicable only to STM32F469xx
-                                          and STM32F479xx devices</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTCEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetWakeUpTimer(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTCEx_SetWakeUpTimer_IT</span></span>()
-
-
-
-
-                                          functions to properly check on
-                                          the WUTWF flag</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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
-                                          defines TIM_SYSTEMBREAKINPUT_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HARDFAULT,&nbsp;
-
-
-
-                                              TIM</span></span>_SYSTEMBREAKINPUT_PVD
-
-
-
-
-                                          and
-                                          TIM_SYSTEMBREAKINPUT_HARDFAULT_PVD,
-                                          applicable only to STM32F410xx
-                                          devices</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.3.2
-
-
-
-                                        / 26-June-2015</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">One
-
-
-
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">changes</span></span>
-                                          done on the HAL may require an
-                                          update on the application code
-                                          based on HAL V1.3.1</span></b><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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 IT
-                                          process: update to call the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">InCpltCallback(</span></span>)
-                                          at the end of the complete
-                                          buffer instead of every each
-                                          512 bits</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PeriphCLKConfig(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) updates:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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
-                                            LSE check condition after
-                                            backup domain <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">reset:</span></span>
-                                            update to check&nbsp;LSE
-                                            ready flag when LSE
-                                            oscillator is already
-                                            enabled instead of check on
-                                            LSE oscillator only when LSE
-                                            is used as RTC clock source</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Use the
-                                            right macro to check the
-                                            PLLI2SQ <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">parameters</span></span>
-                                          </span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                          macro: fix implementation
-                                          issue</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RTC_ALARM_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>),
-
-
-
-
-                                          __HAL_RTC_ALARM_CLEAR_FLAG(),
-                                          __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(),
-
-
-
-
-                                          __HAL_RTC_TIMESTAMP_CLEAR_FLAG()
-
-
-
-                                          and
-                                          __HAL_RTC_TAMPER_CLEAR_FLAG()
-                                          macros implementation changed:
-                                          remove unused cast</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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_RTC_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TAMPER(</span></span>)
-                                          macro: update to use literal
-                                          instead of hardcoded
-                                          value&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;">Add new
-                                          parameter <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SecondFraction</span></span>
-                                          in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RTC_TimeTypeDef</span></span>
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetTime(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) API update
-                                          to support the new
-                                          parameter&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SecondFraction</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;">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="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ExternalTrigInjecConvEdge</span></span>
-                                          parameter in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ADC_InitTypeDef</span></span>
-                                          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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FLASH_OB_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetRDP(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) API update
-                                          to return uint8_t instead of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FlagStatus</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;">&nbsp;__HAL_FLASH_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LATENCY(</span></span>)
-                                          new macro add to get the flash
-                                          latency</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="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 the wrong
-                                          definition of
-                                          HAL_SPI_ERROR_FLAG literal</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span>)
-                                          API update to check on busy
-                                          flag only for I2S slave 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
-
-
-
-                                          CRC </span></b><span style="font-size: 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;">__HAL_CRC_SET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IDR(</span></span>)
-                                          macro implementation change 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
-
-
-
-                                          DMA2D </span></b><span style="font-size: 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;">HAL_DMA2D_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ConfigLayer(</span></span>)
-                                          API update to use "=" instead
-                                          of "|=" to erase BGCOLR and
-                                          FGCOLR registers before
-                                          setting the new 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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_<b>MODE</b>_Start_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)&nbsp;(<b>MODE
-
-
-
-                                          </b>stands for MD5, SHA1,
-                                          SHA224 and SHA36) updates:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="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;processing
-
-
-
-
-                                            fail for small input <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">buffers</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;">Update to
-                                            unlock the process and
-                                            call&nbsp;return
-                                            HAL_OK&nbsp;at the end of
-                                            HASH processing to avoid
-                                            incorrectly repeating <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">software</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;">Update to
-                                            properly manage the <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HashITCounter</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;">Update to
-                                            call the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_HASH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">InCpltCallback(</span></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;">__HAL_HASH_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                          update to &nbsp;check the
-                                          right register when the DINNE
-                                          flag &nbsp;is selected</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Accumulate(</span></span>)
-                                          updates:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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&nbsp;call to the new
-                                            IS_HASH_SHA1_BUFFER_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SIZE(</span></span>)
-                                            macro to check the size
-                                            parameter.&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;">Add the
-                                            following note in API <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">description</span></span></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <div style="margin-left: 1.25in;">
-                                    <p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;*
-
-
-
-
-                                        @<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">note&nbsp;
-
-
-
-
-                                            Input</span></span> buffer
-                                        size in bytes must be a multiple
-                                        of 4 otherwise the digest
-                                        computation is corrupted.</span><span style="font-size: 10pt;"><o:p></o:p></span></p>
-                                  </div>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" 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
-                                          define&nbsp;hardware
-                                          independent literals names:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="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_TAMPERPIN_PC13 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">by
-
-
-
-                                                &nbsp;RTC</span></span>_TAMPERPIN_DEFAULT</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_TAMPERPIN_PA0 by
-                                            RTC_TAMPERPIN_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_TAMPERPIN_PI8 by
-                                            RTC_TAMPERPIN_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_PC13 by
-                                            RTC_TIMESTAMPPIN_DEFAULT</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_PA0 by
-                                            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_PI8 by
-                                            RTC_TIMESTAMPPIN_POS1</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</span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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&nbsp;IS_ETH_DUPLEX_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MODE(</span></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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_IRQHandler</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> API: fix the
-                                          bad Configuration of
-                                          Turnaround 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;"><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="square">
-                                      <li class="MsoNormal" 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&nbsp;in USB
-                                          Host channel re-<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">activation</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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FMC_SDRAM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SendCommand(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) API: remove
-                                          the following line: return
-                                          HAL_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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">USB_FlushTxFifo</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;API:
-                                          update to flush all Tx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FIFO</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;">Update to use
-                                          local variable&nbsp;in USB
-                                          Host channel re-<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">activation</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.3.1
-
-
-
-                                        / 25-Mars-2015</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="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
-                                          compilation issue with
-                                          STM32F417xx product:
-                                          update&nbsp;<b>STM32F17xx</b>
-                                          by <b>STM32F417xx</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
-
-
-
-                                          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="square">
-                                      <li class="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
-                                          variable to avoid warning with
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TrueSTUDIO</span></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="square">
-                                      <li class="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
-                                          Polling/IT/DMA processes: move
-                                          the&nbsp;wait loop on busy
-                                          flag at the top of the
-                                          processes, to ensure that
-                                          software not perform any write
-                                          access to I2C_CR1 register
-                                          before hardware
-                                          clearing&nbsp;STOP bit and to
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">avoid
-
-
-
-
-                                              also</span></span> the
-                                          waiting loop on BUSY flag
-                                          under I2C/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;">Update busy
-                                          flag&nbsp;Timeout <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">value</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;">I2C Master
-                                          Receive Processes update to
-                                          disable ACK before <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">generate</span></span>
-                                          the STOP&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
-
-
-
-                                          DAC </span></b><span style="font-size: 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;">Fix V1.3.0
-                                          regression issue with DAC
-                                          software trigger <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">configuration</span></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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.3.0
-
-
-
-                                        / 09-Mars-2015</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="MsoNormal" 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="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><b>STM32F446xx</b><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</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;">Add
-                                        new HAL drivers for <b>CEC,
-                                          QSPI, FMPI2C </b>and <b>SPDIFRX
-
-
-
-                                        </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;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Two
-
-
-
-                                          changes done on the HAL
-                                          requires an update on the
-                                          application code based on HAL
-                                          V1.2.0</span></b><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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 <b>SAI</b>
-                                          <b>driver rework</b> to have
-                                          exhaustive support of the
-                                          peripheral features: details
-                                          are provided in <b>HAL SAI </b>update
-
-
-
-                                          section below --&gt; <b>Compatibility
-
-
-
-
-                                            with previous version is <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">impacted</span></span></b></span><span style=""><o:p></o:p></span></li>
-                                      <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;">CRYP </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">driver
-                                          updated to support multi <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">instance,so</span></span>
-                                          user must&nbsp;ensure that the
-                                          new parameter&nbsp;Instance is
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">initalized</span></span>
-                                          in his application(<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CRYPHandle.Instance</span></span>
-                                          = CRYP)&nbsp;</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f4xx_hal_def.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;">Remove NULL
-                                            definition&nbsp;and add
-                                            include for <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">stdio.h</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32_hal_legacy.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;">Update&nbsp;method
-
-
-
-                                            to manage&nbsp;deference in
-                                            alias implementation between
-                                            all STM32 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">families</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f4xx_hal_ppp.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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update
-                                            to force the
-                                            HAL_PPP_STATE_RESET before
-                                            calling the <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_MspInit</span></i></span><i>()</i></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" 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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetPeriphCLKFreq(</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;">Move <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RCC_PLLInitTypeDef</span></span>
-                                          structure to extension file
-                                          and add the new PLLR field
-                                          specific to STM32F446xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</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;">Move the
-                                          following functions to
-                                          extension file and add a
-                                          __weak attribute in generic <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">driver
-
-
-
-                                              :</span></span> this
-                                          update is related to new
-                                          system clock source (<i>PLL/PLLR</i>)
-                                          added and only available for
-                                          STM32F44xx devices <o:p></o:p></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="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">OscConfig(</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></i></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetSysClockFreq(</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></i></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetOscConfig(</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span></i><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
-                                          following macro to extension
-                                          file as they have device
-                                          dependent <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</span></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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RCC_PLL_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <o:p></o:p></span></li>
-                                        <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_RCC_PLLI2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)</span></i><span style=""><o:p></o:p></span></li>
-                                        <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_RCC_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)</span></i><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
-                                          structure <i>RCC_PLLI2SInitTypeDef</i>
-                                          containing new <i>PLLI2S</i>
-                                          division factors used only w/
-                                          STM32F446xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></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;">Add new
-                                          structure <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">RCC_PLLSAIInitTypeDef</span></i></span>
-                                          containing new <i>PLLSAI</i>
-                                          division factors used only w/
-                                          STM32F446xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></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;">Add new <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">RCC_PeriphCLKInitTypeDef</span></i></span>
-                                          to support the peripheral
-                                          source clock selection for (<i>I2S,
-
-
-
-                                            SAI, SDIO, FMPI2C, CEC,
-                                            SPDIFRX and CLK48</i>)<o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></i></span><span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">PeriphCLKConfig(</span></i></span><i>)</i>
-                                          and <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_GetPeriphCLKConfig</span></i></span><i>()
-
-
-
-
-                                          </i>functions to support the
-                                          new peripherals Clock source
-                                          selection<o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add <i>__HAL_RCC_PLL_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)</i>
-                                          macro (the number of parameter
-                                          and the implementation depend
-                                          on the device part number)<o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add <i>__HAL_RCC_PLLI2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)</i>
-                                          macro(the number of parameter
-                                          and the implementation depend
-                                          on device part number)<o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update <i>__HAL_RCC_PLLSAI_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)</i>
-                                          macro to support new PLLSAI
-                                          factors <i>(PLLSAIM and
-                                            PLLSAIP)</i><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 for clock
-                                          enable/Disable for the
-                                          following peripherals <i>(CEC,
-
-
-
-                                            SPDIFRX, SAI2, QUADSPI)</i><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 for clock
-                                          source <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">selection
-
-
-
-                                              :</span></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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RCC_SAI1_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC_GET_SAI1_SOURCE()<o:p></o:p></span></i></li>
-                                        <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_RCC_SAI2_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC_GET_SAI2_SOURCE()<o:p></o:p></span></i></li>
-                                        <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_RCC_I2S1_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC_GET_I2S1_SOURCE()<o:p></o:p></span></i></li>
-                                        <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_RCC_I2S2_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC_GET_I2S2_SOURCE()<o:p></o:p></span></i></li>
-                                        <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_RCC_CEC_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC__GET_CEC_SOURCE()
-                                              <o:p></o:p></span></i></li>
-                                        <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_RCC_FMPI2C1_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC_GET_FMPI2C1_SOURCE()
-                                              <o:p></o:p></span></i></li>
-                                        <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_RCC_SDIO_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC_GET_SDIO_SOURCE()
-                                              <o:p></o:p></span></i></li>
-                                        <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_RCC_CLK48_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC_GET_CLK48_SOURCE()
-                                              <o:p></o:p></span></i></li>
-                                        <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_RCC_SPDIFRXCLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                              /
-                                              __HAL_RCC_GET_SPDIFRX_SOURCE()</span></i><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_RCC_PPP_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>):
-
-
-
-
-                                          Implement workaround to cover
-                                          RCC limitation regarding
-                                          peripheral enable delay</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">OscConfig(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) fix
-                                          issues:&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 a check
-                                            on LSERDY flag when
-                                            LSE_BYPASS is selected as
-                                            new state for LSE
-                                            oscillator.</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&nbsp;possible value&nbsp;<i>RCC_PERIPHCLK_PLLI2S
-
-
-
-                                          </i>to be selected as<i> <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PeriphClockSelection</span></span>
-                                          </i>parameter in <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">the
-
-
-
-
-                                              &nbsp;</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RCC_PeriphCLKInitTypeDef</span></span>
-                                          structure to allow the
-                                          possibility to output the
-                                          PLLI2S on MCO without
-                                          activating the I2S or the SAI.</span><span style="font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="text-align: start; float: none; word-spacing: 0px;"><span style="font-size: 9pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RCC_HSE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)</span><span style="font-size: 9pt; font-family: &quot;Verdana&quot;,sans-serif;">
-                                            &nbsp;</span></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">macro: add
-                                            the comment below:</span></i><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <div style="margin-left: 1.25in;">
-                                    <p class="MsoNormal" style=""><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;*
-
-
-
-
-                                          @note&nbsp;&nbsp; Transition
-                                          HSE Bypass to HSE On and HSE
-                                          On to HSE Bypass are not
-                                          supported by this macro. <br>
-                                          &nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-
-
-
-                                          User should request a
-                                          transition to HSE Off first
-                                          and then HSE On or HSE Bypass.</span></i><span style="font-size: 10pt;"><o:p></o:p></span></p>
-                                  </div>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="text-align: start; float: none; word-spacing: 0px;"><span style="font-size: 9pt; font-family: &quot;Helvetica&quot;,sans-serif;">__HAL_RCC_LSE_<span class="grame"><span style="font-family: &quot;Helvetica&quot;,sans-serif;">CONFIG(</span></span>)</span><span style="font-size: 9pt; font-family: &quot;Helvetica&quot;,sans-serif;"> &nbsp;</span></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">macro: add
-                                            the comment below:</span></i><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <div style="margin-left: 1.25in;">
-                                    <p class="MsoNormal" style=""><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;&nbsp;*
-
-
-
-
-                                          @note&nbsp;&nbsp; Transition
-                                          LSE Bypass to LSE On and LSE
-                                          On to LSE Bypass are not
-                                          supported by this macro.<br>
-                                          &nbsp;
-                                          *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                                          User should request a
-                                          transition to LSE Off first
-                                          and then LSE On or LSE Bypass.</span></i><span style="font-size: 10pt;"><o:p></o:p></span></p>
-                                  </div>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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 for
-                                          PLL&nbsp;source and PLLM&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">selection
-
-
-
-                                              :</span></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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RCC_PLL_PLLSOURCE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)<o:p></o:p></span></i></li>
-                                        <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_RCC_PLL_PLLM_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)</span></i><i><span style=""><o:p></o:p></span></i></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;">Macros
-                                            rename:</span></i><i><span style=""><o:p></o:p></span></i></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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_OTGHS_FORCE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RESET(</span></span>)
-by&nbsp;HAL_RCC_USB_OTG_HS_FORCE_RESET()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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_OTGHS_RELEASE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RESET(</span></span>)
-by&nbsp;HAL_RCC_USB_OTG_HS_RELEASE_RESET()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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_OTGHS_CLK_SLEEP_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-by&nbsp;HAL_RCC_USB_OTG_HS_CLK_SLEEP_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;">HAL_RCC_OTGHS_CLK_SLEEP_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-by&nbsp;HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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_OTGHSULPI_CLK_SLEEP_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-by&nbsp;HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_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;">HAL_RCC_OTGHSULPI_CLK_SLEEP_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-by&nbsp;HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE()</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&nbsp;__HAL_RCC_SYSCLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CONFIG(</span></span>)
-                                          new macro to configure the
-                                          system clock source (SYSCLK)</span><span style="font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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_SYSCLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SOURCE(</span></span>)
-                                          updates:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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 RCC
-                                            Literals:</span><span style=""><o:p></o:p></span></li>
-                                        <ul style="margin-top: 0in;" type="square">
-                                          <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RCC_SYSCLKSOURCE_STATUS_HSI</span><span style=""><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RCC_SYSCLKSOURCE_STATUS_HSE</span><span style=""><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RCC_SYSCLKSOURCE_STATUS_PLLCLK</span><span style=""><o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RCC_SYSCLKSOURCE_STATUS_PLLRCLK</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;">&nbsp;Update
-
-
-
-                                            macro description to refer
-                                            to the literals <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">above</span></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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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
-                                          define PWR_WAKEUP_PIN2</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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
-                                          to Control/Get VOS&nbsp;bits
-                                          of CR <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">register</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ControlVoltageScaling(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style="font-size: 13.5pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetVoltageRange(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style="font-size: 13.5pt;"><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;">__HAL_PWR_</span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">
-                                          VOLTAGESCALING_<span class="grame"><span style="font-family: &quot;Calibri&quot;,sans-serif;">CONFIG</span></span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): Implement
-                                          workaround to cover VOS
-                                          limitation delay when PLL is
-                                          enabled after setting the VOS
-                                          configuration</span><span style="background-attachment: scroll;"><span style="text-align: start; float: none; word-spacing: 0px;"><span style="font-size: 10pt; font-family: &quot;Helvetica&quot;,sans-serif;"> </span><span style=""><o:p></o:p></span></span></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"></span>HAL
-
-
-
-                                        GPIO </b><span style="font-size: 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 the new
-                                          Alternate functions literals
-                                          related to remap for <b><i>SPI,
-
-
-
-                                              USART, I2C, SPDIFRX, CEC
-                                              and QSPI</i></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 class="spelle"><span style="font-size: 7.5pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></span><span class="grame"><span style="font-size: 7.5pt; font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span><span style="font-size: 7.5pt; font-family: &quot;Verdana&quot;,sans-serif;">):
-
-
-
-                                          Update&nbsp;to check if GPIO
-                                          Pin x is already used in EXTI
-                                          mode on another GPIO Port
-                                          before De-Initialize the EXTI
-                                          register</span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">s</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: rgb(2, 3, 2); margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="text-align: start; float: none; word-spacing: 0px;"><span style="font-size: 9pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_FLASH_INSTRUCTION_CACHE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RESET(</span></span>)
-                                            macro: update to&nbsp;<span style="text-align: start; float: none; word-spacing: 0px;"></span><span style="">reset
-                                              &nbsp;</span><span style="text-align: start; float: none; word-spacing: 0px;">ICRST </span><span style="text-align: start; float: none; word-spacing: 0px;">bit in
-                                              the ACR register after
-                                              setting it.</span></span></span><span style="font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: rgb(5, 5, 5); margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 9pt; font-family: &quot;Verdana&quot;,sans-serif;"><span style="text-align: start; float: none; word-spacing: 0px;">__HAL_FLASH_DATA_CACHE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RESET(</span></span>)&nbsp;macro:
-
-
-
-
-                                            update to&nbsp;reset
-                                            &nbsp;DCRST bit in the ACR
-                                            register after setting it.</span></span><span style="font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" 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_SOFTWARE_START to
-                                          be used as possible value for
-                                          the <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">ExternalTrigConv</span></i></span>
-                                          parameter in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ADC_InitTypeDef</span></span>
-                                          structure to select the ADC
-                                          software trigger 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;">IS_ADC_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CHANNEL(</span></span>)
-                                          macro update to don't assert
-                                          stop the <i>ADC_CHANNEL_TEMPSENSOR</i>
-                                          value</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="spelle"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">HAL_ADC_</span></span><span class="grame"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">PollForConversion(</span></span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">): update to
-                                          manage particular case when
-                                          ADC configured in DMA mode and
-                                          ADC sequencer with several
-                                          ranks and polling for end of
-                                          each conversion</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="spelle"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">HAL_ADC_Start</span></span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">()/<span class="spelle"><span style="font-family: &quot;Calibri&quot;,sans-serif;">HAL_ADC_Start_</span></span><span class="grame"><span style="font-family: &quot;Calibri&quot;,sans-serif;">IT(</span></span>)
-                                          /<span class="spelle"><span style="font-family: &quot;Calibri&quot;,sans-serif;">HAL_ADC_Start_DMA</span></span>()
-
-
-
-
-                                          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: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">unlock the
-                                            process before starting the
-                                            ADC software conversion.</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">Optimize
-                                            the ADC stabilization <span class="grame"><span style="font-family: &quot;Calibri&quot;,sans-serif;">delays</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;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">__HAL_ADC_GET_IT_<span class="grame"><span style="font-family: &quot;Calibri&quot;,sans-serif;">SOURCE(</span></span>)
-                                          update macro 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: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">Add more
-                                          details in 'How to use this
-                                          driver' <span class="grame"><span style="font-family: &quot;Calibri&quot;,sans-serif;">section</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;">HAL
-
-
-
-                                          DAC </span></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="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new macro
-                                          to check if the specified DAC
-                                          interrupt source is enabled or
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">disabled</span></span><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_DAC_GET_IT_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SOURCE(</span></span>)</span><span style="font-size: 13.5pt;"><o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DACEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TriangleWaveGeneration(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          use DAC CR bit mask definition</span><span style="font-size: 13.5pt;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DACEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoiseWaveGeneration(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          use DAC CR bit mask definition</span><span style="font-size: 13.5pt;"><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CanTxMsgTypeDef</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> structure:
-                                          update&nbsp;to use<b> </b>uint8_t&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Data[</span></span>8]
-
-
-
-
-                                          instead of
-                                          uint32_t&nbsp;Data[8]</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CanRxMsgTypeDef</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> structure:
-                                          update&nbsp;to use<b> </b>uint8_t&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Data[</span></span>8]<b>
-                                          </b>instead of
-                                          uint32_t&nbsp;Data[8]</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in; text-align: start; word-spacing: 0px;" 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;">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="square">
-                                      <li class="MsoNormal" 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&nbsp;CMSIS mask definition
-                                          instead of hardcoded values (</span><span style="text-align: start; float: none; word-spacing: 0px;"><span style="font-size: 9pt; font-family: &quot;Helvetica&quot;,sans-serif;">EXTI_IMR_IM17,
-                                            EXTI_IMR_IM<span class="grame"><span style="font-family: &quot;Helvetica&quot;,sans-serif;">19..</span></span></span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LTDC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          allow the drawing
-                                          of&nbsp;partial bitmap in
-                                          active layer.</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) fix USART
-                                          baud rate&nbsp;configuration
-                                          issue: USART baud rate is
-                                          twice Higher than expected</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SMARTCARD_Transmit_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          force the disable for the ERR
-                                          interrupt to avoid the OVR
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SMARTCARD_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)
-                                          update&nbsp;check condition
-                                          for&nbsp;transmission end </span><span style=""><o:p></o:p></span></li>
-                                      <li class="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 up:
-                                          remove the&nbsp;following
-                                          literals that aren't used in
-                                          smartcard <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</span></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: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">SMARTCARD_PARITY_NONE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">SMARTCARD_WORDLENGTH_8B</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">SMARTCARD_STOPBITS_1</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">SMARTCADR_STOPBITS_2</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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_Transmit_DMA()/HAL_SPI_Receive_DMA()/HAL_SPI_TarnsmitReceive_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                          update to unlock
-                                          the&nbsp;process before
-                                          enabling the SPI 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 class="spelle"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">HAL_SPI_Transmit_</span></span><span class="grame"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">DMA(</span></span><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,sans-serif;">) update to
-                                          manage correctly the DMA RX
-                                          stream in SPI Full duplex 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;">Section
-                                          SPI_Exported_Functions_Group2&nbsp;update
-                                          to remove duplication in *.chm
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UM</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;">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="square">
-                                      <li class="MsoNormal" 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 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">multi instance</span></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 new
-                                            parameter Instance in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CRYP_HandleTypeDef</span></span>
-                                            Handle 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
-                                            parameter in all HAL CRYP
-                                            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;">example:&nbsp;__HAL_CRYP_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-                                              &nbsp;updated by
-                                              __HAL_CRYP_ENABLE(__HANDLE__)</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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add an
-                                          extension
-                                          driver&nbsp;stm32f4xx_hal_dcmi_ex.c/h
-                                          to manage the support of new
-                                          Black and White 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 class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add <i>&nbsp;_</i></span></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">_weak</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> attribute
-                                          for <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DCMI_Init</span></i></span><i>()</i>
-                                          function and add a new
-                                          implementation in the
-                                          extension driver to manage the
-                                          black and white configuration
-                                          only available in the&nbsp;
-                                          STM32F446xx 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;">Move <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DCMI_InitTypeDef</span></span>
-                                          structure to extension driver
-                                          and add&nbsp;the
-                                          following&nbsp;new fields
-                                          related to black and white
-                                          feature: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ByteSelectMode</span></span>,&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ByteSelectStart</span></span>,&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LineSelectMode</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LineSelectStart</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;">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="square">
-                                      <li class="MsoNormal" 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 LPM <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">feature</span></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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PCD_LPM_StateTypeDef</span></span>
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">enum</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;">update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PCD_HandleTypeDef</span></span>
-                                            structure to support the LPM
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">feature</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;">add new
-                                            functions <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCDEx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ActivateLPM(</span></span>),
-
-
-
-
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCDEx_DeActivateLPM</span></span>()
-
-
-
-
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCDEx_LPM_Callback</span></span>()
-
-
-
-
-                                            in the
-                                            stm32f4xx_hal_pcd_ex.h/.c
-                                            files</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
-
-
-
-                                          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 class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add&nbsp;
-                                            TIM</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">_TIM11_SPDIFRX
-
-
-
-                                          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;">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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          stm32f4xx_hal_sai_ex.h/.c
-                                          files for the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BlockSynchroConfig(</span></span>)
-                                          and the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_GetInputClock</span></span>()
-
-
-
-
-                                          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;">Add new
-                                          defines HAL_SAI_ERROR_AFSDET,
-                                          HAL_SAI_ERROR_LFSDET,
-                                          HAL_SAI_ERROR_CNREADY,
-                                          HAL_SAI_ERROR_WCKCFG,
-                                          HAL_SAI_ERROR_TIMEOUT in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_Error_Code</span></span>
-                                          group</span><span style=""> <o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 SAI_SYNCEXT_DISABLE,
-                                          SAI_SYNCEXT_IN_ENABLE,
-                                          SAI_SYNCEXT_OUTBLOCKA_ENABLE,
-                                          SAI_SYNCEXT_OUTBLOCKB_ENABLE
-                                          for the SAI External
-                                          synchronization </span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 SAI_I2S_STANDARD,
-                                          SAI_I2S_MSBJUSTIFIED,
-                                          SAI_I2S_LSBJUSTIFIED,
-                                          SAI_PCM_LONG and SAI_PCM_SHORT
-                                          for the SAI Supported protocol</span><span style=""> <o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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
-                                          SAI_PROTOCOL_DATASIZE_16BIT,
-                                          SAI_PROTOCOL_DATASIZE_16BITEXTENDED,
-                                          SAI_PROTOCOL_DATASIZE_24BIT
-                                          and
-                                          SAI_PROTOCOL_DATASIZE_32BIT
-                                          for SAI protocol data <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">size</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;">Add SAI
-                                          Callback prototype <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">definition</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;">Update&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_InitTypeDef</span></span>
-                                          structure by adding new
-                                          fields: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SynchroExt</span></span>,
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Mckdiv</span></span>,
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MonoStereoMode</span></span>,
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CompandingMode</span></span>,
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TriState</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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_HandleTypeDef</span></span>
-                                          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;">remove
-                                            uint16_t *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pTxBuffPtr</span></span>,
-                                            *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pRxBuffPtr</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxXferSize</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxXferSize</span></span>,
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxXferCount</span></span>
-                                            and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxXferCount</span></span>
-                                            and replace them
-                                            respectively by uint8_t *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pBuffPtr</span></span>,
-                                            uint16_t <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferSize</span></span>&nbsp;and
-
-
-
-
-                                            uint16_t <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">XferCount</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;">add <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mutecallback</span></span>
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">field</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;">add struct
-                                            __<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SAI_HandleTypeDef</span></span>
-                                            *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hsai</span></span> <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">field</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Remove
-                                          SAI_CLKSOURCE_PLLR and
-                                          SAI_CLOCK_PLLSRC defines</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          SAI_CLKSOURCE_NA define</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          SAI_AUDIO_FREQUENCY_MCKDIV
-                                          define</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          SAI_SPDIF_PROTOCOL define</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          SAI_SYNCHRONOUS_EXT define</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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
-                                          functions <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">InitProtocol(</span></span>),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Abort</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_EnableTxMuteMode</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_DisableTxMuteMode</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_EnableRxMuteMode</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_DisableRxMuteMode</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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Transmit(</span></span>),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Receive</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Transmit_IT</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Receive_IT</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Transmit_DMA</span></span>(),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAI_Receive_DMA</span></span>()
-
-
-
-
-                                          functions to use<b> uint8_t *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pData</span></span>
-                                          </b>instead of <b>uint16_t *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pData</span></span>
-                                            --&gt; This update is mainly
-                                            impacting the compatibility
-                                            with previous driver
-                                            version.</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
-
-
-
-                                          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="square">
-                                      <li class="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 the
-                                          following
-                                          functions&nbsp;between Generic
-                                          and Extended API based on full
-                                          duplex management and add the
-                                          attribute __weak in the
-                                          Generic <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">API</span></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_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>),
-HAL_I2S_DMAPause(),&nbsp;HAL_I2S_DMAStop(),&nbsp;HAL_I2S_DMAResume(),&nbsp;HAL_I2S_IRQHandle()
-<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
-                                          following static functions
-                                          from generic to extension <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">driver</span></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;I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMARxCplt(</span></span>)
-                                            and I2S_DMATxCplt()</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 static
-                                          attribute from I2S_Transmit_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          and I2S_Receive_IT() functions</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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 I2<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SxEXT(</span></span>)
-                                          macro to extension file</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          I2S_CLOCK_PLLR and
-                                          I2S_CLOCK_PLLSRC defines for
-                                          I2S clock <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">source</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;">Add new
-                                          function I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetInputClock(</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;">HAL
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WriteFifo</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PageSize</span></span>
-                                          fields in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_NORSRAM_InitTypeDef</span></span>
-                                          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
-                                          FMC_PAGE_SIZE_NONE,
-                                          FMC_PAGE_SIZE_128,
-                                          FMC_PAGE_SIZE_256,
-                                          FMC_PAGE_SIZE_1024,
-                                          FMC_WRITE_FIFO_DISABLE,
-                                          FMC_WRITE_FIFO_ENABLE defines</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_NORSRAM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>),
-
-
-
-
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_NORSRAM_DeInit</span></span>()
-
-
-
-
-                                          and&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FMC_NORSRAM_Extended_Timing_Init</span></span>()&nbsp;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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_OTG_CfgTypeDef</span></span>
-                                          structure to support LPM, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">lpm_enable</span></span>
-                                          field <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">added</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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HostInit(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USB_DevInit</span></span>()
-
-
-
-
-                                          functions to support the VBUS
-                                          Sensing B activation</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.2.0
-
-
-
-                                        / 26-December-2014</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" 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;">Maintenance
-
-
-
-                                          release to fix known defects
-                                          and enhancements <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</span></span></span></b><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <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;">Macros
-
-
-
-                                          and literals renaming to
-                                          ensure compatibles across
-                                          STM32 series</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">,
-                                        backward compatibility
-                                        maintained thanks to new added
-                                        file <i>stm32_hal_legacy.h </i>under
-
-
-
-                                        /Inc/<span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">Legacy</span></i></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
-                                        *.chm UM for all drivers, a UM
-                                        is provided for each superset <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RPN</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;">Update
-
-
-
-                                        drivers to be C++ <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">compliant</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;">Several
-
-
-
-                                        update on source code
-                                        formatting, for better UM
-                                        generation (<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">i.e.</span></span>
-                                        <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Doxygen</span></span>
-                                        tags updated)</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;">Two
-
-
-
-                                          changes done on the HAL
-                                          requires an update on the
-                                          application code based on HAL
-                                          V1.1.0</span></b><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <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;">LSI_VALUE</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> constant has
-                                          been corrected in
-                                          stm32f4xx_hal_conf.h file, its
-                                          value changed from 40 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">KHz</span></span>
-                                          to 32 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">KHz</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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">UART</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">, <i>USART</i>,
-                                          <i>IRDA</i> and <i>SMARTCARD
-                                          </i>(referenced as <i>PPP</i>
-                                          here below)<i> </i>drivers:
-                                          in DMA transmit process, the
-                                          code has been updated to avoid
-                                          waiting on TC flag under DMA
-                                          ISR, <i>PPP</i> TC interrupt
-                                          is used instead. Below the
-                                          update to be done 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 USART IRQ in
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                            stm32f4xx_it.c file, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PPP_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            function: add a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_IRQHandler</span></span>()
-
-
-
-                                            function</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <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;">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>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">stm32f4xx_hal_def.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;">Update NULL
-                                            definition to fix C++
-                                            compilation <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">issue</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;">Add&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UNUSED(</span></span>)
-                                            macro</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;">Add a new
-                                            define __NOINLINE to be used
-                                            for the&nbsp;no inline code
-                                            independent from tool <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">chain</span></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;">stm32f4xx_hal_conf_template.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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">LSI_VALUE</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> constant
-                                            has been <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">corrected,</span></span>
-                                            its value changed from 40 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">KHz</span></span>
-                                            to 32 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">KHz</span></span></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update all
-                                          macros and literals naming to
-                                          be <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">uper</span></span>
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">case</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> parameter in
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PPP_HandleTypeDef</span></span>
-                                          structure updated
-                                          to&nbsp;uint32_t instead
-                                          of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">enum</span></span> <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PPP_ErrorTypeDef</span></i></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&nbsp;the
-
-
-
-                                          unused FLAG and IT assert <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">macros</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;">HAL
-
-
-
-                                          ADC&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="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix&nbsp;temperature
-
-
-
-
-                                          sensor channel configuration
-                                          issue for STM32F427/437<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">xx
-
-
-
-
-                                              &nbsp;and</span></span>&nbsp;STM32F429/439xx
-
-
-
-                                          devices</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          DAC </span></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="square">
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DAC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ConfigChannel(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update the
-                                          access to the DAC peripheral
-                                          registers via the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hdac</span></span>
-                                          handle instance</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DAC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update to
-                                          check on both DAC_FLAG_DMAUDR1
-                                          and DAC_FLAG_DMAUDR2</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DACEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NoiseWaveGenerate(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update to
-                                          reset DAC CR register before
-                                          setting the new DAC
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DACEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TriangleWaveGenerate(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update to
-                                          reset DAC CR register before
-                                          setting the new DAC
-                                          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
-
-
-
-                                          CAN&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="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Unlock the
-                                          CAN process when communication
-                                          error <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">occurred</span></span><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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&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="square">
-                                      <li class="MsoNormal" 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
-                                          <i>IS_NVIC_DEVICE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQ(</span></span>)</i>
-                                          to check on negative values of
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQn</span></span>
-                                          parameter</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL CRYP&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYP_DESECB_Decrypt_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): fix the
-                                          inverted <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pPlainData</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">pCypherData</span></span>
-                                          parameters issue</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CRYPEx_GCMCCM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetInitVector(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): remove
-                                          the&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IVSize</span></span>
-                                          parameter as the key length
-                                          192bits and 256bits are not
-                                          supported by this 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;">Add&nbsp;restriction&nbsp;for
-
-
-
-
-                                          the CCM Encrypt/Decrypt API's
-                                          that</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">only <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DataType</span></span>
-                                          equal to 8bits is <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">supported</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_CRYPEx_AESGCM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Finish(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">):</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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;restriction
-
-
-
-
-                                            that the implementation is
-                                            limited to 32bits inputs
-                                            data <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">length&nbsp; (</span></span>Plain/Cyphertext,
-
-
-
-                                            Header) compared with GCM <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">stadards</span></span>
-                                            specifications (800-38D)</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update Size
-                                            parameter on 32bits instead
-                                            of 16bits</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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 issue
-                                            with 16-bit Data Type:
-                                            update to use intrinsic __<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ROR(</span></span>)
-                                            instead of __REV16()</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL DCMI </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul type="square">
-                                    <ul type="square">
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DCMI_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ConfigCROP(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): Invert
-                                          assert macros to check Y0 and
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Ysize</span></span>
-                                          parameters</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL DMA </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul type="square">
-                                    <ul type="square">
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">):&nbsp;Update&nbsp;to
-
-
-
-
-                                          clear&nbsp;the DBM bit in the
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SxCR</span></span>
-                                          register before setting the
-                                          new 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetConfig(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">):
-                                          add&nbsp;to clear&nbsp;the DBM
-                                          bit in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SxCR</span></span>
-                                          register</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL FLASH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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_"
-                                          prefix in the defined values
-                                          for the FLASH error <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">code</span></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;">Example:&nbsp;<i>FLASH_ERROR_PGP</i>
-                                            renamed by&nbsp;<b><i>HAL_</i></b><i>FLASH_ERROR_PGP</i></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;">Clear&nbsp;the
-
-
-
-                                          Flash <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span>
-                                          in the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WaitForLastOperation(</span></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;">Update <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SetErrorCode(</span></span>)
-                                          function to use&nbsp;"|="
-                                          operant to update the Flash <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ErrorCode</span></span>
-                                          parameter in the FLASH handle</span><span style=""><o:p></o:p></span></li>
-                                      <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;">IS_FLASH_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ADDRESS(</span></span>)</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">: Update the
-                                          macro check using&nbsp;'&lt;='
-                                          condition instead of '&lt;'</span><span style=""><o:p></o:p></span></li>
-                                      <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;">IS_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OPTIONBYTE(</span></span>)</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">: Update the
-                                          macro check using&nbsp;'&lt;='
-                                          condition instead of '&lt;'</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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;"FLASH_"
-
-
-
-
-                                          prefix in the defined values
-                                          of FLASH Type Program
-                                          parameter</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Example:&nbsp;<i>TYPEPROGRAM_BYTE</i>
-                                            renamed by <b><i>FLASH_</i></b><i>TYPEPROGRAM_BYTE</i></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&nbsp;"FLASH_"
-
-
-
-
-                                          prefix in the defined values
-                                          of FLASH Type Erase parameter</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Example:&nbsp;<i>TYPEERASE_SECTORS</i>
-                                            renamed by <b><i>FLASH_</i></b><i>TYPEERASE_SECTORS</i></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&nbsp;"FLASH_"
-
-
-
-
-                                          prefix in the defined values
-                                          of FLASH Voltage Range
-                                          parameter</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Example: <i>VOLTAGE_RANGE_1</i>
-                                            renamed by <b><i>FLASH_</i></b><i>VOLTAGE_RANGE_1</i></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&nbsp;"OB_"
-
-
-
-
-                                          prefix in the defined values
-                                          of FLASH WRP State parameter</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Example: <i>WRPSTATE_ENABLE</i>
-                                            renamed by <b><i>OB_</i></b><i>WRPSTATE_ENABLE</i></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&nbsp;"OB_"
-
-
-
-
-                                          prefix in the defined values
-                                          of the FLASH PCROP State
-                                          parameter</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <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;">PCROPSTATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE</span></span></span></i><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;
-                                              updated</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> by <b><i>OB_</i></b><i>PCROP<b>_</b>STATE_DISABLE</i></span><span style=""><o:p></o:p></span></li>
-                                        <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;">PCROPSTATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE</span></span></span></i><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-                                              &nbsp;updated</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;by <b><i>OB_</i></b><i>PCROP<b>_</b>STATE_ENABLE</i></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;">Change
-                                            "OBEX" prefix by
-                                            "OPTIONBYTE" prefix in these
-                                            defines:</span></i><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <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;">OBEX_PCROP
-
-
-
-                                              by OPTIONBYTE_PCROP&nbsp;</span></i><span style=""><o:p></o:p></span></li>
-                                        <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;">OBEX_BOOTCONFIG
-
-
-
-                                              by OPTIONBYTE_BOOTCONFIG</span></i><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL ETH </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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 macros
-                                          naming <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">typo</span></span></span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="disc">
-                                      <ul style="margin-top: 0in;" type="disc">
-                                        <li class="MsoNormal" style="margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            __HAL_ETH_EXTI_SET_RISING_E<b>GD</b>E_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRIGGER(</span></span>)
-                                            by
-                                            __HAL_ETH_EXTI_SET_RISING_E<b>DG</b>E_TRIGGER()<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-                                            __HAL_ETH_EXTI_SET_FALLING_E<b>GD</b>E_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRIGGER(</span></span>)
-by&nbsp;__HAL_ETH_EXTI_SET_FALLING_E<b>DG</b>E_TRIGGER() <o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL PWR&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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
-                                          to manage SLEEPONEXIT and
-                                          SEVONPEND bits of SCR <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">register</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DisableSleepOnExit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableSleepOnExit(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableSEVOnPend(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DisableSEVOnPend(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnterSTOPMode(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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;to
-
-
-
-                                            clear the CORTEX SLEEPDEEP
-                                            bit of&nbsp;SCR register
-                                            before entering in sleep <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode</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;">Update
-                                            usage of __<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WFE(</span></span>)
-                                            in low power entry function:
-                                            if there is a pending event,
-                                            calling __WFE() will not
-                                            enter the CortexM4 core to
-                                            sleep mode. The solution is
-                                            to made the call below; the
-                                            first __<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WFE(</span></span>)
-                                            is always ignored and clears
-                                            the event if one was already
-                                            pending, the second is
-                                            always applied</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <div style="margin-left: 1.25in;">
-                                    <p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__SEV()</span><span style="font-size: 10pt;"><br>
-                                      </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__WFE()</span><span style="font-size: 10pt;"><br>
-                                      </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WFE(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></p>
-                                  </div>
-                                  <ul type="square">
-                                    <ul type="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          new&nbsp;PVD configuration <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">modes</span></span><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;">PWR_PVD_MODE_NORMAL</span><span style="font-size: 10pt;"> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PWR_PVD_MODE_EVENT_RISING&nbsp;</span><span style="font-size: 10pt;"> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PWR_PVD_MODE_EVENT_FALLING</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PWR_PVD_MODE_EVENT_RISING_FALLING</span><span style="font-size: 10pt;"><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
-                                          macros to manage PVD <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Trigger</span></span><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;">__HAL_PWR_PVD_EXTI_ENABLE_RISING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></span>)</span><span style="font-size: 10pt;"> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_PWR_PVD_EXTI_DISABLE_RISING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></span></span><span style="font-size: 10pt;"> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_PWR_PVD_EXTI_ENABLE_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></span>)</span><span style="font-size: 10pt;"> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_PWR_PVD_EXTI_DISABLE_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></span>)</span><span style="font-size: 10pt;"> <o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></span>)</span><span style="font-size: 10pt;"><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;">PVD macros:<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;">Remove the
-                                            __EXTILINE__ parameter</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update to
-                                            use prefix "__HAL_PWR_PVD_"
-                                            instead <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">of &nbsp;prefix</span></span>
-                                            "__HAL_PVD"</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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 <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PVDConfig(</span></span>)
-                                          by&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_ConfigPVD</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ActivateOverDrive(</span></span>)
-                                          by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_EnableOverDrive</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeactivateOverDrive(</span></span>)
-                                          by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_DisableOverDrive</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;">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 type="square">
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_Init</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">()/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeInit(</span></span>):</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> add a call
-                                          to the CMSIS&nbsp;assert macro
-                                          to check GPIO instance:
-                                          IS_GPIO_ALL_INSTANCE()&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="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">WritePin(</span></i></span><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 to
-                                          write&nbsp;in BSRR 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;">Rename <i>GPIO_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SOURCE(</span></span>)
-                                          </i>by<i> GET_GPIO_INDEX() </i>and
-
-
-
-                                          move this later to file&nbsp;
-                                          stm32f4xx_hal_gpio_ex.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;">Add new
-                                          define for alternate function<i>
-                                            GPIO_AF5_SPI3</i> for
-                                          STM32F429xx/439xx and
-                                          STM32F427xx/437xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</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;">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="square">
-                                      <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_HASH_MD5_Start_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>):
-
-
-
-
-                                          </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">fix input
-                                          address management 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
-
-
-
-                                          RCC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update<o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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
-                                          following <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Macros</span></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;">__PPP_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)&nbsp;
-
-
-
-
-                                            by
-                                            __HAL_RCC_PPP_CLK_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;">__PPP_CLK_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)&nbsp;
-
-
-
-
-                                            by
-                                            __HAL_RCC_PPP_CLK_DISABLE()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__PPP_FORCE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RESET(</span></span>)&nbsp;
-
-
-
-
-                                            by
-                                            __HAL_RCC_PPP_FORCE_RESET()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__PPP_RELEASE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RESET(</span></span>)&nbsp;
-
-
-
-
-                                            by
-                                            __HAL_RCC_PPP_RELEASE_RESET()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__PPP_CLK_SLEEP_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-                                            by
-                                            __HAL_RCC_PPP_CLK_SLEEP_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;">__PPP_CLK_SLEEP_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-                                            by
-                                            __HAL_RCC_PPP_CLK_SLEEP_DISABLE()</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;">IS_RCC_PLLSAIN_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">VALUE(</span></span>)
-                                          macro: update the check
-                                          condition</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          description of RCC known <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Limitations</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;">Rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">C<b>C</b>SCallback(</span></span>)
-                                          by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_C<b>S</b>SCallback</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">OscConfig(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) fix
-                                          issues:&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;">Remove the
-                                            disable of HSE
-                                            oscillator&nbsp;when
-                                            HSE_BYPASS is&nbsp;used as
-                                            system clock source or as
-                                            PPL clock <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">source</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;">Add a check
-                                            on HSERDY flag
-                                            when&nbsp;HSE_BYPASS is
-                                            selected as new state
-                                            for&nbsp;HSE oscillator.</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;">Rename
-                                          __HAL_RCC_I2<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SCLK(</span></span>)
-                                          by __HAL_RCC_I2S_Config()</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL I2S&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <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_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">: add check
-                                          on I2S instance
-                                          using&nbsp;CMSIS macro <i>IS_I2S_ALL_INSTANCE()&nbsp;</i></span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                          update for compliancy w/ 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;">Add use
-                                          of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tmpreg</span></span>
-                                          variable in __HAL_I2S_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OVRFLAG(</span></span>)
-                                          and __HAL_I2S_CLEAR_UDRFLAG()
-                                          macro for compliancy with C++</span><span style=""><o:p></o:p></span></li>
-                                      <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_I2S_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetError(</span></span>)</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">: update to
-                                          return uint32_t instead of
-                                          HAL_I2S_ErrorTypeDef
-                                          enumeration</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL I2C&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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;to
-
-
-
-
-                                          clear&nbsp;the POS bit in the
-                                          CR1 register at the end
-                                          of&nbsp;HAL_I2C_Master_Read_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          and HAL_I2C_Mem_Read_IT()
-                                          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;">Rename
-                                          HAL_I2CEx_DigitalFilter_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Config(</span></span>)&nbsp;
-
-
-
-                                          by
-                                          HAL_I2CEx_ConfigDigitalFilter()
-                                        </span><span style=""><o:p></o:p></span></li>
-                                      <li class="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_I2CEx_AnalogFilter_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Config(</span></span>)&nbsp;
-
-
-
-                                          by
-                                          HAL_I2CEx_ConfigAnalogFilter()
-                                        </span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add use
-                                          of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tmpreg</span></span>
-                                          variable in __HAL_I2C_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ADDRFLAG(</span></span>)
-                                          and __HAL_I2C_CLEAR_STOPFLAG()
-                                          macro for&nbsp;compliancy with
-                                          C++</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          IrDA </span></b><span style="font-size: 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;">DMA transmit
-                                          process; the code has been
-                                          updated to avoid waiting on TC
-                                          flag under DMA ISR, IrDA TC
-                                          interrupt is used instead.
-                                          Below the update to be done 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 USART IRQ in
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                            stm32f4xx_it.c file, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UASRTx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            function: add a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_IRQHandler</span></span>()
-
-
-
-                                            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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT transmit
-                                          process; the code has been
-                                          updated to avoid waiting on TC
-                                          flag under IRDA ISR, IrDA TC
-                                          interrupt is used instead. No
-                                          impact on user application</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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
-                                          Macros: add prefix "__HAL"</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__IRDA_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-                                            by __HAL_IRDA_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;">__IRDA_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-                                            by __HAL_IRDA_DISABLE()</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 user
-                                          macros to manage the sample
-                                          method <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">feature</span></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_ONE_BIT_SAMPLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</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;">__HAL_IRDA_ONE_BIT_SAMPLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</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;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_Transmit_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></i></span><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 to
-                                          remove the enable of the
-                                          parity error 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 use
-                                          of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tmpreg</span></span>
-                                          variable in __HAL_IRDA_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PEFLAG(</span></span>)
-                                          macro for&nbsp;compliancy with
-                                          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 class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></i></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IRDA<i>_Transmit_</i></span></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></i></span><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 to
-                                          follow the
-                                          right&nbsp;procedure
-                                          "Transmission using DMA"&nbsp;
-                                          in the reference manual</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add clear
-                                            the TC flag in the SR
-                                            register before enabling the
-                                            DMA&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transmit</span></span>
-                                            request</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="square">
-                                      <li class="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 IWDG keys:&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;">KR_KEY_RELOAD
-
-
-
-                                            by IWDG_KEY_RELOAD</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">KR_KEY_ENABLE
-
-
-
-                                            by IWDG_KEY_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;">KR_KEY_EWA
-                                            by
-                                            IWDG_KEY_WRITE_ACCESS_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;">KR_KEY_DWA
-                                            by
-                                            IWDG_KEY_WRITE_ACCESS_DISABLE</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="">&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new
-                                          macros
-                                          __HAL_IWDG_RESET_HANDLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">STATE(</span></span>)
-                                          and
-                                          __HAL_IWDG_CLEAR_FLAG()&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_IWDG_ENABLE_WRITE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ACCESS(</span></span>)
-                                          and
-                                          __HAL_IWDG_DISABLE_WRITE_ACCESS()
-                                          as private macro</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL SPI&nbsp;</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_TransmitReceive_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          remove the &nbsp;DMA Tx Error
-                                          Callback initialization when
-                                          SPI <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxOnly</span></span>
-                                          mode is selected</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add use of <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UNUSED(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tmpreg</span></span>)
-                                          in __HAL_SPI_CLEAR_MODFFLAG(),
-                                          __HAL_SPI_CLEAR_OVRFLAG(),
-                                          __HAL_SPI_CLEAR_FREFLAG() to
-                                          fix "Unused variable" warning
-                                          with <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TrueSTUDIO</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;">Rename
-                                          Literals: remove "D" from
-                                          "DISABLED" and "ENABLED"</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="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_TIMODE_DISABLE<b>D</b>&nbsp;by
-
-
-
-
-                                            SPI_TIMODE_DISABLE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_TIMODE_ENABLE<b>D</b>&nbsp;by&nbsp;SPI_TIMODE_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;">SPI_CRCCALCULATION_DISABLE<b>D</b>
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">by
-
-
-
-
-                                                &nbsp;SPI</span></span>_CRCCALCULATION_DISABLE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_CRCCALCULATION_ENABLE<b>D</b>
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">by
-
-
-
-
-                                                &nbsp;SPI</span></span>_CRCCALCULATION_ENABLE</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 use
-                                          of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tmpreg</span></span>
-                                          variable in __HAL_SPI_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MODFFLAG(</span></span>),
-
-
-
-
-                                          __HAL_SPI_CLEAR_FREFLAG() and
-                                          __HAL_SPI_CLEAR_OVRFLAG()
-                                          macros for&nbsp;compliancy
-                                          with C++</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL SDMMC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul type="square">
-                                    <ul type="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IS_SDIO_ALL_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">INSTANCE(</span></span>)
-                                          &nbsp;macro moved to 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
-
-
-
-                                          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 type="square">
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_LTDC_ConfigCLUT</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">: optimize
-                                          the function when pixel format
-is&nbsp;LTDC_PIXEL_FORMAT_AL44&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;">Update the
-                                            size of color look up table
-                                            to 16 instead of 256 when
-                                            the&nbsp;pixel format
-                                            is&nbsp;LTDC_PIXEL_FORMAT_AL44
-                                          </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
-
-
-
-                                          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;">Rename NAND
-                                          Address structure to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NAND_AddressType<b>D</b>ef</span></span>
-                                          instead of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NAND_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AddressTypedef</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;">Update the
-                                          used algorithm of these <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">functions</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_NAND_Read_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Page(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_NAND_Write_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Page(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_NAND_Read_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SpareArea(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_NAND_Write_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SpareArea(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_NAND_Write_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Page(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): move
-                                          initialization of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tickstart</span></span>
-                                          before while loop</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_NAND_Erase_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Block(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): add <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">whait</span></span>
-                                          until NAND status is ready
-                                          before exiting this 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;"><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 type="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename NOR
-                                          Address structure to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NOR_AddressType<b>D</b>ef</span></span>
-                                          instead of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NOR_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">AddressTypedef</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;">NOR Status
-                                          literals <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">renamed</span></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;">NOR_SUCCESS
-                                            by HAL_NOR_STATUS_SUCCESS</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NOR_ONGOING
-                                            by HAL_NOR_STATUS_ONGOING</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NOR_ERROR
-                                            by HAL_NOR_STATUS_ERROR</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">NOR_TIMEOUT
-                                            by HAL_NOR_STATUS_TIMEOUT</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_NOR_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetStatus(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          fix Timeout issue
-                                          and&nbsp;exit from waiting
-                                          loop when timeout occurred</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL
-
-
-
-                                          PCCARD </span></b><span style="font-size: 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;">Rename PCCARD
-                                          Address structure to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCCARD_StatusType<b>D</b>ef</span></span>
-                                          instead of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CF_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">StatusTypedef</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;">PCCARD Status
-                                          literals <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">renamed</span></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;">CF_SUCCESS
-                                            by HAL_PCCARD_STATUS_SUCCESS</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CF_ONGOING
-                                            by HAL_PCCARD_STATUS_ONGOING</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CF_ERROR
-                                            by&nbsp;HAL_PCCARD_STATUS_ERROR</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CF_TIMEOUT
-                                            by HAL_PCCARD_STATUS_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;">Update "CF"
-                                          by "PCCARD" in&nbsp;functions,
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">literals</span></span>
-                                          and 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;">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="square">
-                                      <li class="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 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">functions</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_</span></span><span class="grame"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Active</span></b></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RemoteWakeup(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_<b>Activate</b>RemoteWakeup</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_</span></span><span class="grame"><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DeActive</span></b></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">RemoteWakeup(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_<b>DeActivate</b>RemoteWakeup</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Rename <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">literals</span></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;">USB_FS_EXTI_TRIGGER_RISING_EDGE
-
-
-
-
-                                            by
-                                            USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_FS_EXTI_TRIGGER_FALLING_EDGE
-
-
-
-
-                                            by
-                                            USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_FS_EXTI_TRIGGER_BOTH_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</span></span>)
-                                            by
-                                            USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_HS_EXTI_TRIGGER_RISING_EDGE
-
-
-
-
-                                            by
-                                            USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE&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;">USB_HS_EXTI_TRIGGER_FALLING_EDGE
-
-
-
-
-                                            by
-                                            USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_HS_EXTI_TRIGGER_BOTH_EDGE
-
-
-
-
-                                            by
-                                            USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_HS_EXTI_LINE_WAKEUP
-
-
-
-
-                                            by
-                                            USB_OTG_HS_EXTI_LINE_WAKEUP</span><span style=""><o:p></o:p></span></li>
-                                        <li class="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_FS_EXTI_LINE_WAKEUP
-
-
-
-
-                                            by
-                                            USB_OTG_FS_EXTI_LINE_WAKEUP</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;">Rename USB
-                                          EXTI macros <i>(FS,</i> <i>HS
-
-
-
-                                          </i>referenced as <b>SUBBLOCK
-                                          </b>here below)</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;">__HAL_USB_<b>SUBBLOCK</b>_EXTI_ENABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            &nbsp;by&nbsp;
-                                            __HAL_USB_OTG_<b>SUBBLOCK</b>_WAKEUP_EXTI_ENABLE_IT()&nbsp;&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;">__HAL_USB_<b>SUBBLOCK</b>_EXTI_DISABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            by&nbsp;__HAL_USB_OTG_<b>SUBBLOCK</b>_WAKEUP_EXTI_DISABLE_IT()<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_USB_<b>SUBBLOCK</b>_EXTI_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                            by&nbsp;__HAL_USB_OTG_<b>SUBBLOCK</b>_WAKEUP_EXTI_GET_FLAG()&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;">__HAL_USB_<b>SUBBLOCK</b>_EXTI_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                            by&nbsp;__HAL_USB_OTG_<b>SUBBLOCK</b>_WAKEUP_EXTI_CLEAR_FLAG()<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_USB_<b>SUBBLOCK</b>_EXTI_SET_RISING_EGDE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRIGGER(</span></span>)
-                                            by&nbsp;__HAL_USB_OTG_<b>SUBBLOCK</b>_WAKEUP_EXTI_ENABLE_RISING_EDGE()<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_USB_<b>SUBBLOCK</b>_EXTI_SET_FALLING_EGDE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRIGGER(</span></span>)
-                                            by __HAL_USB_OTG_<b>SUBBLOCK</b>_WAKEUP_EXTI_ENABLE_FALLING_EDGE()<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_USB_<b>SUBBLOCK</b>_EXTI_SET_FALLINGRISING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRIGGER(</span></span>)
-                                            by&nbsp;__HAL_USB_OTG_<b>SUBBLOCK</b>_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE()<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_USB_<b>SUBBLOCK</b>_EXTI_GENERATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SWIT(</span></span>)&nbsp;
-
-
-
-
-                                            by&nbsp;__HAL_USB_OTG_<b>SUBBLOCK</b>_WAKEUP_EXTI_GENERATE_SWIT()&nbsp;&nbsp;&nbsp;</span><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-<o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <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;">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="square">
-                                      <li class="MsoNormal" 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="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">functions</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <ul type="square">
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GenerateRandomNumber(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): to
-                                            generate a 32-bits random
-                                            number,</span><span style="">
-                                          </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">return
-                                            random value in argument and
-                                            return HAL status.</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_GenerateRandomNumber_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): to
-                                            &nbsp;start generation of
-                                            the&nbsp;32-bits random
-                                            number, user should call
-                                            the&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_ReadLastRandomNumber</span></span>()
-
-
-
-
-                                            function under the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_ReadyCallback</span></span>()
-
-
-
-                                            to get the generated random
-                                            value.</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ReadLastRandomNumber(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">):&nbsp;to
-                                            return the last random value
-                                            stored in the RNG handle</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetRandomNumber(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): return
-                                          value update (obsolete),
-                                          replaced by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_GenerateRandomNumber</span></span>()</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_GetRandomNumber_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): wrong
-                                          implementation (obsolete),
-                                          replaced by&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RNG_GenerateRandomNumber_IT</span></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_RNG_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                          macro (obsolete), replaced by
-                                          new __HAL_RNG_CLEAR_IT() 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;">Add new
-                                          define for&nbsp;RNG ready
-                                          interrupt:&nbsp; RNG_IT_DRDY</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">GetTime(</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_GetDate</span></span>():
-
-
-
-
-                                            add the comment below</span></i><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <div style="margin-left: 30pt;">
-                                    <div style="margin-left: 30pt;">
-                                      <p class="MsoNormal" style=""><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;
-
-
-
-
-                                            * @note You must call <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetDate(</span></span>)
-                                            after <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RTC_GetTime</span></span>()
-
-
-
-
-                                            to unlock the values </span></i><span style="font-size: 10pt;"><br>
-                                        </span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;
-
-
-
-
-                                            * in the higher-order
-                                            calendar shadow registers to
-                                            ensure consistency between
-                                            the time and date values.</span></i><span style="font-size: 10pt;"><br>
-                                        </span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;
-
-
-
-
-                                            * Reading RTC current time
-                                            locks the values in calendar
-                                            shadow registers until
-                                            Current date is read.&nbsp;</span></i><span style="font-size: 10pt;"><o:p></o:p></span></p>
-                                    </div>
-                                  </div>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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
-                                          literals: add prefix "__<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL"</span></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;">FORMAT_BIN&nbsp;by&nbsp;HAL_FORMAT_BIN</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FORMAT_BCD
-                                            by&nbsp;HAL_FORMAT_BCD</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;">Rename macros
-                                          <i>(ALARM,</i> WAKEUPTIMER and
-                                          <i>TIMESTAMP </i>referenced
-                                          as <b>SUBBLOCK </b>here
-                                          below)</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RTC_EXTI_ENABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            by&nbsp; __HAL_RTC_<b>SUBBLOCK</b>_EXTI_ENABLE_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_RTC_EXTI_DISABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            by&nbsp; __HAL_RTC_<b>SUBBLOCK</b>_EXTI_DISABLE_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_RTC_EXTI_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                            by&nbsp; __HAL_RTC_<b>SUBBLOCK</b>_EXTI_CLEAR_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;">__HAL_RTC_EXTI_GENERATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SWIT(</span></span>)
-                                            by __HAL_RTC_<b>SUBBLOCK</b>_EXTI_GENERATE_SWIT()</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
-                                          macros <i>(ALARM,</i>
-                                          WAKEUPTIMER and <i>TAMPER_TIMESTAMP
-
-
-
-                                          </i>referenced as <b>SUBBLOCK
-                                          </b>here below)</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_RTC_<b>SUBBLOCK</b>_GET_IT_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SOURCE(</span></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_RTC_<b>SUBBLOCK</b>_EXTI_ENABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EVENT(</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;">__HAL_RTC_<b>SUBBLOCK</b>_EXTI_DISABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EVENT(</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;">__HAL_RTC_<b>SUBBLOCK</b>_EXTI_ENABLE_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">__HAL_RTC_<b>SUBBLOCK</b>_EXTI_DISABLE_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">__HAL_RTC_<b>SUBBLOCK</b>_EXTI_ENABLE_RISING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">__HAL_RTC_<b>SUBBLOCK</b>_EXTI_DISABLE_RISING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">&nbsp;__HAL_RTC_<b>SUBBLOCK</b>_EXTI_ENABLE_RISING_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">&nbsp;__HAL_RTC_<b>SUBBLOCK</b>_EXTI_DISABLE_RISING_FALLING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EDGE(</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;">&nbsp;__HAL_RTC_<b>SUBBLOCK</b>_EXTI_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></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
-
-
-
-                                          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="square">
-                                      <li class="MsoNormal" 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_STREOMODE by&nbsp;SAI_ST<b>E</b>REOMODE</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update FIFO
-                                          status Level defines in upper
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">case</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;">Rename
-                                          literals: remove "D" from
-                                          "DISABLED" and "<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED"</span></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;">SAI_OUTPUTDRIVE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLED
-
-
-
-
-                                                &nbsp;by</span></span>
-                                            SAI_OUTPUTDRIVE_DISABLE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SAI_OUTPUTDRIVE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED
-
-
-
-
-                                                &nbsp;by</span></span>
-                                            SAI_OUTPUTDRIVE_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;">SAI_MASTERDIVIDER_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED&nbsp;&nbsp;by</span></span>
-                                            SAI_MASTERDIVIDER_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;">SAI_MASTERDIVIDER_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLED&nbsp;&nbsp;by</span></span>
-                                            SAI_MASTERDIVIDER_DISABLE</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <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;">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;">Rename
-                                          SD_CMD_SD_APP_STAUS&nbsp;by&nbsp;SD_CMD_SD_APP_STA<b>T</b>US</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="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SD_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PowerON(</span></i></span><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;">updated to
-                                          add 1ms required power up
-                                          waiting time before starting
-                                          the SD initialization sequence</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="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SD_DMA_RxCplt</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">()/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SD_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxCplt(</span></span>):
-
-
-
-
-                                          </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">add a call to
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_Abort</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 class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ReadBlocks(</span></i></span><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 to
-                                          set&nbsp;the&nbsp;defined
-                                          DATA_BLOCK_SIZE as SDIO <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DataBlockSize</span></span>
-                                          parameter</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_ReadBlocks_DMA</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">()/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SD_WriteBlocks_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                          update to call the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_Start_IT</span></span>()
-
-
-
-                                          function with DMA&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Datalength</span></span>
-                                          set to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">BlockSize</span></span>/4&nbsp;
-
-
-
-
-                                          as the DMA&nbsp;is
-                                          configured&nbsp;in word&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
-
-
-
-                                          SMARTCARD </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style="">&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;">DMA transmit
-                                          process; the code has been
-                                          updated to avoid waiting on TC
-                                          flag under DMA ISR, SMARTCARD
-                                          TC interrupt is used instead.
-                                          Below the update to be done 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 USART IRQ in
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SAMRTCARD_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                            stm32f4xx_it.c file, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">UASRTx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            function: add a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SMARTCARD_IRQHandler</span></span>()
-
-
-
-
-                                            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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT transmit
-                                          process; the code has been
-                                          updated to avoid waiting on TC
-                                          flag under SMARTCARD
-                                          ISR,&nbsp;SMARTCARD TC
-                                          interrupt is used instead. No
-                                          impact on user application</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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
-                                          macros: add prefix "__<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL"</span></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;">__SMARTCARD_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-                                            by __HAL_SMARTCARD_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;">__SMARTCARD_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-                                            by __HAL_SMARTCARD_DISABLE()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__SMARTCARD_ENABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            by
-                                            __HAL_SMARTCARD_ENABLE_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;">__SMARTCARD_DISABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            by
-                                            __HAL_SMARTCARD_DISABLE_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;">__SMARTCARD_DMA_REQUEST_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-                                            by
-                                            __HAL_SMARTCARD_DMA_REQUEST_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;">__SMARTCARD_DMA_REQUEST_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-                                            by
-                                            __HAL_SMARTCARD_DMA_REQUEST_DISABLE()</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;">Rename
-                                          literals: remove "D" from
-                                          "DISABLED" and "<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED"</span></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;">SMARTCARD_NACK_ENABLED&nbsp;by
-
-
-
-
-                                            SMARTCARD_NACK_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;">SMARTCARD_NACK_DISABLED&nbsp;by&nbsp;SMARTCARD_NACK_DISABLE</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 user
-                                          macros to manage the sample
-                                          method <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">feature</span></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_SMARTCARD_ONE_BIT_SAMPLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</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;">__HAL_SMARTCARD_ONE_BIT_SAMPLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add use
-                                          of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tmpreg</span></span>
-                                          variable in
-                                          __HAL_SMARTCARD_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PEFLAG(</span></span>)
-                                          macro for&nbsp;compliancy with
-                                          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 class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></i></span><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SMARTCARD<i>_Transmit_</i></span></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></i></span><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 to
-                                          follow the
-                                          right&nbsp;procedure
-                                          "Transmission using DMA"&nbsp;
-                                          in the reference manual</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add clear
-                                            the TC flag in the SR
-                                            register before enabling the
-                                            DMA&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transmit</span></span>
-                                            request</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
-
-
-
-                                          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
-                                          TIM_CHANNEL_ALL as possible
-                                          value for all Encoder
-                                          Start/Stop APIs Description</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_OC_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ConfigChannel(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) remove call
-                                          to IS_TIM_FAST_STATE() assert
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_PWM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ConfigChannel(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) add a call
-                                          to IS_TIM_FAST_STATE() assert
-                                          macro to check the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OCFastMode</span></span>
-                                          parameter</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMADelayPulseCplt(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) Update to
-                                          set the TIM Channel before to
-                                          call&nbsp; <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_PWM_PulseFinishedCallback</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMACaptureCplt(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) update to
-                                          set the TIM Channel before to
-                                          call&nbsp; <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_IC_CaptureCallback</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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">TIM_ICx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ConfigChannel(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)&nbsp;update
-                                          to fix Timer CCMR1 register
-                                          corruption when setting <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ICFilter</span></span>
-                                          parameter</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_DMABurst_WriteStop</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">()/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_DMABurst_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ReadStop(</span></span>)
-                                          update to abort the DMA
-                                          transfer for the <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">specifc</span></span>
-                                          TIM channel</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 for TIM Slave
-                                          configuration&nbsp;in IT mode:
-                                          <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_SlaveConfigSynchronization_</span></i></span><span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></i></span><i>)&nbsp;</i></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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">ConfigBreakDeadTime(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) add an
-                                          assert check on Break &amp; <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DeadTime</span></span>
-                                          parameters 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIMEx_OCN_Start_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) add the
-                                          enable of Break Interrupt for
-                                          all output modes</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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/DISABLE URS
-                                          bit in TIM CR1 register:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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_URS_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</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;">__HAL_TIM_URS_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new macro
-                                          for TIM Edge modification</span><span style="">:</span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-                                            __HAL_TIM_SET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">CAPTUREPOLARITY(</span></span>)</span></i><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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 type="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add&nbsp;IS_LIN_WORD_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LENGTH(</span></span>)
-                                          and
-                                          IS_LIN_OVERSAMPLING()&nbsp;
-                                          macros: to check respectively
-                                          <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WordLength</span></span>
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OverSampling</span></span>
-                                          parameters in LIN mode</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;">DMA transmit
-                                          process; the code has been
-                                          updated to avoid waiting on TC
-                                          flag under DMA ISR, UART TC
-                                          interrupt is used instead.
-                                          Below the update to be done 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 USART IRQ in
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_UART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                            stm32f4xx_it.c file, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USARTx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            function: add a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_UART_IRQHandler</span></span>()
-
-
-
-                                            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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT transmit
-                                          process; the code has been
-                                          updated to avoid waiting on TC
-                                          flag under UART&nbsp;ISR, UART
-                                          TC interrupt is used instead.
-                                          No impact on user application</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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
-                                          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_UART_ONEBIT_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-                                            by
-                                            __HAL_UART_ONE_BIT_SAMPLE_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;">__HAL_UART_ONEBIT_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-                                            by
-                                            __HAL_UART_ONE_BIT_SAMPLE_DISABLE()</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;">Rename
-                                          literals:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">UART_WAKEUPMETHODE_IDLELINE&nbsp;by
-
-
-
-
-                                            UART_WAKEUPMETHOD_IDLELINE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">UART_WAKEUPMETHODE_ADDRESSMARK&nbsp;by
-UART_WAKEUPMETHOD_ADDRESSMARK</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 use
-                                          of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tmpreg</span></span>
-                                          variable in __HAL_UART_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PEFLAG(</span></span>)
-                                          macro for&nbsp;compliancy with
-                                          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 class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_UART_Transmit_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></i></span><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 to
-                                          follow the right procedure
-                                          "Transmission using DMA" in
-                                          the reference manual</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add clear
-                                            the TC flag in the SR
-                                            register before enabling the
-                                            DMA&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transmit</span></span>
-                                            request</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
-
-
-
-                                          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 type="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA transmit
-                                          process; the code has been
-                                          updated to avoid waiting on TC
-                                          flag under DMA ISR, USART TC
-                                          interrupt is used instead.
-                                          Below the update to be done 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 USART IRQ in
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">MspInit(</span></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
-                                            stm32f4xx_it.c file, <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">USARTx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span>)
-                                            function: add a call to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_IRQHandler</span></span>()
-
-
-
-
-                                            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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IT transmit
-                                          process; the code has been
-                                          updated to avoid waiting on TC
-                                          flag under USART&nbsp;ISR,
-                                          USART TC interrupt is used
-                                          instead. No impact on user
-                                          application</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="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></i></span><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
-                                          to&nbsp;enable the USART
-                                          oversampling by 8 by default
-                                          in order to reach max USART
-                                          frequencies</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="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">USART_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMAReceiveCplt(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)&nbsp;update
-                                          to set the new USART state
-                                          after checking on the
-                                          old&nbsp;state</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="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_Transmit_DMA</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">()/<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_TransmitReceive_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></span>)
-                                          </span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update to
-                                          follow the
-                                          right&nbsp;procedure
-                                          "Transmission using DMA"&nbsp;
-                                          in the reference manual</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add clear
-                                            the TC flag in the SR
-                                            register before enabling the
-                                            DMA&nbsp;<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">transmit</span></span>
-                                            request</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;">Rename
-                                          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;">__USART_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</span></span>)
-                                            by __HAL_USART_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;">__USART_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</span></span>)
-                                            by __HAL_USART_DISABLE()</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__USART_ENABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            by __HAL_USART_ENABLE_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;">__USART_DISABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                            by __HAL_USART_DISABLE_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;">Rename
-                                          literals: remove "D" from
-                                          "DISABLED" and "<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLED"</span></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;">USART_CLOCK_DISABLED&nbsp;by
-
-
-
-
-                                            USART_CLOCK_DISABLE</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">USART_CLOCK_ENABLED&nbsp;by
-
-
-
-
-                                            USART_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;">USARTNACK_ENABLED
-
-
-
-                                            by USART_NACK_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;">USARTNACK_DISABLED
-
-
-
-                                            by USART_NACK_DISABLE</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 user
-                                          macros to manage the sample
-                                          method <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">feature</span></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_USART_ONE_BIT_SAMPLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">ENABLE(</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;">__HAL_USART_ONE_BIT_SAMPLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add use
-                                          of&nbsp;<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">tmpreg</span></span>
-                                          variable in __HAL_USART_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PEFLAG(</span></span>)
-                                          macro for&nbsp;compliancy with
-                                          C++</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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</span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" 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 in
-                                          __HAL_WWDG_ENABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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;">Add new
-                                          macros to manage WWDG IT &amp;
-                                          correction:</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DISABLE(</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;">__HAL_WWDG_DISABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</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;">__HAL_WWDG_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</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;">__HAL_WWDG_GET_IT_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SOURCE(</span></span>)</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.1.0
-
-
-
-                                        / 19-June-2014</span><span style=""><o:p></o:p></span></font></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; text-align: start; word-spacing: 0px;" type="square">
-                                    <li class="MsoNormal" 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="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;">&nbsp;</span></span><b>STM32F411xE</b><span class="apple-converted-space"><span style="font-family: &quot;Verdana&quot;,sans-serif;"> </span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices</span></span></span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <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;">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="square">
-                                      <li class="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 time base <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">implementation</span></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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Systick</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> timer is
-                                            used by default as source of
-                                            time base, but user can
-                                            eventually implement his
-                                            proper time base source (a <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">general
-
-
-
-                                                purpose</span></span>
-                                            timer for example or other
-                                            time source)</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Functions
-                                            affecting time base
-                                            configurations are declared
-                                            as __Weak to make override
-                                            possible in case of other
-                                            implementations in user
-                                            file, for more details
-                                            please refer to <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TimeBase</span></span>
-                                            example</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 flag
-                                          clear procedure: use atomic
-                                          write operation "=" instead of
-                                          ready-modify-write operation
-                                          "|=" or "&amp;="</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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 on
-                                          Timeout management, Timeout
-                                          value set to 0 passed to API
-                                          automatically exits the
-                                          function after checking the
-                                          flag without any <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">wait</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;">Common update
-                                          for the following
-                                          communication peripherals:
-                                          SPI, UART, USART and IRDA</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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
-                                            circular mode <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">support</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;">Remove lock
-                                            from recursive <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">process</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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new macro
-                                          __HAL_RESET_HANDLE_STATE to
-                                          reset a given handle <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">state</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;">Add a new
-                                          attribute for functions
-                                          executed from internal SRAM
-                                          and depending <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">from</span></span>
-                                          Compiler 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;">When USE_RTOS
-                                          == 1 (in
-                                          stm32l0xx_hal_conf.h), the
-                                          __HAL_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LOCK(</span></span>)
-                                          is not defined instead of
-                                          being defined empty</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Miscellaneous
-                                          comments and formatting 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;">stm32f4xx_hal_conf_template.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;">Add a new
-                                            define for LSI default value
-                                            LSI_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">VALUE</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;">Add a new
-                                            define for LSE default value
-                                            LSE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">VALUE</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;">Add a new
-                                            define for Tick interrupt
-                                            priority TICK_INT_PRIORITY
-                                            (needed for the enhanced
-                                            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;"><i><u><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Important
-
-
-
-
-                                              Note:</span></u></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">
-                                          aliases has been added for any
-                                          API naming change, to keep
-                                          compatibility with previous <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">version</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;">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>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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
-                                          macro <i>__HAL_GPIO_EXTI_GENERATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SWIT(</span></span>)</i>
-                                          to manage the generation of
-                                          software interrupt on selected
-                                          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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): use
-                                          temporary variable when
-                                          modifying the registers, to
-                                          avoid unexpected transition in
-                                          the GPIO pin 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;">Remove
-                                          IS_GET_GPIO_PIN 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;">Add a new
-                                          function <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_GPIO_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">LockPin(</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;">Private Macro
-                                          __HAL_GET_GPIO_SOURCE renamed
-                                          into GET_GPIO_SOURCE</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 STM32F411xx <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">devices
-
-
-
-
-                                              :</span></span> add the
-                                          new Alternate functions values
-                                          related to new remap added for
-                                          SPI, USART, I2C</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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
-                                          following HAL GPIO macros
-                                          description: rename <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EXTI_Linex</span></span>
-                                          by <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GPIO_PIN_x</span></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;">__HAL_GPIO_EXTI_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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_GPIO_EXTI_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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_GPIO_EXTI_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></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_GPIO_EXTI_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL DMA</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;"> update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="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 in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_DMA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PollForTransfer(</span></span>)
-                                          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 DMA
-                                            error code in case of
-                                            HAL_ERROR 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;">set HAL
-                                            Unlock before DMA state <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">update</span></span></span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL DMA2D</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">
-                                      update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-                                          configuration of source
-                                          address in case of A8 or A4
-                                          M2M_PFC DMA2D 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
-
-
-
-                                          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>
-                                  <ul style="margin-top: 0in;" type="circle">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Functions
-                                          reorganization update,
-                                          depending on the features
-                                          supported by each STM32F4 <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">device</span></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;">Add new
-                                          driver
-                                          (stm32f4xx_hal_flash_ramfunc.h/.c)
-                                          to manage function executed
-                                          from RAM, these functions are
-                                          available only for STM32F411xx
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Devices</span></span><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="circle">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">StopFlashInterfaceClk(</span></i></span><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;">&nbsp; :
-                                            Stop the flash interface
-                                            while System Run<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">StartFlashInterfaceClk(</span></i></span><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;"> : Stop the
-                                            flash interface while System
-                                            Run<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableFlashSleepMode(</span></i></span><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;"> : Enable
-                                            the flash sleep while System
-                                            Run<o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">FLASH_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DisableFlashSleepMode(</span></i></span><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;"> :&nbsp;
-                                            Disable the flash sleep
-                                            while System Run</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul type="square">
-                                    <li class="MsoNormal" style=""><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<o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PVDConfig(</span></i></span><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;">: add clear
-                                          of the EXTI trigger before new
-                                          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;">Fix in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnterSTANDBYMode(</span></span>)
-                                          to not clear Wakeup flag
-                                          (WUF), which need to be
-                                          cleared at application level
-                                          before to call this 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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWR_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnterSLEEPMode(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="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
-                                            disable and enable of <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SysTick</span></span>
-                                            <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Timer</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;">Update
-                                            usage of __<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WFE(</span></span>)
-                                            in low power entry function:
-                                            if there is a pending event,
-                                            calling __WFE() will not
-                                            enter the CortexM4 core to
-                                            sleep mode. The solution is
-                                            to made the call below; the
-                                            first __<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WFE(</span></span>)
-                                            is always ignored and clears
-                                            the event if one was already
-                                            pending, the second is
-                                            always applied</span><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <div style="margin-left: 1.25in;">
-                                    <p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__SEV()</span><span style="font-size: 10pt;"><br>
-                                      </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__WFE()</span><span style="font-size: 10pt;"><br>
-                                      </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">WFE(</span></span>)</span><span style="font-size: 10pt;"><o:p></o:p></span></p>
-                                  </div>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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
-                                          for software event generation
-                                          __HAL_PVD_EXTI_GENERATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SWIT(</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;">Remove the
-                                          following defines form Generic
-                                          driver and add them under
-                                          extension driver because they
-                                          are only used within extension
-                                          functions.</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">CR_FPDS_BB:
-                                            used within <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnableFlashPowerDown(</span></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;">CSR_BRE_BB:
-                                            used within <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnableBkUpReg(</span></span>)
-                                            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;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add the
-                                          support of STM32F411xx devices
-                                          add the define <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">STM32F411xE</span></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;">For
-                                            STM32F401xC, STM32F401xE and
-                                            STM32F411xE devices add the
-                                            following functions used to
-                                            enable or disable the low
-                                            voltage mode for <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">regulators</span></span><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableMainRegulatorLowVoltage(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DisableMainRegulatorLowVoltage(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">EnableLowRegulatorLowVoltage(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<o:p></o:p></span></li>
-                                          <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DisableLowRegulatorLowVoltage(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">)<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;">For
-                                          STM32F42xxx/43xxx devices, add
-                                          a new function for Under
-                                          Driver management as the macro
-                                          already added for this mode is
-                                          not sufficient: <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PWREx_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">EnterUnderDriveSTOPMode(</span></span>)</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <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;">HAL
-
-
-
-                                          RCC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update<o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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 <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCC_</span></i></span><span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">ClockConfig(</span></i></span><i>)</i>
-                                          function: update the AHB clock
-                                          divider before clock switch to
-                                          new source</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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 to
-                                          calibrate the HSI when it is
-                                          used as system clock <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">source</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;">Rename the
-                                          following <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">macros</span></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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__OTGFS_FORCE_RESET
-
-
-
-                                              <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">()&nbsp; by</span></span>
-                                              __USB_OTG_FS_FORCE_RESET()<o:p></o:p></span></i></li>
-                                        <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;">__OTGFS_RELEASE_RESET
-
-
-
-                                              <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">()&nbsp; by</span></span>&nbsp;
-__USB_OTG_FS_RELEASE_RESET()<o:p></o:p></span></i></li>
-                                        <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;">__OTGFS_CLK_SLEEP_ENABLE
-
-
-
-
-                                              <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">()&nbsp; by</span></span>&nbsp;
-__USB_OTG_FS_CLK_SLEEP_ENABLE()<o:p></o:p></span></i></li>
-                                        <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;">__OTGFS_CLK_SLEEP_DISABLE
-
-
-
-
-                                              () <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">by&nbsp; _</span></span>_USB_OTG_FS_CLK_SLEEP_DISABLE()</span></i><span style=""><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p>&nbsp;</o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="disc">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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 field
-                                          PLLI2SM in
-                                          RCC_PLLI2SInitTypeDef
-                                          structure, this division
-                                          factor is added for PLLI2S VCO
-                                          input clock only STM32F411xE
-                                          devices =&gt; the FW
-                                          compatibility is broken vs.
-                                          STM32F401xx devices <o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_</span></i></span><span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">PeriphCLKConfig(</span></i></span><i>)</i>
-                                          and&nbsp; <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_GetPeriphCLKConfig</span></i></span><i>()</i>&nbsp;
-
-
-
-
-                                          functions to support the new
-                                          PLLI2SM <o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 to manage the new LSE
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">mode
-
-
-
-
-                                              :</span></span> <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_RCCEx_SelectLSEMode</span></span>()</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style=""><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Reorganize
-                                          the macros depending <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">from</span></span>
-                                          Part number used and make them
-                                          more clear</span><span style="font-size: 10pt;"><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp; </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL
-
-
-
-                                        UART </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">update<o:p></o:p></span></p>
-                                  <ul type="square">
-                                    <ul type="square">
-                                      <li class="MsoNormal" style="color: black;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add new
-                                          macros to control CTS and <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RTS</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;">Add specific
-                                          macros to manage the flags
-                                          cleared only by a software <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">sequence</span></span></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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_UART_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OREFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IDLEFLAG(</span></span>)</span></i><i><span style=""> <o:p></o:p></span></i></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 several
-                                          enhancements without affecting
-                                          the driver <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">functionalities</span></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;">Remove the
-                                            check on RXNE set after
-                                            reading the Data in the DR
-                                            register</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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
-                                            transmit processes to use
-                                            TXE instead of <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TC</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;">Update <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_UART_Transmit_</span></i></span><span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></i></span><i>)</i>
-                                            to enable <i>UART_IT_TXE</i>
-                                            instead of <i>UART_IT_TC</i></span><span style=""> <o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL USART</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">
-                                      update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add specific
-                                          macros to manage the flags
-                                          cleared only by a software <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">sequence</span></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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_USART_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_USART_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_USART_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_USART_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OREFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_USART_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IDLEFLAG(</span></span>)</span></i><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;">Update <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_USART_Transmit_</span></i></span><span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></i></span><i>)</i>
-                                          to enable <i>USART_IT_TXE</i>
-                                          instead of <i>USART_IT_TC</i></span><span style=""> <o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL IRDA</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;"> update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add specific
-                                          macros to manage the flags
-                                          cleared only by a software <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">sequence</span></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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_IRDA_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_
-                                              IRDA _CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_
-                                              IRDA _CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NEFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_
-                                              IRDA _CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OREFLAG(</span></span>)</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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_
-                                              IRDA _CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IDLEFLAG(</span></span>)</span></i><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><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 several
-                                          enhancements without affecting
-                                          the driver <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">functionalities</span></span></span><span style=""> <o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <ul style="margin-top: 0in;" type="circle">
-                                        <li class="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
-                                            check on RXNE set after
-                                            reading the Data in the DR
-                                            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;">Update <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_Transmit_</span></i></span><span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></i></span><i>)</i>
-                                            to enable <i>IRDA_IT_TXE</i>
-                                            instead of <i>IRDA_IT_TC</i></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
-                                          following APIs used within DMA
-                                          <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">process</span></span>
-                                          <o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="circle">
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_StatusTypeDef</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAPause(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRDA_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hirda</span></span>);</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_StatusTypeDef</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAResume(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRDA_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hirda</span></span>);</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_StatusTypeDef</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAStop(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRDA_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hirda</span></span>);
-                                              <o:p></o:p></span></i></li>
-                                        <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;">void <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxHalfCpltCallback(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRDA_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hirda</span></span>);</span></i><i><span style=""> </span></i><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></i></li>
-                                        <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;">void <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IRDA_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxHalfCpltCallback(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IRDA_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hirda</span></span>);</span></i><span style=""> <o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <p class="MsoListParagraph" style="margin-left: 0.5in; text-indent: -0.25in;"><span style="font-size: 10pt; font-family: Wingdings; color: black;">§</span><span style="font-size: 7pt; color: black;">&nbsp;
-
-
-
-
-                                    </span><b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">HAL SMARTCARD</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif; color: black;">
-                                      update</span><span style="color: black;"><o:p></o:p></span></p>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add specific
-                                          macros to manage the flags
-                                          cleared only by a software <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">sequence</span></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;">__HAL_SMARTCARD_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PEFLAG(</span></span>)</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_SMARTCARD_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FEFLAG(</span></span>)</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_SMARTCARD_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">NEFLAG(</span></span>)</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_SMARTCARD_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">OREFLAG(</span></span>)</span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                        <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_SMARTCARD_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IDLEFLAG(</span></span>)</span></i><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><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 several
-                                          enhancements without affecting
-                                          the driver <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">functionalities</span></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 new
-                                            state <i>HAL_SMARTCARD_STATE_BUSY_TX_RX</i>
-                                            and all processes has been
-                                            updated <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">accordingly</span></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 <span class="spelle"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SMARTCARD_Transmit_</span></i></span><span class="grame"><i><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></i></span><i>)</i>
-                                            to enable <i>SMARTCARD_IT_TXE</i>
-                                            instead of <i>SMARTCARD_IT_TC</i></span><span style=""> <o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <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;">HAL
-
-
-
-                                          SPI</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> update</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;">Bugs <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">fix</span></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;">SPI
-                                            interface is used in
-                                            synchronous polling mode: at
-                                            high clock rates like SPI <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">prescaler</span></span>
-                                            2 and 4, calling <br>
-                                            <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TransmitReceive(</span></span>)
-                                            returns with error
-                                            HAL_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 class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_TransmitReceive_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></i></span><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;"> does not
-                                            clean up the TX DMA, so any
-                                            subsequent SPI calls return
-                                            the DMA error</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="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_Transmit_</span></i></span><span class="grame"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">DMA(</span></i></span><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;"> is failing
-                                            when data size is equal to 1
-                                            byte</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
-                                          following APIs used within the
-                                          DMA <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">process</span></span></span><span style=""> </span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    </ul>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <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 class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_StatusTypeDef</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAPause(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hspi</span></span>);<o:p></o:p></span></i></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_StatusTypeDef</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAResume(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hspi</span></span>);<o:p></o:p></span></i></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span class="spelle"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_StatusTypeDef</span></i></span><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DMAStop(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hspi</span></span>);<o:p></o:p></span></i></li>
-                                        <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;">void <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxHalfCpltCallback(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hspi</span></span>);<o:p></o:p></span></i></li>
-                                        <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;">void <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">RxHalfCpltCallback(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hspi</span></span>);<o:p></o:p></span></i></li>
-                                        <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;">void <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_SPI_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxRxHalfCpltCallback(</span></span><span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SPI_HandleTypeDef</span></span>
-                                              *<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">hspi</span></span>);</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <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;">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">
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <li class="MsoNormal" 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
-                                            conditional define to make
-                                            this driver visible for all
-                                            STM32F4xx devices except
-                                            STM32F401xx and STM32F411xx
-                                            Devices. <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
-
-
-
-                                          CRC </span></b><span style="font-size: 10pt; 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;">These
-                                            macros are added to
-                                            read/write the CRC IDR
-                                            register: __HAL_CRC_SET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IDR(</span></span>)
-                                            and __HAL_CRC_GET_IDR()<o:p></o:p></span></li>
-                                      </ul>
-                                    </ul>
-                                  </ul>
-                                  <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;">HAL
-
-
-
-                                          DAC </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update <o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="square">
-                                      <li class="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 the
-                                          DMA channel configuration when
-                                          used with <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">DAC</span></span> <o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">IRQHandler(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">): update to
-                                          check the input capture
-                                          channel 3 and 4 in CCMR2
-                                          instead of CCMR1</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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"><span style="font-family: &quot;Verdana&quot;,sans-serif;">PRESCALER(</span></span>)
-                                          updated to use '=' instead of
-                                          '|='</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" 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 macro in TIM HAL
-                                          driver</span><span style=""><o:p></o:p></span></li>
-                                      <ul style="margin-top: 0in;" type="square">
-                                        <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;">__<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetCompare(</span></span>)
-                                              <o:p></o:p></span></i></li>
-                                        <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;">__<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetCounter(</span></span>)
-                                              <o:p></o:p></span></i></li>
-                                        <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;">__<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetAutoreload(</span></span>)
-                                              <o:p></o:p></span></i></li>
-                                        <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;">__<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetClockDivision(</span></span>)
-                                              <o:p></o:p></span></i></li>
-                                        <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;">__<span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_TIM_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">GetICPrescaler(</span></span>)</span></i><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 </span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">update</span><span style=""><o:p></o:p></span></li>
-                                  </ul>
-                                  <ul style="margin-top: 0in;" type="square">
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" style="margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Use of CMSIS
-                                          constants instead of magic <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">values</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Miscellaneous
-                                          update in functions internal
-                                          coding</span><span style=""><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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="margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix
-
-
-
-                                          issue of macros returning
-                                          wrong address for NAND <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">blocks</span></span></span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Fix
-
-
-
-                                          issue for read/write NAND
-                                          page/spare <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">area</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;">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="margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Add
-
-
-
-                                          the NOR address bank macro
-                                          used within the <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">API</span></span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update
-
-
-
-                                          NOR API implementation to
-                                          avoid the use of NOR address
-                                          bank hard <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">coded</span></span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                    </ul>
-                                    <li class="MsoNormal" style="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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HCD_StateTypeDef</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> structure
-                                          members <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">renamed</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 class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">These macro</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> are 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_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>__HANDLE__,
-
-
-
-
-                                            __INTERRUPT__)&nbsp;&nbsp;&nbsp;
-
-
-
-                                            by
-                                            __HAL_HCD_GET_FLAG(__HANDLE__,
-                                            __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;">__HAL_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>__HANDLE__,
-
-
-
-
-                                            __INTERRUPT__) by
-                                            __HAL_HCD_CLEAR_FLAG(__HANDLE__,
-                                            __INTERRUPT__)&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_IS_INVALID_INTERRUPT(__HANDLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">_)&nbsp;
-
-
-
-
-                                                by</span></span>
-                                            __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__)&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;">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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_</span></span><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">SetTxFiFo(</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">) and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCD_SetRxFiFo</span></span>()
-
-
-
-
-                                          renamed into <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCDEx_SetTxFiFo</span></span>()
-
-
-
-
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_PCDEx_SetRxFiFo</span></span>()
-
-
-
-
-                                          and moved to the extension
-                                          files
-                                          stm32f4xx_hal_pcd_ex.h/.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 class="spelle"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">PCD_StateTypeDef</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> structure
-                                          members <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">renamed</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;">Fix incorrect
-                                          masking of <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TxFIFOEmpty</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;">stm32f4xx_ll_usb.c:
-
-
-
-                                          fix issue in HS 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;">New macros <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">added</span></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_PCD_IS_PHY_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SUSPENDED(</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;">__HAL_USB_HS_EXTI_GENERATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SWIT(</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;">__HAL_USB_FS_EXTI_GENERATE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">SWIT(</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;"><span class="grame"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">These macro</span></span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> are 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_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>__HANDLE__,
-
-
-
-
-                                            __INTERRUPT__)&nbsp;&nbsp;&nbsp;
-
-
-
-                                            by
-                                            __HAL_PCD_GET_FLAG(__HANDLE__,
-                                            __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;">__HAL_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>__HANDLE__,
-
-
-
-
-                                            __INTERRUPT__) by
-                                            __HAL_PCD_CLEAR_FLAG(__HANDLE__,
-                                            __INTERRUPT__)&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_IS_INVALID_INTERRUPT(__HANDLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">_)&nbsp;
-
-
-
-
-                                                by</span></span>
-                                            __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__)&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_PCD_UNGATE_CLOCK(__HANDLE__)
-
-
-
-
-                                            by
-                                            __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__)</span><span style=""><o:p></o:p></span></li>
-                                        <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_PCD_GATE_CLOCK(__HANDLE__)
-
-
-
-
-                                            by
-                                            __HAL_PCD_GATE_PHYCLOCK(__HANDLE__)</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</span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" 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="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_ETH_GetReceivedFrame_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></span>)
-                                          function to return HAL_ERROR
-                                          if the received packet is not
-                                          complete</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Use <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Delay(</span></span>)
-                                          instead of counting loop</span><span style=""><o:p></o:p></span></li>
-                                      <li class="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_ETH_MAC_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)
-                                          macro is removed: the MACSR
-                                          register is read 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;">Add the
-                                          following macros used to Wake
-                                          up the device from STOP mode
-                                          by Ethernet <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">event
-
-
-
-                                              :</span></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_ETH_EXTI_ENABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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_ETH_EXTI_DISABLE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">IT(</span></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_ETH_EXTI_GET_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)<o:p></o:p></span></li>
-                                        <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_ETH_EXTI_CLEAR_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">FLAG(</span></span>)</span></i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"><o:p></o:p></span></li>
-                                        <li class="MsoNormal" 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_EXTI_SET_RISING_EGDE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRIGGER(</span></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_ETH_EXTI_SET_FALLING_EGDE_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRIGGER(</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;"><i><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">__HAL_ETH_EXTI_SET_FALLINGRISING_<span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">TRIGGER(</span></span>)</span></i><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
-
-
-
-                                          WWDG</span></b><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"> update </span><span style=""><o:p></o:p></span></li>
-                                    <ul style="margin-top: 0in;" type="circle">
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Update macro
-                                          parameters to use underscore:
-                                          __XXX__</span><span style=""><o:p></o:p></span></li>
-                                      <li class="MsoNormal" style="color: black; margin-top: 4.5pt; margin-bottom: 4.5pt;"><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;">Use of CMSIS
-                                          constants instead of magic <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">values</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;">Use
-                                          MODIFY_REG macro in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</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;">Add
-                                          IS_WWDG_ALL_INSTANCE in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)
-                                          and <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_WWDG_DeInit</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;">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;">Use WRITE_REG
-                                          instead of SET_BIT for all
-                                          IWDG <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">macros</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;">__HAL_IWDG_CLEAR_FLAG
-
-
-
-
-                                          removed: no IWDG flag cleared
-                                          by access to SR <span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">register</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;">Use
-                                          MODIFY_REG macro in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</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;">Add
-                                          IS_IWDG_ALL_INSTANCE in <span class="spelle"><span style="font-family: &quot;Verdana&quot;,sans-serif;">HAL_IWDG_</span></span><span class="grame"><span style="font-family: &quot;Verdana&quot;,sans-serif;">Init(</span></span>)Add
-
-
-
-
-                                          the following macros used to
-                                          Wake</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: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; margin-right: 500pt;"><font color="#ffffff"><span style="font-size: 10pt; font-family: &quot;Arial&quot;,sans-serif;">V1.0.0
-
-
-
-                                        / 18-February-2014</span><span style=""><o:p></o:p></span></font></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="square">
-                                    <li class="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</span><span style="font-size: 10pt; font-family: &quot;Verdana&quot;,sans-serif;"></span><span style="font-size: 10pt;">&nbsp;</span></li>
-                                  </ul>
-                                  <div class="MsoNormal" style="text-align: center;" align="center"><span style=""><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;,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; width: 843.25pt;" valign="top" width="1124">
-                                  <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;"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></h2>
-                                </td>
-                              </tr>
-                            </tbody>
-                          </table>
-                        </td>
-                      </tr>
-                    </tbody>
-                  </table>
-                  <p class="MsoNormal" style=""><o:p></o:p></p>
-                </td>
-              </tr>
-            </tbody>
-          </table>
-        </div>
-        <p class="MsoNormal" style=""><o:p>&nbsp;</o:p></p>
-      </div>
-    </div>
-  </body></html>
\ No newline at end of file
+</div>
+<div class="col-sm-12 col-lg-8">
+<h1 id="update-history">Update History</h1>
+<div class="collapse">
+<input type="checkbox" id="collapse-section32" checked aria-hidden="true"> <label for="collapse-section32" aria-hidden="true">V1.8.2 / 01-November-2023</label>
+<div>
+<h2 id="main-changes">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and implementation enhancements.</li>
+<li>HAL code quality enhancement for MISRA-C Rule-8.13 by adding const qualifiers.</li>
+<li><strong>HAL Generic</strong> update
+<ul>
+<li>Allow redefinition of macro UNUSED(x).</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Correct the configuration macro of I2S clock source and the value of I2S external clock source.</li>
+<li>Set the minimum value of PLLM.</li>
+<li>Update the rest values for the macro __HAL_RCC_Axxx_FORCE_RESET() to avoid setting reserved bits.</li>
+</ul></li>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>Add a call to UNUSED() macro to avoid the generation of a warning related to the unused argument ‘Regulator’.</li>
+<li>Add PWR_SLEEPENTRY_WFE_NO_EVT_CLEAR mode to avoid systematic clear of event in HAL_PWR_EnterSLEEPMode() and HAL_PWR_EnterSTOPMode().</li>
+</ul></li>
+<li><strong>HAL Cortex</strong> update
+<ul>
+<li>Add the following new HAL/LL CORTEX APIs to clear PWR pending event:
+<ul>
+<li>LL_LPM_ClearEvent().</li>
+<li>HAL_CORTEX_ClearEvent().</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL EXTI</strong> update
+<ul>
+<li>Fix computation of pExtiConfig-&gt;GPIOSel in HAL_EXTI_GetConfigLine.</li>
+</ul></li>
+<li><strong>HAL/LL ADC</strong> update
+<ul>
+<li>Cast both LL_ADC_REG_ReadConversionData6() and LL_ADC_REG_ReadConversionData8() returned values from uint16_t to uint8_t to be consistent with prototypes.</li>
+<li>Add a call to UNUSED() macro in LL_ADC_DMA_GetRegAddr() API to prevent compilation warning due to unused ‘Register’ parameter.</li>
+</ul></li>
+<li><strong>HAL DAC</strong> update
+<ul>
+<li>Fix incorrect word ‘surcharged’ in functions headers.</li>
+<li>Updated DAC buffer calibration according to RM.</li>
+</ul></li>
+<li><strong>HAL CEC</strong> update
+<ul>
+<li>Better performance by removing multiple volatile reads or writes in interrupt handler.</li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li>Check if the RTC calendar has been previously initialized before entering initialization mode.</li>
+<li>Remove macro __HAL_RTC_TAMPER_GET_IT() as it is redundant with macro __HAL_RTC_TAMPER_GET_FLAG() and create an alias into the stm32_hal_legacy.h file.</li>
+<li>Correct misleading note about shadow registers.</li>
+</ul></li>
+<li><strong>HAL CRYP</strong> update
+<ul>
+<li>Update Crypt/Decrypt IT processes to avoid Computation Completed IRQ fires before the DINR pointer increment.</li>
+</ul></li>
+<li><strong>HAL HASH</strong> update
+<ul>
+<li>HAL code quality enhancement for MISRA-C2012 Rule-2.2_c.</li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>Align TIM_TIM2_ETH_PTP definition with the reference manual specification.</li>
+<li>Improve driver robustness against wrong period values.</li>
+<li>Improve driver robustness against wrong DMA related parameters.</li>
+<li>Improve period configuration parameter check.</li>
+<li>Remove Lock management from callback management functions.</li>
+<li>Remove multiple volatile reads or writes in interrupt handler for better performance.</li>
+<li>Improve HAL TIM driver’s operational behavior.</li>
+<li>Remove unnecessary change of MOE bitfield in LL_TIM_BDTR_Init().</li>
+</ul></li>
+<li><strong>HAL LPTIM</strong> update
+<ul>
+<li>Apply same naming rules to clear FLAG related functions.</li>
+<li>Remove Lock management from callback management functions.</li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Removal of never reached code.</li>
+<li>Improve protection against bad inputs.</li>
+</ul></li>
+<li><strong>HAL DSI</strong> update
+<ul>
+<li>Update to align DSI ULPS entry and exit sequences with reference manual.</li>
+</ul></li>
+<li><strong>HAL ETH</strong> update
+<ul>
+<li>Update Rx descriptor tail pointer management to avoid race condition.</li>
+</ul></li>
+<li><strong>HAL UART</strong> update
+<ul>
+<li>New API HAL_UARTEx_GetRxEventType() to retrieve the type of event that has led the RxEventCallback execution.</li>
+<li>Removal of HAL_LOCK/HAL_UNLOCK() calls in HAL UART Tx and Rx APIs.</li>
+<li>Removal of __HAL_LOCK() from HAL_xxx_RegisterCallback()/HAL_xxx_UnRegisterCallback().</li>
+<li>Avoid ORE flag to be cleared by a transmit process in polling mode.</li>
+<li>Rework of UART_WaitOnFlagUntilTimeout() API to avoid being stuck forever when UART overrun error occurs and to enhance behavior.</li>
+</ul></li>
+<li><strong>HAL USART</strong> update
+<ul>
+<li>Removal of __HAL_LOCK() from HAL_xxx_RegisterCallback()/HAL_xxx_UnRegisterCallback().</li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Declare an internal macro link to DMA macro to check remaining data: I2C_GET_DMA_REMAIN_DATA.</li>
+<li>Update I2C_MemoryTransmit_TXE_BTF process to disable TXE and BTF interrupts if nothing to do.</li>
+<li>Clear TXE Flag at the end of transfer.</li>
+<li>Move polling code of HAL memory interface through interrupt management to prevent timeout issue using HAL MEM interface through FreeRTOS.</li>
+<li>Update I2C_IsErrorOccurred to return error if timeout is detected.</li>
+<li>Clear the ADDRF flag only when direction is confirmed as changed, to prevent that the ADDRF flag is cleared too early when the restart is received.</li>
+<li>Update HAL_I2C_Master_Transmit_IT to return HAL_BUSY instead of HAL_ERROR when timeout occur and I2C_FLAG_BUSY is SET.</li>
+<li>Clear ACK bit once 3 bytes to read remain to be able to send the NACK once the transfer ends.</li>
+<li>Duplicate the test condition after timeout detection to avoid false timeout detection.</li>
+<li>Update HAL_I2C_IsDeviceReady() API to support 10_bit addressing mode: macro I2C_GENERATE_START is updated.</li>
+<li>Update HAL I2C driver to prefetch data before starting the transmission: implementation of errata sheet workaround I2C2-190208 : Transmission stalled after first byte.</li>
+<li>Update the HAL I2C driver to disactivate all interrupts after the end of transaction.</li>
+<li>Update HAL_I2C_Init API to clear ADD10 bit in 7 bit addressing mode.</li>
+<li>Solve Slave No stretch not functional by using HAL Slave interface.</li>
+<li>Update HAL_FMPI2C_Mem_Write_IT API to initialize XferSize at 0.</li>
+<li>Update I2C_Slave_ISR_IT, I2C_Slave_ISR_DMA and I2C_ITSlaveCplt to prevent the call of HAL_I2C_ListenCpltCallback twice.</li>
+<li>Update I2C_WaitOnRXNEFlagUntilTimeout to check I2C_FLAG_AF independently from I2C_FLAG_RXNE.</li>
+<li>Clear ACK bit once 3 bytes to read remain to be able to send the NACK once the transfer ends.</li>
+<li>Remove the unusable code in function HAL_I2C_IsDeviceReady.</li>
+<li>Update HAL_I2C_Master_Abort_IT to support memory abort transfer.</li>
+<li>Update LL_I2C_HandleTranfer function to prevent undefined behavior of volatile usage before updating the CR2 register.</li>
+<li>Update I2C_WaitOnFlagUntilTimeout to handle error case.</li>
+<li>Update the HAL I2C driver to reset PreviousState to I2C_STATE_NONE at the end of transfer.</li>
+</ul></li>
+<li><strong>HAL SMBUS</strong> update
+<ul>
+<li>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.</li>
+<li>Add flush on TX register.</li>
+<li>Change previous state from HAL_SMBUS_STATE_READY to HAL_SMBUS_STATE_NONE at the end of transfer.</li>
+<li>Update HAL SMBUS driver to prefetch data before starting the transmission: implementation of errata sheet workaround I2C2-190208 : Transmission stalled after first byte.</li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Improve audio quality (avoid potential glitch).</li>
+<li>Fix incorrect word ‘surcharged’.</li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Fix driver to don’t update state in case of error (HAL_SPI_STATE_READY will be set only in case of HAL_TIMEOUT).</li>
+<li>Update HAL_SPI_TransmitReceive API to set the bit CRCNEXT in case of one byte transaction.</li>
+<li>Update IT API to enable interrupts after process unlock.</li>
+<li>Add wait on flag TXE to be set at the end of transaction to be aligned with reference manual.</li>
+</ul></li>
+<li><strong>HAL SPDIFRX</strong> update
+<ul>
+<li>Prevent hard fault by checking DMA usage.</li>
+<li>Tuning of default SPDIFRX timeout.</li>
+</ul></li>
+<li><strong>HAL USB OTG</strong> update
+<ul>
+<li>ll_usb.c fix added to USB_ClearInterrupts(), should write “1” to clear the interrupt status bits of OTG_FS_GINTSTS register.</li>
+<li>ll_usb.c: remove useless software setting to setup the frame interval at 80%.</li>
+<li>ll_usb.c, hal_hcd.c: adding support of hub split transactions.</li>
+<li>ll_usb.c: improve delay management to set core mode.</li>
+<li>ll_usb.c, hal_pcd.c: fix device connection in case battery charging used with HS instance linked to internal FS PHY.</li>
+<li>ll_usb.c: increase timeout value to allow core reset to complete.</li>
+</ul></li>
+<li><strong>HAL IRDA</strong> update
+<ul>
+<li>Removal of __HAL_LOCK() from HAL_xxx_RegisterCallback()/HAL_xxx_UnRegisterCallback().</li>
+</ul></li>
+<li><strong>HAL SMARTCARD</strong> update
+<ul>
+<li>Removal of __HAL_LOCK() from HAL_xxx_RegisterCallback()/HAL_xxx_UnRegisterCallback().</li>
+</ul></li>
+<li><strong>HAL SDMMC</strong> update
+<ul>
+<li>Update HAL SD processes to manage STBITERR flag.</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section31" aria-hidden="true"> <label for="collapse-section31" aria-hidden="true">V1.8.1 / 24-June-2022</label>
+<div>
+<h2 id="main-changes-1">Main Changes</h2>
+<ul>
+<li>General updates to fix HAL ETH defects and implementation enhancements.</li>
+<li><strong>HAL</strong> updates
+<ul>
+<li><strong>HAL ETH</strong> update
+<ul>
+<li>Remove useless assert_param(IS_ETH_MAC_ADDRESS0123(MacAddr)) from static function ETH_MACAddressConfig().</li>
+<li>Replace hard coded Rx buffer size (1000U) by macro ETH_RX_BUF_SIZE.</li>
+<li>Correct bit positions when getting MAC and DMA configurations and replace ‘UnicastSlowProtocolPacketDetect’ by ‘UnicastPausePacketDetect’ in the MAC default configuration structure.</li>
+<li>Ensure a delay of 4 TX_CLK/RX_CLK cycles between two successive write operations to the same register.</li>
+<li>Disable DMA transmission in both HAL_ETH_Stop_IT() and HAL_ETH_Stop() APIs.</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section30" aria-hidden="true"> <label for="collapse-section30" aria-hidden="true">V1.8.0 / 11-February-2022</label>
+<div>
+<h2 id="main-changes-2">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and implementation enhancements.</li>
+<li>All source files: update disclaimer to add reference to the new license agreement.</li>
+<li><strong>The following changes done on the HAL drivers require an update of the application code based on older HAL versions</strong>
+<ul>
+<li>Rework of HAL Ethernet driver to resolve problems and improve performance (<strong>compatibility break</strong>).</li>
+<li>A new HAL Ethernet driver has been redesigned with new APIs, to bypass limitations with previous HAL Ethernet driver version.</li>
+<li>The new HAL Ethernet driver is the recommended version. It is located as usual in Drivers/STM32F4xx_HAL_Driver/Src and Drivers/STM32F4xx_HAL_Driver/Inc folders.
+<ul>
+<li>It can be enabled through switch HAL_ETH_MODULE_ENABLED in stm32f4xx_hal_conf.h</li>
+</ul></li>
+<li>The legacy HAL Ethernet driver is also present in the release in Drivers/STM32F4xx_HAL_Driver/Src/Legacy and Drivers/STM32F4xx_HAL_Driver/Inc/Legacy folders for software compatibility reasons.
+<ul>
+<li>Its usage is not recommended as deprecated. It can however be enabled through switch HAL_ETH_LEGACY_MODULE_ENABLED in stm32f4xx_hal_conf.h</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL</strong> update
+<ul>
+<li><strong>HAL ETH</strong> update
+<ul>
+<li>Entire receive process reworked.</li>
+<li>Resolve the problem of received data corruption.</li>
+<li>Implement transmission in interrupt mode.</li>
+<li>Handle one interrupt for multiple transmitted packets.</li>
+<li>Implement APIs to handle PTP feature.</li>
+<li>Implement APIs to handle Timestamp feature.</li>
+<li>Add support of receive buffer unavailable.</li>
+<li>Update HAL_ETH_IRQHandler() to handle receive buffer unavailable.</li>
+</ul></li>
+<li><strong>HAL SMBUS</strong> update
+<ul>
+<li>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.
+<ul>
+<li>Add flush on TX register.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>__LL_TIM_CALC_PSC() macro update to round up the evaluate value when the fractional part of the division is greater than 0.5.</li>
+</ul></li>
+<li><strong>HAL LPTIM</strong> update
+<ul>
+<li>Add check on PRIMASK register to prevent from enabling unwanted global interrupts within LPTIM_Disable() and LL_LPTIM_Disable()</li>
+</ul></li>
+<li><strong>HAL UART</strong> update
+<ul>
+<li>Add const qualifier for read only pointers.</li>
+<li>Improve header description of UART_WaitOnFlagUntilTimeout() function.</li>
+<li>Add a check on the UART parity before enabling the parity error interruption.</li>
+<li>Fix typo in UART_IT_TXE bit description.</li>
+</ul></li>
+<li><strong>HAL IRDA</strong> update
+<ul>
+<li>Improve header description of IRDA_WaitOnFlagUntilTimeout() function.</li>
+<li>Add a check on the IRDA parity before enabling the parity error interrupt.</li>
+<li>Add const qualifier for read only pointers.</li>
+</ul></li>
+<li><strong>HAL SMARTCARD</strong> update
+<ul>
+<li>Improve header description of SMARTCARD_WaitOnFlagUntilTimeout() function</li>
+<li>Add const qualifier for read only pointers.</li>
+</ul></li>
+<li><strong>HAL NOR</strong> update
+<ul>
+<li>Apply adequate commands according to the command set field value</li>
+<li>command set 1 for Micron JS28F512P33</li>
+<li>command set 2 for Micron M29W128G and Cypress S29GL128P</li>
+<li>Add new command operations:
+<ul>
+<li>NOR_CMD_READ_ARRAY</li>
+<li>NOR_CMD_WORD_PROGRAM</li>
+<li>NOR_CMD_BUFFERED_PROGRAM</li>
+<li>NOR_CMD_CONFIRM</li>
+<li>NOR_CMD_BLOCK_ERASE</li>
+<li>NOR_CMD_BLOCK_UNLOCK</li>
+<li>NOR_CMD_READ_STATUS_REG</li>
+<li>NOR_CMD_CLEAR_STATUS_REG</li>
+</ul></li>
+<li>Update some APIs in order to be compliant for memories with different command set, the updated APIs are:
+<ul>
+<li>HAL_NOR_Init()</li>
+<li>HAL_NOR_Read_ID()</li>
+<li>HAL_NOR_ReturnToReadMode()</li>
+<li>HAL_NOR_Read()</li>
+<li>HAL_NOR_Program()</li>
+<li>HAL_NOR_ReadBuffer()</li>
+<li>HAL_NOR_ProgramBuffer()</li>
+<li>HAL_NOR_Erase_Block()</li>
+<li>HAL_NOR_Erase_Chip()</li>
+<li>HAL_NOR_GetStatus()</li>
+</ul></li>
+<li>Align HAL_NOR_Init() API with core of the function when write operation is disabled to avoid HardFault.</li>
+</ul></li>
+<li><strong>HAL SDMMC</strong> update
+<ul>
+<li>Take into account the voltage range in the CMD1 command.</li>
+<li>Add new LL function to have correct response for MMC driver.</li>
+<li>Update the driver to have all fields correctly initialized.</li>
+<li>Add an internal variable to manage the power class and call it before to update speed of bus width.</li>
+<li>Add new API to get the value of the Extended CSD register and populate the ExtCSD field of the MMC handle.</li>
+<li>In HAL_MMC_InitCard(), call to SDIO_PowerState_ON() moved after __HAL_MMC_ENABLE() to ensure MMC clock is enabled before the call to HAL_Delay() from within SDIO_PowerState_ON().</li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>Manage the case of an invalid value of CallbackID passed to the HAL_DMA_RegisterCallback() API.</li>
+</ul></li>
+<li><strong>HAL LTDC</strong> update
+<ul>
+<li>Update HAL_LTDC_DeInit() to fix MCU Hang up during LCD turn OFF.</li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Update to fix issue detected due to low system frequency execution (HSI).</li>
+<li>Declare an internal macro link to DMA macro to check remaining data: I2C_GET_DMA_REMAIN_DATA</li>
+<li>Update HAL I2C Master Receive IT process to safe manage data N= 2 and N= 3.
+<ul>
+<li>Disable RxNE interrupt if nothing to do.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL USART</strong> update
+<ul>
+<li>Improve header description of USART_WaitOnFlagUntilTimeout() function.</li>
+<li>Add a check on the USART parity before enabling the parity error interrupt.</li>
+<li>Add const qualifier for read only pointers.</li>
+</ul></li>
+<li><strong>HAL/LL ADC</strong> update
+<ul>
+<li>Update LL_ADC_IsActiveFlag_MST_EOCS() API to get the appropriate flag.</li>
+<li>Better performance by removing multiple volatile reads or writes in interrupt handler.</li>
+</ul></li>
+<li><strong>HAL FMPI2C</strong> update
+<ul>
+<li>Update to handle errors in polling mode.
+<ul>
+<li>Rename I2C_IsAcknowledgeFailed() to I2C_IsErrorOccurred() and correctly manage when error occurs.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL EXTI</strong> update
+<ul>
+<li>Update HAL_EXTI_GetConfigLine() API to fix wrong calculation of GPIOSel value.</li>
+</ul></li>
+<li><strong>HAL QSPI</strong> update
+<ul>
+<li>Update HAL_QSPI_Abort() and HAL_QSPI_Abort_IT() APIs to check on QSPI BUSY flag status before executing the abort procedure.</li>
+</ul></li>
+<li><strong>HAL/LL RTC</strong> cleanup
+<ul>
+<li>Use bits definitions from CMSIS Device header file instead of hard-coded values.</li>
+<li>Wrap comments to be 80-character long and correct typos.</li>
+<li>Move constants RTC_IT_TAMP. from hal_rtc.h to hal_rtc_ex.h.</li>
+<li>Gather all instructions related to exiting the “init” mode into new function RTC_ExitInitMode().</li>
+<li>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.</li>
+<li>Rework functions HAL_RTCEx_SetTamper() and HAL_RTCEx_SetTamper_IT() to:
+<ul>
+<li>Write in TAFCR register in one single access instead of two.</li>
+<li>Avoid modifying user structure sTamper.</li>
+</ul></li>
+<li>Remove functions LL_RTC_EnablePushPullMode() and LL_RTC_DisablePushPullMode() as related to non-supported features.</li>
+<li>Remove any reference to non-supported features (e.g., LL_RTC_ISR_TAMP3F).</li>
+<li>Remove useless conditional defines as corresponding features are supported by all part-numbers (e.g., #if defined(RTC_TAFCR_TAMPPRCH)).</li>
+</ul></li>
+<li><strong>HAL USB OTG</strong> update
+<ul>
+<li>Fix USB_FlushRxFifo() and USB_FlushTxFifo() APIs by adding check on AHB master IDLE state before flushing the USB FIFO</li>
+<li>Fix to avoid resetting host channel direction during channel halt</li>
+<li>Fix to report correct received amount of data with USB DMA enabled</li>
+<li>Fix to avoid compiler optimization on count variable used for USB HAL timeout loop check</li>
+<li>Add missing registered callbacks check for HAL_HCD_HC_NotifyURBChange_Callback()</li>
+<li>Add new API HAL_PCD_SetTestMode() APIs to handle USB device high speed Test modes</li>
+<li>Setting SNAK for EPs not required during device reset</li>
+<li>Update USB IRQ handler to enable EP OUT disable</li>
+<li>Add support of USB IN/OUT Iso incomplete</li>
+<li>Fix USB BCD data contact timeout</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section29" aria-hidden="true"> <label for="collapse-section29" aria-hidden="true">V1.7.13 / 16-July-2021</label>
+<div>
+<h2 id="main-changes-3">Main Changes</h2>
+<ul>
+<li><strong>HAL</strong> update
+<ul>
+<li><strong>HAL EXTI</strong> update
+<ul>
+<li>Update HAL_EXTI_GetConfigLine() API to set default configuration value of Trigger and GPIOSel before checking each corresponding registers.</li>
+</ul></li>
+<li><strong>HAL GPIO</strong> update
+<ul>
+<li>Update HAL_GPIO_Init() API to avoid the configuration of PUPDR register when Analog mode is selected.</li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>Update HAL_DMA_IRQHandler() API to set the DMA state before unlocking access to the DMA handle.</li>
+</ul></li>
+<li><strong>LL ADC</strong> update
+<ul>
+<li>Update LL_ADC_DeInit() API to clear missing SQR3 register.</li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Update HAL_CAN_Init() API to be aligned with reference manual and to avoid timeout error.</li>
+</ul></li>
+<li><strong>HAL/LL RTC_BKP</strong> update
+<ul>
+<li>Update __HAL_RTC_…(__HANDLE__, …) macros to access registers through (__HANDLE__)-&gt;Instance pointer and avoid “unused variable” warnings.</li>
+<li>Correct month management in IS_LL_RTC_MONTH() macro.</li>
+</ul></li>
+<li><strong>HAL RNG</strong> update
+<ul>
+<li>Update timeout mechanism to avoid false timeout detection in case of preemption.</li>
+</ul></li>
+<li><strong>HAL QSPI</strong> update
+<ul>
+<li>ES0305 workaround disabled for STM32412xx devices.</li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Update HAL_I2C_Mem_Write_DMA() and HAL_I2C_Mem_Read_DMA() APIs to initialize Devaddress, Memaddress and EventCount parameters.</li>
+<li>Update to prevent several calls of Start bit:
+<ul>
+<li>Update I2C_MemoryTransmit_TXE_BTF() API to increment EventCount.</li>
+</ul></li>
+<li>Update to avoid I2C interrupt in endless loop:
+<ul>
+<li>Update HAL_I2C_Master_Transmit_IT(), HAL_I2C_Master_Receive_IT(), HAL_I2C_Master_Transmit_DMA() and HAL_I2C_Master_Receive_DMA() APIs to unlock the I2C peripheral before generating the start.</li>
+</ul></li>
+<li>Update to use the right macro to clear I2C ADDR flag inside I2C_Slave_ADDR() API as it’s indicated in the reference manual.</li>
+<li>Update I2C_IsAcknowledgeFailed() API to avoid I2C in busy state if NACK received after transmitting register address.</li>
+<li>Update HAL_I2C_EV_IRQHandler() and I2C_MasterTransmit_BTF() APIs to correctly manage memory transfers:
+<ul>
+<li>Add check on memory mode before calling callbacks procedures.</li>
+</ul></li>
+</ul></li>
+<li><strong>LL USART</strong> update
+<ul>
+<li>Handling of UART concurrent register access in case of race condition between Tx and Rx transfers (HAL UART and LL LPUART)</li>
+</ul></li>
+<li><strong>HAL SMBUS</strong> update
+<ul>
+<li>Updated HAL_SMBUS_ER_IRQHandler() API to return the correct error code “SMBUS_FLAG_PECERR” in case of packet error occurs.</li>
+</ul></li>
+<li><strong>HAL/LL SPI</strong> update
+<ul>
+<li>Updated to fix MISRA-C 2012 Rule-13.2.</li>
+<li>Update LL_SPI_TransmitData8() API to avoid casting the result to 8 bits.</li>
+</ul></li>
+<li><strong>HAL UART</strong> update
+<ul>
+<li>Fix wrong comment related to RX pin configuration within the description section</li>
+<li>Correction on UART ReceptionType management in case of ReceptionToIdle API are called from RxEvent callback</li>
+<li>Handling of UART concurrent register access in case of race condition between Tx and Rx transfers (HAL UART and LL LPUART)
+<ul>
+<li>Update CAN Initialization sequence to set “request initialization” bit before exit from sleep mode.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL USB</strong> update
+<ul>
+<li>HAL PCD: add fix transfer complete for IN Interrupt transaction in single buffer mode</li>
+<li>Race condition in USB PCD control endpoint receive ISR.</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section28" aria-hidden="true"> <label for="collapse-section28" aria-hidden="true">V1.7.12 / 26-March-2021</label>
+<div>
+<h2 id="main-changes-4">Main Changes</h2>
+<ul>
+<li><strong>HAL</strong>
+<ul>
+<li><strong>HAL/LL USART</strong> update
+<ul>
+<li>Fix typo in USART_Receive_IT() and USART_TransmitReceive_IT() APIs to avoid possible compilation issues if the UART driver files are not included.</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section27" aria-hidden="true"> <label for="collapse-section27" aria-hidden="true">V1.7.11 / 12-February-2021</label>
+<div>
+<h2 id="main-changes-5">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li>Added new <strong>HAL FMPSMBUS extended</strong> driver to support FMPSMBUS fast Mode Plus.</li>
+<li>Removed “register” keyword to be compliant with new C++ rules:
+<ul>
+<li>The register storage class specifier was deprecated in C++11 and removed in C++17.</li>
+</ul></li>
+<li><strong>HAL</strong>
+<ul>
+<li><strong>HAL</strong> update</li>
+<li>General updates to fix known defects and enhancements implementation.</li>
+<li>Added new defines for ARM compiler V6:
+<ul>
+<li>__weak</li>
+<li>__packed</li>
+<li>__NOINLINE</li>
+</ul></li>
+<li>Updated HAL TimeBase TIM, RTC alarm and RTC WakeUp templates for more robustness
+<ul>
+<li>Updated Hal_Init_Tick() API to properly store the priority when using the non-default time base.</li>
+</ul></li>
+<li>Updated PPP_MODULE_ENABLED for FMPSMBUS.</li>
+<li><strong>HAL/LL ADC</strong> update
+<ul>
+<li>Updated to add include of the LL ADC driver.</li>
+<li>Updated the following APIs to set status HAL_ADC_STATE_ERROR_INTERNAL and error code HAL_ADC_ERROR_INTERNAL when error occurs:
+<ul>
+<li>HAL_ADC_Start()</li>
+<li>HAL_ADC_Start_IT()</li>
+<li>HAL_ADC_Start_DMA()</li>
+<li>HAL_ADCEx_InjectedStart()</li>
+<li>HAL_ADCEx_InjectedStart_IT()</li>
+<li>HAL_ADCEx_MultiModeStart_DMA()</li>
+</ul></li>
+<li>Updated HAL_ADC_Stop_DMA() API to check if DMA state is Busy before calling HAL_DMA_Abort() API to avoid DMA internal error.</li>
+<li>Updated IS_ADC_CHANNEL to support temperature sensor for:
+<ul>
+<li>STM32F411xE</li>
+<li>STM32F413xx</li>
+<li>STM32F423xx</li>
+</ul></li>
+<li>Fixed wrong defined values for:
+<ul>
+<li>LL_ADC_MULTI_REG_DMA_LIMIT_3</li>
+<li>LL_ADC_MULTI_REG_DMA_UNLMT_3</li>
+</ul></li>
+<li>Added __LL_ADC_CALC_VREFANALOG_VOLTAGE() macro to evaluate analog reference voltage.</li>
+<li>Removed __LL_ADC_CALC_TEMPERATURE() macro for STM32F4x9 devices as the TS_CAL2 is not available.</li>
+</ul></li>
+<li><strong>HAL/LL DAC</strong> update
+<ul>
+<li>Added restruction on DAC Channel 2 defines and parameters.</li>
+<li>HAL_DAC_MSPINIT_CB_ID and HAL_DAC_MSPDEINIT_CB_ID used instead of HAL_DAC_MSP_INIT_CB_ID and HAL_DAC_MSP_DEINIT_CB_ID.</li>
+<li>Updated to support dual mode:
+<ul>
+<li>Added two new APIs:
+<ul>
+<li>HAL_DACEx_DualStart()</li>
+<li>HAL_DACEx_DualStop()</li>
+</ul></li>
+</ul></li>
+<li>Added position bit definition to be used instead of __DAC_MASK_SHIFT macro
+<ul>
+<li>__DAC_MASK_SHIFT macro has been removed.</li>
+</ul></li>
+<li>Updated HAL_DAC_Start_DMA() API to return HAL_ERROR when error occurs.</li>
+<li>Updated HAL_DAC_Stop_DMA() API to not return HAL_ERROR when DAC is already disabled.</li>
+</ul></li>
+<li><strong>HAL CEC</strong> update
+<ul>
+<li>Updated HAL_CEC_IRQHandler() API to avoid appending an extra byte to the end of a message.</li>
+</ul></li>
+<li><strong>HAL/LL GPIO</strong> update
+<ul>
+<li>Updated IS_GPIO_AF() to add missing values for STM32F401xC and STM32F401xE devices:
+<ul>
+<li>GPIO_AF3_TIM9</li>
+<li>GPIO_AF3_TIM10</li>
+<li>GPIO_AF3_TIM11</li>
+</ul></li>
+<li>Updated LL/HAL GPIO_TogglePin() APIs to allow multi Pin’s toggling.</li>
+<li>Updated HAL_GPIO_Init() API to avoid the configuration of PUPDR register when Analog mode is selected.</li>
+</ul></li>
+<li><strong>HAL/LL RCC</strong> update
+<ul>
+<li>Updated HAL_RCC_OscConfig() API to add missing checks and to don’t return HAL_ERROR if request repeats the current PLL configuration.</li>
+<li>Updated IS_RCC_PLLN_VALUE(VALUE) macro in case of STM32F411xE device in order to be aligned with reference manual.</li>
+</ul></li>
+<li><strong>HAL SD</strong> update
+<ul>
+<li>Update function SD_FindSCR() to resolve issue of FIFO blocking when reading.</li>
+<li>Update read/write functions in DMA mode in order to force the DMA direction, updated functions:
+<ul>
+<li>HAL_SD_ReadBlocks_DMA()</li>
+<li>HAL_SD_WriteBlocks_DMA()</li>
+</ul></li>
+<li>Add the block size settings in the initialization functions and remove it from read/write transactions to avoid repeated and inefficient reconfiguration, updated functions:
+<ul>
+<li>HAL_SD_InitCard()</li>
+<li>HAL_SD_GetCardStatus()</li>
+<li>HAL_SD_ConfigWideBusOperation()</li>
+<li>HAL_SD_ReadBlocks()</li>
+<li>HAL_SD_WriteBlocks()</li>
+<li>HAL_SD_ReadBlocks_IT()</li>
+<li>HAL_SD_WriteBlocks_IT()</li>
+<li>HAL_SD_ReadBlocks_DMA()</li>
+<li>HAL_SD_WriteBlocks_DMA()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL MMC</strong> update
+<ul>
+<li>Add the block size settings in the initialization function and remove it from read/write transactions to avoid repeated and inefficient reconfiguration, updated functions:
+<ul>
+<li>HAL_MMC_InitCard()</li>
+<li>HAL_MMC_ReadBlocks()</li>
+<li>HAL_MMC_WriteBlocks()</li>
+<li>HAL_MMC_ReadBlocks_IT()</li>
+<li>HAL_MMC_WriteBlocks_IT()</li>
+<li>HAL_MMC_ReadBlocks_DMA()</li>
+<li>HAL_MMC_WriteBlocks_DMA()</li>
+</ul></li>
+<li>Update read/write functions in DMA mode in order to force the DMA direction, updated functions:
+<ul>
+<li>HAL_MMC_ReadBlocks_DMA()</li>
+<li>HAL_MMC_WriteBlocks_DMA()</li>
+</ul></li>
+<li>Deploy new functions MMC_ReadExtCSD() and SDMMC_CmdSendEXTCSD () that read and check the sectors number of the device in order to resolve the issue of wrongly reading big memory size.</li>
+</ul></li>
+<li><strong>HAL NAND</strong> update
+<ul>
+<li>Update functions HAL_NAND_Read_SpareArea_16b() and HAL_NAND_Write_SpareArea_16b() to fix column address calculation issue.</li>
+</ul></li>
+<li><strong>LL SDMMC</strong> update
+<ul>
+<li>Update the definition of SDMMC_DATATIMEOUT constant in order to allow the user to redefine it in his proper application.</li>
+<li>Remove ‘register’ storage class specifier from LL SDMMC driver.</li>
+<li>Deploy new functions MMC_ReadExtCSD() and SDMMC_CmdSendEXTCSD () that read and check the sectors number of the device in order to resolve the issue of wrongly reading big memory size.</li>
+</ul></li>
+<li><strong>HAL SMBUS</strong> update
+<ul>
+<li>Support for Fast Mode Plus to be SMBUS rev 3 compliant.</li>
+<li>Added HAL_FMPSMBUSEx_EnableFastModePlus() and HAL_FMPSMBUSEx_DisableFastModePlus() APIs to manage Fm+.</li>
+<li>Updated SMBUS_MasterTransmit_BTF() , SMBUS_MasterTransmit_TXE() and SMBUS_MasterReceive_BTF() APIs to allow stop generation when CurrentXferOptions is different from SMBUS_FIRST_FRAME and SMBUS_NEXT_FRAME.</li>
+<li>Updated SMBUS_ITError() API to correct the twice call of HAL_SMBUS_ErrorCallback.</li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Updated HAL_SPI_Init() API
+<ul>
+<li>To avoid setting the BaudRatePrescaler in case of Slave Motorola Mode.</li>
+<li>Use the bit-mask for SPI configuration.</li>
+</ul></li>
+<li>Updated Transmit/Receive processes in half-duplex mode
+<ul>
+<li>Disable the SPI instance before setting BDIOE bit.</li>
+</ul></li>
+<li>Fixed wrong timeout management</li>
+<li>Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled.</li>
+</ul></li>
+<li><strong>HAL SPDIFRX</strong> update
+<ul>
+<li>Remove ‘register’ storage class specifier from HAL SPDIFRX driver.</li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Updated I2SEx APIs to correctly support circular transfers
+<ul>
+<li>Updated I2SEx_TxRxDMACplt() API to manage DMA circular mode.</li>
+</ul></li>
+<li>Updated HAL_I2SEx_TransmitReceive_DMA() API to set hdmatx (transfer callback and half) to NULL.</li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Updated to avoid the incorrect left/right synchronization.
+<ul>
+<li>Updated HAL_SAI_Transmit_DMA() API to follow the sequence described in the reference manual for slave transmitter mode.</li>
+</ul></li>
+<li>Updated HAL_SAI_Init() API to correct the formula in case of SPDIF is wrong.</li>
+</ul></li>
+<li><strong>HAL CRYP</strong> update
+<ul>
+<li>Updated HAL_CRYP_SetConfig() and HAL_CRYP_GetConfig() APIs to set/get the continent of KeyIVConfigSkip correctly.</li>
+</ul></li>
+<li><strong>HAL EXTI</strong> update
+<ul>
+<li>__EXTI_LINE__ is now used instead of __LINE__ which is a standard C macro.</li>
+</ul></li>
+<li><strong>HAL DCMI</strong>
+<ul>
+<li>Support of HAL callback registration feature for DCMI extended driver.</li>
+</ul></li>
+<li><strong>HAL/LL TIM</strong> update
+<ul>
+<li>Updated HAL_TIMEx_OnePulseN_Start() and HAL_TIMEx_OnePulseN_Stop() APIs (pooling and IT mode) to take into consideration all OutputChannel parameters.</li>
+<li>Corrected reversed description of TIM_LL_EC_ONEPULSEMODE One Pulse Mode.</li>
+<li>Updated LL_TIM_GetCounterMode() API to return the correct counter mode.</li>
+</ul></li>
+<li><strong>HAL/LL SMARTCARD</strong> update
+<ul>
+<li>Fixed invalid initialization of SMARTCARD configuration by removing FIFO mode configuration as it is not member of SMARTCARD_InitTypeDef Structure.</li>
+<li>Fixed typos in SMARTCARD State definition description</li>
+</ul></li>
+<li><strong>HAL/LL IRDA</strong> update
+<ul>
+<li>Fixed typos in IRDA State definition description</li>
+</ul></li>
+<li><strong>LL USART</strong> update
+<ul>
+<li>Remove useless check on maximum BRR value by removing IS_LL_USART_BRR_MAX() macro.</li>
+<li>Update USART polling and interruption processes to fix issues related to accesses out of user specified buffer.</li>
+</ul></li>
+<li><strong>HAL USB</strong> update
+<ul>
+<li>Enhanced USB OTG host HAL with USB DMA is enabled:
+<ul>
+<li>fixed ping and data toggle issue,</li>
+<li>reworked Channel error report management</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section26" aria-hidden="true"> <label for="collapse-section26" aria-hidden="true">V1.7.10 / 22-October-2020</label>
+<div>
+<h2 id="main-changes-6">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects.</li>
+<li><strong>HAL/LL I2C</strong> update
+<ul>
+<li>Update to fix hardfault issue with HAL_I2C_Mem_Write_DMA() API:
+<ul>
+<li>Abort the right ongoing DMA transfer when memory write access request operation failed: fix typo “hdmarx” replaced by “hdmatx”</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section25" aria-hidden="true"> <label for="collapse-section25" aria-hidden="true">V1.7.9 / 14-August-2020</label>
+<div>
+<h2 id="main-changes-7">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li><strong>HAL/LL I2C</strong> update
+<ul>
+<li>Update HAL_I2C_ER_IRQHandler() API to fix acknowledge failure issue with I2C memory IT processes
+<ul>
+<li>Add stop condition generation when NACK occurs.</li>
+</ul></li>
+<li>Update I2C_DMAXferCplt(), I2C_DMAError() and I2C_DMAAbort() APIs to fix hardfault issue when hdmatx and hdmarx parameters in i2c handle aren’t initialized (NULL pointer).
+<ul>
+<li>Add additional check on hi2c-&gt;hdmtx and hi2c-&gt;hdmarx before resetting DMA Tx/Rx complete callbacks</li>
+</ul></li>
+<li>Update Sequential transfer APIs to adjust xfermode condition.
+<ul>
+<li>Replace hi2c-&gt;XferCount &lt; MAX_NBYTE_SIZE by hi2c-&gt;XferCount &lt;= MAX_NBYTE_SIZE which corresponds to a case without reload</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL/LL USB</strong> update
+<ul>
+<li>Bug fix: USB_ReadPMA() and USB_WritePMA() by ensuring 16-bits access to USB PMA memory</li>
+<li>Bug fix: correct USB RX count calculation</li>
+<li>Fix USB Bulk transfer double buffer mode</li>
+<li>Remove register keyword from USB defined macros as no more supported by C++ compiler</li>
+<li>Minor rework on USBD_Start() and USBD_Stop() APIs: stopping device will be handled by HAL_PCD_DeInit() API.</li>
+<li>Remove non used API for USB device mode.</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section24" aria-hidden="true"> <label for="collapse-section24" aria-hidden="true">V1.7.8 / 12-February-2020</label>
+<div>
+<h2 id="main-changes-8">Main Changes</h2>
+<ul>
+<li>Add new <strong>HAL FMPSMBUS</strong> and <strong>LL FMPI2C</strong> drivers</li>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li>Update HAL CRYP driver to support block by block decryption without reinitializes the IV and KEY for each call.</li>
+<li>Improve code quality by fixing MisraC-2012 violations</li>
+<li><strong>HAL/LL USB</strong> update
+<ul>
+<li>Add handling USB host babble error interrupt</li>
+<li>Fix Enabling ULPI interface for platforms that integrates USB HS PHY</li>
+<li>Fix Host data toggling for IN Iso transfers</li>
+<li>Ensure to disable USB EP during endpoint deactivation</li>
+</ul></li>
+<li><strong>HAL CRYP</strong> update
+<ul>
+<li>Update HAL CRYP driver to support block by block decryption without initializing the IV and KEY at each call.
+<ul>
+<li>Add new CRYP Handler parameters: “KeyIVConfig” and “SizesSum”</li>
+<li>Add new CRYP init parameter: "KeyIVConfigSkip</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Update HAL_I2S_DMAStop() API to be more safe
+<ul>
+<li>Add a check on BSY, TXE and RXNE flags before disabling the I2S</li>
+</ul></li>
+<li>Update HAL_I2S_DMAStop() API to fix multi-call transfer issue(to avoid re-initializing the I2S for the next transfer).
+<ul>
+<li>Add __HAL_I2SEXT_FLUSH_RX_DR() and __HAL_I2S_FLUSH_RX_DR() macros to flush the remaining data inside DR registers.</li>
+<li>Add new ErrorCode define: HAL_I2S_ERROR_BUSY_LINE_RX</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section23" aria-hidden="true"> <label for="collapse-section23" aria-hidden="true">V1.7.7 / 06-December-2019</label>
+<div>
+<h2 id="main-changes-9">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li><strong>HAL Generic</strong> update
+<ul>
+<li>HAL_SetTickFreq(): update to restore the previous tick frequency when HAL_InitTick() configuration failed.</li>
+</ul></li>
+<li><strong>HAL/LL GPIO</strong> update
+<ul>
+<li>Update GPIO initialization sequence to avoid unwanted pulse on GPIO Pin’s</li>
+</ul></li>
+<li><strong>HAL EXTI</strong> update
+<ul>
+<li>General update to enhance HAL EXTI driver robustness
+<ul>
+<li>Add additional assert check on EXTI config lines</li>
+<li>Update to compute EXTI line mask before read/write access to EXTI registers</li>
+</ul></li>
+<li>Update EXTI callbacks management to be compliant with reference manual: only one PR register for rising and falling interrupts.
+<ul>
+<li>Update parameters in EXTI_HandleTypeDef structure: merge HAL EXTI RisingCallback and FallingCallback in only one PendingCallback</li>
+<li>Remove HAL_EXTI_RISING_CB_ID and HAL_EXTI_FALLING_CB_ID values from EXTI_CallbackIDTypeDef enumeration.</li>
+</ul></li>
+<li>Update HAL_EXTI_IRQHandler() API to serve interrupts correctly.
+<ul>
+<li>Update to compute EXTI line mask before handle EXTI interrupt.</li>
+</ul></li>
+<li>Update to support GPIO port interrupts:
+<ul>
+<li>Add new “GPIOSel” parameter in EXTI_ConfigTypeDef structure</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL/LL RCC</strong> update
+<ul>
+<li>Update HAL_RCCEx_PeriphCLKConfig() API to support PLLI2S configuration for STM32F42xxx and STM32F43xxx devices</li>
+<li>Update the HAL_RCC_ClockConfig() and HAL_RCC_DeInit() API to don’t overwrite the custom tick priority</li>
+<li>Fix LL_RCC_DeInit() failure detected with gcc compiler and high optimization level is selected(-03)</li>
+<li>Update HAL_RCC_OscConfig() API to don’t return HAL_ERROR if request repeats the current PLL configuration</li>
+</ul></li>
+<li><strong>HAL ADC</strong> update
+<ul>
+<li>Update LL_ADC_REG_Init() to fix wrong ADC CR1 register configuration
+<ul>
+<li>The ADC sequencer length is part of ADC SQR1 register not of ADC CR1 register</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL CRYP</strong> update
+<ul>
+<li>Update HAL_CRYP_Encrypt() and HAL_CRYP_Decrypt() APIs to take into consideration the datatype fed to the DIN register (1-, 8-, 16-, or 32-bit data) when padding the last block of the payload, in case the size of this last block is less than 128 bits.</li>
+</ul></li>
+<li><strong>HAL RNG</strong> update
+<ul>
+<li>Update HAL_RNG_IRQHandler() API to fix error code management issue: error code is assigned “HAL_RNG_ERROR_CLOCK” in case of clock error and “HAL_RNG_ERROR_SEED” in case of seed error, not the opposite.</li>
+</ul></li>
+<li><strong>HAL DFSDM</strong> update
+<ul>
+<li>Update DFSDM_GetChannelFromInstance() API to remove unreachable check condition</li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>Update HAL_DMA_Start_IT() API to omit the FIFO error</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>Update FLASH_Program_DoubleWord() API to fix with EWARM high level optimization issue</li>
+</ul></li>
+<li><strong>HAL QSPI</strong> update
+<ul>
+<li>Remove Lock mechanism from HAL_QSPI_Init() and HAL_QSPI_DeInit() APIs</li>
+</ul></li>
+<li><strong>HAL HASH</strong> update
+<ul>
+<li>Null pointer on handler “hhash” is now checked <strong>before</strong> accessing structure member “hhash-&gt;Init.DataType” in the following API:
+<ul>
+<li>HAL_HASH_Init()</li>
+</ul></li>
+<li>Following <strong>interrupt-based</strong> 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.
+<ul>
+<li>HAL_HASH_SHA1_Accmlt_IT()</li>
+<li>HAL_HASH_MD5_Accmlt_IT()</li>
+<li>HAL_HASHEx_SHA224_Accmlt_IT()</li>
+<li>HAL_HASHEx_SHA256_Accmlt_IT()</li>
+</ul></li>
+<li>Following <strong>aliases</strong> have been added (just <strong>for clarity sake</strong>) as they shall be used at the <strong>end</strong> of the computation of a multi-buffers message and not at the start:
+<ul>
+<li>HAL_HASH_SHA1_Accmlt_End() to be used instead of HAL_HASH_SHA1_Start()</li>
+<li>HAL_HASH_MD5_Accmlt_End() to be used instead of HAL_HASH_MD5_Start()</li>
+<li>HAL_HASH_SHA1_Accmlt_End_IT() to be used instead of HAL_HASH_SHA1_Start_IT()</li>
+<li>HAL_HASH_MD5_Accmlt_End_IT() to be used instead of HAL_HASH_MD5_Start_IT()</li>
+<li>HAL_HASHEx_SHA224_Accmlt_End() to be used instead of HAL_HASHEx_SHA224_Start()</li>
+<li>HAL_HASHEx_SHA256_Accmlt_End() to be used instead of HAL_HASHEx_SHA256_Start()</li>
+<li>HAL_HASHEx_SHA224_Accmlt_End_IT() to be used instead of HAL_HASHEx_SHA224_Start_IT()</li>
+<li>HAL_HASHEx_SHA256_Accmlt_End_IT() to be used instead of HAL_HASHEx_SHA256_Start_IT()</li>
+</ul></li>
+<li>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_<strong>Accmlt</strong>_End() could not be named HAL_HASHEx_SHA256_<strong>Accumulate</strong>_End(). Otherwise the name would have conflicted with HAL_HASHEx_SHA256_<strong>Accumulate</strong>_End_IT()). In order to have aligned names following APIs have been renamed:
+<ul>
+<li>HAL_HASH_MD5_Accumulate() renamed HAL_HASH_MD5_Accmlt()</li>
+<li>HAL_HASH_SHA1_Accumulate() renamed HAL_HASH_SHA1_Accmlt()</li>
+<li>HAL_HASHEx_SHA224_Accumulate() renamed HAL_HASHEx_SHA224_Accmlt()</li>
+<li>HAL_HASHEx_SHA256_Accumulate() renamed HAL_HASHEx_SHA256_Accmlt()</li>
+</ul></li>
+<li>HASH handler state is no more reset to HAL_HASH_STATE_READY <strong>once DMA has been started</strong> in the following APIs:
+<ul>
+<li>HAL_HASH_MD5_Start_DMA()</li>
+<li>HAL_HMAC_MD5_Start_DMA()</li>
+<li>HAL_HASH_SHA1_Start_DMA()</li>
+<li>HAL_HMAC_SHA1_Start_DMA()</li>
+</ul></li>
+<li>HASH phase state is now set to HAL_HASH_PHASE_READY <strong>once the digest has been read</strong> in the following APIs:
+<ul>
+<li>HASH_IT()</li>
+<li>HMAC_Processing()</li>
+<li>HASH_Start()</li>
+<li>HASH_Finish()</li>
+</ul></li>
+<li>Case of a large buffer scattered around in memory each piece of which is <strong>not</strong> necessarily a <strong>multiple of 4</strong> bytes in length.
+<ul>
+<li>In section “##### How to use this driver #####”, sub-section "*** Remarks on message length ***" added to provide recommendations to follow in such case.</li>
+<li>No modification of the driver as the root-cause is at design-level.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>HAL_CAN_GetRxMessage() update to get the correct value for the RTR (type of frame for the message that will be transmitted) field in the CAN_RxHeaderTypeDef structure.</li>
+</ul></li>
+<li><strong>HAL DCMI</strong> update
+<ul>
+<li>Add new HAL_DCMI_ConfigSyncUnmask() API to set embedded synchronization delimiters unmasks.</li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li>Following IRQ handlers’ implementation has been aligned with the STM32Cube firmware specification (in case of interrupt lines shared by multiple events, first check the IT enable bit is set then check the IT flag is set too):
+<ul>
+<li>HAL_RTC_AlarmIRQHandler()</li>
+<li>HAL_RTCEx_WakeUpTimerIRQHandler()</li>
+<li>HAL_RTCEx_TamperTimeStampIRQHandler()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL WWDG</strong> update
+<ul>
+<li>In “##### WWDG Specific features #####” descriptive comment section:
+<ul>
+<li>Maximal prescaler value has been corrected (8 instead of 128).</li>
+<li>Maximal APB frequency has been corrected (42MHz instead of 56MHz) and possible timeout values updated.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL DMA2D</strong> update
+<ul>
+<li>Add the following API’s to Start DMA2D CLUT Loading.
+<ul>
+<li>HAL_DMA2D_CLUTStartLoad() Start DMA2D CLUT Loading.</li>
+<li>HAL_DMA2D_CLUTStartLoad_IT() Start DMA2D CLUT Loading with interrupt enabled.</li>
+</ul></li>
+<li>The following old wrong services will be kept in the HAL DCMI driver for legacy purpose and a specific Note is added:
+<ul>
+<li>HAL_DMA2D_CLUTLoad() can be replaced with HAL_DMA2D_CLUTStartLoad()</li>
+<li>HAL_DMA2D_CLUTLoad_IT() can be replaced with HAL_DMA2D_CLUTStartLoad_IT()</li>
+<li>HAL_DMA2D_ConfigCLUT() can be omitted as the config can be performed using the HAL_DMA2D_CLUTStartLoad() API.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SDMMC</strong> update
+<ul>
+<li>Fix typo in “FileFormatGroup” parameter in the HAL_MMC_CardCSDTypeDef and HAL_SD_CardCSDTypeDef structures</li>
+<li>Fix an improve handle state and error management</li>
+<li>Rename the defined MMC card capacity type to be more meaningful:
+<ul>
+<li>Update <strong>MMC_HIGH_VOLTAGE_CARD</strong> to <strong>MMC LOW_CAPACITY_CARD</strong></li>
+<li>Update <strong>MMC_DUAL_VOLTAGE_CRAD</strong> to <strong>MMC_HIGH_CAPACITY_CARD</strong></li>
+</ul></li>
+<li>Fix management of peripheral flags depending on commands or data transfers
+<ul>
+<li>Add new defines “SDIO_STATIC_CMD_FLAGS” and “SDIO_STATIC_DATA_FLAGS”</li>
+<li>Updates HAL SD and HAL MMC drivers to manage the new SDIO static flags.</li>
+</ul></li>
+<li>Due to limitation SDIO hardware flow control indicated in Errata Sheet:
+<ul>
+<li>In 4-bits bus wide mode, do not use the HAL_SD_WriteBlocks_IT() or HAL_SD_WriteBlocks() APIs otherwise underrun will occur and it isn’t possible to activate the flow control.</li>
+<li>Use DMA mode when using 4-bits bus wide mode or decrease the SDIO_CK frequency.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL UART</strong> update
+<ul>
+<li>Update UART polling processes to handle efficiently the Lock mechanism
+<ul>
+<li>Move the process unlock at the top of the HAL_UART_Receive() and HAL_UART_Transmit() API.</li>
+</ul></li>
+<li>Fix baudrate calculation error for clock higher than 172Mhz
+<ul>
+<li>Add a forced cast on UART_DIV_SAMPLING8() and UART_DIV_SAMPLING16() macros.</li>
+<li>Remove useless parenthesis from UART_DIVFRAQ_SAMPLING8(), UART_DIVFRAQ_SAMPLING16(), UART_BRR_SAMPLING8() and UART_BRR_SAMPLING16() macros to solve some MISRA warnings.</li>
+</ul></li>
+<li>Update UART interruption handler to manage correctly the overrun interrupt
+<ul>
+<li>Add in the HAL_UART_IRQHandler() API a check on USART_CR1_RXNEIE bit when an overrun interrupt occurs.</li>
+</ul></li>
+<li>Fix baudrate calculation error UART9 and UART10
+<ul>
+<li>In UART_SetConfig() API fix UART9 and UART10 clock source when computing baudrate values by adding a check on these instances and setting clock sourcePCLK2 instead of PCLK1.</li>
+</ul></li>
+<li>Update UART_SetConfig() API
+<ul>
+<li>Split HAL_RCC_GetPCLK1Freq() and HAL_RCC_GetPCLK2Freq() macros from the UART_BRR_SAMPLING8() and UART_BRR_SAMPLING8() macros</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL USART</strong> update
+<ul>
+<li>Fix baudrate calculation error for clock higher than 172Mhz
+<ul>
+<li>Add a forced cast on USART_DIV() macro.</li>
+<li>Remove useless parenthesis from USART_DIVFRAQ() macro to solve some MISRA warnings.</li>
+</ul></li>
+<li>Update USART interruption handler to manage correctly the overrun interrupt
+<ul>
+<li>Add in the HAL_USART_IRQHandler() API a check on USART_CR1_RXNEIE bit when an overrun interrupt occurs.</li>
+</ul></li>
+<li>Fix baudrate calculation error UART9 and UART10
+<ul>
+<li>In USART_SetConfig() API fix UART9 and UART10 clock source when computing baudrate values by adding a check on these instances and setting clock sourcePCLK2 instead of PCLK1.</li>
+</ul></li>
+<li>Update USART_SetConfig() API
+<ul>
+<li>Split HAL_RCC_GetPCLK1Freq() and HAL_RCC_GetPCLK2Freq() macros from the USART_BRR() macro</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL IRDA</strong> update
+<ul>
+<li>Fix baudrate calculation error for clock higher than 172Mhz
+<ul>
+<li>Add a forced cast on IRDA_DIV() macro.</li>
+<li>Remove useless parenthesis from IRDA_DIVFRAQ() macro to solve some MISRA warnings.</li>
+</ul></li>
+<li>Update IRDA interruption handler to manage correctly the overrun interrupt
+<ul>
+<li>Add in the HAL_IRDA_IRQHandler() API a check on USART_CR1_RXNEIE bit when an overrun interrupt occurs.</li>
+</ul></li>
+<li>Fix baudrate calculation error UART9 and UART10
+<ul>
+<li>In IRDA_SetConfig() API fix UART9 and UART10 clock source when computing baudrate values by adding a check on these instances and setting clock sourcePCLK2 instead of PCLK1.</li>
+</ul></li>
+<li>Update IRDA_SetConfig() API
+<ul>
+<li>Split HAL_RCC_GetPCLK1Freq() and HAL_RCC_GetPCLK2Freq() macros from the IRDA_BRR() macro</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SMARTCARD</strong> update
+<ul>
+<li>Fix baudrate calculation error for clock higher than 172Mhz
+<ul>
+<li>Add a forced cast on SMARTCARD_DIV() macro.</li>
+<li>Remove useless parenthesis from SMARTCARD_DIVFRAQ() macro to solve some MISRA warnings.</li>
+</ul></li>
+<li>Update SMARTCARD interruption handler to manage correctly the overrun interrupti
+<ul>
+<li>Add in the HAL_SMARTCARD_IRQHandler() API a check on USART_CR1_RXNEIE bit when an overrun interrupt occurs.</li>
+</ul></li>
+<li>Update SMARTCARD_SetConfig() API
+<ul>
+<li>Split HAL_RCC_GetPCLK1Freq() and HAL_RCC_GetPCLK2Freq() macros from the SMARTCARD_BRR() macro</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>Add new macros to enable and disable the fast mode when using the one pulse mode to output a waveform with a minimum delay
+<ul>
+<li>__HAL_TIM_ENABLE_OCxFAST() and __HAL_TIM_DISABLE_OCxFAST().</li>
+</ul></li>
+<li>Update Encoder interface mode to keep TIM_CCER_CCxNP bits low
+<ul>
+<li>Add TIM_ENCODERINPUTPOLARITY_RISING and TIM_ENCODERINPUTPOLARITY_FALLING definitions to determine encoder input polarity.</li>
+<li>Add IS_TIM_ENCODERINPUT_POLARITY() macro to check the encoder input polarity.</li>
+<li>Update HAL_TIM_Encoder_Init() API
+<ul>
+<li>Replace IS_TIM_IC_POLARITY() macro by IS_TIM_ENCODERINPUT_POLARITY() macro.</li>
+</ul></li>
+</ul></li>
+<li>Update TIM remapping input configuration in HAL_TIMEx_RemapConfig() API
+<ul>
+<li>Remove redundant check on LPTIM_OR_TIM5_ITR1_RMP bit and replace it by check on LPTIM_OR_TIM9_ITR1_RMP bit.</li>
+</ul></li>
+<li>Update HAL_TIMEx_MasterConfigSynchronization() API to avoid functional errors and assert fails when using some TIM instances as input trigger.
+<ul>
+<li>Replace IS_TIM_SYNCHRO_INSTANCE() macro by IS_TIM_MASTER_INSTANCE() macro.</li>
+<li>Add IS_TIM_SLAVE_INSTANCE() macro to check on TIM_SMCR_MSM bit.</li>
+</ul></li>
+<li>Add lacking TIM input remapping definition
+<ul>
+<li>Add LL_TIM_TIM11_TI1_RMP_SPDIFRX and LL_TIM_TIM2_ITR1_RMP_ETH_PTP.</li>
+<li>Add lacking definition for linked LPTIM_TIM input trigger remapping
+<ul>
+<li>Add following definitions : LL_TIM_TIM9_ITR1_RMP_TIM3_TRGO, LL_TIM_TIM9_ITR1_RMP_LPTIM, LL_TIM_TIM5_ITR1_RMP_TIM3_TRGO, LL_TIM_TIM5_ITR1_RMP_LPTIM, LL_TIM_TIM1_ITR2_RMP_TIM3_TRGO and LL_TIM_TIM1_ITR2_RMP_LPTIM.</li>
+<li>Add a new mechanism in LL_TIM_SetRemap() API to remap TIM1, TIM9, and TIM5 input triggers mapped on LPTIM register.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li><strong>HAL LPTIM</strong> update
+<ul>
+<li>Add a polling mechanism to check on LPTIM_FLAG_XXOK flags in different API
+<ul>
+<li>Add LPTIM_WaitForFlag() API to wait for flag set.</li>
+<li>Perform new checks on HAL_LPTIM_STATE_TIMEOUT.</li>
+</ul></li>
+<li>Add lacking definitions of LPTIM input trigger remapping and its related API
+<ul>
+<li>LL_LPTIM_INPUT1_SRC_PAD_AF, LL_LPTIM_INPUT1_SRC_PAD_PA4, LL_LPTIM_INPUT1_SRC_PAD_PB9 and LL_LPTIM_INPUT1_SRC_TIM_DAC.</li>
+<li>Add a new API LL_LPTIM_SetInput1Src() to access to the LPTIM_OR register and remap the LPTIM input trigger.</li>
+</ul></li>
+<li>Perform a new check on indirect EXTI23 line associated to the LPTIM wake up timer
+<ul>
+<li>Condition the use of the LPTIM Wake-up Timer associated EXTI line configuration’s macros by EXTI_IMR_MR23 bit in different API :
+<ul>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE/DDISABLE_FALLING_EDGE()</li>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE()</li>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()</li>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE()</li>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE()</li>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE()</li>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_GET_FLAG()</li>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_FLAG()</li>
+<li>__HAL_LPTIM_WAKEUPTIMER_EXTI_GENERATE_SWIT()</li>
+</ul></li>
+<li>Update HAL_LPTIM_TimeOut_Start_IT(), HAL_LPTIM_TimeOut_Stop_IT(), HAL_LPTIM_Counter_Start_IT() and HAL_LPTIM_Counter_Stop_IT() API by adding Enable/Disable rising edge trigger on the LPTIM Wake-up Timer Exti line.</li>
+<li>Add __HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_FLAG() in the end of the HAL_LPTIM_IRQHandler() API conditioned by EXTI_IMR_MR23 bit.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Update HAL_I2C_EV_IRQHandler() API to fix I2C send break issue
+<ul>
+<li>Add additional check on hi2c-&gt;hdmatx, hdmatx-&gt;XferCpltCallback, hi2c-&gt;hdmarx, hdmarx-&gt;XferCpltCallback in I2C_Master_SB() API to avoid enabling DMA request when IT mode is used.</li>
+</ul></li>
+<li>Update HAL_I2C_ER_IRQHandler() API to fix acknowledge failure issue with I2C memory IT processes
+<ul>
+<li>Add stop condition generation when NACK occurs.</li>
+</ul></li>
+<li>Update HAL_I2C_Init() API to force software reset before setting new I2C configuration</li>
+<li>Update HAL I2C processes to report ErrorCode when wrong I2C start condition occurs
+<ul>
+<li>Add new ErrorCode define: HAL_I2C_WRONG_START</li>
+<li>Set ErrorCode parameter in I2C handle to HAL_I2C_WRONG_START</li>
+</ul></li>
+<li>Update I2C_DMAXferCplt(), I2C_DMAError() and I2C_DMAAbort() APIs to fix hardfault issue when hdmatx and hdmarx parameters in i2c handle aren’t initialized (NULL pointer).
+<ul>
+<li>Add additional check on hi2c-&gt;hdmtx and hi2c-&gt;hdmarx before resetting DMA Tx/Rx complete callbacks</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL FMPI2C</strong> update
+<ul>
+<li>Fix HAL FMPI2C slave interrupt handling issue with I2C sequential transfers.
+<ul>
+<li>Update FMPI2C_Slave_ISR_IT() and FMPI2C_Slave_ISR_DMA() APIs to check on STOP condition and handle it before clearing the ADDR flag</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL NAND</strong> update
+<ul>
+<li>Update HAL_NAND_Write_Page_8b(), HAL_NAND_Write_Page_16b() and HAL_NAND_Write_SpareArea_16b() to manage correctly the time out condition.</li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Optimize SAI_DMATxCplt() and SAI_DMARxCplt() APIs to check on “Mode” parameter instead of CIRC bit in the CR register.</li>
+<li>Remove unused SAI_FIFO_SIZE define</li>
+<li>Update HAL_SAI_Receive_DMA() programming sequence to be inline with reference manual</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section22" aria-hidden="true"> <label for="collapse-section22" aria-hidden="true">V1.7.6 / 12-April-2019</label>
+<div>
+<h2 id="main-changes-10">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Fix I2C send break issue in IT processes
+<ul>
+<li>Add additional check on hi2c-&gt;hdmatx and hi2c-&gt;hdmarx to avoid the DMA request enable when IT mode is used.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Update to implement Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode</li>
+</ul></li>
+<li><strong>LL LPTIM</strong> update
+<ul>
+<li>Fix compilation errors with LL_LPTIM_WriteReg() and LL_LPTIM_ReadReg() macros</li>
+</ul></li>
+<li><strong>HAL SDMMC</strong> update
+<ul>
+<li>Fix preprocessing compilation issue with SDIO STA STBITERR interrupt</li>
+</ul></li>
+<li><strong>HAL/LL USB</strong> update
+<ul>
+<li>Updated USB_WritePacket(), USB_ReadPacket() APIs to prevent compilation warning with GCC GNU v8.2.0</li>
+<li>Rework USB_EPStartXfer() API to enable the USB endpoint before unmasking the TX FiFo empty interrupt in case DMA is not used</li>
+<li>USB HAL_HCD_Init() and HAL_PCD_Init() APIs updated to avoid enabling USB DMA feature for OTG FS instance, USB DMA feature is available only on OTG HS Instance</li>
+<li>Remove duplicated line in hal_hcd.c header file comment section</li>
+<li>Rework USB HAL driver to use instance PCD_SPEED_xxx, HCD_SPEED_xx speeds instead of OTG register Core speed definition during the instance initialization</li>
+<li>Software Quality improvement with a fix of CodeSonar warning on PCD_Port_IRQHandler() and HCD_Port_IRQHandler() interrupt handlers</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section21" aria-hidden="true"> <label for="collapse-section21" aria-hidden="true">V1.7.5 / 08-February-2019</label>
+<div>
+<h2 id="main-changes-11">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li>General updates to fix CodeSonar compilation warnings</li>
+<li>General updates to fix SW4STM32 compilation errors under Linux</li>
+<li>General updates to fix the user manual .chm files</li>
+<li>Add support of HAL callback registration feature</li>
+<li>Add new <strong>HAL EXTI</strong> driver</li>
+<li>Add new <strong>HAL SMBUS</strong> driver</li>
+<li><strong>The following changes done on the HAL drivers require an update on the application code based on older HAL versions</strong>
+<ul>
+<li>Rework of HAL CRYP driver <strong>(compatibility break)</strong>
+<ul>
+<li>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.</li>
+<li>The new HAL CRYP driver is the recommended version. It is located as usual in Drivers/STM32F4xx_HAL_Driver/Src and Drivers/STM32f4xx_HAL_Driver/Inc folders. It can be enabled through switch HAL_CRYP_MODULE_ENABLED in stm32f4xx_hal_conf.h</li>
+<li>The legacy HAL CRYP driver is no longer supported.</li>
+</ul></li>
+<li>Add new AutoReloadPreload field in TIM_Base_InitTypeDef structure to allow the possibilities to enable or disable the TIM Auto Reload Preload.</li>
+</ul></li>
+<li><strong>HAL/LL Generic</strong> update
+<ul>
+<li>Add support of <strong>HAL callback registration</strong> feature
+<ul>
+<li>The feature disabled by default is available for the following HAL drivers:
+<ul>
+<li><strong>ADC, CAN, CEC, CRYP, DAC, DCMI, DFSDM, DMA2D, DSI, ETH, HASH, HCD, I2C, FMPI2C, SMBUS, UART, USART, IRDA, SMARTCARD, LPTIM, LTDC, MMC, NAND, NOR, PCCARD, PCD, QSPI, RNG, RTC, SAI, SD, SDRAM, SRAM, SPDIFRX, SPI, I2S, TIM,</strong> and <strong>WWDG</strong></li>
+</ul></li>
+<li>The feature may be enabled individually per HAL PPP driver by setting the corresponding definition USE_HAL_PPP_REGISTER_CALLBACKS to 1U in stm32f4xx_hal_conf.h project configuration file (template file stm32f4xx_hal_conf_template.h available from Drivers/STM32F4xx_HAL_Driver/Inc)</li>
+<li>Once enabled , the user application may resort to HAL_PPP_RegisterCallback() to register specific callback function(s) and unregister it(them) with HAL_PPP_UnRegisterCallback().</li>
+</ul></li>
+<li>General updates to fix MISRA 2012 compilation errors
+<ul>
+<li>Replace HAL_GetUID() API by HAL_GetUIDw0(), HAL_GetUIDw1() and HAL_GetUIDw2()</li>
+<li>HAL_IS_BIT_SET()/HAL_IS_BIT_CLR() macros implementation update</li>
+<li>“stdio.h” include updated with “stddef.h”</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL GPIO</strong> update
+<ul>
+<li>Add missing define for SPI3 alternate function “GPIO_AF5_SPI3” for STM32F401VE devices</li>
+<li>Remove “GPIO_AF9_TIM14” from defined alternate function list for STM32F401xx devices</li>
+<li>HAL_GPIO_TogglePin() reentrancy robustness improvement</li>
+<li>HAL_GPIO_DeInit() API update to avoid potential pending interrupt after call</li>
+<li>Update GPIO_GET_INDEX() API for more compliance with STM32F412Vx/STM32F412Rx/STM32F412Cx devices</li>
+<li>Update GPIO_BRR registers with Reference Manual regarding registers and bit definition values</li>
+</ul></li>
+<li><strong>HAL CRYP</strong> update
+<ul>
+<li><strong>The CRYP_InitTypeDef</strong> is no more supported, changed by <strong>CRYP_ConfigTypedef</strong> to allow changing parameters using HAL_CRYP_setConfig() API without reinitialize the CRYP IP using the HAL_CRYP_Init() API</li>
+<li>New parameters added in the <strong>CRYP_ConfigTypeDef</strong> structure: <strong>B0</strong> and <strong>DataWidthUnit</strong></li>
+<li>Input data size parameter is added in the <strong>CRYP_HandleTypeDef</strong> structure</li>
+<li>Add new APIs to manage the CRYP configuration:
+<ul>
+<li>HAL_CRYP_SetConfig()</li>
+<li>HAL_CRYP_GetConfig()</li>
+</ul></li>
+<li>Add new APIs to manage the Key derivation:
+<ul>
+<li>HAL_CRYPEx_EnableAutoKeyDerivation()</li>
+<li>HAL_CRYPEx_DisableAutoKeyDerivation()</li>
+</ul></li>
+<li>Add new APIs to encrypt and decrypt data:
+<ul>
+<li>HAL_CRYP_Encypt()</li>
+<li>HAL_CRYP_Decypt()</li>
+<li>HAL_CRYP_Encypt_IT()</li>
+<li>HAL_CRYP_Decypt_IT()</li>
+<li>HAL_CRYP_Encypt_DMA()</li>
+<li>HAL_CRYP_Decypt_DMA()</li>
+</ul></li>
+<li>Add new APIs to generate TAG:
+<ul>
+<li>HAL_CRYPEx_AES__GCM___GenerateAuthTAG()</li>
+<li>HAL_CRYPEx_AES__CCM___Generago teAuthTAG()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL LPTIM</strong> update
+<ul>
+<li>Remove useless LPTIM Wakeup EXTI related macros from HAL_LPTIM_TimeOut_Start_IT() API</li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>I2C API changes for MISRA-C 2012 compliance:
+<ul>
+<li>Rename HAL_I2C_Master_Sequential_Transmit_IT() to HAL_I2C_Master_Seq_Transmit_IT()</li>
+<li>Rename HAL_I2C_Master_Sequentiel_Receive_IT() to HAL_I2C_Master_Seq_Receive_IT()</li>
+<li>Rename HAL_I2C_Slave_Sequentiel_Transmit_IT() to HAL_I2C_Slave_Seq_Transmit_IT()</li>
+<li>Rename HAL_I2C_Slave_Sequentiel_Receive_DMA() to HAL_I2C_Slave_Seq_Receive_DMA()</li>
+</ul></li>
+<li>SMBUS defined flags are removed as not used by the HAL I2C driver
+<ul>
+<li>I2C_FLAG_SMBALERT</li>
+<li>I2C_FLAG_TIMEOUT</li>
+<li>I2C_FLAG_PECERR</li>
+<li>I2C_FLAG_SMBHOST</li>
+<li>I2C_FLAG_SMBDEFAULT</li>
+</ul></li>
+<li>Add support of I2C repeated start feature in DMA Mode:
+<ul>
+<li>With the following new API’s
+<ul>
+<li>HAL_I2C_Master_Seq_Transmit_DMA()</li>
+<li>HAL_I2C_Master_Seq_Receive_DMA()</li>
+<li>HAL_I2C_Slave_Seq_Transmit_DMA()</li>
+<li>HAL_I2C_Slave_Seq_Receive_DMA()</li>
+</ul></li>
+</ul></li>
+<li>Add new I2C transfer options to easy manage the sequential transfers
+<ul>
+<li>I2C_FIRST_AND_NEXT_FRAME</li>
+<li>I2C_LAST_FRAME_NO_STOP</li>
+<li>I2C_OTHER_FRAME</li>
+<li>I2C_OTHER_AND_LAST_FRAME</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL FMPI2C</strong> update
+<ul>
+<li>I2C API changes for MISRA-C 2012 compliance:
+<ul>
+<li>Rename HAL_FMPI2C_Master_Sequential_Transmit_IT() to HAL_FMPI2C_Master_Seq_Transmit_IT()</li>
+<li>Rename HAL_FMPI2C_Master_Sequentiel_Receive_IT() to HAL_FMPI2C_Master_Seq_Receive_IT()</li>
+<li>Rename HAL_FMPI2C_Master_Sequentiel_Transmit_DMA() to HAL_FMPI2C_Master_Seq_Transmit_DMA()</li>
+<li>Rename HAL_FMPI2C_Master_Sequentiel_Receive_DMA() to HAL_FMPI2C_Master_Seq_Receive_DMA()</li>
+</ul></li>
+<li>Rename FMPI2C_CR1_DFN to FMPI2C_CR1_DNF for more compliance with Reference Manual regarding registers and bit definition naming</li>
+<li>Add support of I2C repeated start feature in DMA Mode:
+<ul>
+<li>With the following new API’s
+<ul>
+<li>HAL_FMPI2C_Master_Seq_Transmit_DMA()</li>
+<li>HAL_FMPI2C_Master_Seq_Receive_DMA()</li>
+<li>HAL_FMPI2C_Slave_Seq_Transmit_DMA()</li>
+<li>HAL_FMPI2C_Slave_Seq_Receive_DMA()</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>Update the FLASH_OB_GetRDP() API to return the correct RDP level</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Remove GPIOD CLK macros for STM32F412Cx devices (X = D)</li>
+<li>Remove GPIOE CLK macros for STM32F412Rx\412Cx devices: (X = E)</li>
+<li>Remove GPIOF/G CLK macros for STM32F412Vx\412Rx\412Cx devices (X= F or G)
+<ul>
+<li>__HAL_RCC_GPIOX_CLK_ENABLE()</li>
+<li>__HAL_RCC_GPIO__X___CLK_DISABLE()</li>
+<li>__HAL_RCC_GPIO__X___IS_CLK_ENABLED()</li>
+<li>__HAL_RCC_GPIO__X___IS_CLK_DISABLED()</li>
+<li>__HAL_RCC_GPIO__X___FORCE_RESET()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RNG</strong> update
+<ul>
+<li>Update to manage RNG error code:
+<ul>
+<li>Add ErrorCode parameter in HAL RNG Handler structure</li>
+</ul></li>
+</ul></li>
+<li><strong>LL ADC</strong> update
+<ul>
+<li>Add __LL_ADC_CALC_TEMPERATURE() helper macro to calculate the temperature (unit: degree Celsius) from ADC conversion data of internal temperature sensor.</li>
+<li>Fix ADC channels configuration issues on STM32F413xx/423xx devices
+<ul>
+<li>To allow possibility to switch between VBAT and TEMPERATURE channels configurations</li>
+<li>HAL_ADC_Start(), HAL_ADC_Start_IT() and HAL_ADC_Start_DMA() update to prevention from starting ADC2 or ADC3 once multimode is enabled</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL DFSDM</strong> update
+<ul>
+<li>General updates to be compliant with DFSDM bits naming used in CMSIS files.</li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Update possible values list for FilterActivation parameter in CAN_FilterTypeDef structure
+<ul>
+<li>CAN_FILTER_ENABLE instead of ENABLE</li>
+<li>CAN_FILTER_DISABLE instead of DISABLE</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL CEC</strong> update
+<ul>
+<li>Update HAL CEC State management method:
+<ul>
+<li>Remove HAL_CEC_StateTypeDef structure parameters</li>
+<li>Add new defines for CEC states</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>Add clean of callbacks in HAL_DMA_DeInit() API</li>
+</ul></li>
+<li><strong>HAL DMA2D</strong> update
+<ul>
+<li>Remove unused DMA2D_ColorTypeDef structure to be compliant with MISRAC 2012 Rule 2.3</li>
+<li>General update to use dedicated defines for DMA2D_BACKGROUND_LAYER and DMA2D_FOREGROUND_LAYER instead of numerical values: 0/1.</li>
+</ul></li>
+<li><strong>HAL DSI</strong> update
+<ul>
+<li>Fix read multibyte issue: remove extra call to <strong>HAL_UNLOCK</strong> from DSI_ShortWrite() API.</li>
+</ul></li>
+<li><strong>HAL/LL RTC</strong> update
+<ul>
+<li>HAL/ LL drivers optimization
+<ul>
+<li>HAL driver: remove unused variables</li>
+<li>LL driver: getter APIs optimization</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>Remove the following API’s as feature not supported by STM32F469xx/479xx devices
+<ul>
+<li>HAL_PWREx_EnableWakeUpPinPolarityRisingEdge()</li>
+<li>HAL_PWREx_EnableWakeUpPinPolarityRisingEdge()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Update HAL_SPI_StateTypeDef structure to add new state: HAL_SPI_STATE_ABORT</li>
+</ul></li>
+<li><strong>HAL/LL TIM</strong> update
+<ul>
+<li>Add new AutoReloadPreload field in TIM_Base_InitTypeDef structure
+<ul>
+<li>Refer to the TIM examples to identify the changes</li>
+</ul></li>
+<li>Move the following TIM structures from stm32f4xx_hal_tim_ex.h into stm32f4xx_hal_tim.h
+<ul>
+<li>TIM_MasterConfigTypeDef</li>
+<li>TIM_BreakDeadTimeConfigTypeDef</li>
+</ul></li>
+<li>Add new TIM Callbacks API’s:
+<ul>
+<li>HAL_TIM_PeriodElapsedHalfCpltCallback()</li>
+<li>HAL_TIM_IC_CaptureHalfCpltCallback()</li>
+<li>HAL_TIM_PWM_PulseFinishedHalfCpltCallback()</li>
+<li>HAL_TIM_TriggerHalfCpltCallback()</li>
+</ul></li>
+<li>TIM API changes for MISRA-C 2012 compliance:
+<ul>
+<li>Rename HAL_TIM_SlaveConfigSynchronization to HAL_TIM_SlaveConfigSynchro</li>
+<li>Rename HAL_TIM_SlaveConfigSynchronization_IT to HAL_TIM_SlaveConfigSynchro_IT</li>
+<li>Rename HAL_TIMEx_ConfigCommutationEvent to HAL_TIMEx_ConfigCommutEvent</li>
+<li>Rename HAL_TIMEx_ConfigCommutationEvent_IT to HAL_TIMEx_ConfigCommutEvent_IT</li>
+<li>Rename HAL_TIMEx_ConfigCommutationEvent_DMA to HAL_TIMEx_ConfigCommutEvent_DMA</li>
+<li>Rename HAL_TIMEx_CommutationCallback to HAL_TIMEx_CommutCallback</li>
+<li>Rename HAL_TIMEx_DMACommutationCplt to TIMEx_DMACommutationCplt</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL/LL USB</strong> update
+<ul>
+<li>Rework USB interrupt handler and improve HS DMA support in Device mode</li>
+<li>Fix BCD handling fr OTG instance in device mode</li>
+<li>cleanup reference to low speed in device mode</li>
+<li>allow writing TX FIFO in case of transfer length is equal to available space in the TX FIFO</li>
+<li>Fix Toggle OUT interrupt channel in host mode</li>
+<li>Update USB OTG max number of endpoints (6 FS and 9 HS instead of 5 and 8)</li>
+<li>Update USB OTG IP to enable internal transceiver when starting USB device after committee BCD negotiation</li>
+</ul></li>
+<li><strong>LL IWDG</strong> update
+<ul>
+<li>Update LL inline macros to use IWDGx parameter instead of IWDG instance defined in CMSIS device</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section20" aria-hidden="true"> <label for="collapse-section20" aria-hidden="true">V1.7.4 / 02-February-2018</label>
+<div>
+<h2 id="main-changes-12">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li><strong>HAL</strong> update
+<ul>
+<li>Update UNUSED() macro implementation to avoid GCC warning
+<ul>
+<li>The warning is detected when the UNUSED() macro is called from C++ file</li>
+</ul></li>
+<li>Update to make RAMFUNC define as generic type instead of HAL_StatusTypdef type.</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>Update the prototypes of the following APIs after change on RAMFUNC defines
+<ul>
+<li>HAL_FLASHEx_StopFlashInterfaceClk()</li>
+<li>HAL_FLASHEx_StartFlashInterfaceClk()</li>
+<li>HAL_FLASHEx_EnableFlashSleepMode()</li>
+<li>HAL_FLASHEx_DisableFlashSleepMode()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Update HAL_SAI_DMAStop() and HAL_SAI_Abort() process to fix the lock/unlock audio issue</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section19" aria-hidden="true"> <label for="collapse-section19" aria-hidden="true">V1.7.3 / 22-December-2017</label>
+<div>
+<h2 id="main-changes-13">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li><strong>The following changes done on the HAL drivers require an update on the application code based on older HAL versions</strong>
+<ul>
+<li><strong>Rework of HAL CAN driver (compatibility break)</strong>
+<ul>
+<li>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.</li>
+<li>The new HAL CAN driver is the recommended version. It is located as usual in Drivers/STM32F4xx_HAL_Driver/Src and Drivers/STM32f4xx_HAL_Driver/Inc folders. It can be enabled through switch HAL_CAN_MODULE_ENABLED in stm32f4xx_hal_conf.h</li>
+<li>The legacy HAL CAN driver is also present in the release in Drivers/STM32F4xx_HAL_Driver/Src/Legacy and Drivers/STM32F4xx_HAL_Driver/Inc/Legacy folders for software compatibility reasons. Its usage is not recommended as deprecated. It can however be enabled through switch HAL_CAN_LEGACY_MODULE_ENABLED in stm32f4xx_hal_conf.h</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL</strong> update
+<ul>
+<li>Update HAL driver to allow user to change systick period to 1ms, 10 ms or 100 ms :
+<ul>
+<li>Add the following API’s :
+<ul>
+<li>HAL_GetTickPrio(): Returns a tick priority.</li>
+<li>HAL_SetTickFreq(): Sets new tick frequency.</li>
+<li>HAL_GetTickFreq(): Returns tick frequency.</li>
+</ul></li>
+<li>Add HAL_TickFreqTypeDef enumeration for the different Tick Frequencies: 10 Hz, 100 Hz and 1KHz (default).</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Fields of CAN_InitTypeDef structure are reworked:
+<ul>
+<li>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</li>
+</ul></li>
+<li>HAL_CAN_Init() is split into both HAL_CAN_Init() and HAL_CAN_Start() API’s</li>
+<li>HAL_CAN_Transmit() is replaced by HAL_CAN_AddTxMessage() to place Tx Request, then HAL_CAN_GetTxMailboxesFreeLevel() for polling until completion.</li>
+<li>HAL_CAN_Transmit_IT() is replaced by HAL_CAN_ActivateNotification() to enable transmit IT, then HAL_CAN_AddTxMessage() for place Tx request.</li>
+<li>HAL_CAN_Receive() is replaced by HAL_CAN_GetRxFifoFillLevel() for polling until reception, then HAL_CAN_GetRxMessage() to get Rx message.</li>
+<li>HAL_CAN_Receive_IT() is replaced by HAL_CAN_ActivateNotification() to enable receive IT, then HAL_CAN_GetRxMessage() in the receivecallback to get Rx message</li>
+<li>HAL_CAN_Slepp() is renamed as HAL_CAN_RequestSleep()</li>
+<li>HAL_CAN_TxCpltCallback() is split into HAL_CAN_TxMailbox0CompleteCallback(), HAL_CAN_TxMailbox1CompleteCallback() and HAL_CAN_TxMailbox2CompleteCallback().</li>
+<li>HAL_CAN_RxCpltCallback is split into HAL_CAN_RxFifo0MsgPendingCallback() and HAL_CAN_RxFifo1MsgPendingCallback().</li>
+<li>More complete “How to use the new driver” is detailed in the driver header section itself.</li>
+</ul></li>
+<li><strong>HAL FMPI2C</strong> update
+<ul>
+<li>Add new option FMPI2C_LAST_FRAME_NO_STOP for the sequential transfer management
+<ul>
+<li>This option allows to manage a restart condition after several call of the same master sequential interface.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Add new HAL macros
+<ul>
+<li>__HAL_RCC_GET_RTC_SOURCE() allowing to get the RTC clock source</li>
+<li>__HAL_RCC_GET_RTC_HSE_PRESCALER() allowing to get the HSE clock divider for RTC peripheral</li>
+</ul></li>
+<li>Ensure reset of CIR and CSR registers when issuing HAL_RCC_DeInit()/LL_RCC_DeInit functions</li>
+<li>Update HAL_RCC_OscConfig() to keep backup domain enabled when configuring respectively LSE and RTC clock source</li>
+<li>Add new HAL interfaces allowing to control the activation or deactivation of PLLI2S and PLLSAI:
+<ul>
+<li>HAL_RCCEx_EnablePLLI2S()</li>
+<li>HAL_RCCEx_DisablePLLI2S()</li>
+<li>HAL_RCCEx_EnablePLLSAI()</li>
+<li>HAL_RCCEx_DisablePLLSAI()</li>
+</ul></li>
+</ul></li>
+<li><strong>LL RCC</strong> update
+<ul>
+<li>Add new LL RCC macro
+<ul>
+<li>LL_RCC_PLL_SetMainSource() allowing to configure PLL main clock source</li>
+</ul></li>
+</ul></li>
+<li><strong>LL FMC / LL FSMC</strong> update
+<ul>
+<li>Add clear of the PTYP bit to select the PCARD mode in FMC_PCCARD_Init() / FSMC_PCCARD_Init()<br />
+</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section18" aria-hidden="true"> <label for="collapse-section18" aria-hidden="true">V1.7.2 / 06-October-2017</label>
+<div>
+<h2 id="main-changes-14">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li>Fix compilation warning with GCC compiler</li>
+<li>Remove Date and version from header files</li>
+<li>Update HAL drivers to refer to the new CMSIS bit position defines instead of usage the POSITION_VAL() macro</li>
+<li><strong>HAL Generic</strong> update
+<ul>
+<li>stm32f4xx_hal_def.h file changes:
+<ul>
+<li>Update __weak and __packed defined values for ARM compiler</li>
+<li>Update __ALIGN_BEGIN and __ALIGN_END defined values for ARM compiler</li>
+</ul></li>
+<li>stm32f4xx_ll_system.h file: add LL_SYSCFG_REMAP_SDRAM define</li>
+</ul></li>
+<li><strong>HAL ADC</strong> update
+<ul>
+<li>Fix wrong definition of ADC channel temperature sensor for STM32F413xx and STM32F423xx devices.</li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>Update values for the following defines: DMA_FLAG_FEIF0_4 and DMA_FLAG_DMEIF0_4</li>
+</ul></li>
+<li><strong>HAL DSI</strong> update
+<ul>
+<li>Fix Extra warning with SW4STM32 compiler</li>
+<li>Fix DSI display issue when using EWARM w/ high level optimization</li>
+<li>Fix MISRAC errors</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>HAL_FLASH_Unlock() update to return state error when the FLASH is already unlocked</li>
+</ul></li>
+<li><strong>HAL FMPI2C</strong> update
+<ul>
+<li>Update Interface APIs headers to remove confusing message about device address</li>
+<li>Update FMPI2C_WaitOnRXNEFlagUntilTimeout() to resolve a race condition between STOPF and RXNE Flags</li>
+<li>Update FMPI2C_TransferConfig() to fix wrong bit management.</li>
+<li>Update code comments to use DMA stream instead of DMA channel</li>
+</ul></li>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>HAL_PWR_EnableWakeUpPin() update description to add support of PWR_WAKEUP_PIN2 and PWR_WAKEUP_PIN3</li>
+</ul></li>
+<li><strong>HAL NOR</strong> update
+<ul>
+<li>Add the support of STM32F412Rx devices</li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Update Interface APIs headers to remove confusing message about device address</li>
+<li>Update I2C_MasterReceive_RXNE() and I2C_MasterReceive_BTF() static APIs to fix bad Handling of NACK in I2C master receive process.</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Update HAL_RCC_GetOscConfig() API to:
+<ul>
+<li>set PLLR in the RCC_OscInitStruct</li>
+<li>check on null pointer</li>
+</ul></li>
+<li>Update HAL_RCC_ClockConfig() API to:
+<ul>
+<li>check on null pointer</li>
+<li>optimize code size by updating the handling method of the SWS bits</li>
+<li>update to use __HAL_FLASH_GET_LATENCY() flash macro instead of using direct register access to LATENCY bits in FLASH ACR register.</li>
+</ul></li>
+<li>Update HAL_RCC_DeInit() and LL_RCC_DeInit() APIs to
+<ul>
+<li>Be able to return HAL/LL status</li>
+<li>Add checks for HSI, PLL and PLLI2S ready before modifying RCC CFGR registers</li>
+<li>Clear all interrupt flags</li>
+<li>Initialize systick interrupt period</li>
+</ul></li>
+<li>Update HAL_RCC_GetSysClockFreq() to avoid risk of rounding error which may leads to a wrong returned value.</li>
+</ul></li>
+<li><strong>HAL RNG</strong> update
+<ul>
+<li>HAL_RNG_Init() remove Lock()/Unlock()</li>
+</ul></li>
+<li><strong>HAL MMC</strong> update
+<ul>
+<li>HAL_MMC_Erase() API: add missing () to fix compilation warning detected with SW4STM32 when extra feature is enabled.</li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li>HAL_RTC_Init() API: update to force the wait for synchro before setting TAFCR register when BYPSHAD bit in CR register is 0.</li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Update HAL_SAI_DMAStop() API to flush fifo after disabling SAI</li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Update I2S DMA fullduplex process to handle I2S Rx and Tx DMA Half transfer complete callback</li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>Update HAL_TIMEx_OCN_xxxx() and HAL_TIMEx_PWMN_xxx() API description to remove support of TIM_CHANNEL_4</li>
+</ul></li>
+<li><strong>LL DMA</strong> update
+<ul>
+<li>Update to clear DMA flags using WRITE_REG() instead SET_REG() API to avoid read access to the IFCR register that is write only.</li>
+</ul></li>
+<li><strong>LL RTC</strong> update
+<ul>
+<li>Fix warning with static analyzer</li>
+</ul></li>
+<li><strong>LL USART</strong> update
+<ul>
+<li>Add assert macros to check USART BaudRate register</li>
+</ul></li>
+<li><strong>LL I2C</strong> update
+<ul>
+<li>Rename IS_I2C_CLOCK_SPEED() and IS_I2C_DUTY_CYCLE() respectively to IS_LL_I2C_CLOCK_SPEED() and IS_LL_I2C_DUTY_CYCLE() to avoid incompatible macros redefinition.</li>
+</ul></li>
+<li><strong>LL TIM</strong> update
+<ul>
+<li>Update LL_TIM_EnableUpdateEvent() API to clear UDIS bit in TIM CR1 register instead of setting it.</li>
+<li>Update LL_TIM_DisableUpdateEvent() API to set UDIS bit in TIM CR1 register instead of clearing it.</li>
+</ul></li>
+<li><strong>LL USART</strong> update
+<ul>
+<li>Fix MISRA error w/ IS_LL_USART_BRR() macro</li>
+<li>Fix wrong check when UART10 instance is used</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section17" aria-hidden="true"> <label for="collapse-section17" aria-hidden="true">V1.7.1 / 14-April-2017</label>
+<div>
+<h2 id="main-changes-15">Main Changes</h2>
+<ul>
+<li>Update CHM UserManuals to support LL drivers</li>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Add management of overrun error.</li>
+<li>Allow possibility to receive messages from the 2 RX FIFOs in parallel via interrupt.</li>
+<li>Fix message lost issue with specific sequence of transmit requests.</li>
+<li>Handle transmission failure with error callback, when NART is enabled.</li>
+<li>Add __HAL_CAN_CANCEL_TRANSMIT() call to abort transmission when timeout is reached</li>
+</ul></li>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>HAL_PWREx_EnterUnderDriveSTOPMode() API: remove check on UDRDY flag</li>
+</ul></li>
+<li><strong>LL ADC</strong> update
+<ul>
+<li>Fix wrong ADC group injected sequence configuration
+<ul>
+<li>LL_ADC_INJ_SetSequencerRanks() and LL_ADC_INJ_GetSequencerRanks() API’s update to take in consideration the ADC number of conversions</li>
+<li>Update the defined values for ADC group injected seqencer ranks</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section16" aria-hidden="true"> <label for="collapse-section16" aria-hidden="true">V1.7.0 / 17-February-2017</label>
+<div>
+<h2 id="main-changes-16">Main Changes</h2>
+<ul>
+<li><strong>Add Low Layer drivers allowing performance and footprint optimization</strong>
+<ul>
+<li>Low Layer drivers APIs provide register level programming: require deep knowledge of peripherals described in STM32F4xx Reference Manuals</li>
+<li>Low Layer drivers are available for: ADC, Cortex, CRC, DAC, DMA, DMA2D, EXTI, GPIO, I2C, IWDG, LPTIM, PWR, RCC, RNG, RTC, SPI, TIM, USART, WWDG peripherals and additional Low Level Bus, System and Utilities APIs.</li>
+<li>Low Layer drivers APIs are implemented as static inline function in new Inc/stm32f4xx_ll_ppp.h files for PPP peripherals, there is no configuration file and each stm32f4xx_ll_ppp.h file must be included in user code.</li>
+</ul></li>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li>Fix extra warnings with GCC compiler</li>
+<li>HAL drivers clean up: remove double casting ‘uint32_t’ and ‘U’</li>
+<li>Add new <strong>HAL MMC</strong> driver</li>
+<li><strong>The following changes done on the HAL drivers require an update on the application code based on older HAL versions</strong></li>
+<li><strong>HAL SD</strong> update
+<ul>
+<li>Overall rework of the driver for a more efficient implementation
+<ul>
+<li>Modify initialization API and structures</li>
+<li>Modify Read / Write sequences: separate transfer process and SD Cards state management</li>
+<li>Adding interrupt mode for Read / Write operations</li>
+<li>Update the HAL_SD_IRQHandler function by optimizing the management of interrupt errors</li>
+</ul></li>
+<li>Refer to the following example to identify the changes: BSP example and USB_Device/MSC_Standalone application</li>
+</ul></li>
+<li><strong>HAL NAND</strong> update
+<ul>
+<li>Modify NAND_AddressTypeDef, NAND_DeviceConfigTypeDef and NAND_HandleTypeDef structures fields</li>
+<li>Add new HAL_NAND_ConfigDevice API</li>
+</ul></li>
+<li><strong>HAL DFSDM</strong> update
+<ul>
+<li>Add support of Multichannel Delay feature
+<ul>
+<li>Add HAL_DFSDM_ConfigMultiChannelDelay API</li>
+<li>The following APIs are moved to internal static functions: HAL_DFSDM_ClockIn_SourceSelection, HAL_DFSDM_ClockOut_SourceSelection, HAL_DFSDM_DataInX_SourceSelection (X=0,2,4,6), HAL_DFSDM_BitStreamClkDistribution_Config</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Add specific callback API to manage I2S full duplex end of transfer process:
+<ul>
+<li>HAL_I2S_TxCpltCallback() and HAL_I2S_RxCpltCallback() API’s will be replaced with only HAL_I2SEx_TxRxCpltCallback() API.</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL</strong> update
+<ul>
+<li>Modify default HAL_Delay implementation to guarantee minimum delay</li>
+</ul></li>
+<li><strong>HAL Cortex</strong> update
+<ul>
+<li>Move HAL_MPU_Disable() and HAL_MPU_Enable() from stm32f4xx_hal_cortex.h to stm32f4xx_hal_cortex.c</li>
+<li>Clear the whole MPU control register in HAL_MPU_Disable() API</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>IS_FLASH_ADDRESS() macro update to support OTP range</li>
+<li>FLASH_Program_DoubleWord(): Replace 64-bit accesses with 2 double-words operations</li>
+</ul></li>
+<li><strong>LL GPIO</strong> update
+<ul>
+<li>Update IS_GPIO_PIN() macro implementation to be more safe</li>
+</ul></li>
+<li><strong>LL RCC</strong> update
+<ul>
+<li>Update IS_RCC_PLLQ_VALUE() macro implementation: the minimum accepted value is 2 instead of 4</li>
+<li>Rename RCC_LPTIM1CLKSOURCE_PCLK define to RCC_LPTIM1CLKSOURCE_PCLK1</li>
+<li>Fix compilation issue w/ __HAL_RCC_USB_OTG_FS_IS_CLK_ENABLED() and __HAL_RCC_USB_OTG_FS_IS_CLK_DISABLED() macros for STM32F401xx devices</li>
+<li>Add the following is clock enabled macros for STM32F401xx devices
+<ul>
+<li>__HAL_RCC_SDIO_IS_CLK_ENABLED()</li>
+<li>__HAL_RCC_SPI4_IS_CLK_ENABLED()</li>
+<li>__HAL_RCC_TIM10_IS_CLK_ENABLED()</li>
+</ul></li>
+<li>Add the following is clock enabled macros for STM32F410xx devices
+<ul>
+<li>__HAL_RCC_CRC_IS_CLK_ENABLED()</li>
+<li>__HAL_RCC_RNG_IS_CLK_ENABLED()</li>
+</ul></li>
+<li>Update HAL_RCC_DeInit() to reset the RCC clock configuration to the default reset state.</li>
+<li>Remove macros to configure BKPSRAM from STM32F401xx devices</li>
+<li>Update to refer to AHBPrescTable[] and APBPrescTable[] tables defined in system_stm32f4xx.c file instead of APBAHBPrescTable[] table.</li>
+</ul></li>
+<li><strong>HAL FMPI2C</strong> update
+<ul>
+<li>Add FMPI2C_FIRST_AND_NEXT_FRAME define in Sequential Transfer Options</li>
+</ul></li>
+<li><strong>HAL ADC</strong> update
+<ul>
+<li>HAL_ADCEx_InjectedConfigChannel(): update the external trigger injected condition</li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>HAL_DMA_Init(): update to check compatibility between FIFO threshold level and size of the memory burst</li>
+</ul></li>
+<li><strong>HAL QSPI</strong> update
+<ul>
+<li>QSPI_HandleTypeDef structure: Update transfer parameters on uint32_t instead of uint16_t</li>
+</ul></li>
+<li><strong>HAL UART/USART/IrDA/SMARTCARD</strong> update
+<ul>
+<li>DMA Receive process; the code has been updated to clear the USART OVR flag before enabling DMA receive request.</li>
+<li>UART_SetConfig() update to manage correctly USART6 instance that is not available on STM32F410Tx devices</li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Remove Lock mechanism from HAL_CAN_Transmit_IT() and HAL_CAN_Receive_IT() processes</li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>Add __HAL_TIM_MOE_DISABLE_UNCONDITIONALLY() macro to disable Master output without check on TIM channel state.</li>
+<li>Update HAL_TIMEx_ConfigBreakDeadTime() to fix TIM BDTR register corruption.</li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Update HAL_I2C_Master_Transmit() and HAL_I2C_Slave_Transmit() to avoid sending extra bytes at the end of the transmit processes</li>
+<li>Update HAL_I2C_Mem_Read() API to fix wrong check on misused parameter “Size”</li>
+<li>Update I2C_MasterReceive_RXNE() and I2C_MasterReceive_BTF() static APIs to enhance Master sequential reception process.</li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Add transfer abort APIs and associated callbacks in interrupt mode
+<ul>
+<li>HAL_SPI_Abort()</li>
+<li>HAL_SPI_Abort_IT()</li>
+<li>HAL_SPI_AbortCpltCallback()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Add specific callback API to manage I2S full duplex end of transfer process:
+<ul>
+<li>HAL_I2S_TxCpltCallback() and HAL_I2S_RxCpltCallback() API’s will be replaced with only HAL_I2SEx_TxRxCpltCallback() API.</li>
+</ul></li>
+<li>Update I2S Transmit/Receive polling process to manage Overrun and Underrun errors</li>
+<li>Move the I2S clock input frequency calculation to HAL RCC driver.</li>
+<li>Update the HAL I2SEx driver to keep only full duplex feature.</li>
+<li>HAL_I2S_Init() API updated to
+<ul>
+<li>Fix wrong I2S clock calculation when PCM mode is used.</li>
+<li>Return state HAL_I2S_ERROR_PRESCALER when the I2S clock is wrongly configured</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL LTDC</strong> update
+<ul>
+<li>Optimize HAL_LTDC_IRQHandler() function by using direct register read</li>
+<li>Rename the following API’s
+<ul>
+<li>HAL_LTDC_Relaod() by HAL_LTDC_Reload()</li>
+<li>HAL_LTDC_StructInitFromVideoConfig() by HAL_LTDCEx_StructInitFromVideoConfig()</li>
+<li>HAL_LTDC_StructInitFromAdaptedCommandConfig() by HAL_LTDCEx_StructInitFromAdaptedCommandConfig()</li>
+</ul></li>
+<li>Add new defines for LTDC layers (LTDC_LAYER_1 / LTDC_LAYER_2)</li>
+<li>Remove unused asserts</li>
+</ul></li>
+<li><strong>HAL USB PCD</strong> update
+<ul>
+<li>Flush all TX FIFOs on USB Reset</li>
+<li>Remove Lock mechanism from HAL_PCD_EP_Transmit() and HAL_PCD_EP_Receive() API’s</li>
+</ul></li>
+<li><strong>LL USB</strong> update
+<ul>
+<li>Enable DMA Burst mode for USB OTG HS</li>
+<li>Fix SD card detection issue</li>
+</ul></li>
+<li><strong>LL SDMMC</strong> update
+<ul>
+<li>Add new SDMMC_CmdSDEraseStartAdd, SDMMC_CmdSDEraseEndAdd, SDMMC_CmdOpCondition and SDMMC_CmdSwitch functions</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section15" aria-hidden="true"> <label for="collapse-section15" aria-hidden="true">V1.6.0 / 04-November-2016</label>
+<div>
+<h2 id="main-changes-17">Main Changes</h2>
+<ul>
+<li>Add support of <strong>STM32F413xx</strong> and <strong>STM32F423xx</strong> devices</li>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Update to add the support of 3 CAN management</li>
+</ul></li>
+<li><strong>HAL CRYP</strong> update
+<ul>
+<li>Update to add the support of AES features</li>
+</ul></li>
+<li><strong>HAL DFSDM</strong> update
+<ul>
+<li>Add definitions for new external trigger filters</li>
+<li>Add definition for new Channels 4, 5, 6 and 7</li>
+<li>Add functions and API for Filter state configuration and management</li>
+<li>Add new functions:
+<ul>
+<li>HAL_DFSDM_BitstreamClock_Start()</li>
+<li>HAL_DFSDM_BitstreamClock_Stop()</li>
+<li>HAL_DFSDM_BitStreamClkDistribution_Config()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL DMA</strong>
+<ul>
+<li>Add the support of DMA Channels from 8 to 15</li>
+<li>Update HAL_DMA_DeInit() function with the check on DMA stream instance</li>
+</ul></li>
+<li><strong>HAL DSI</strong> update
+<ul>
+<li>Update HAL_DSI_ConfigHostTimeouts() and HAL_DSI_Init() functions to avoid scratch in DSI_CCR register</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>Enhance FLASH_WaitForLastOperation() function implementation</li>
+<li>Update __HAL_FLASH_GET_FLAG() macro implementation</li>
+</ul></li>
+<li><strong>HAL GPIO</strong> update
+<ul>
+<li>Add specific alternate functions definitions</li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Update I2C_DMAError() function implementation to ignore DMA FIFO error</li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Enhance HAL_I2S_Init() implementation to test on PCM_SHORT and PCM_LONG standards</li>
+</ul></li>
+<li><strong>HAL IRDA</strong> update
+<ul>
+<li>Add new functions and call backs for Transfer Abort
+<ul>
+<li>HAL_IRDA_Abort()</li>
+<li>HAL_IRDA_AbortTransmit()</li>
+<li>HAL_IRDA_AbortReceive()</li>
+<li>HAL_IRDA_Abort_IT()</li>
+<li>HAL_IRDA_AbortTransmit_IT()</li>
+<li>HAL_IRDA_AbortReceive_IT()</li>
+<li>HAL_IRDA_AbortCpltCallback()</li>
+<li>HAL_IRDA_AbortTransmitCpltCallback()</li>
+<li>HAL_IRDA_AbortReceiveCpltCallback()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL PCD</strong> update
+<ul>
+<li>Update HAL_PCD_GetRxCount() function implementation</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Update __HAL_RCC_HSE_CONFIG() macro implementation</li>
+<li>Update __HAL_RCC_LSE_CONFIG() macro implementation</li>
+</ul></li>
+<li><strong>HAL SMARTCARD</strong> update
+<ul>
+<li>Add new functions and call backs for Transfer Abort
+<ul>
+<li>HAL_ SMARTCARD_Abort()</li>
+<li>HAL_ SMARTCARD_AbortTransmit()</li>
+<li>HAL_ SMARTCARD_AbortReceive()</li>
+<li>HAL_ SMARTCARD_Abort_IT()</li>
+<li>HAL_ SMARTCARD_AbortTransmit_IT()</li>
+<li>HAL_ SMARTCARD_AbortReceive_IT()</li>
+<li>HAL_ SMARTCARD_AbortCpltCallback()</li>
+<li>HAL_ SMARTCARD_AbortTransmitCpltCallback()</li>
+<li>HAL_ SMARTCARD_AbortReceiveCpltCallback()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>Update HAL_TIMEx_RemapConfig() function to manage TIM internal trigger remap: LPTIM or TIM3_TRGO</li>
+</ul></li>
+<li><strong>HAL UART</strong> update
+<ul>
+<li>Add Transfer abort functions and callbacks</li>
+</ul></li>
+<li><strong>HAL USART</strong> update
+<ul>
+<li>Add Transfer abort functions and callbacks</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section14" aria-hidden="true"> <label for="collapse-section14" aria-hidden="true">V1.5.2 / 22-September-2016</label>
+<div>
+<h2 id="main-changes-18">Main Changes</h2>
+<ul>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Fix wrong behavior in consecutive transfers in case of single byte transmission (Master/Memory Receive interfaces)</li>
+<li>Update HAL_I2C_Master_Transmit_DMA() / HAL_I2C_Master_Receive_DMA()/ HAL_I2C_Slave_Transmit_DMA() and HAL_I2C_Slave_Receive_DMA() to manage addressing phase through interruption instead of polling</li>
+<li>Add a check on I2C handle state at start of all I2C API’s to ensure that I2C is ready</li>
+<li>Update I2C API’s (Polling, IT and DMA interfaces) to manage I2C XferSize and XferCount handle parameters instead of API size parameter to help user to get information of counter in case of error.</li>
+<li>Update Abort functionality to manage DMA use case</li>
+</ul></li>
+<li><strong>HAL FMPI2C</strong> update
+<ul>
+<li>Update to disable Own Address before setting the new Own Address configuration:
+<ul>
+<li>Update HAL_FMPI2C_Init() to disable FMPI2C_OARx_EN bit before any configuration in OARx registers</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Update CAN receive processes to set CAN RxMsg FIFONumber parameter</li>
+</ul></li>
+<li><strong>HAL UART</strong> update
+<ul>
+<li>Update UART handle TxXferCount and RxXferCount parameters as volatile to avoid eventual issue with High Speed optimization</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section13" aria-hidden="true"> <label for="collapse-section13" aria-hidden="true">V1.5.1 / 01-July-2016</label>
+<div>
+<h2 id="main-changes-19">Main Changes</h2>
+<ul>
+<li><strong>HAL GPIO</strong> update
+<ul>
+<li>HAL_GPIO_Init()/HAL_GPIO_DeInit() API’s: update GPIO_GET_INDEX() macro implementation to support all GPIO’s</li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Fix regression issue: restore HAL_SPI_DMAPause() and HAL_SPI_DMAResume() API’s</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Fix FSMC macros compilation warnings with STM32F412Rx devices</li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>HAL_DMA_PollFortransfer() API clean up</li>
+</ul></li>
+<li><strong>HAL PPP</strong> update(PPP refers to IRDA, UART, USART and SMARTCARD)
+<ul>
+<li>Update HAL_PPP_IRQHandler() to add a check on interrupt source before managing the error</li>
+</ul></li>
+<li><strong>HAL QSPI</strong> update
+<ul>
+<li>Implement workaround to fix the limitation pronounced in the Errata sheet 2.1.8 section: In some specific cases, DMA2 data corruption occurs when managing AHB and APB2 peripherals in a concurrent way</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section12" aria-hidden="true"> <label for="collapse-section12" aria-hidden="true">V1.5.0 / 06-May-2016</label>
+<div>
+<h2 id="main-changes-20">Main Changes</h2>
+<ul>
+<li>Add support of <strong>STM32F412cx, STM32F412rx, STM32F412vx and STM32F412zx</strong> devices</li>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li>Add new HAL driver for <strong>DFSDM</strong> peripheral</li>
+<li>Enhance HAL delay and time base implementation:
+<ul>
+<li>Add new drivers stm32f4xx_hal_timebase_rtc_alarm_template.c and stm32f4xx_hal_timebase_rtc_wakeup_template.c which override the native HAL time base functions (defined as weak) to either use the RTC as time base tick source. For more details about the usage of these drivers, please refer to HAL_TimeBase_RTC examples and FreeRTOS-based applications</li>
+</ul></li>
+<li><strong>The following changes done on the HAL drivers require an update on the application code based on HAL V1.4.4</strong>
+<ul>
+<li>HAL UART, USART, IRDA, SMARTCARD, SPI, I2C,FMPI2C, QSPI (referenced as PPP here below) drivers
+<ul>
+<li>Add PPP error management during DMA process. This requires the following updates on user application:
+<ul>
+<li>Configure and enable the PPP IRQ in HAL_PPP_MspInit() function</li>
+<li>In stm32f4xx_it.c file, PPP_IRQHandler() function: add a call to HAL_PPP_IRQHandler() function</li>
+<li>Add and customize the Error Callback API: HAL_PPP_ErrorCallback()</li>
+</ul></li>
+</ul></li>
+<li>HAL I2C, FMPI2C (referenced as PPP here below) drivers:
+<ul>
+<li>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 user application:
+<ul>
+<li>Configure and enable the PPP IRQ in HAL_PPP_MspInit() function</li>
+<li>In stm32f4xx_it.c file, PPP_IRQHandler() function: add a call to HAL_PPP_IRQHandler() function</li>
+</ul></li>
+</ul></li>
+<li>HAL I2C driver:
+<ul>
+<li>I2C transfer processes IT update: NACK during addressing phase is managed through I2C Error interrupt instead of HAL state</li>
+</ul></li>
+<li>HAL IWDG driver: rework overall driver for better implementation
+<ul>
+<li>Remove HAL_IWDG_Start(), HAL_IWDG_MspInit() and HAL_IWDG_GetState() APIs</li>
+</ul></li>
+<li>HAL WWDG driver: rework overall driver for better implementation
+<ul>
+<li>Remove HAL_WWDG_Start(), HAL_WWDG_Start_IT(), HAL_WWDG_MspDeInit() and HAL_WWDG_GetState() APIs</li>
+<li>Update the HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg, uint32_t counter) function and API by removing the “counter” parameter</li>
+</ul></li>
+<li>HAL QSPI driver: Enhance the DMA transmit process by using PPP TC interrupt instead of waiting on TC flag under DMA ISR. This requires the following updates on user application:
+<ul>
+<li>Configure and enable the QSPI IRQ in HAL_QSPI_MspInit() function</li>
+<li>In stm32f4xx_it.c file, QSPI_IRQHandler() function: add a call to HAL_QSPI_IRQHandler() function</li>
+</ul></li>
+<li>HAL CEC driver: Overall driver rework with compatibility break versus previous HAL version
+<ul>
+<li>Remove HAL CEC polling Process functions: HAL_CEC_Transmit() and HAL_CEC_Receive()</li>
+<li>Remove HAL CEC receive interrupt process function HAL_CEC_Receive_IT() and enable the “receive” mode during the Init phase</li>
+<li>Rename HAL_CEC_GetReceivedFrameSize() function to HAL_CEC_GetLastReceivedFrameSize()</li>
+<li>Add new HAL APIs: HAL_CEC_SetDeviceAddress() and HAL_CEC_ChangeRxBuffer()</li>
+<li>Remove the ‘InitiatorAddress’ field from the CEC_InitTypeDef structure and manage it as a parameter in the HAL_CEC_Transmit_IT() function</li>
+<li>Add new parameter ‘RxFrameSize’ in HAL_CEC_RxCpltCallback() function</li>
+<li>Move CEC Rx buffer pointer from CEC_HandleTypeDef structure to CEC_InitTypeDef structure</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Update HAL_RCC_ClockConfig() function to adjust the SystemCoreClock</li>
+<li>Rename macros and Literals:
+<ul>
+<li>RCC_PERIPHCLK_CK48 by RCC_PERIPHCLK_CLK48</li>
+<li>IS_RCC_CK48CLKSOURCE by IS_RCC_CLK48CLKSOURCE</li>
+<li>RCC_CK48CLKSOURCE_PLLSAIP by RCC_CLK48CLKSOURCE_PLLSAIP</li>
+<li>RCC_SDIOCLKSOURCE_CK48 by RCC_SDIOCLKSOURCE_CLK48</li>
+<li>RCC_CK48CLKSOURCE_PLLQ by RCC_CLK48CLKSOURCE_PLLQ</li>
+</ul></li>
+<li>Update HAL_RCCEx_GetPeriphCLKConfig() and HAL_RCCEx_PeriphCLKConfig() functions to support TIM Prescaler for STM32F411xx devices</li>
+<li>HAL_RCCEx_PeriphCLKConfig() API: update to fix the RTC clock configuration issue</li>
+</ul></li>
+<li><strong>HAL CEC</strong> update
+<ul>
+<li>Overall driver rework with break of compatibility with HAL V1.4.4
+<ul>
+<li>Remove the HAL CEC polling Process: HAL_CEC_Transmit() and HAL_CEC_Receive()</li>
+<li>Remove the HAL CEC receive interrupt process (HAL_CEC_Receive_IT()) and manage the “Receive” mode enable within the Init phase</li>
+<li>Rename HAL_CEC_GetReceivedFrameSize() function to HAL_CEC_GetLastReceivedFrameSize() function</li>
+<li>Add new HAL APIs: HAL_CEC_SetDeviceAddress() and HAL_CEC_ChangeRxBuffer()</li>
+<li>Remove the ‘InitiatorAddress’ field from the CEC_InitTypeDef structure and manage it as a parameter in the HAL_CEC_Transmit_IT() function</li>
+<li>Add new parameter ‘RxFrameSize’ in HAL_CEC_RxCpltCallback() function</li>
+<li>Move CEC Rx buffer pointer from CEC_HandleTypeDef structure to CEC_InitTypeDef structure</li>
+</ul></li>
+<li>Update driver to implement the new CEC state machine:
+<ul>
+<li>Add new “rxState” field in CEC_HandleTypeDef structure to provide the CEC state information related to Rx Operations</li>
+<li>Rename “state” field in CEC_HandleTypeDef structure to “gstate”: CEC state information related to global Handle management and Tx Operations</li>
+<li>Update CEC process to manage the new CEC states.</li>
+<li>Update __HAL_CEC_RESET_HANDLE_STATE() macro to handle the new CEC state parameters (gState, rxState)</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL UART, USART, SMARTCARD and IRDA</strong> (referenced as PPP here below) update
+<ul>
+<li>Update Polling management:
+<ul>
+<li>The user Timeout value must be estimated for the overall process duration: the Timeout measurement is cumulative</li>
+</ul></li>
+<li>Update DMA process:
+<ul>
+<li>Update the management of PPP peripheral errors during DMA process. This requires the following updates in user application:
+<ul>
+<li>Configure and enable the PPP IRQ in HAL_PPP_MspInit() function</li>
+<li>In stm32f4xx_it.c file, PPP_IRQHandler() function: add a call to HAL_PPP_IRQHandler() function</li>
+<li>Add and customize the Error Callback API: HAL_PPP_ErrorCallback()</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li><strong>HAL FMC update</strong>
+<ul>
+<li>Update FMC_NORSRAM_Init() to remove the Burst access mode configuration</li>
+<li>Update FMC_SDRAM_Timing_Init() to fix initialization issue when configuring 2 SDRAM banks</li>
+</ul></li>
+<li><strong>HAL HCD</strong> update
+<ul>
+<li>Update HCD_Port_IRQHandler() to unmask disconnect IT only when the port is disabled</li>
+</ul></li>
+<li><strong>HAL I2C/FMPI2C</strong> update
+<ul>
+<li>Update Polling management:
+<ul>
+<li>The Timeout value must be estimated for the overall process duration: the Timeout measurement is cumulative</li>
+</ul></li>
+<li>Add the management of Abort service: Abort DMA transfer through interrupt
+<ul>
+<li>In the case of Master Abort IT transfer usage:
+<ul>
+<li>Add new user HAL_I2C_AbortCpltCallback() to inform user of the end of abort process</li>
+<li>A new abort state is defined in the HAL_I2C_StateTypeDef structure</li>
+</ul></li>
+</ul></li>
+<li>Add the management of I2C peripheral errors, ACK failure and STOP condition detection during DMA process. This requires the following updates on user application:
+<ul>
+<li>Configure and enable the I2C IRQ in HAL_I2C_MspInit() function</li>
+<li>In stm32f4xx_it.c file, I2C_IRQHandler() function: add a call to HAL_I2C_IRQHandler() function</li>
+<li>Add and customize the Error Callback API: HAL_I2C_ErrorCallback()</li>
+<li>Refer to the I2C_EEPROM or I2C_TwoBoards_ComDMA project examples usage of the API</li>
+</ul></li>
+<li>NACK error during addressing phase is returned through interrupt instead of previously through I2C transfer API’s</li>
+<li>I2C addressing phase is updated to be managed using interrupt instead of polling (Only for HAL I2C driver)
+<ul>
+<li>Add new static functions to manage I2C SB, ADDR and ADD10 flags</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Overall driver optimization to improve performance in polling/interrupt mode to reach maximum peripheral frequency
+<ul>
+<li>Polling mode:
+<ul>
+<li>Replace the use of SPI_WaitOnFlagUnitTimeout() function by “if” statement to check on RXNE/TXE flags while transferring data</li>
+</ul></li>
+<li>Interrupt mode:
+<ul>
+<li>Minimize access on SPI registers</li>
+</ul></li>
+<li>All modes:
+<ul>
+<li>Add the USE_SPI_CRC switch to minimize the number of statements when CRC calculation is disabled</li>
+<li>Update timeout management to check on global processes</li>
+<li>Update error code management in all processes</li>
+</ul></li>
+<li>Update DMA process:
+<ul>
+<li>Add the management of SPI peripheral errors during DMA process. This requires the following updates in the user application:</li>
+<li>Configure and enable the SPI IRQ in HAL_SPI_MspInit() function</li>
+<li>In stm32f4xx_it.c file, SPI_IRQHandler() function: add a call to HAL_SPI_IRQHandler() function</li>
+<li>Add and customize the Error Callback API: HAL_SPI_ErrorCallback()</li>
+<li>Refer to the following example which describe the changes: SPI_FullDuplex_ComDMA</li>
+</ul></li>
+<li>Fix regression in polling mode:
+<ul>
+<li>Add preparing data to transmit in case of slave mode in HAL_SPI_TransmitReceive() and HAL_SPI_Transmit()</li>
+<li>Add to manage properly the overrun flag at the end of a HAL_SPI_TransmitReceive()</li>
+</ul></li>
+<li>Fix regression in interrupt mode:
+<ul>
+<li>Add a wait on TXE flag in SPI_CloseTx_ISR() and in SPI_CloseTxRx_ISR()</li>
+<li>Add to manage properly the overrun flag in SPI_CloseRxTx_ISR() and SPI_CloseRx_ISR()</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li><strong>HAL DMA2D</strong> update
+<ul>
+<li>Update the HAL_DMA2D_DeInit() function to:
+<ul>
+<li>Abort transfer in case of ongoing DMA2D transfer</li>
+<li>Reset DMA2D control registers</li>
+</ul></li>
+<li>Update HAL_DMA2D_Abort() to disable DMA2D interrupts after stopping transfer</li>
+<li>Optimize HAL_DMA2D_IRQHandler() by reading status registers only once</li>
+<li>Update HAL_DMA2D_ProgramLineEvent() function to:
+<ul>
+<li>Return HAL error state in case of wrong line value</li>
+<li>Enable line interrupt after setting the line watermark configuration</li>
+</ul></li>
+<li>Add new HAL_DMA2D_CLUTLoad() and HAL_DMA2D_CLUTLoad_IT() functions to start DMA2D CLUT loading
+<ul>
+<li>HAL_DMA2D_CLUTLoading_Abort() function to abort the DMA2D CLUT loading</li>
+<li>HAL_DMA2D_CLUTLoading_Suspend() function to suspend the DMA2D CLUT loading</li>
+<li>HAL_DMA2D_CLUTLoading_Resume() function to resume the DMA2D CLUT loading</li>
+</ul></li>
+<li>Add new DMA2D dead time management:
+<ul>
+<li>HAL_DMA2D_EnableDeadTime() function to enable DMA2D dead time feature</li>
+<li>HAL_DMA2D_DisableDeadTime() function to disable DMA2D dead time feature</li>
+<li>HAL_DMA2D_ConfigDeadTime() function to configure dead time</li>
+</ul></li>
+<li>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)</li>
+</ul></li>
+<li><strong>HAL LTDC</strong> update
+<ul>
+<li>Update HAL_LTDC_IRQHandler() to manage the case of reload interrupt</li>
+<li>Add new callback API HAL_LTDC_ReloadEventCallback()</li>
+<li>Add HAL_LTDC_Reload() to configure LTDC reload feature</li>
+<li>Add new No Reload LTDC variant APIs
+<ul>
+<li>HAL_LTDC_ConfigLayer_NoReload() to configure the LTDC Layer according to the specified without reloading</li>
+<li>HAL_LTDC_SetWindowSize_NoReload() to set the LTDC window size without reloading</li>
+<li>HAL_LTDC_SetWindowPosition_NoReload() to set the LTDC window position without reloading</li>
+<li>HAL_LTDC_SetPixelFormat_NoReload() to reconfigure the pixel format without reloading</li>
+<li>HAL_LTDC_SetAlpha_NoReload() to reconfigure the layer alpha value without reloading</li>
+<li>HAL_LTDC_SetAddress_NoReload() to reconfigure the frame buffer Address without reloading</li>
+<li>HAL_LTDC_SetPitch_NoReload() to reconfigure the pitch for specific cases</li>
+<li>HAL_LTDC_ConfigColorKeying_NoReload() to configure the color keying without reloading</li>
+<li>HAL_LTDC_EnableColorKeying_NoReload() to enable the color keying without reloading</li>
+<li>HAL_LTDC_DisableColorKeying_NoReload() to disable the color keying without reloading</li>
+<li>HAL_LTDC_EnableCLUT_NoReload() to enable the color lookup table without reloading</li>
+<li>HAL_LTDC_DisableCLUT_NoReload() to disable the color lookup table without reloading</li>
+<li><u> Note:</u> 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”</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li>Add new timeout implementation based on cpu cycles for ALRAWF, ALRBWF and WUTWF flags</li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Update SAI state in case of TIMEOUT error within the HAL_SAI_Transmit() / HAL_SAI_Receive()</li>
+<li>Update HAL_SAI_IRQHandler:
+<ul>
+<li>Add error management in case DMA errors through XferAbortCallback() and HAL_DMA_Abort_IT()</li>
+<li>Add error management in case of IT</li>
+</ul></li>
+<li>Move SAI_BlockSynchroConfig() and SAI_GetInputClock() functions to stm32f4xx_hal_sai.c/.h files (extension files are kept empty for projects compatibility reason)</li>
+</ul></li>
+<li><strong>HAL DCMI</strong> update
+<ul>
+<li>Rename DCMI_DMAConvCplt to DCMI_DMAXferCplt</li>
+<li>Update HAL_DCMI_Start_DMA() function to Enable the DCMI peripheral</li>
+<li>Add new timeout implementation based on cpu cycles for DCMI stop</li>
+<li>Add HAL_DCMI_Suspend() function to suspend DCMI capture</li>
+<li>Add HAL_DCMI_Resume() function to resume capture after DCMI suspend</li>
+<li>Update lock mechanism for DCMI process</li>
+<li>Update HAL_DCMI_IRQHandler() function to:
+<ul>
+<li>Add error management in case DMA errors through XferAbortCallback() and HAL_DMA_Abort_IT()</li>
+<li>Optimize code by using direct register read</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>Add new APIs HAL_DMA_RegisterCallback() and HAL_DMA_UnRegisterCallback to register/unregister the different callbacks identified by the enum typedef HAL_DMA_CallbackIDTypeDef</li>
+<li>Add new API HAL_DMA_Abort_IT() to abort DMA transfer under interrupt context
+<ul>
+<li>The new registered Abort callback is called when DMA transfer abortion is completed</li>
+</ul></li>
+<li>Add the check of compatibility between FIFO threshold level and size of the memory burst in the HAL_DMA_Init() API</li>
+<li>Add new Error Codes: HAL_DMA_ERROR_PARAM, HAL_DMA_ERROR_NO_XFER and HAL_DMA_ERROR_NOT_SUPPORTED</li>
+<li>Remove all DMA states related to MEM0/MEM1 in HAL_DMA_StateTypeDef</li>
+</ul></li>
+<li><strong>HAL IWDG</strong> update
+<ul>
+<li>Overall rework of the driver for a more efficient implementation
+<ul>
+<li>Remove the following APIs:
+<ul>
+<li>HAL_IWDG_Start()</li>
+<li>HAL_IWDG_MspInit()</li>
+<li>HAL_IWDG_GetState()</li>
+</ul></li>
+</ul></li>
+<li>Update implementation:
+<ul>
+<li>HAL_IWDG_Init(): this function insures the configuration and the start of the IWDG counter</li>
+<li>HAL_IWDG_Refresh(): this function insures the reload of the IWDG counter</li>
+</ul></li>
+<li>Refer to the following example to identify the changes: IWDG_Example</li>
+</ul></li>
+<li><strong>HAL LPTIM</strong> update
+<ul>
+<li>Update 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 pressing the EXTI line.</li>
+<li>Update HAL_LPTIM_TimeOut_Stop_IT() and HAL_LPTIM_Counter_Stop_IT( ) APIs to disable WakeUp Timer EXTI interrupt.</li>
+</ul></li>
+<li><strong>HAL NOR</strong> update
+<ul>
+<li>Update NOR_ADDR_SHIFT macro implementation</li>
+</ul></li>
+<li><strong>HAL PCD</strong> update
+<ul>
+<li>Update HAL_PCD_IRQHandler() to get HCLK frequency before setting TRDT value</li>
+</ul></li>
+<li><strong>HAL QSPI</strong> update
+<ul>
+<li>Update to manage QSPI error management during DMA process</li>
+<li>Improve the DMA transmit process by using QSPI TC interrupt instead of waiting loop on TC flag under DMA ISR</li>
+<li>These two improvements require the following updates on user application:
+<ul>
+<li>Configure and enable the QSPI IRQ in HAL_QSPI_MspInit() function</li>
+<li>In stm32f4xx_it.c file, QSPI_IRQHandler() function: add a call to HAL_QSPI_IRQHandler() function</li>
+<li>Add and customize the Error Callback API: HAL_QSPI_ErrorCallback()</li>
+</ul></li>
+<li>Add the management of non-blocking transfer abort service: HAL_QSPI_Abort_IT(). In this case the user must:
+<ul>
+<li>Add new callback HAL_QSPI_AbortCpltCallback() to inform user at the end of abort process</li>
+<li>A new value of State in the HAL_QSPI_StateTypeDef provides the current state during the abort phase</li>
+</ul></li>
+<li>Polling management update:
+<ul>
+<li>The Timeout value user must be estimated for the overall process duration: the Timeout measurement is cumulative.</li>
+</ul></li>
+<li>Refer to the following examples, which describe the changes:
+<ul>
+<li>QSPI_ReadWrite_DMA</li>
+<li>QSPI_MemoryMapped</li>
+<li>QSPI_ExecuteInPlace</li>
+</ul></li>
+<li>Add two new APIs for the QSPI fifo threshold:
+<ul>
+<li>HAL_QSPI_SetFifoThreshold(): configure the FIFO threshold of the QSPI</li>
+<li>HAL_QSPI_GetFifoThreshold(): give the current FIFO threshold</li>
+</ul></li>
+<li>Fix wrong data size management in HAL_QSPI_Receive_DMA()</li>
+</ul></li>
+<li><strong>HAL ADC</strong> update
+<ul>
+<li>Add new __HAL_ADC_PATH_INTERNAL_VBAT_DISABLE() macro for STM32F42x and STM32F43x devices to provide the possibility to convert VrefInt channel when both VrefInt and Vbat channels are selected.</li>
+</ul></li>
+<li><strong>HAL SPDIFRX</strong> update
+<ul>
+<li>Overall driver update for wait on flag management optimization</li>
+</ul></li>
+<li><strong>HAL WWDG</strong> update
+<ul>
+<li>Overall rework of the driver for more efficient implementation
+<ul>
+<li>Remove the following APIs:
+<ul>
+<li>HAL_WWDG_Start()</li>
+<li>HAL_WWDG_Start_IT()</li>
+<li>HAL_WWDG_MspDeInit()</li>
+<li>HAL_WWDG_GetState()</li>
+</ul></li>
+<li>Update implementation:
+<ul>
+<li>HAL_WWDG_Init()
+<ul>
+<li>A new parameter in the Init Structure: EWIMode</li>
+</ul></li>
+<li>HAL_WWDG_MspInit()</li>
+<li>HAL_WWDG_Refresh()
+<ul>
+<li>This function insures the reload of the counter</li>
+<li>The “counter” parameter has been removed</li>
+</ul></li>
+<li>HAL_WWDG_IRQHandler()</li>
+<li>HAL_WWDG_EarlyWakeupCallback() is the new prototype of HAL_WWDG_WakeUpCallback()</li>
+</ul></li>
+</ul></li>
+<li>Refer to the following example to identify the changes: WWDG_Example</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section11" aria-hidden="true"> <label for="collapse-section11" aria-hidden="true">V1.4.4 / 22-January-2016</label>
+<div>
+<h2 id="main-changes-21">Main Changes</h2>
+<ul>
+<li><strong>HAL Generic</strong> update
+<ul>
+<li>stm32f4xx_hal_conf_template.h
+<ul>
+<li>Optimize HSE Startup Timeout value from 5000ms to 100 ms</li>
+<li>Add new define LSE_STARTUP_TIMEOUT</li>
+<li>Add new define USE_SPI_CRC for code cleanup when the CRC calculation is disabled.</li>
+</ul></li>
+<li>Update HAL drivers to support MISRA C 2004 rule 10.6</li>
+<li>Add new template driver to configure timebase using TIMER :
+<ul>
+<li>stm32f4xx_hal_timebase_tim_template.c</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Update HAL_CAN_Transmit() and HAL_CAN_Transmit_IT() functions to unlock process when all Mailboxes are busy</li>
+</ul></li>
+<li><strong>HAL DSI</strong> update
+<ul>
+<li>Update HAL_DSI_SetPHYTimings() functions to use the correct mask</li>
+</ul></li>
+<li><strong>HAL UART</strong> update
+<ul>
+<li>Several update on HAL UART driver to implement the new UART state machine:
+<ul>
+<li>Add new field in UART_HandleTypeDef structure: “rxState”, UART state information related to Rx Operations</li>
+<li>Rename “state” field in UART_HandleTypeDef structure by “gstate”: UART state information related to global Handle management and Tx Operations</li>
+<li>Update UART process to manage the new UART states.</li>
+<li>Update __HAL_UART_RESET_HANDLE_STATE() macro to handle the new UART state parameters (gState, rxState)</li>
+</ul></li>
+<li>Update UART_BRR_SAMPLING16() and UART_BRR_SAMPLING8() Macros to fix wrong baudrate calculation.</li>
+</ul></li>
+<li><strong>HAL IRDA</strong> update
+<ul>
+<li>Several update on HAL IRDA driver to implement the new UART state machine:
+<ul>
+<li>Add new field in IRDA_HandleTypeDef structure: “rxState”, IRDA state information related to Rx Operations</li>
+<li>Rename “state” field in UART_HandleTypeDef structure by “gstate”: IRDA state information related to global Handle management and Tx Operations</li>
+<li>Update IRDA process to manage the new UART states.</li>
+<li>Update __HAL_IRDA_RESET_HANDLE_STATE() macro to handle the new IRDA state parameters (gState, rxState)</li>
+</ul></li>
+<li>Removal of IRDA_TIMEOUT_VALUE define</li>
+<li>Update IRDA_BRR() Macro to fix wrong baudrate calculation</li>
+</ul></li>
+<li><strong>HAL SMARTCARD</strong> update
+<ul>
+<li>Several update on HAL SMARTCARD driver to implement the new UART state machine:
+<ul>
+<li>Add new field in SMARTCARD_HandleTypeDef structure: “rxState”, SMARTCARDstate information related to Rx Operations</li>
+<li>Rename “state” field in UART_HandleTypeDef structure by “gstate”: SMARTCARDstate information related to global Handle management and Tx Operations</li>
+<li>Update SMARTCARD process to manage the new UART states.</li>
+<li>Update __HAL_SMARTCARD_RESET_HANDLE_STATE() macro to handle the new SMARTCARD state parameters (gState, rxState)</li>
+</ul></li>
+<li>Update SMARTCARD_BRR() macro to fix wrong baudrate calculation</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Add new default define value for HSI calibration “RCC_HSICALIBRATION_DEFAULT”</li>
+<li>Optimize Internal oscillators and PLL startup timeout</li>
+<li><p>Update to avoid the disable for HSE/LSE oscillators before setting the new RCC HSE/LSE configuration and add the following notes in HAL_RCC_OscConfig() API description:</p>
+<pre><code>                   * @note   Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not
+                   *             supported by this API. User should request a transition to LSE Off
+                   *             first and then LSE On or LSE Bypass.
+                   * @note   Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not
+                   *             supported by this API. User should request a transition to HSE Off
+                   *             first and then HSE On or HSE Bypass.</code></pre></li>
+<li>Optimize the HAL_RCC_ClockConfig() API implementation.</li>
+</ul></li>
+<li><strong>HAL DMA2D</strong> update
+<ul>
+<li>Update HAL_DMA2D_Abort() Function to end current DMA2D transfer properly</li>
+<li>Update HAL_DMA2D_PollForTransfer() function to add poll for background CLUT loading (layer 0 and layer 1).</li>
+<li>Update HAL_DMA2D_PollForTransfer() to set the corresponding ErrorCode in case of error occurrence</li>
+<li>Update HAL_DMA2D_ConfigCLUT() function to fix wrong CLUT size and color mode settings</li>
+<li>Removal of useless macro __HAL_DMA2D_DISABLE()</li>
+<li>Update HAL_DMA2D_Suspend() to manage correctly the case where no transfer is on going</li>
+<li>Update HAL_DMA2D_Resume() to manage correctly the case where no transfer is on going</li>
+<li>Update HAL_DMA2D_Start_IT() to enable all required interrupts before enabling the transfer.</li>
+<li>Add HAL_DMA2D_CLUTLoad_IT() Function to allow loading a CLUT with interruption model.</li>
+<li><p>Update HAL_DMA2D_IRQHandler() to manage the following cases :</p>
+<ul>
+<li>CLUT transfer complete</li>
+<li>CLUT access error</li>
+<li>Transfer watermark reached</li>
+</ul></li>
+<li>Add new Callback APIs:
+<ul>
+<li>HAL_DMA2D_LineEventCallback() to signal a transfer watermark reached event</li>
+<li>HAL_DMA2D_CLUTLoadingCpltCallback() to signal a CLUT loading complete event</li>
+</ul></li>
+<li>Miscellaneous Improvement:
+<ul>
+<li>Add “HAL_DMA2D_ERROR_CAE” new define for CLUT Access error management.</li>
+<li>Add “assert_param” used for parameters check is now done on the top of the exported functions : before locking the process using __HAL_LOCK</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>Add support of I2C repeated start feature:
+<ul>
+<li>With the following new API’s
+<ul>
+<li>HAL_I2C_Master_Sequential_Transmit_IT()</li>
+<li>HAL_I2C_Master_Sequential_Receive_IT()</li>
+<li>HAL_I2C_Master_Abort_IT()</li>
+<li>HAL_I2C_Slave_Sequential_Transmit_IT()</li>
+<li>HAL_I2C_Slave_Sequential_Receive_IT()</li>
+<li>HAL_I2C_EnableListen_IT()</li>
+<li>HAL_I2C_DisableListen_IT()</li>
+</ul></li>
+</ul></li>
+<li>Add new user callbacks:
+<ul>
+<li>HAL_I2C_ListenCpltCallback()</li>
+<li>HAL_I2C_AddrCallback()</li>
+</ul></li>
+<li>Update to generate STOP condition when a acknowledge failure error is detected</li>
+<li>Several update on HAL I2C driver to implement the new I2C state machine:
+<ul>
+<li>Add new API to get the I2C mode: HAL_I2C_GetMode()</li>
+<li>Update I2C process to manage the new I2C states.</li>
+</ul></li>
+<li>Fix wrong behaviour in single byte transmission</li>
+<li>Update I2C_WaitOnFlagUntilTimeout() to manage the NACK feature.</li>
+<li>Update I2C transmission process to support the case data size equal 0</li>
+</ul></li>
+<li><strong>HAL FMPI2C</strong> update
+<ul>
+<li>Add support of FMPI2C repeated start feature:
+<ul>
+<li>With the following new API’s
+<ul>
+<li>HAL_FMPI2C_Master_Sequential_Transmit_IT()</li>
+<li>HAL_FMPI2C_Master_Sequential_Receive_IT()</li>
+<li>HAL_FMPI2C_Master_Abort_IT()</li>
+<li>HAL_FMPI2C_Slave_Sequential_Transmit_IT()</li>
+<li>HAL_FMPI2C_Slave_Sequential_Receive_IT()</li>
+<li>HAL_FMPI2C_EnableListen_IT()</li>
+<li>HAL_FMPI2C_DisableListen_IT()</li>
+</ul></li>
+<li>Add new user callbacks:
+<ul>
+<li>HAL_FMPI2C_ListenCpltCallback()</li>
+<li>HAL_FMPI2C_AddrCallback()</li>
+</ul></li>
+<li>Several update on HAL I2C driver to implement the new I2C state machine:
+<ul>
+<li>Add new API to get the FMPI2C mode: HAL_FMPI2C_GetMode()</li>
+<li>Update FMPI2C process to manage the new FMPI2C states.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Major Update to improve performance in polling/interrupt mode to reach max frequency:
+<ul>
+<li>Polling mode :
+<ul>
+<li>Replace use of SPI_WaitOnFlagUnitTimeout() funnction by “if” statement to check on RXNE/TXE flags while transferring data.</li>
+<li>Use API data pointer instead of SPI handle data pointer.</li>
+<li>Use a Goto implementation instead of “if..else” statements.</li>
+</ul></li>
+<li>Interrupt mode
+<ul>
+<li>Minimize access on SPI registers.</li>
+<li>Split the SPI modes into dedicated static functions to minimize checking statements under HAL_IRQHandler():
+<ul>
+<li>1lines/2lines modes</li>
+<li>8 bit/ 16 bits data formats</li>
+<li>CRC calculation enabled/disabled.</li>
+</ul></li>
+<li>Remove waiting loop under ISR when closing the communication.</li>
+</ul></li>
+<li>All modes:
+<ul>
+<li>Adding switch USE_SPI_CRC to minimize number of statements when CRC calculation is disabled.</li>
+<li>Update Timeout management to check on global process.</li>
+<li>Update Error code management in all processes.</li>
+</ul></li>
+</ul></li>
+<li>Add note to the max frequencies reached in all modes.</li>
+<li>Add note about Master Receive mode restrictions :
+<ul>
+<li>Master Receive mode restriction:
+<div data-align="center">
+(#) In Master unidirectional receive-only mode (MSTR =1, BIDIMODE=0, RXONLY=0) or bidirectional receive mode (MSTR=1, BIDIMODE=1, BIDIOE=0), to ensure that the SPI does not initiate a new transfer the following procedure has to be respected:<br />
+(##) HAL_SPI_DeInit()<br />
+(##) HAL_SPI_Init()
+</div></li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Update for proper management of the external synchronization input selection
+<ul>
+<li>update of HAL_SAI_Init () function</li>
+<li>update definition of SAI_Block_SyncExt and SAI_Block_Synchronization groups</li>
+</ul></li>
+<li>Update SAI_SLOTACTIVE_X defines values</li>
+<li>Update HAL_SAI_Init() function for proper companding mode management</li>
+<li>Update SAI_Transmit_ITxxBit() functions to add the check on transfer counter before writing new data to SAIx_DR registers</li>
+<li>Update SAI_FillFifo() function to avoid issue when the number of data to transmit is smaller than the FIFO size</li>
+<li>Update HAL_SAI_EnableRxMuteMode() function for proper mute management</li>
+<li>Update SAI_InitPCM() function to support 24bits configuration</li>
+</ul></li>
+<li><strong>HAL ETH</strong> update
+<ul>
+<li>Removal of ETH MAC debug register defines</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>Update FLASH_MassErase() function to apply correctly voltage range parameter</li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Update I2S_DMATxCplt() and I2S_DMARxCplt() to manage properly FullDuplex mode without any risk of missing data.</li>
+</ul></li>
+<li><strong>LL FMC</strong> update
+<ul>
+<li>Update the FMC_NORSRAM_Init() function to use BurstAccessMode field properly</li>
+</ul></li>
+<li><strong>LL FSMC</strong> update
+<ul>
+<li>Update the FSMC_NORSRAM_Init() function to use BurstAccessMode field properly</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section10" aria-hidden="true"> <label for="collapse-section10" aria-hidden="true">V1.4.3 / 11-December-2015</label>
+<div>
+<h2 id="main-changes-22">Main Changes</h2>
+<ul>
+<li><strong>HAL Generic</strong> update
+<ul>
+<li>Update HAL weak empty callbacks to prevent unused argument compilation warnings with some compilers by calling the following line:
+<ul>
+<li>UNUSED(hppp);</li>
+</ul></li>
+<li>STM32Fxxx_User_Manual.chm files regenerated for HAL V1.4.3</li>
+</ul></li>
+<li><strong>HAL ETH</strong> update
+<ul>
+<li>Update HAL_ETH_Init() function to add timeout on the Software reset management</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section9" aria-hidden="true"> <label for="collapse-section9" aria-hidden="true">V1.4.2 / 10-November-2015</label>
+<div>
+<h2 id="main-changes-23">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation<br />
+</li>
+<li><strong>One change done on the HAL CRYP requires an update on the application code based on HAL V1.4.1</strong>
+<ul>
+<li>Update HAL_CRYP_DESECB_Decrypt() API to invert pPlainData and pCypherData parameters<br />
+</li>
+</ul></li>
+<li><strong>HAL generic</strong> update
+<ul>
+<li>Update HAL weak empty callbacks to prevent unused argument compilation warnings with some compilers by calling the following line:
+<ul>
+<li>UNUSED(hppp);<br />
+</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL CORTEX</strong> update
+<ul>
+<li>Remove duplication for __HAL_CORTEX_SYSTICKCLK_CONFIG() macro<br />
+</li>
+</ul></li>
+<li><strong>HAL HASH</strong> update
+<ul>
+<li>Rename HAL_HASH_STATETypeDef to HAL_HASH_StateTypeDef</li>
+<li>Rename HAL_HASH_PhaseTypeDef to HAL_HASH_PhaseTypeDef</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Add new macros __HAL_RCC_PPP_IS_CLK_ENABLED() to check on Clock enable/disable status</li>
+<li>Update __HAL_RCC_USB_OTG_FS_CLK_DISABLE() macro to remove the disable for the SYSCFG</li>
+<li>Update HAL_RCC_MCOConfig() API to use new defines for the GPIO Speed</li>
+<li>Generic update to improve the PLL VCO min value(100MHz): PLLN, PLLI2S and PLLSAI min value is 50 instead of 192</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>__HAL_FLASH_INSTRUCTION_CACHE_RESET() macro: update to reset ICRST bit in the ACR register after setting it.</li>
+<li>Update to support until 15 FLASH wait state (FLASH_LATENCY_15) for STM32F446xx devices</li>
+</ul></li>
+<li><strong>HAL CRYP</strong> update
+<ul>
+<li>Update HAL_CRYP_DESECB_Decrypt() API to fix the inverted pPlainData and pCypherData parameters issue</li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Update HAL_I2S_Init() API to call __HAL_RCC_I2S_CONFIG() macro when external I2S clock is selected</li>
+</ul></li>
+<li><strong>HAL LTDC</strong> update
+<ul>
+<li>Update HAL_LTDC_SetWindowPosition() API to configure Immediate reload register instead of vertical blanking reload register.</li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>Update HAL_TIM_ConfigClockSource() API to check only the required parameters</li>
+</ul></li>
+<li><strong>HAL NAND</strong> update
+<ul>
+<li>Update HAL_NAND_Read_Page()/HAL_NAND_Write_Page()/HAL_NAND_Read_SpareArea() APIs to manage correctly the NAND Page access</li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Update to use “=” instead of “|=” to clear flags in the MSR, TSR, RF0R and RF1R registers</li>
+</ul></li>
+<li><strong>HAL HCD</strong> update
+<ul>
+<li>Fix typo in __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE() macro implementation</li>
+</ul></li>
+<li><strong>HAL PCD</strong> update
+<ul>
+<li>Update HAL_PCD_IRQHandler() API to avoid issue when DMA mode enabled for Status Phase IN stage</li>
+</ul></li>
+<li><strong>LL FMC</strong> update
+<ul>
+<li>Update the FMC_NORSRAM_Extended_Timing_Init() API to remove the check on CLKDIvison and DataLatency parameters</li>
+<li>Update the FMC_NORSRAM_Init() API to add a check on the PageSize parameter for STM32F42/43xx devices</li>
+</ul></li>
+<li><strong>LL FSMC</strong> update
+<ul>
+<li>Update the FSMC_NORSRAM_Extended_Timing_Init() API to remove the check on CLKDIvison and DataLatency parameters</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section8" aria-hidden="true"> <label for="collapse-section8" aria-hidden="true">V1.4.1 / 09-October-2015</label>
+<div>
+<h2 id="main-changes-24">Main Changes</h2>
+<ul>
+<li><strong>HAL DSI</strong> update
+<ul>
+<li>Update TCCR register assigned value in HAL_DSI_ConfigHostTimeouts() function</li>
+<li>Update WPCR register assigned value in HAL_DSI_Init(), HAL_DSI_SetSlewRateAndDelayTuning(), HAL_DSI_SetSlewRateAndDelayTuning(), HAL_DSI_SetLowPowerRXFilter() / HAL_DSI_SetSDD(), HAL_DSI_SetLanePinsConfiguration(), HAL_DSI_SetPHYTimings(), HAL_DSI_ForceTXStopMode(), HAL_DSI_ForceRXLowPower(), HAL_DSI_ForceDataLanesInRX(), HAL_DSI_SetPullDown() and HAL_DSI_SetContentionDetectionOff() functions</li>
+<li>Update DSI_HS_PM_ENABLE define value</li>
+<li>Implement workaround for the hardware limitation: “The time to activate the clock between HS transmissions is not calculated correctly”</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section7" aria-hidden="true"> <label for="collapse-section7" aria-hidden="true">V1.4.0 / 14-August-2015</label>
+<div>
+<h2 id="main-changes-25">Main Changes</h2>
+<ul>
+<li>Add support of <strong>STM32F469xx, STM32F479xx, STM32F410Cx, STM32F410Rx and STM32F410Tx</strong> devices</li>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li>Add new HAL drivers for <strong>DSI</strong> and <strong>LPTIM</strong> peripherals</li>
+<li><strong>HAL ADC</strong> update
+<ul>
+<li>Rename ADC_CLOCKPRESCALER_PCLK_DIV2 define to ADC_CLOCK_SYNC_PCLK_DIV2</li>
+<li>Rename ADC_CLOCKPRESCALER_PCLK_DIV4 define to ADC_CLOCK_SYNC_PCLK_DIV4</li>
+<li>Rename ADC_CLOCKPRESCALER_PCLK_DIV6 define to ADC_CLOCK_SYNC_PCLK_DIV6</li>
+<li>Rename ADC_CLOCKPRESCALER_PCLK_DIV8 define to ADC_CLOCK_SYNC_PCLK_DIV8</li>
+</ul></li>
+<li><strong>HAL CORTEX</strong> update
+<ul>
+<li>Add specific API for MPU management
+<ul>
+<li>add MPU_Region_InitTypeDef structure</li>
+<li>add new function HAL_MPU_ConfigRegion()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL DMA</strong> update
+<ul>
+<li>Overall driver update for code optimization
+<ul>
+<li>add StreamBaseAddress and StreamIndex new fields in the DMA_HandleTypeDef structure</li>
+<li>add DMA_Base_Registers private structure</li>
+<li>add static function DMA_CalcBaseAndBitshift()</li>
+<li>update HAL_DMA_Init() function to use the new added static function</li>
+<li>update HAL_DMA_DeInit() function to optimize clear flag operations</li>
+<li>update HAL_DMA_Start_IT() function to optimize interrupts enable</li>
+<li>update HAL_DMA_PollForTransfer() function to optimize check on flags</li>
+<li>update HAL_DMA_IRQHandler() function to optimize interrupt flag management</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>update HAL_FLASH_Program_IT() function by removing the pending flag clear</li>
+<li>update HAL_FLASH_IRQHandler() function to improve erase operation procedure</li>
+<li>update FLASH_WaitForLastOperation() function by checking on end of operation flag</li>
+</ul></li>
+<li><strong>HAL GPIO</strong> update
+<ul>
+<li>Rename GPIO_SPEED_LOW define to GPIO_SPEED_FREQ_LOW</li>
+<li>Rename GPIO_SPEED_MEDIUM define to GPIO_SPEED_FREQ_MEDIUM</li>
+<li>Rename GPIO_SPEED_FAST define to GPIO_SPEED_FREQ_HIGH</li>
+<li>Rename GPIO_SPEED_HIGH define to GPIO_SPEED_FREQ_VERY_HIGH</li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Move I2S_Clock_Source defines to extension file to properly add the support of STM32F410xx devices</li>
+</ul></li>
+<li><strong>HAL LTDC</strong> update
+<ul>
+<li>rename HAL_LTDC_LineEvenCallback() function to HAL_LTDC_LineEventCallback()</li>
+<li>add new function HAL_LTDC_SetPitch()</li>
+<li>add new functions HAL_LTDC_StructInitFromVideoConfig() and HAL_LTDC_StructInitFromAdaptedCommandConfig() applicable only to STM32F469xx and STM32F479xx devices</li>
+</ul></li>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>move __HAL_PWR_VOLTAGESCALING_CONFIG() macro to extension file</li>
+<li>move PWR_WAKEUP_PIN2 define to extension file</li>
+<li>add PWR_WAKEUP_PIN3 define, applicable only to STM32F10xx devices</li>
+<li>add new functions HAL_PWREx_EnableWakeUpPinPolarityRisingEdge() and HAL_PWREx_EnableWakeUpPinPolarityFallingEdge(), applicable only to STM32F469xx and STM32F479xx devices</li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li>Update HAL_RTCEx_SetWakeUpTimer() and HAL_RTCEx_SetWakeUpTimer_IT() functions to properly check on the WUTWF flag</li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>add new defines TIM_SYSTEMBREAKINPUT_HARDFAULT, TIM_SYSTEMBREAKINPUT_PVD and TIM_SYSTEMBREAKINPUT_HARDFAULT_PVD, applicable only to STM32F410xx devices</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section6" aria-hidden="true"> <label for="collapse-section6" aria-hidden="true">V1.3.2 / 26-June-2015</label>
+<div>
+<h2 id="main-changes-26">Main Changes</h2>
+<ul>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li><strong>One changes done on the HAL may require an update on the application code based on HAL V1.3.1</strong>
+<ul>
+<li>HASH IT process: update to call the HAL_HASH_InCpltCallback() at the end of the complete buffer instead of every each 512 bits</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>HAL_RCCEx_PeriphCLKConfig() updates:
+<ul>
+<li>Update the LSE check condition after backup domain reset: update to check LSE ready flag when LSE oscillator is already enabled instead of check on LSE oscillator only when LSE is used as RTC clock source</li>
+<li>Use the right macro to check the PLLI2SQ parameters</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li>__HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG() macro: fix implementation issue</li>
+<li>__HAL_RTC_ALARM_GET_IT(), __HAL_RTC_ALARM_CLEAR_FLAG(), __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(), __HAL_RTC_TIMESTAMP_CLEAR_FLAG() and __HAL_RTC_TAMPER_CLEAR_FLAG() macros implementation changed: remove unused cast</li>
+<li>IS_RTC_TAMPER() macro: update to use literal instead of hardcoded value</li>
+<li>Add new parameter SecondFraction in RTC_TimeTypeDef structure</li>
+<li>HAL_RTC_GetTime() API update to support the new parameter SecondFraction</li>
+</ul></li>
+<li><strong>HAL ADC</strong> update
+<ul>
+<li>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.</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>FLASH_OB_GetRDP() API update to return uint8_t instead of FlagStatus</li>
+<li>__HAL_FLASH_GET_LATENCY() new macro add to get the flash latency</li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Fix the wrong definition of HAL_SPI_ERROR_FLAG literal</li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>HAL_I2S_Transmit() API update to check on busy flag only for I2S slave mode</li>
+</ul></li>
+<li><strong>HAL CRC</strong> update
+<ul>
+<li>__HAL_CRC_SET_IDR() macro implementation change to use WRITE_REG() instead of MODIFY_REG()</li>
+</ul></li>
+<li><strong>HAL DMA2D</strong> update
+<ul>
+<li>HAL_DMA2D_ConfigLayer() API update to use “=” instead of “|=” to erase BGCOLR and FGCOLR registers before setting the new configuration</li>
+</ul></li>
+<li><strong>HAL HASH</strong> update
+<ul>
+<li>HAL_HASH_<strong>MODE</strong>_Start_IT() (<strong>MODE</strong> stands for MD5, SHA1, SHA224 and SHA36) updates:
+<ul>
+<li>Fix processing fail for small input buffers</li>
+<li>Update to unlock the process and call return HAL_OK at the end of HASH processing to avoid incorrectly repeating software</li>
+<li>Update to properly manage the HashITCounter</li>
+<li>Update to call the HAL_HASH_InCpltCallback() at the end of the complete buffer instead of every each 512 bits</li>
+</ul></li>
+<li>__HAL_HASH_GET_FLAG() update to check the right register when the DINNE flag is selected</li>
+<li>HAL_HASH_SHA1_Accumulate() updates:
+<ul>
+<li>Add a call to the new IS_HASH_SHA1_BUFFER_SIZE() macro to check the size parameter.</li>
+<li>Add the following note in API description
+<ul>
+<li><span class="citation" data-cites="note">@note</span> Input buffer size in bytes must be a multiple of 4 otherwise the digest computation is corrupted.</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li>Update to define hardware independent literals names:
+<ul>
+<li>Rename RTC_TAMPERPIN_PC13 by RTC_TAMPERPIN_DEFAULT</li>
+<li>Rename RTC_TAMPERPIN_PA0 by RTC_TAMPERPIN_POS1</li>
+<li>Rename RTC_TAMPERPIN_PI8 by RTC_TAMPERPIN_POS1</li>
+<li>Rename RTC_TIMESTAMPPIN_PC13 by RTC_TIMESTAMPPIN_DEFAULT</li>
+<li>Rename RTC_TIMESTAMPPIN_PA0 by RTC_TIMESTAMPPIN_POS1</li>
+<li>Rename RTC_TIMESTAMPPIN_PI8 by RTC_TIMESTAMPPIN_POS1</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL ETH</strong> update
+<ul>
+<li>Remove duplicated IS_ETH_DUPLEX_MODE() and IS_ETH_RX_MODE() macros</li>
+<li>Remove illegal space ETH_MAC_READCONTROLLER_FLUSHING macro</li>
+<li>Update ETH_MAC_READCONTROLLER_XXX defined values (XXX can be IDLE, READING_DATA and READING_STATUS)</li>
+</ul></li>
+<li><strong>HAL PCD</strong> update
+<ul>
+<li>HAL_PCD_IRQHandler API: fix the bad Configuration of Turnaround Time</li>
+</ul></li>
+<li><strong>HAL HCD</strong> update
+<ul>
+<li>Update to use local variable in USB Host channel re-activation</li>
+</ul></li>
+<li><strong>LL FMC</strong> update
+<ul>
+<li>FMC_SDRAM_SendCommand() API: remove the following line: return HAL_ERROR;</li>
+</ul></li>
+<li><strong>LL USB</strong> update
+<ul>
+<li>USB_FlushTxFifo API: update to flush all Tx FIFO</li>
+<li>Update to use local variable in USB Host channel re-activation</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V1.3.1 / 25-Mars-2015</label>
+<div>
+<h2 id="main-changes-27">Main Changes</h2>
+<ul>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>Fix compilation issue with STM32F417xx product: update <strong>STM32F17xx</strong> by <strong>STM32F417xx</strong></li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Remove unused variable to avoid warning with TrueSTUDIO</li>
+</ul></li>
+<li><strong>HAL I2C</strong> update
+<ul>
+<li>I2C Polling/IT/DMA processes: move the wait loop on busy flag at the top of the processes, to ensure that software not perform any write access to I2C_CR1 register before hardware clearing STOP bit and to avoid also the waiting loop on BUSY flag under I2C/DMA ISR.</li>
+<li>Update busy flag Timeout value</li>
+<li>I2C Master Receive Processes update to disable ACK before generate the STOP</li>
+</ul></li>
+<li><strong>HAL DAC</strong> update
+<ul>
+<li>Fix V1.3.0 regression issue with DAC software trigger configuration</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.3.0 / 09-Mars-2015</label>
+<div>
+<h2 id="main-changes-28">Main Changes</h2>
+<ul>
+<li>Add support of <strong>STM32F446xx</strong> devices</li>
+<li>General updates to fix known defects and enhancements implementation</li>
+<li>Add new HAL drivers for <strong>CEC</strong>, <strong>QSPI</strong>, <strong>FMPI2C</strong> and <strong>SPDIFRX</strong> peripherals</li>
+<li><strong>Two changes done on the HAL requires an update on the application code based on HAL V1.2.0</strong>
+<ul>
+<li>Overall <strong>SAI driver rework</strong> to have exhaustive support of the peripheral features: details are provided in <strong>HAL SAI</strong> update section below –&gt; <strong>Compatibility with previous version is impacted</strong></li>
+<li>CRYP driver updated to support multi instance,so user must ensure that the new parameter Instance is initialized in his application(CRYPHandle.Instance = CRYP)</li>
+</ul></li>
+<li><strong>HAL Generic</strong> update
+<ul>
+<li>stm32f4xx_hal_def.h
+<ul>
+<li>Remove NULL definition and add include for stdio.h</li>
+</ul></li>
+<li>stm32_hal_legacy.h
+<ul>
+<li>Update method to manage deference in alias implementation between all STM32 families</li>
+</ul></li>
+<li>stm32f4xx_hal_ppp.c
+<ul>
+<li>HAL_PPP_Init(): update to force the HAL_PPP_STATE_RESET before calling the HAL_PPP_MspInit()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Add new function HAL_RCCEx_GetPeriphCLKFreq()</li>
+<li>Move RCC_PLLInitTypeDef structure to extension file and add the new PLLR field specific to STM32F446xx devices</li>
+<li>Move the following functions to extension file and add a __weak attribute in generic driver : this update is related to new system clock source (PLL/PLLR) added and only available for STM32F44xx devices
+<ul>
+<li>HAL_RCC_OscConfig()</li>
+<li>HAL_RCC_GetSysClockFreq()</li>
+<li>HAL_RCC_GetOscConfig()</li>
+</ul></li>
+<li>Move the following macro to extension file as they have device dependent implementation
+<ul>
+<li>__HAL_RCC_PLL_CONFIG()</li>
+<li>__HAL_RCC_PLLI2S_CONFIG()</li>
+<li>__HAL_RCC_I2S_CONFIG()</li>
+</ul></li>
+<li>Add new structure RCC_PLLI2SInitTypeDef containing new PLLI2S division factors used only w/ STM32F446xx devices</li>
+<li>Add new structure RCC_PLLSAIInitTypeDef containing new PLLSAI division factors used only w/ STM32F446xx devices</li>
+<li>Add new RCC_PeriphCLKInitTypeDef to support the peripheral source clock selection for (I2S, SAI, SDIO, FMPI2C, CEC, SPDIFRX and CLK48)</li>
+<li>Update the HAL_RCCEx_PeriphCLKConfig() and HAL_RCCEx_GetPeriphCLKConfig() functions to support the new peripherals Clock source selection</li>
+<li>Add __HAL_RCC_PLL_CONFIG() macro (the number of parameter and the implementation depend on the device part number)</li>
+<li>Add __HAL_RCC_PLLI2S_CONFIG() macro(the number of parameter and the implementation depend on device part number)</li>
+<li>Update __HAL_RCC_PLLSAI_CONFIG() macro to support new PLLSAI factors (PLLSAIM and PLLSAIP)</li>
+<li>Add new macros for clock enable/Disable for the following peripherals (CEC, SPDIFRX, SAI2, QUADSPI)</li>
+<li>Add the following new macros for clock source selection :
+<ul>
+<li>__HAL_RCC_SAI1_CONFIG() / __HAL_RCC_GET_SAI1_SOURCE()</li>
+<li>__HAL_RCC_SAI2_CONFIG() / __HAL_RCC_GET_SAI2_SOURCE()</li>
+<li>__HAL_RCC_I2S1_CONFIG() / __HAL_RCC_GET_I2S1_SOURCE()</li>
+<li>__HAL_RCC_I2S2_CONFIG() / __HAL_RCC_GET_I2S2_SOURCE()</li>
+<li>__HAL_RCC_CEC_CONFIG() / __HAL_RCC__GET_CEC_SOURCE()</li>
+<li>__HAL_RCC_FMPI2C1_CONFIG() / __HAL_RCC_GET_FMPI2C1_SOURCE()</li>
+<li>__HAL_RCC_SDIO_CONFIG() / __HAL_RCC_GET_SDIO_SOURCE()</li>
+<li>__HAL_RCC_CLK48_CONFIG() / __HAL_RCC_GET_CLK48_SOURCE()</li>
+<li>__HAL_RCC_SPDIFRXCLK_CONFIG() / __HAL_RCC_GET_SPDIFRX_SOURCE()</li>
+</ul></li>
+<li>__HAL_RCC_PPP_CLK_ENABLE(): Implement workaround to cover RCC limitation regarding peripheral enable delay</li>
+<li>HAL_RCC_OscConfig() fix issues:
+<ul>
+<li>Add a check on LSERDY flag when LSE_BYPASS is selected as new state for LSE oscillator.</li>
+</ul></li>
+<li>Add new possible value RCC_PERIPHCLK_PLLI2S to be selected as PeriphClockSelection parameter in the RCC_PeriphCLKInitTypeDef structure to allow the possibility to output the PLLI2S on MCO without activating the I2S or the SAI.</li>
+<li><p>__HAL_RCC_HSE_CONFIG() macro: add the comment below:<br />
+* <span class="citation" data-cites="note">@note</span> Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not supported by this macro.<br />
+* User should request a transition to HSE Off first and then HSE On or HSE Bypass.</p></li>
+<li><p>__HAL_RCC_LSE_CONFIG() macro: add the comment below:<br />
+* <span class="citation" data-cites="note">@note</span> Transition LSE Bypass to LSE On and LSE On to LSE Bypass are not supported by this macro.<br />
+* User should request a transition to LSE Off first and then LSE On or LSE Bypass.</p></li>
+<li>Add the following new macros for PLL source and PLLM selection :
+<ul>
+<li>__HAL_RCC_PLL_PLLSOURCE_CONFIG()</li>
+<li>__HAL_RCC_PLL_PLLM_CONFIG()</li>
+</ul></li>
+<li>Macros rename:
+<ul>
+<li>HAL_RCC_OTGHS_FORCE_RESET() by HAL_RCC_USB_OTG_HS_FORCE_RESET()</li>
+<li>HAL_RCC_OTGHS_RELEASE_RESET() by HAL_RCC_USB_OTG_HS_RELEASE_RESET()</li>
+<li>HAL_RCC_OTGHS_CLK_SLEEP_ENABLE() by HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE()</li>
+<li>HAL_RCC_OTGHS_CLK_SLEEP_DISABLE() by HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE()</li>
+<li>HAL_RCC_OTGHSULPI_CLK_SLEEP_ENABLE() by HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE()</li>
+<li>HAL_RCC_OTGHSULPI_CLK_SLEEP_DISABLE() by HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE()</li>
+</ul></li>
+<li>Add __HAL_RCC_SYSCLK_CONFIG() new macro to configure the system clock source (SYSCLK)</li>
+<li>__HAL_RCC_GET_SYSCLK_SOURCE() updates:
+<ul>
+<li>Add new RCC Literals:
+<ul>
+<li>RCC_SYSCLKSOURCE_STATUS_HSI</li>
+<li>RCC_SYSCLKSOURCE_STATUS_HSE</li>
+<li>RCC_SYSCLKSOURCE_STATUS_PLLCLK</li>
+<li>RCC_SYSCLKSOURCE_STATUS_PLLRCLK</li>
+</ul></li>
+<li>Update macro description to refer to the literals above</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>Add new define PWR_WAKEUP_PIN2</li>
+<li>Add new API to Control/Get VOS bits of CR register
+<ul>
+<li>HAL_PWR_HAL_PWREx_ControlVoltageScaling()</li>
+<li>HAL_PWREx_GetVoltageRange()</li>
+</ul></li>
+<li>__HAL_PWR_ VOLTAGESCALING_CONFIG(): Implement workaround to cover VOS limitation delay when PLL is enabled after setting the VOS configuration</li>
+</ul></li>
+<li><strong>HAL GPIO</strong> update
+<ul>
+<li>Add the new Alternate functions literals related to remap for <strong>SPI, USART, I2C, SPDIFRX, CEC and QSPI</strong></li>
+<li>HAL_GPIO_DeInit(): Update to check if GPIO Pin x is already used in EXTI mode on another GPIO Port before De-Initialize the EXTI registers</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>__HAL_FLASH_INSTRUCTION_CACHE_RESET() macro: update to reset ICRST bit in the ACR register after setting it.</li>
+<li>__HAL_FLASH_DATA_CACHE_RESET() macro: update to reset DCRST bit in the ACR register after setting it.</li>
+</ul></li>
+<li><strong>HAL ADC</strong> update
+<ul>
+<li>Add new literal: ADC_SOFTWARE_START to be used as possible value for the ExternalTrigConv parameter in the ADC_InitTypeDef structure to select the ADC software trigger mode.</li>
+<li>IS_ADC_CHANNEL() macro update to don’t assert stop the ADC_CHANNEL_TEMPSENSOR value</li>
+<li>HAL_ADC_PollForConversion(): update to manage particular case when ADC configured in DMA mode and ADC sequencer with several ranks and polling for end of each conversion</li>
+<li>HAL_ADC_Start()/HAL_ADC_Start_IT() /HAL_ADC_Start_DMA() update:
+<ul>
+<li>unlock the process before starting the ADC software conversion.</li>
+<li>Optimize the ADC stabilization delays</li>
+</ul></li>
+<li>__HAL_ADC_GET_IT_SOURCE() update macro implementation</li>
+<li>Add more details in ‘How to use this driver’ section</li>
+</ul></li>
+<li><strong>HAL DAC</strong> update
+<ul>
+<li>Add new macro to check if the specified DAC interrupt source is enabled or disabled
+<ul>
+<li>__HAL_DAC_GET_IT_SOURCE()</li>
+</ul></li>
+<li>HAL_DACEx_TriangleWaveGeneration() update to use DAC CR bit mask definition</li>
+<li>HAL_DACEx_NoiseWaveGeneration() update to use DAC CR bit mask definition</li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>CanTxMsgTypeDef structure: update to use uint8_t Data[8] instead of uint32_t Data[8]</li>
+<li>CanRxMsgTypeDef structure: update to use uint8_t Data[8] instead of uint32_t Data[8]</li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li>Update to use CMSIS mask definition instead of hardcoded values (EXTI_IMR_IM17, EXTI_IMR_IM19..)</li>
+</ul></li>
+<li><strong>HAL LTDC</strong> update
+<ul>
+<li>LTDC_SetConfig() update to allow the drawing of partial bitmap in active layer.</li>
+</ul></li>
+<li><strong>HAL USART</strong> update
+<ul>
+<li>HAL_USART_Init() fix USART baud rate configuration issue: USART baud rate is twice Higher than expected</li>
+</ul></li>
+<li><strong>HAL SMARTCARD</strong> update
+<ul>
+<li>HAL_SMARTCARD_Transmit_IT() update to force the disable for the ERR interrupt to avoid the OVR interrupt</li>
+<li>HAL_SMARTCARD_IRQHandler() update check condition for transmission end</li>
+<li>Clean up: remove the following literals that aren’t used in smartcard mode
+<ul>
+<li>SMARTCARD_PARITY_NONE</li>
+<li>SMARTCARD_WORDLENGTH_8B</li>
+<li>SMARTCARD_STOPBITS_1</li>
+<li>SMARTCADR_STOPBITS_2</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>HAL_SPI_Transmit_DMA()/HAL_SPI_Receive_DMA()/HAL_SPI_TarnsmitReceive_DMA() update to unlock the process before enabling the SPI peripheral</li>
+<li>HAL_SPI_Transmit_DMA() update to manage correctly the DMA RX stream in SPI Full duplex mode</li>
+<li>Section SPI_Exported_Functions_Group2 update to remove duplication in *.chm UM</li>
+</ul></li>
+<li><strong>HAL CRYP</strong> update
+<ul>
+<li>Update to manage multi instance:
+<ul>
+<li>Add new parameter Instance in the CRYP_HandleTypeDef Handle structure.</li>
+<li>Add new parameter in all HAL CRYP macros
+<ul>
+<li>example: __HAL_CRYP_ENABLE() updated by __HAL_CRYP_ENABLE(__HANDLE__)</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li><strong>HAL DCMI</strong> update
+<ul>
+<li>Add an extension driver stm32f4xx_hal_dcmi_ex.c/h to manage the support of new Black and White feature</li>
+<li>Add __weak attribute for HAL_DCMI_Init() function and add a new implementation in the extension driver to manage the black and white configuration only available in the STM32F446xx devices.</li>
+<li>Move DCMI_InitTypeDef structure to extension driver and add the following new fields related to black and white feature: ByteSelectMode, ByteSelectStart, LineSelectMode and LineSelectStart</li>
+</ul></li>
+<li><strong>HAL PCD</strong> update
+<ul>
+<li>Add the support of LPM feature
+<ul>
+<li>add PCD_LPM_StateTypeDef enum</li>
+<li>update PCD_HandleTypeDef structure to support the LPM feature</li>
+<li>add new functions HAL_PCDEx_ActivateLPM(), HAL_PCDEx_DeActivateLPM() and HAL_PCDEx_LPM_Callback() in the stm32f4xx_hal_pcd_ex.h/.c files</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>Add TIM_TIM11_SPDIFRX define</li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Add stm32f4xx_hal_sai_ex.h/.c files for the SAI_BlockSynchroConfig() and the SAI_GetInputClock() management</li>
+<li>Add new defines HAL_SAI_ERROR_AFSDET, HAL_SAI_ERROR_LFSDET, HAL_SAI_ERROR_CNREADY, HAL_SAI_ERROR_WCKCFG, HAL_SAI_ERROR_TIMEOUT in the SAI_Error_Code group</li>
+<li>Add new defines SAI_SYNCEXT_DISABLE, SAI_SYNCEXT_IN_ENABLE, SAI_SYNCEXT_OUTBLOCKA_ENABLE, SAI_SYNCEXT_OUTBLOCKB_ENABLE for the SAI External synchronization</li>
+<li>Add new defines SAI_I2S_STANDARD, SAI_I2S_MSBJUSTIFIED, SAI_I2S_LSBJUSTIFIED, SAI_PCM_LONG and SAI_PCM_SHORT for the SAI Supported protocol</li>
+<li>Add new defines SAI_PROTOCOL_DATASIZE_16BIT, SAI_PROTOCOL_DATASIZE_16BITEXTENDED, SAI_PROTOCOL_DATASIZE_24BIT and SAI_PROTOCOL_DATASIZE_32BIT for SAI protocol data size</li>
+<li>Add SAI Callback prototype definition</li>
+<li>Update SAI_InitTypeDef structure by adding new fields: SynchroExt, Mckdiv, MonoStereoMode, CompandingMode, TriState</li>
+<li>Update SAI_HandleTypeDef structure:
+<ul>
+<li>remove uint16_t <em>pTxBuffPtr, </em>pRxBuffPtr, TxXferSize, RxXferSize, TxXferCount and RxXferCount and replace them respectively by uint8_t *pBuffPtr, uint16_t XferSize and uint16_t XferCount</li>
+<li>add mutecallback field</li>
+<li>add struct __SAI_HandleTypeDef *hsai field</li>
+</ul></li>
+<li>Remove SAI_CLKSOURCE_PLLR and SAI_CLOCK_PLLSRC defines</li>
+<li>Add SAI_CLKSOURCE_NA define</li>
+<li>Add SAI_AUDIO_FREQUENCY_MCKDIV define</li>
+<li>Add SAI_SPDIF_PROTOCOL define</li>
+<li>Add SAI_SYNCHRONOUS_EXT define</li>
+<li>Add new functions HAL_SAI_InitProtocol(), HAL_SAI_Abort(), HAL_SAI_EnableTxMuteMode(), HAL_SAI_DisableTxMuteMode(), HAL_SAI_EnableRxMuteMode(), HAL_SAI_DisableRxMuteMode()</li>
+<li>Update HAL_SAI_Transmit(), HAL_SAI_Receive(), HAL_SAI_Transmit_IT(), HAL_SAI_Receive_IT(), HAL_SAI_Transmit_DMA(), HAL_SAI_Receive_DMA() functions to use <strong>uint8_t <em>pData<strong> instead of </strong>uint16_t </em>pData</strong> –&gt; <strong>This update is mainly impacting the compatibility with previous driver version.</strong></li>
+</ul></li>
+<li><strong>HAL I2S</strong> update
+<ul>
+<li>Split the following functions between Generic and Extended API based on full duplex management and add the attribute __weak in the Generic API
+<ul>
+<li>HAL_I2S_Init(), HAL_I2S_DMAPause(), HAL_I2S_DMAStop(), HAL_I2S_DMAResume(), HAL_I2S_IRQHandle()</li>
+</ul></li>
+<li>Move the following static functions from generic to extension driver
+<ul>
+<li>I2S_DMARxCplt() and I2S_DMATxCplt()</li>
+</ul></li>
+<li>Remove static attribute from I2S_Transmit_IT() and I2S_Receive_IT() functions</li>
+<li>Move I2SxEXT() macro to extension file</li>
+<li>Add I2S_CLOCK_PLLR and I2S_CLOCK_PLLSRC defines for I2S clock source</li>
+<li>Add new function I2S_GetInputClock()</li>
+</ul></li>
+<li><strong>HAL LL FMC</strong> update
+<ul>
+<li>Add WriteFifo and PageSize fields in the FMC_NORSRAM_InitTypeDef structure</li>
+<li>Add FMC_PAGE_SIZE_NONE, FMC_PAGE_SIZE_128, FMC_PAGE_SIZE_256, FMC_PAGE_SIZE_1024, FMC_WRITE_FIFO_DISABLE, FMC_WRITE_FIFO_ENABLE defines</li>
+<li>Update FMC_NORSRAM_Init(), FMC_NORSRAM_DeInit() and FMC_NORSRAM_Extended_Timing_Init() functions</li>
+</ul></li>
+<li><strong>HAL LL USB</strong> update
+<ul>
+<li>Update USB_OTG_CfgTypeDef structure to support LPM, lpm_enable field added</li>
+<li>Update USB_HostInit() and USB_DevInit() functions to support the VBUS Sensing B activation</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.2.0 / 26-December-2014</label>
+<div>
+<h2 id="main-changes-29">Main Changes</h2>
+<ul>
+<li><strong>Maintenance release to fix known defects and enhancements implementation</strong></li>
+<li><strong>Macros and literals renaming to ensure compatibles across STM32 series</strong>, backward compatibility maintained thanks to new added file stm32_hal_legacy.h under /Inc/Legacy</li>
+<li>Add *.chm UM for all drivers, a UM is provided for each superset RPN</li>
+<li>Update drivers to be C++ compliant</li>
+<li>Several update on source code formatting, for better UM generation (i.e. Doxygen tags updated)</li>
+<li><strong>Two changes done on the HAL requires an update on the application code based on HAL V1.1.0</strong>
+<ul>
+<li>LSI_VALUE constant has been corrected in stm32f4xx_hal_conf.h file, its value changed from 40 KHz to 32 KHz</li>
+<li>UART, USART, IRDA and SMARTCARD (referenced as PPP here below) drivers: in DMA transmit process, the code has been updated to avoid waiting on TC flag under DMA ISR, PPP TC interrupt is used instead. Below the update to be done on user application:
+<ul>
+<li>Configure and enable the USART IRQ in HAL_PPP_MspInit() function</li>
+<li>In stm32f4xx_it.c file, PPP_IRQHandler() function: add a call to HAL_PPP_IRQHandler() function</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL generic</strong> update
+<ul>
+<li>stm32f4xx_hal_def.h
+<ul>
+<li>Update NULL definition to fix C++ compilation issue</li>
+<li>Add UNUSED() macro</li>
+<li>Add a new define __NOINLINE to be used for the no inline code independent from tool chain</li>
+</ul></li>
+<li>stm32f4xx_hal_conf_template.h
+<ul>
+<li>LSI_VALUE constant has been corrected, its value changed from 40 KHz to 32 KHz</li>
+</ul></li>
+<li>Update all macros and literals naming to be uper case</li>
+<li>ErrorCode parameter in PPP_HandleTypeDef structure updated to uint32_t instead of enum HAL_PPP_ErrorTypeDef</li>
+<li>Remove the unused FLAG and IT assert macros</li>
+</ul></li>
+<li><strong>HAL ADC</strong> update
+<ul>
+<li>Fix temperature sensor channel configuration issue for STM32F427/437xx and STM32F429/439xx devices</li>
+</ul></li>
+<li><strong>HAL DAC</strong> update
+<ul>
+<li>HAL_DAC_ConfigChannel(): update the access to the DAC peripheral registers via the hdac handle instance</li>
+<li>HAL_DAC_IRQHandler(): update to check on both DAC_FLAG_DMAUDR1 and DAC_FLAG_DMAUDR2</li>
+<li>HAL_DACEx_NoiseWaveGenerate(): update to reset DAC CR register before setting the new DAC configuration</li>
+<li>HAL_DACEx_TriangleWaveGenerate(): update to reset DAC CR register before setting the new DAC configuration</li>
+</ul></li>
+<li><strong>HAL CAN</strong> update
+<ul>
+<li>Unlock the CAN process when communication error occurred</li>
+</ul></li>
+<li><strong>HAL CORTEX</strong> update
+<ul>
+<li>Add new macro IS_NVIC_DEVICE_IRQ() to check on negative values of IRQn parameter</li>
+</ul></li>
+<li><p><strong>HAL CRYP</strong> update</p>
+<ul>
+<li>HAL_CRYP_DESECB_Decrypt_DMA(): fix the inverted pPlainData and pCypherData parameters issue</li>
+<li>CRYPEx_GCMCCM_SetInitVector(): remove the IVSize parameter as the key length 192bits and 256bits are not supported by this version</li>
+<li>Add restriction for the CCM Encrypt/Decrypt API’s that only DataType equal to 8bits is supported</li>
+<li>HAL_CRYPEx_AESGCM_Finish():
+<ul>
+<li>Add restriction that the implementation is limited to 32bits inputs data length (Plain/Ciphertext, Header) compared with GCM stadards specifications (800-38D)</li>
+<li>Update Size parameter on 32bits instead of 16bits</li>
+<li>Fix issue with 16-bit Data Type: update to use intrinsic __ROR() instead of __REV16()</li>
+</ul></li>
+</ul></li>
+<li><p><strong>HAL DCMI</strong> update</p>
+<ul>
+<li>HAL_DCMI_ConfigCROP(): Invert assert macros to check Y0 and Ysize parameters</li>
+</ul></li>
+<li><p><strong>HAL DMA</strong> update</p>
+<ul>
+<li>HAL_DMA_Init(): Update to clear the DBM bit in the SxCR register before setting the new configuration</li>
+<li>DMA_SetConfig(): add to clear the DBM bit in the SxCR register</li>
+</ul></li>
+<li><p><strong>HAL FLASH</strong> update</p>
+<ul>
+<li>Add “HAL_” prefix in the defined values for the FLASH error code
+<ul>
+<li>Example: FLASH_ERROR_PGP renamed by <strong>HAL</strong>_FLASH_ERROR_PGP</li>
+</ul></li>
+<li>Clear the Flash ErrorCode in the FLASH_WaitForLastOperation() function</li>
+<li>Update FLASH_SetErrorCode() function to use “|=” operant to update the Flash ErrorCode parameter in the FLASH handle</li>
+<li>IS_FLASH_ADDRESS(): Update the macro check using ‘&lt;=’ condition instead of ‘&lt;’</li>
+<li>IS_OPTIONBYTE(): Update the macro check using ‘&lt;=’ condition instead of ‘&lt;’</li>
+<li>Add “FLASH_” prefix in the defined values of FLASH Type Program parameter
+<ul>
+<li>Example: TYPEPROGRAM_BYTE renamed by <strong>FLASH</strong>_TYPEPROGRAM_BYTE</li>
+</ul></li>
+<li>Add “FLASH_” prefix in the defined values of FLASH Type Erase parameter
+<ul>
+<li>Example: TYPEERASE_SECTORS renamed by <strong>FLASH</strong>_TYPEERASE_SECTORS</li>
+</ul></li>
+<li>Add “FLASH_” prefix in the defined values of FLASH Voltage Range parameter
+<ul>
+<li>Example: VOLTAGE_RANGE_1 renamed by <strong>FLASH</strong>_VOLTAGE_RANGE_1</li>
+</ul></li>
+<li>Add “OB_” prefix in the defined values of FLASH WRP State parameter
+<ul>
+<li>Example: WRPSTATE_ENABLE renamed by <strong>OB</strong>_WRPSTATE_ENABLE</li>
+</ul></li>
+<li>Add “OB_” prefix in the defined values of the FLASH PCROP State parameter
+<ul>
+<li>PCROPSTATE_DISABLE updated by <strong>OB</strong>_PCROP_STATE_DISABLE</li>
+<li>PCROPSTATE_ENABLE updated by <strong>OB</strong>_PCROP_STATE_ENABLE</li>
+</ul></li>
+<li>Change “OBEX” prefix by “OPTIONBYTE” prefix in these defines:
+<ul>
+<li>OBEX_PCROP by OPTIONBYTE_PCROP</li>
+<li>OBEX_BOOTCONFIG by OPTIONBYTE_BOOTCONFIG</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL ETH</strong> update
+<ul>
+<li>Fix macros naming typo
+<ul>
+<li>Update __HAL_ETH_EXTI_SET_RISING_<strong>EGDE</strong>_TRIGGER() by __HAL_ETH_EXTI_SET_RISING_<strong>EDGE</strong>_TRIGGER()</li>
+<li>Update __HAL_ETH_EXTI_SET_FALLING_<strong>EGDE</strong>_TRIGGER() by __HAL_ETH_EXTI_SET_FALLING_<strong>EDGE</strong>_TRIGGER()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>Add new API to manage SLEEPONEXIT and SEVONPEND bits of SCR register
+<ul>
+<li>HAL_PWR_DisableSleepOnExit()</li>
+<li>HAL_PWR_EnableSleepOnExit()</li>
+<li>HAL_PWR_EnableSEVOnPend()</li>
+<li>HAL_PWR_DisableSEVOnPend()</li>
+</ul></li>
+<li>HAL_PWR_EnterSTOPMode()
+<ul>
+<li>Update to clear the CORTEX SLEEPDEEP bit of SCR register before entering in sleep mode</li>
+<li>Update usage of __WFE() in low power entry function: if there is a pending event, calling __WFE() will not enter the CortexM4 core to sleep mode. The solution is to made the call below; the first __WFE() is always ignored and clears the event if one was already pending, the second is always applied<br />
+__SEV()<br />
+__WFE()<br />
+__WFE()</li>
+</ul></li>
+<li>Add new PVD configuration modes
+<ul>
+<li>PWR_PVD_MODE_NORMAL</li>
+<li>PWR_PVD_MODE_EVENT_RISING</li>
+<li>PWR_PVD_MODE_EVENT_FALLING</li>
+<li>PWR_PVD_MODE_EVENT_RISING_FALLING</li>
+</ul></li>
+<li>Add new macros to manage PVD Trigger
+<ul>
+<li>__HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE()</li>
+<li>__HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(</li>
+<li>__HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE()</li>
+<li>__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE()</li>
+<li>__HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE()</li>
+<li>__HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE()</li>
+</ul></li>
+<li>PVD macros:
+<ul>
+<li>Remove the __EXTILINE__ parameter</li>
+<li>Update to use prefix "__HAL_PWR_PVD_" instead of prefix "__HAL_PVD"</li>
+</ul></li>
+<li>Rename HAL_PWR_PVDConfig() by HAL_PWR_ConfigPVD()</li>
+<li>Rename HAL_PWREx_ActivateOverDrive() by HAL_PWREx_EnableOverDrive()</li>
+<li>Rename HAL_PWREx_DeactivateOverDrive() by HAL_PWREx_DisableOverDrive()</li>
+</ul></li>
+<li><strong>HAL GPIO</strong> update
+<ul>
+<li>HAL_GPIO_Init()/HAL_GPIO_DeInit(): add a call to the CMSIS assert macro to check GPIO instance: IS_GPIO_ALL_INSTANCE()</li>
+<li>HAL_GPIO_WritePin(): update to write in BSRR register</li>
+<li>Rename GPIO_GET_SOURCE() by GET_GPIO_INDEX() and move this later to file stm32f4xx_hal_gpio_ex.h</li>
+<li>Add new define for alternate function GPIO_AF5_SPI3 for STM32F429xx/439xx and STM32F427xx/437xx devices</li>
+</ul></li>
+<li><strong>HAL HASH</strong> update
+<ul>
+<li>HAL_HASH_MD5_Start_IT(): fix input address management issue<br />
+</li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>Rename the following Macros
+<ul>
+<li>__PPP_CLK_ENABLE() by __HAL_RCC_PPP_CLK_ENABLE()</li>
+<li>__PPP_CLK_DISABLE() by __HAL_RCC_PPP_CLK_DISABLE()</li>
+<li>__PPP_FORCE_RESET() by __HAL_RCC_PPP_FORCE_RESET()</li>
+<li>__PPP_RELEASE_RESET() by __HAL_RCC_PPP_RELEASE_RESET()</li>
+<li>__PPP_CLK_SLEEP_ENABLE() by __HAL_RCC_PPP_CLK_SLEEP_ENABLE()</li>
+<li>__PPP_CLK_SLEEP_DISABLE() by __HAL_RCC_PPP_CLK_SLEEP_DISABLE()</li>
+</ul></li>
+<li>IS_RCC_PLLSAIN_VALUE() macro: update the check condition</li>
+<li>Add description of RCC known Limitations</li>
+<li>Rename HAL_RCC_CCSCallback() by HAL_RCC_CSSCallback()</li>
+<li>HAL_RCC_OscConfig() fix issues:
+<ul>
+<li>Remove the disable of HSE oscillator when HSE_BYPASS is used as system clock source or as PPL clock source</li>
+<li>Add a check on HSERDY flag when HSE_BYPASS is selected as new state for HSE oscillator.</li>
+</ul></li>
+<li>Rename __HAL_RCC_I2SCLK() by __HAL_RCC_I2S_Config()</li>
+</ul></li>
+<li><p><strong>HAL I2S</strong> update</p>
+<ul>
+<li>HAL_I2S_Init(): add check on I2S instance using CMSIS macro IS_I2S_ALL_INSTANCE()</li>
+<li>HAL_I2S_IRQHandler() update for compliance w/ C++</li>
+<li>Add use of tmpreg variable in __HAL_I2S_CLEAR_OVRFLAG() and __HAL_I2S_CLEAR_UDRFLAG() macro for compliance with C++</li>
+<li>HAL_I2S_GetError(): update to return uint32_t instead of HAL_I2S_ErrorTypeDef enumeration</li>
+</ul></li>
+<li><p><strong>HAL I2C</strong> update</p>
+<ul>
+<li>Update to clear the POS bit in the CR1 register at the end of HAL_I2C_Master_Read_IT() and HAL_I2C_Mem_Read_IT() process</li>
+<li>Rename HAL_I2CEx_DigitalFilter_Config() by HAL_I2CEx_ConfigDigitalFilter()</li>
+<li>Rename HAL_I2CEx_AnalogFilter_Config() by HAL_I2CEx_ConfigAnalogFilter()</li>
+<li>Add use of tmpreg variable in __HAL_I2C_CLEAR_ADDRFLAG() and __HAL_I2C_CLEAR_STOPFLAG() macro for compliance with C++</li>
+</ul></li>
+<li><strong>HAL IrDA</strong> update
+<ul>
+<li>DMA transmit process; the code has been updated to avoid waiting on TC flag under DMA ISR, IrDA TC interrupt is used instead. Below the update to be done on user application:
+<ul>
+<li>Configure and enable the USART IRQ in HAL_IRDA_MspInit() function</li>
+<li>In stm32f4xx_it.c file, UASRTx_IRQHandler() function: add a call to HAL_IRDA_IRQHandler() function</li>
+</ul></li>
+<li>IT transmit process; the code has been updated to avoid waiting on TC flag under IRDA ISR, IrDA TC interrupt is used instead. No impact on user application</li>
+<li>Rename Macros: add prefix "__HAL"
+<ul>
+<li>__IRDA_ENABLE() by __HAL_IRDA_ENABLE()</li>
+<li>__IRDA_DISABLE() by __HAL_IRDA_DISABLE()</li>
+</ul></li>
+</ul></li>
+<li>Add new user macros to manage the sample method feature
+<ul>
+<li>__HAL_IRDA_ONE_BIT_SAMPLE_ENABLE()</li>
+<li>__HAL_IRDA_ONE_BIT_SAMPLE_DISABLE()</li>
+</ul></li>
+<li>HAL_IRDA_Transmit_IT(): update to remove the enable of the parity error interrupt</li>
+<li>Add use of tmpreg variable in __HAL_IRDA_CLEAR_PEFLAG() macro for compliance with C++</li>
+<li>HAL_IRDA_Transmit_DMA() update to follow the right procedure “Transmission using DMA” in the reference manual
+<ul>
+<li>Add clear the TC flag in the SR register before enabling the DMA transmit request</li>
+</ul></li>
+<li><strong>HAL IWDG</strong> update
+<ul>
+<li>Rename the defined IWDG keys:
+<ul>
+<li>KR_KEY_RELOAD by IWDG_KEY_RELOAD</li>
+<li>KR_KEY_ENABLE by IWDG_KEY_ENABLE</li>
+<li>KR_KEY_EWA by IWDG_KEY_WRITE_ACCESS_ENABLE</li>
+<li>KR_KEY_DWA by IWDG_KEY_WRITE_ACCESS_DISABLE</li>
+</ul></li>
+<li>Add new macros __HAL_IWDG_RESET_HANDLE_STATE() and __HAL_IWDG_CLEAR_FLAG()</li>
+<li>Update __HAL_IWDG_ENABLE_WRITE_ACCESS() and __HAL_IWDG_DISABLE_WRITE_ACCESS() as private macro</li>
+</ul></li>
+<li><p><strong>HAL SPI</strong> update</p>
+<ul>
+<li>HAL_SPI_TransmitReceive_DMA() update to remove the DMA Tx Error Callback initialization when SPI RxOnly mode is selected</li>
+<li>Add use of UNUSED(tmpreg) in __HAL_SPI_CLEAR_MODFFLAG(), __HAL_SPI_CLEAR_OVRFLAG(), __HAL_SPI_CLEAR_FREFLAG() to fix “Unused variable” warning with TrueSTUDIO.</li>
+<li>Rename Literals: remove “D” from “DISABLED” and “ENABLED”
+<ul>
+<li>SPI_TIMODE_DISABLED by SPI_TIMODE_DISABLE</li>
+<li>SPI_TIMODE_ENABLED by SPI_TIMODE_ENABLE</li>
+<li>SPI_CRCCALCULATION_DISABLED by SPI_CRCCALCULATION_DISABLE</li>
+<li>SPI_CRCCALCULATION_ENABLED by SPI_CRCCALCULATION_ENABLE</li>
+</ul></li>
+<li>Add use of tmpreg variable in __HAL_SPI_CLEAR_MODFFLAG(), __HAL_SPI_CLEAR_FREFLAG() and __HAL_SPI_CLEAR_OVRFLAG() macros for compliance with C++<br />
+</li>
+</ul></li>
+<li><p><strong>HAL SDMMC</strong> update</p>
+<ul>
+<li>IS_SDIO_ALL_INSTANCE() macro moved to CMSIS files</li>
+</ul></li>
+<li><strong>HAL LTDC</strong> update
+<ul>
+<li>HAL_LTDC_ConfigCLUT: optimize the function when pixel format is LTDC_PIXEL_FORMAT_AL44
+<ul>
+<li>Update the size of color look up table to 16 instead of 256 when the pixel format is LTDC_PIXEL_FORMAT_AL44</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL NAND</strong> update
+<ul>
+<li>Rename NAND Address structure to NAND_AddressTypeDef instead of NAND_AddressTypedef</li>
+<li>Update the used algorithm of these functions
+<ul>
+<li>HAL_NAND_Read_Page()</li>
+<li>HAL_NAND_Write_Page()</li>
+<li>HAL_NAND_Read_SpareArea()</li>
+<li>HAL_NAND_Write_SpareArea()</li>
+</ul></li>
+<li>HAL_NAND_Write_Page(): move initialization of tickstart before while loop</li>
+<li>HAL_NAND_Erase_Block(): add whait until NAND status is ready before exiting this function</li>
+</ul></li>
+<li><strong>HAL NOR</strong> update
+<ul>
+<li>Rename NOR Address structure to NOR_AddressTypeDef instead of NOR_AddressTypedef</li>
+<li>NOR Status literals renamed
+<ul>
+<li>NOR_SUCCESS by HAL_NOR_STATUS_SUCCESS</li>
+<li>NOR_ONGOING by HAL_NOR_STATUS_ONGOING</li>
+<li>NOR_ERROR by HAL_NOR_STATUS_ERROR</li>
+<li>NOR_TIMEOUT by HAL_NOR_STATUS_TIMEOUT</li>
+</ul></li>
+<li>HAL_NOR_GetStatus() update to fix Timeout issue and exit from waiting loop when timeout occurred</li>
+</ul></li>
+<li><strong>HAL PCCARD</strong> update
+<ul>
+<li>Rename PCCARD Address structure to HAL_PCCARD_StatusTypeDef instead of CF_StatusTypedef</li>
+<li>PCCARD Status literals renamed
+<ul>
+<li>CF_SUCCESS by HAL_PCCARD_STATUS_SUCCESS</li>
+<li>CF_ONGOING by HAL_PCCARD_STATUS_ONGOING</li>
+<li>CF_ERROR by HAL_PCCARD_STATUS_ERROR</li>
+<li>CF_TIMEOUT by HAL_PCCARD_STATUS_TIMEOUT</li>
+</ul></li>
+<li>Update “CF” by “PCCARD” in functions, literals and macros</li>
+</ul></li>
+<li><strong>HAL PCD</strong> update
+<ul>
+<li>Rename functions
+<ul>
+<li>HAL_PCD_ActiveRemoteWakeup() by HAL_PCD_ActivateRemoteWakeup()</li>
+<li>HAL_PCD_DeActiveRemoteWakeup() by HAL_PCD_DeActivateRemoteWakeup()</li>
+</ul></li>
+<li>Rename literals
+<ul>
+<li>USB_FS_EXTI_TRIGGER_RISING_EDGE by USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE</li>
+<li>USB_FS_EXTI_TRIGGER_FALLING_EDGE by USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE</li>
+<li>USB_FS_EXTI_TRIGGER_BOTH_EDGE() by USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE</li>
+<li>USB_HS_EXTI_TRIGGER_RISING_EDGE by USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE</li>
+<li>USB_HS_EXTI_TRIGGER_FALLING_EDGE by USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE</li>
+<li>USB_HS_EXTI_TRIGGER_BOTH_EDGE by USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE</li>
+<li>USB_HS_EXTI_LINE_WAKEUP by USB_OTG_HS_EXTI_LINE_WAKEUP</li>
+<li>USB_FS_EXTI_LINE_WAKEUP by USB_OTG_FS_EXTI_LINE_WAKEUP</li>
+</ul></li>
+</ul></li>
+<li>Rename USB EXTI macros (FS, HS referenced as <strong>SUBBLOCK</strong> here below)
+<ul>
+<li>__HAL_USB_<strong>SUBBLOCK</strong>_EXTI_ENABLE_IT() by __HAL_USB_OTG_<strong>SUBBLOCK</strong>_WAKEUP_EXTI_ENABLE_IT()<br />
+</li>
+<li>__HAL_USB_<strong>SUBBLOCK</strong>_EXTI_DISABLE_IT() by __HAL_USB_OTG_<strong>SUBBLOCK</strong>_WAKEUP_EXTI_DISABLE_IT()</li>
+<li>__HAL_USB_<strong>SUBBLOCK</strong>_EXTI_GET_FLAG() by __HAL_USB_OTG_<strong>SUBBLOCK</strong>_WAKEUP_EXTI_GET_FLAG()</li>
+<li>__HAL_USB_<strong>SUBBLOCK</strong>_EXTI_CLEAR_FLAG() by __HAL_USB_OTG_<strong>SUBBLOCK</strong>_WAKEUP_EXTI_CLEAR_FLAG()</li>
+<li>__HAL_USB_<strong>SUBBLOCK</strong>_EXTI_SET_RISING_EGDE_TRIGGER() by __HAL_USB_OTG_<strong>SUBBLOCK</strong>_WAKEUP_EXTI_ENABLE_RISING_EDGE()</li>
+<li>__HAL_USB_<strong>SUBBLOCK</strong>_EXTI_SET_FALLING_EGDE_TRIGGER() by __HAL_USB_OTG_<strong>SUBBLOCK</strong>_WAKEUP_EXTI_ENABLE_FALLING_EDGE()</li>
+<li>__HAL_USB_<strong>SUBBLOCK</strong>_EXTI_SET_FALLINGRISING_TRIGGER() by __HAL_USB_OTG_<strong>SUBBLOCK</strong>_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE()</li>
+<li>__HAL_USB_<strong>SUBBLOCK</strong>_EXTI_GENERATE_SWIT() by __HAL_USB_OTG_<strong>SUBBLOCK</strong>_WAKEUP_EXTI_GENERATE_SWIT()<br />
+</li>
+</ul></li>
+<li><strong>HAL RNG</strong> update
+<ul>
+<li>Add new functions
+<ul>
+<li>HAL_RNG_GenerateRandomNumber(): to generate a 32-bits random number, return random value in argument and return HAL status.</li>
+<li>HAL_RNG_GenerateRandomNumber_IT(): to start generation of the 32-bits random number, user should call the HAL_RNG_ReadLastRandomNumber() function under the HAL_RNG_ReadyCallback() to get the generated random value.</li>
+<li>HAL_RNG_ReadLastRandomNumber(): to return the last random value stored in the RNG handle</li>
+</ul></li>
+<li>HAL_RNG_GetRandomNumber(): return value update (obsolete), replaced by HAL_RNG_GenerateRandomNumber()</li>
+<li>HAL_RNG_GetRandomNumber_IT(): wrong implementation (obsolete), replaced by HAL_RNG_GenerateRandomNumber_IT()</li>
+<li>__HAL_RNG_CLEAR_FLAG() macro (obsolete), replaced by new __HAL_RNG_CLEAR_IT() macro</li>
+<li>Add new define for RNG ready interrupt: RNG_IT_DRDY</li>
+</ul></li>
+<li><strong>HAL RTC</strong> update
+<ul>
+<li><p>HAL_RTC_GetTime() and HAL_RTC_GetDate(): add the comment below<br />
+* <span class="citation" data-cites="note">@note</span> You must call HAL_RTC_GetDate() after HAL_RTC_GetTime() to unlock the values<br />
+* in the higher-order calendar shadow registers to ensure consistency between the time and date values.<br />
+* Reading RTC current time locks the values in calendar shadow registers until Current date is read.</p></li>
+<li>Rename literals: add prefix "__HAL"
+<ul>
+<li>FORMAT_BIN by HAL_FORMAT_BIN</li>
+<li>FORMAT_BCD by HAL_FORMAT_BCD</li>
+</ul></li>
+<li>Rename macros (ALARM, WAKEUPTIMER and TIMESTAMP referenced as <strong>SUBBLOCK</strong> here below)
+<ul>
+<li>__HAL_RTC_EXTI_ENABLE_IT() by __HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_ENABLE_IT()</li>
+<li>__HAL_RTC_EXTI_DISABLE_IT() by __HAL_RTC__<strong>SUBBLOCK</strong>_EXTI_DISABLE_IT()</li>
+<li>__HAL_RTC_EXTI_CLEAR_FLAG() by __HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_CLEAR_FLAG()</li>
+<li>__HAL_RTC_EXTI_GENERATE_SWIT() by __HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_GENERATE_SWIT()</li>
+</ul></li>
+<li>Add new macros (ALARM, WAKEUPTIMER and TAMPER_TIMESTAMP referenced as SUBBLOCK here below)
+<ul>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_GET_IT_SOURCE()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_ENABLE_EVENT()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_DISABLE_EVENT()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_ENABLE_FALLING_EDGE()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_DISABLE_FALLING_EDGE()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_ENABLE_RISING_EDGE()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_DISABLE_RISING_EDGE()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_ENABLE_RISING_FALLING_EDGE()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_DISABLE_RISING_FALLING_EDGE()</li>
+<li>__HAL_RTC_<strong>SUBBLOCK</strong>_EXTI_GET_FLAG()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SAI</strong> update
+<ul>
+<li>Update SAI_STREOMODE by SAI_STEREOMODE</li>
+<li>Update FIFO status Level defines in upper case</li>
+<li>Rename literals: remove “D” from “DISABLED” and “ENABLED”
+<ul>
+<li>SAI_OUTPUTDRIVE_DISABLED by SAI_OUTPUTDRIVE_DISABLE</li>
+<li>SAI_OUTPUTDRIVE_ENABLED by SAI_OUTPUTDRIVE_ENABLE</li>
+<li>SAI_MASTERDIVIDER_ENABLED by SAI_MASTERDIVIDER_ENABLE</li>
+<li>SAI_MASTERDIVIDER_DISABLED by SAI_MASTERDIVIDER_DISABLE</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SD</strong> update
+<ul>
+<li>Rename SD_CMD_SD_APP_STAUS by SD_CMD_SD_APP_STATUS</li>
+<li>SD_PowerON() updated to add 1ms required power up waiting time before starting the SD initialization sequence</li>
+<li>SD_DMA_RxCplt()/SD_DMA_TxCplt(): add a call to HAL_DMA_Abort()</li>
+<li>HAL_SD_ReadBlocks() update to set the defined DATA_BLOCK_SIZE as SDIO DataBlockSize parameter</li>
+<li>HAL_SD_ReadBlocks_DMA()/HAL_SD_WriteBlocks_DMA() update to call the HAL_DMA_Start_IT() function with DMA Datalength set to BlockSize/4 as the DMA is configured in word</li>
+</ul></li>
+<li><strong>HAL SMARTCARD</strong> update
+<ul>
+<li>DMA transmit process; the code has been updated to avoid waiting on TC flag under DMA ISR, SMARTCARD TC interrupt is used instead. Below the update to be done on user application:
+<ul>
+<li>Configure and enable the USART IRQ in HAL_SAMRTCARD_MspInit() function</li>
+<li>In stm32f4xx_it.c file, UASRTx_IRQHandler() function: add a call to HAL_SMARTCARD_IRQHandler() function</li>
+</ul></li>
+<li>IT transmit process; the code has been updated to avoid waiting on TC flag under SMARTCARD ISR, SMARTCARD TC interrupt is used instead. No impact on user application</li>
+<li>Rename macros: add prefix "__HAL"
+<ul>
+<li>__SMARTCARD_ENABLE() by __HAL_SMARTCARD_ENABLE()</li>
+<li>__SMARTCARD_DISABLE() by __HAL_SMARTCARD_DISABLE()</li>
+<li>__SMARTCARD_ENABLE_IT() by __HAL_SMARTCARD_ENABLE_IT()</li>
+<li>__SMARTCARD_DISABLE_IT() by __HAL_SMARTCARD_DISABLE_IT()</li>
+<li>__SMARTCARD_DMA_REQUEST_ENABLE() by __HAL_SMARTCARD_DMA_REQUEST_ENABLE()</li>
+<li>__SMARTCARD_DMA_REQUEST_DISABLE() by __HAL_SMARTCARD_DMA_REQUEST_DISABLE()</li>
+</ul></li>
+<li>Rename literals: remove “D” from “DISABLED” and “ENABLED”
+<ul>
+<li>SMARTCARD_NACK_ENABLED by SMARTCARD_NACK_ENABLE</li>
+<li>SMARTCARD_NACK_DISABLED by SMARTCARD_NACK_DISABLE</li>
+</ul></li>
+<li>Add new user macros to manage the sample method feature
+<ul>
+<li>__HAL_SMARTCARD_ONE_BIT_SAMPLE_ENABLE()</li>
+<li>__HAL_SMARTCARD_ONE_BIT_SAMPLE_DISABLE()</li>
+</ul></li>
+<li>Add use of tmpreg variable in __HAL_SMARTCARD_CLEAR_PEFLAG() macro for compliance with C++</li>
+<li>HAL_SMARTCARD_Transmit_DMA() update to follow the right procedure “Transmission using DMA” in the reference manual
+<ul>
+<li>Add clear the TC flag in the SR register before enabling the DMA transmit request</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>Add TIM_CHANNEL_ALL as possible value for all Encoder Start/Stop APIs Description</li>
+<li>HAL_TIM_OC_ConfigChannel() remove call to IS_TIM_FAST_STATE() assert macro</li>
+<li>HAL_TIM_PWM_ConfigChannel() add a call to IS_TIM_FAST_STATE() assert macro to check the OCFastMode parameter</li>
+<li>HAL_TIM_DMADelayPulseCplt() Update to set the TIM Channel before to call HAL_TIM_PWM_PulseFinishedCallback()</li>
+<li>HAL_TIM_DMACaptureCplt() update to set the TIM Channel before to call HAL_TIM_IC_CaptureCallback()</li>
+<li>TIM_ICx_ConfigChannel() update to fix Timer CCMR1 register corruption when setting ICFilter parameter</li>
+<li>HAL_TIM_DMABurst_WriteStop()/HAL_TIM_DMABurst_ReadStop() update to abort the DMA transfer for the specific TIM channel</li>
+<li>Add new function for TIM Slave configuration in IT mode: HAL_TIM_SlaveConfigSynchronization_IT()</li>
+<li>HAL_TIMEx_ConfigBreakDeadTime() add an assert check on Break &amp; DeadTime parameters values</li>
+<li>HAL_TIMEx_OCN_Start_IT() add the enable of Break Interrupt for all output modes</li>
+<li>Add new macros to ENABLE/DISABLE URS bit in TIM CR1 register:
+<ul>
+<li>__HAL_TIM_URS_ENABLE()</li>
+<li>__HAL_TIM_URS_DISABLE()</li>
+</ul></li>
+<li>Add new macro for TIM Edge modification: __HAL_TIM_SET_CAPTUREPOLARITY()</li>
+</ul></li>
+<li><strong>HAL UART</strong> update
+<ul>
+<li>Add IS_LIN_WORD_LENGTH() and IS_LIN_OVERSAMPLING() macros: to check respectively WordLength and OverSampling parameters in LIN mode</li>
+<li>DMA transmit process; the code has been updated to avoid waiting on TC flag under DMA ISR, UART TC interrupt is used instead. Below the update to be done on user application:
+<ul>
+<li>Configure and enable the USART IRQ in HAL_UART_MspInit() function</li>
+<li>In stm32f4xx_it.c file, USARTx_IRQHandler() function: add a call to HAL_UART_IRQHandler() function</li>
+</ul></li>
+<li>IT transmit process; the code has been updated to avoid waiting on TC flag under UART ISR, UART TC interrupt is used instead. No impact on user application</li>
+<li>Rename macros:
+<ul>
+<li>__HAL_UART_ONEBIT_ENABLE() by __HAL_UART_ONE_BIT_SAMPLE_ENABLE()</li>
+<li>__HAL_UART_ONEBIT_DISABLE() by __HAL_UART_ONE_BIT_SAMPLE_DISABLE()</li>
+</ul></li>
+<li>Rename literals:
+<ul>
+<li>UART_WAKEUPMETHODE_IDLELINE by UART_WAKEUPMETHOD_IDLELINE</li>
+<li>UART_WAKEUPMETHODE_ADDRESSMARK by UART_WAKEUPMETHOD_ADDRESSMARK</li>
+</ul></li>
+<li>Add use of tmpreg variable in __HAL_UART_CLEAR_PEFLAG() macro for compliance with C++</li>
+<li>HAL_UART_Transmit_DMA() update to follow the right procedure “Transmission using DMA” in the reference manual
+<ul>
+<li>Add clear the TC flag in the SR register before enabling the DMA transmit request</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL USART</strong> update
+<ul>
+<li>DMA transmit process; the code has been updated to avoid waiting on TC flag under DMA ISR, USART TC interrupt is used instead. Below the update to be done on user application:
+<ul>
+<li>Configure and enable the USART IRQ in HAL_USART_MspInit() function</li>
+<li>In stm32f4xx_it.c file, USARTx_IRQHandler() function: add a call to HAL_USART_IRQHandler() function</li>
+</ul></li>
+<li>IT transmit process; the code has been updated to avoid waiting on TC flag under USART ISR, USART TC interrupt is used instead. No impact on user application</li>
+<li>HAL_USART_Init() update to enable the USART oversampling by 8 by default in order to reach max USART frequencies</li>
+<li>USART_DMAReceiveCplt() update to set the new USART state after checking on the old state</li>
+<li>HAL_USART_Transmit_DMA()/HAL_USART_TransmitReceive_DMA() update to follow the right procedure “Transmission using DMA” in the reference manual
+<ul>
+<li>Add clear the TC flag in the SR register before enabling the DMA transmit request</li>
+</ul></li>
+<li>Rename macros:
+<ul>
+<li>__USART_ENABLE() by __HAL_USART_ENABLE()</li>
+<li>__USART_DISABLE() by __HAL_USART_DISABLE()</li>
+<li>__USART_ENABLE_IT() by __HAL_USART_ENABLE_IT()</li>
+<li>__USART_DISABLE_IT() by __HAL_USART_DISABLE_IT()</li>
+</ul></li>
+<li>Rename literals: remove “D” from “DISABLED” and “ENABLED”
+<ul>
+<li>USART_CLOCK_DISABLED by USART_CLOCK_DISABLE</li>
+<li>USART_CLOCK_ENABLED by USART_CLOCK_ENABLE</li>
+<li>USARTNACK_ENABLED by USART_NACK_ENABLE</li>
+<li>USARTNACK_DISABLED by USART_NACK_DISABLE</li>
+</ul></li>
+<li>Add new user macros to manage the sample method feature
+<ul>
+<li>__HAL_USART_ONE_BIT_SAMPLE_ENABLE()</li>
+<li>__HAL_USART_ONE_BIT_SAMPLE_DISABLE()</li>
+</ul></li>
+<li>Add use of tmpreg variable in __HAL_USART_CLEAR_PEFLAG() macro for compliance with C++</li>
+</ul></li>
+<li><strong>HAL WWDG</strong> update
+<ul>
+<li>Add new parameter in __HAL_WWDG_ENABLE_IT() macro</li>
+<li>Add new macros to manage WWDG IT &amp; correction:
+<ul>
+<li>__HAL_WWDG_DISABLE()</li>
+<li>__HAL_WWDG_DISABLE_IT()</li>
+<li>__HAL_WWDG_GET_IT()</li>
+<li>__HAL_WWDG_GET_IT_SOURCE()</li>
+</ul></li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 19-June-2014</label>
+<div>
+<h2 id="main-changes-30">Main Changes</h2>
+<ul>
+<li>Add support of <strong>STM32F411xE</strong> devices</li>
+<li><strong>HAL generic</strong> update
+<ul>
+<li>Enhance HAL delay and time base implementation
+<ul>
+<li>Systick timer is used by default as source of time base, but user can eventually implement his proper time base source (a general purpose timer for example or other time source)</li>
+<li>Functions affecting time base configurations are declared as __Weak to make override possible in case of other implementations in user file, for more details please refer to HAL_TimeBase example</li>
+</ul></li>
+<li>Fix flag clear procedure: use atomic write operation “=” instead of ready-modify-write operation “|=” or “&amp;=”</li>
+<li>Fix on Timeout management, Timeout value set to 0 passed to API automatically exits the function after checking the flag without any wait</li>
+<li>Common update for the following communication peripherals: SPI, UART, USART and IRDA
+<ul>
+<li>Add DMA circular mode support</li>
+<li>Remove lock from recursive process</li>
+</ul></li>
+<li>Add new macro __HAL_RESET_HANDLE_STATE to reset a given handle state</li>
+<li>Add a new attribute for functions executed from internal SRAM and depending from Compiler implementation</li>
+<li>When USE_RTOS == 1 (in stm32l0xx_hal_conf.h), the __HAL_LOCK() is not defined instead of being defined empty</li>
+<li>Miscellaneous comments and formatting update</li>
+<li>stm32f4xx_hal_conf_template.h
+<ul>
+<li>Add a new define for LSI default value LSI_VALUE</li>
+<li>Add a new define for LSE default value LSE_VALUE</li>
+<li>Add a new define for Tick interrupt priority TICK_INT_PRIORITY (needed for the enhanced time base implementation)</li>
+<li><u>Important Note:</u> aliases has been added for any API naming change, to keep compatibility with previous version</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL GPIO</strong> update
+<ul>
+<li>Add a new macro __HAL_GPIO_EXTI_GENERATE_SWIT() to manage the generation of software interrupt on selected EXTI line</li>
+<li>HAL_GPIO_Init(): use temporary variable when modifying the registers, to avoid unexpected transition in the GPIO pin configuration</li>
+<li>Remove IS_GET_GPIO_PIN macro</li>
+<li>Add a new function HAL_GPIO_LockPin()</li>
+<li>Private Macro __HAL_GET_GPIO_SOURCE renamed into GET_GPIO_SOURCE</li>
+<li>Add the support of STM32F411xx devices : add the new Alternate functions values related to new remap added for SPI, USART, I2C</li>
+<li>Update the following HAL GPIO macros description: rename EXTI_Linex by GPIO_PIN_x
+<ul>
+<li>__HAL_GPIO_EXTI_CLEAR_IT()</li>
+<li>__HAL_GPIO_EXTI_GET_IT()</li>
+<li>__HAL_GPIO_EXTI_CLEAR_FLAG()</li>
+<li>__HAL_GPIO_EXTI_GET_FLAG()</li>
+</ul></li>
+</ul></li>
+<li><p><strong>HAL DMA</strong> update</p>
+<ul>
+<li>Fix in HAL_DMA_PollForTransfer() to:
+<ul>
+<li>set DMA error code in case of HAL_ERROR status</li>
+<li>set HAL Unlock before DMA state update</li>
+</ul></li>
+</ul></li>
+<li><p><strong>HAL DMA2D</strong> update</p>
+<ul>
+<li>Add configuration of source address in case of A8 or A4 M2M_PFC DMA2D mode</li>
+</ul></li>
+<li><strong>HAL FLASH</strong> update
+<ul>
+<li>Functions reorganization update, depending on the features supported by each STM32F4 device</li>
+<li>Add new driver (stm32f4xx_hal_flash_ramfunc.h/.c) to manage function executed from RAM, these functions are available only for STM32F411xx Devices
+<ul>
+<li>FLASH_StopFlashInterfaceClk() : Stop the flash interface while System Run</li>
+<li>FLASH_StartFlashInterfaceClk() : Stop the flash interface while System Run</li>
+<li>FLASH_EnableFlashSleepMode() : Enable the flash sleep while System Run</li>
+<li>FLASH_DisableFlashSleepMode() : Disable the flash sleep while System Run</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL PWR</strong> update
+<ul>
+<li>HAL_PWR_PVDConfig(): add clear of the EXTI trigger before new configuration</li>
+<li>Fix in HAL_PWR_EnterSTANDBYMode() to not clear Wakeup flag (WUF), which need to be cleared at application level before to call this function</li>
+<li>HAL_PWR_EnterSLEEPMode()
+<ul>
+<li>Remove disable and enable of SysTick Timer</li>
+<li>Update usage of __WFE() in low power entry function: if there is a pending event, calling __WFE() will not enter the CortexM4 core to sleep mode. The solution is to made the call below; the first __WFE() is always ignored and clears the event if one was already pending, the second is always applied<br />
+__SEV()<br />
+__WFE()<br />
+__WFE()</li>
+</ul></li>
+<li>Add new macro for software event generation __HAL_PVD_EXTI_GENERATE_SWIT()</li>
+<li>Remove the following defines form Generic driver and add them under extension driver because they are only used within extension functions.
+<ul>
+<li>CR_FPDS_BB: used within HAL_PWREx_EnableFlashPowerDown() function</li>
+<li>CSR_BRE_BB: used within HAL_PWREx_EnableBkUpReg() function</li>
+</ul></li>
+<li>Add the support of STM32F411xx devices add the define STM32F411xE
+<ul>
+<li>For STM32F401xC, STM32F401xE and STM32F411xE devices add the following functions used to enable or disable the low voltage mode for regulators
+<ul>
+<li>HAL_PWREx_EnableMainRegulatorLowVoltage()</li>
+<li>HAL_PWREx_DisableMainRegulatorLowVoltage()</li>
+<li>HAL_PWREx_EnableLowRegulatorLowVoltage()</li>
+<li>HAL_PWREx_DisableLowRegulatorLowVoltage()</li>
+</ul></li>
+<li>For STM32F42xxx/43xxx devices, add a new function for Under Driver management as the macro already added for this mode is not sufficient: HAL_PWREx_EnterUnderDriveSTOPMode()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RCC</strong> update
+<ul>
+<li>In HAL_RCC_ClockConfig() function: update the AHB clock divider before clock switch to new source</li>
+<li>Allow to calibrate the HSI when it is used as system clock source</li>
+<li>Rename the following macros
+<ul>
+<li>__OTGFS_FORCE_RESET () by __USB_OTG_FS_FORCE_RESET()</li>
+<li>__OTGFS_RELEASE_RESET () by __USB_OTG_FS_RELEASE_RESET()</li>
+<li>__OTGFS_CLK_SLEEP_ENABLE () by __USB_OTG_FS_CLK_SLEEP_ENABLE()</li>
+<li>__OTGFS_CLK_SLEEP_DISABLE () by __USB_OTG_FS_CLK_SLEEP_DISABLE()</li>
+</ul></li>
+<li>Add new field PLLI2SM in RCC_PLLI2SInitTypeDef structure, this division factor is added for PLLI2S VCO input clock only STM32F411xE devices =&gt; the FW compatibility is broken vs. STM32F401xx devices</li>
+<li>Update HAL_RCCEx_PeriphCLKConfig() and HAL_RCCEx_GetPeriphCLKConfig() functions to support the new PLLI2SM</li>
+<li>Add new function to manage the new LSE mode : HAL_RCCEx_SelectLSEMode()</li>
+<li>Reorganize the macros depending from Part number used and make them more clear</li>
+</ul></li>
+<li><p><strong>HAL UART</strong> update</p>
+<ul>
+<li>Add new macros to control CTS and RTS</li>
+<li>Add specific macros to manage the flags cleared only by a software sequence
+<ul>
+<li>__HAL_UART_CLEAR_PEFLAG()</li>
+<li>__HAL_UART_CLEAR_FEFLAG()</li>
+<li>__HAL_UART_CLEAR_NEFLAG()</li>
+<li>__HAL_UART_CLEAR_OREFLAG()</li>
+<li>__HAL_UART_CLEAR_IDLEFLAG()</li>
+</ul></li>
+<li>Add several enhancements without affecting the driver functionalities
+<ul>
+<li>Remove the check on RXNE set after reading the Data in the DR register</li>
+<li>Update the transmit processes to use TXE instead of TC</li>
+<li>Update HAL_UART_Transmit_IT() to enable UART_IT_TXE instead of UART_IT_TC</li>
+</ul></li>
+</ul></li>
+<li><p><strong>HAL USART</strong> update</p>
+<ul>
+<li>Add specific macros to manage the flags cleared only by a software sequence
+<ul>
+<li>__HAL_USART_CLEAR_PEFLAG()</li>
+<li>__HAL_USART_CLEAR_FEFLAG()</li>
+<li>__HAL_USART_CLEAR_NEFLAG()</li>
+<li>__HAL_USART_CLEAR_OREFLAG()</li>
+<li>__HAL_USART_CLEAR_IDLEFLAG()</li>
+</ul></li>
+<li>Update HAL_USART_Transmit_IT() to enable USART_IT_TXE instead of USART_IT_TC</li>
+</ul></li>
+<li><p><strong>HAL IRDA</strong> update</p>
+<ul>
+<li>Add specific macros to manage the flags cleared only by a software sequence __HAL_IRDA_CLEAR_PEFLAG() __HAL_ IRDA _CLEAR_FEFLAG() __HAL_ IRDA _CLEAR_NEFLAG() __HAL_ IRDA _CLEAR_OREFLAG() __HAL_ IRDA _CLEAR_IDLEFLAG()</li>
+<li>Add several enhancements without affecting the driver functionalities
+<ul>
+<li>Remove the check on RXNE set after reading the Data in the DR register</li>
+<li>Update HAL_IRDA_Transmit_IT() to enable IRDA_IT_TXE instead of IRDA_IT_TC</li>
+</ul></li>
+<li>Add the following APIs used within DMA process
+<ul>
+<li>HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda);</li>
+<li>HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda);</li>
+<li>HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda);</li>
+<li>void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda);</li>
+<li>void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda);</li>
+</ul></li>
+</ul></li>
+<li><p><strong>HAL SMARTCARD</strong> update</p>
+<ul>
+<li>Add specific macros to manage the flags cleared only by a software sequence
+<ul>
+<li>__HAL_SMARTCARD_CLEAR_PEFLAG()</li>
+<li>__HAL_SMARTCARD_CLEAR_FEFLAG()</li>
+<li>__HAL_SMARTCARD_CLEAR_NEFLAG()</li>
+<li>__HAL_SMARTCARD_CLEAR_OREFLAG()</li>
+<li>__HAL_SMARTCARD_CLEAR_IDLEFLAG()</li>
+</ul></li>
+<li>Add several enhancements without affecting the driver functionalities
+<ul>
+<li>Add a new state HAL_SMARTCARD_STATE_BUSY_TX_RX and all processes has been updated accordingly</li>
+<li>Update HAL_SMARTCARD_Transmit_IT() to enable SMARTCARD_IT_TXE instead of SMARTCARD_IT_TC</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SPI</strong> update
+<ul>
+<li>Bugs fix
+<ul>
+<li>SPI interface is used in synchronous polling mode: at high clock rates like SPI prescaler 2 and 4, calling HAL_SPI_TransmitReceive() returns with error HAL_TIMEOUT</li>
+<li>HAL_SPI_TransmitReceive_DMA() does not clean up the TX DMA, so any subsequent SPI calls return the DMA error</li>
+<li>HAL_SPI_Transmit_DMA() is failing when data size is equal to 1 byte</li>
+</ul></li>
+<li>Add the following APIs used within the DMA process
+<ul>
+<li>HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi);</li>
+<li>HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi);</li>
+<li>HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi);</li>
+<li>void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi);</li>
+<li>void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi);</li>
+<li>void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi);</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL RNG</strong> update
+<ul>
+<li>Add a conditional define to make this driver visible for all STM32F4xx devices except STM32F401xx and STM32F411xx Devices.</li>
+</ul></li>
+<li><strong>HAL CRC</strong> update
+<ul>
+<li>These macros are added to read/write the CRC IDR register: __HAL_CRC_SET_IDR() and __HAL_CRC_GET_IDR()</li>
+</ul></li>
+<li><strong>HAL DAC</strong> update
+<ul>
+<li>Enhance the DMA channel configuration when used with DAC</li>
+</ul></li>
+<li><strong>HAL TIM</strong> update
+<ul>
+<li>HAL_TIM_IRQHandler(): update to check the input capture channel 3 and 4 in CCMR2 instead of CCMR1</li>
+<li>__HAL_TIM_PRESCALER() updated to use ‘=’ instead of ‘|=’</li>
+<li>Add the following macro in TIM HAL driver
+<ul>
+<li>__HAL_TIM_GetCompare()</li>
+<li>__HAL_TIM_GetCounter()</li>
+<li>__HAL_TIM_GetAutoreload()</li>
+<li>__HAL_TIM_GetClockDivision()</li>
+<li>__HAL_TIM_GetICPrescaler()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL SDMMC</strong> update
+<ul>
+<li>Use of CMSIS constants instead of magic values</li>
+<li>Miscellaneous update in functions internal coding</li>
+</ul></li>
+<li><strong>HAL NAND</strong> update
+<ul>
+<li>Fix issue of macros returning wrong address for NAND blocks</li>
+<li>Fix issue for read/write NAND page/spare area</li>
+</ul></li>
+<li><strong>HAL NOR</strong> update
+<ul>
+<li>Add the NOR address bank macro used within the API</li>
+<li>Update NOR API implementation to avoid the use of NOR address bank hard coded</li>
+</ul></li>
+<li><strong>HAL HCD</strong> update
+<ul>
+<li>HCD_StateTypeDef structure members renamed</li>
+<li>These macro are renamed
+<ul>
+<li>__HAL_GET_FLAG(__HANDLE__, __INTERRUPT__) by __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__)</li>
+<li>__HAL_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) by __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)</li>
+<li>__HAL_IS_INVALID_INTERRUPT(__HANDLE__) by __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__)</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL PCD</strong> update
+<ul>
+<li>HAL_PCD_SetTxFiFo() and HAL_PCD_SetRxFiFo() renamed into HAL_PCDEx_SetTxFiFo() and HAL_PCDEx_SetRxFiFo() and moved to the extension files stm32f4xx_hal_pcd_ex.h/.c</li>
+<li>PCD_StateTypeDef structure members renamed</li>
+<li>Fix incorrect masking of TxFIFOEmpty</li>
+<li>stm32f4xx_ll_usb.c: fix issue in HS mode</li>
+<li>New macros added
+<ul>
+<li>__HAL_PCD_IS_PHY_SUSPENDED()</li>
+<li>__HAL_USB_HS_EXTI_GENERATE_SWIT()</li>
+<li>__HAL_USB_FS_EXTI_GENERATE_SWIT()</li>
+</ul></li>
+<li>These macro are renamed
+<ul>
+<li>__HAL_GET_FLAG(__HANDLE__, __INTERRUPT__) by __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__)</li>
+<li>__HAL_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) by __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__)</li>
+<li>__HAL_IS_INVALID_INTERRUPT(__HANDLE__) by __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__)</li>
+<li>__HAL_PCD_UNGATE_CLOCK(__HANDLE__) by __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__)</li>
+<li>__HAL_PCD_GATE_CLOCK(__HANDLE___) by __HAL_PCD_GATE_PHYCLOCK(__HANDLE__)</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL ETH</strong> update
+<ul>
+<li>Update HAL_ETH_GetReceivedFrame_IT() function to return HAL_ERROR if the received packet is not complete</li>
+<li>Use HAL_Delay() instead of counting loop</li>
+<li>__HAL_ETH_MAC_CLEAR_FLAG() macro is removed: the MACSR register is read only</li>
+<li>Add the following macros used to Wake up the device from STOP mode by Ethernet event :
+<ul>
+<li>__HAL_ETH_EXTI_ENABLE_IT()</li>
+<li>__HAL_ETH_EXTI_DISABLE_IT()</li>
+<li>__HAL_ETH_EXTI_GET_FLAG()</li>
+<li>__HAL_ETH_EXTI_CLEAR_FLAG()</li>
+<li>__HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER()</li>
+<li>__HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER()</li>
+<li>__HAL_ETH_EXTI_SET_FALLINGRISING_TRIGGER()</li>
+</ul></li>
+</ul></li>
+<li><strong>HAL WWDG</strong> update
+<ul>
+<li>Update macro parameters to use underscore: __XXX__</li>
+<li>Use of CMSIS constants instead of magic values</li>
+<li>Use MODIFY_REG macro in HAL_WWDG_Init()</li>
+<li>Add IS_WWDG_ALL_INSTANCE in HAL_WWDG_Init() and HAL_WWDG_DeInit()</li>
+</ul></li>
+<li><strong>HAL IWDG</strong> update
+<ul>
+<li>Use WRITE_REG instead of SET_BIT for all IWDG macros</li>
+<li>__HAL_IWDG_CLEAR_FLAG removed: no IWDG flag cleared by access to SR register</li>
+<li>Use MODIFY_REG macro in HAL_IWDG_Init()</li>
+<li>Add IS_IWDG_ALL_INSTANCE in HAL_IWDG_Init()Add the following macros used to Wake</li>
+</ul></li>
+</ul>
+</div>
+</div>
+<div class="collapse">
+<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 18-February-2014</label>
+<div>
+<h2 id="main-changes-31">Main Changes</h2>
+<ul>
+<li>First official release</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<footer class="sticky">
+<p>For complete documentation on STM32F4xx, visit: [<a href="http://www.st.com/stm32f4">www.st.com/stm32f4</a>]</p>
+<p>This release note uses up to date web standards and, for this reason, should not be opened with Internet Explorer but preferably with popular browsers such as Google Chrome, Mozilla Firefox, Opera or Microsoft Edge.</p>
+</footer>
+</body>
+</html>
diff --git a/Src/stm32f4xx_hal.c b/Src/stm32f4xx_hal.c
index 9ba2ba7..f15ac29 100644
--- a/Src/stm32f4xx_hal.c
+++ b/Src/stm32f4xx_hal.c
@@ -50,11 +50,11 @@
   * @{
   */
 /**
-  * @brief STM32F4xx HAL Driver version number V1.8.1
+  * @brief STM32F4xx HAL Driver version number V1.8.2
   */
 #define __STM32F4xx_HAL_VERSION_MAIN   (0x01U) /*!< [31:24] main version */
 #define __STM32F4xx_HAL_VERSION_SUB1   (0x08U) /*!< [23:16] sub1 version */
-#define __STM32F4xx_HAL_VERSION_SUB2   (0x01U) /*!< [15:8]  sub2 version */
+#define __STM32F4xx_HAL_VERSION_SUB2   (0x02U) /*!< [15:8]  sub2 version */
 #define __STM32F4xx_HAL_VERSION_RC     (0x00U) /*!< [7:0]  release candidate */ 
 #define __STM32F4xx_HAL_VERSION         ((__STM32F4xx_HAL_VERSION_MAIN << 24U)\
                                         |(__STM32F4xx_HAL_VERSION_SUB1 << 16U)\
@@ -368,7 +368,8 @@
 
 /**
   * @brief Return tick frequency.
-  * @retval tick period in Hz
+  * @retval Tick frequency.
+  *         Value of @ref HAL_TickFreqTypeDef.
   */
 HAL_TickFreqTypeDef HAL_GetTickFreq(void)
 {
diff --git a/Src/stm32f4xx_hal_can.c b/Src/stm32f4xx_hal_can.c
index c0b665f..f991116 100644
--- a/Src/stm32f4xx_hal_can.c
+++ b/Src/stm32f4xx_hal_can.c
@@ -33,7 +33,7 @@
          (++) Enable the CAN interface clock using __HAL_RCC_CANx_CLK_ENABLE()
          (++) Configure CAN pins
              (+++) Enable the clock for the CAN GPIOs
-             (+++) Configure CAN pins as alternate function open-drain
+             (+++) Configure CAN pins as alternate function
          (++) In case of using interrupts (e.g. HAL_CAN_ActivateNotification())
              (+++) Configure the CAN interrupt priority using
                    HAL_NVIC_SetPriority()
@@ -235,6 +235,7 @@
   * @{
   */
 #define CAN_TIMEOUT_VALUE 10U
+#define CAN_WAKEUP_TIMEOUT_COUNTER 1000000U
 /**
   * @}
   */
@@ -248,8 +249,8 @@
   */
 
 /** @defgroup CAN_Exported_Functions_Group1 Initialization and de-initialization functions
- *  @brief    Initialization and Configuration functions
- *
+  * @brief    Initialization and Configuration functions
+  *
 @verbatim
   ==============================================================================
               ##### Initialization and de-initialization functions #####
@@ -328,7 +329,7 @@
     /* Init the low level hardware: CLOCK, NVIC */
     HAL_CAN_MspInit(hcan);
   }
-#endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
+#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
 
   /* Request initialisation */
   SET_BIT(hcan->Instance->MCR, CAN_MCR_INRQ);
@@ -482,7 +483,7 @@
 #else
   /* DeInit the low level hardware: CLOCK, NVIC */
   HAL_CAN_MspDeInit(hcan);
-#endif /* (USE_HAL_CAN_REGISTER_CALLBACKS) */
+#endif /* USE_HAL_CAN_REGISTER_CALLBACKS */
 
   /* Reset the CAN peripheral */
   SET_BIT(hcan->Instance->MCR, CAN_MCR_RESET);
@@ -814,8 +815,8 @@
   */
 
 /** @defgroup CAN_Exported_Functions_Group2 Configuration functions
- *  @brief    Configuration functions.
- *
+  * @brief    Configuration functions.
+  *
 @verbatim
   ==============================================================================
               ##### Configuration functions #####
@@ -887,7 +888,7 @@
 
     /* Check the parameters */
     assert_param(IS_CAN_FILTER_BANK_SINGLE(sFilterConfig->FilterBank));
-#endif
+#endif /* CAN3 */
 
     /* Initialisation mode for the filter */
     SET_BIT(can_ip->FMR, CAN_FMR_FINIT);
@@ -906,7 +907,7 @@
     CLEAR_BIT(can_ip->FMR, CAN_FMR_CAN2SB);
     SET_BIT(can_ip->FMR, sFilterConfig->SlaveStartFilterBank << CAN_FMR_CAN2SB_Pos);
 
-#endif
+#endif /* CAN3 */
     /* Convert filter number into bit position */
     filternbrbitpos = (uint32_t)1 << (sFilterConfig->FilterBank & 0x1FU);
 
@@ -998,8 +999,8 @@
   */
 
 /** @defgroup CAN_Exported_Functions_Group3 Control functions
- *  @brief    Control functions
- *
+  * @brief    Control functions
+  *
 @verbatim
   ==============================================================================
                       ##### Control functions #####
@@ -1171,7 +1172,6 @@
 HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan)
 {
   __IO uint32_t count = 0;
-  uint32_t timeout = 1000000U;
   HAL_CAN_StateTypeDef state = hcan->State;
 
   if ((state == HAL_CAN_STATE_READY) ||
@@ -1187,15 +1187,14 @@
       count++;
 
       /* Check if timeout is reached */
-      if (count > timeout)
+      if (count > CAN_WAKEUP_TIMEOUT_COUNTER)
       {
         /* Update error code */
         hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT;
 
         return HAL_ERROR;
       }
-    }
-    while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U);
+    } while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U);
 
     /* Return function status */
     return HAL_OK;
@@ -1280,15 +1279,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;
 
@@ -1645,8 +1635,8 @@
   */
 
 /** @defgroup CAN_Exported_Functions_Group4 Interrupts management
- *  @brief    Interrupts management
- *
+  * @brief    Interrupts management
+  *
 @verbatim
   ==============================================================================
                        ##### Interrupts management #####
@@ -2111,8 +2101,8 @@
   */
 
 /** @defgroup CAN_Exported_Functions_Group5 Callback functions
- *  @brief   CAN Callback functions
- *
+  * @brief   CAN Callback functions
+  *
 @verbatim
   ==============================================================================
                           ##### Callback functions #####
@@ -2361,8 +2351,8 @@
   */
 
 /** @defgroup CAN_Exported_Functions_Group6 Peripheral State and Error functions
- *  @brief   CAN Peripheral State functions
- *
+  * @brief   CAN Peripheral State functions
+  *
 @verbatim
   ==============================================================================
             ##### Peripheral State and Error functions #####
diff --git a/Src/stm32f4xx_hal_cec.c b/Src/stm32f4xx_hal_cec.c
index 3ef9e3f..6a39d16 100644
--- a/Src/stm32f4xx_hal_cec.c
+++ b/Src/stm32f4xx_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
   */
@@ -501,10 +502,10 @@
   * @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)
@@ -829,7 +830,7 @@
       __HAL_CEC_LAST_BYTE_TX_SET(hcec);
     }
     /* In all cases transmit the byte */
-    hcec->Instance->TXDR = (uint8_t)*hcec->pTxBuffPtr;
+    hcec->Instance->TXDR = (uint8_t) * hcec->pTxBuffPtr;
     hcec->pTxBuffPtr++;
     /* clear Tx-Byte request flag */
     __HAL_CEC_CLEAR_FLAG(hcec, CEC_FLAG_TXBR);
@@ -855,7 +856,7 @@
 
   /* ----------------------------Rx/Tx Error Management----------------------------------*/
   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)
+                 CEC_ISR_TXERR | CEC_ISR_TXACKE)) != 0U)
   {
     hcec->ErrorCode = itflag;
     __HAL_CEC_CLEAR_FLAG(hcec, HAL_CEC_ERROR_RXOVR | HAL_CEC_ERROR_BRE | CEC_FLAG_LBPE | CEC_FLAG_SBPE |
@@ -959,7 +960,8 @@
   */
 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;
 
@@ -993,4 +995,3 @@
 /**
   * @}
   */
-
diff --git a/Src/stm32f4xx_hal_cortex.c b/Src/stm32f4xx_hal_cortex.c
index 98515c5..e149e80 100644
--- a/Src/stm32f4xx_hal_cortex.c
+++ b/Src/stm32f4xx_hal_cortex.c
@@ -336,6 +336,16 @@
 #endif /* __MPU_PRESENT */
 
 /**
+  * @brief  Clear pending events.
+  * @retval None
+  */
+void HAL_CORTEX_ClearEvent(void)
+{
+  __SEV();
+  __WFE();
+}
+
+/**
   * @brief  Gets the priority grouping field from the NVIC Interrupt Controller.
   * @retval Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field)
   */
diff --git a/Src/stm32f4xx_hal_crc.c b/Src/stm32f4xx_hal_crc.c
index 2e86b2b..9bd354a 100644
--- a/Src/stm32f4xx_hal_crc.c
+++ b/Src/stm32f4xx_hal_crc.c
@@ -147,7 +147,7 @@
   __HAL_CRC_DR_RESET(hcrc);
 
   /* Reset IDR register content */
-  CLEAR_BIT(hcrc->Instance->IDR, CRC_IDR_IDR);
+  __HAL_CRC_SET_IDR(hcrc, 0);
 
   /* DeInit the low level hardware */
   HAL_CRC_MspDeInit(hcrc);
@@ -303,7 +303,7 @@
   * @param  hcrc CRC handle
   * @retval HAL state
   */
-HAL_CRC_StateTypeDef HAL_CRC_GetState(CRC_HandleTypeDef *hcrc)
+HAL_CRC_StateTypeDef HAL_CRC_GetState(const CRC_HandleTypeDef *hcrc)
 {
   /* Return CRC handle state */
   return hcrc->State;
diff --git a/Src/stm32f4xx_hal_cryp.c b/Src/stm32f4xx_hal_cryp.c
index c439c2c..bb41673 100644
--- a/Src/stm32f4xx_hal_cryp.c
+++ b/Src/stm32f4xx_hal_cryp.c
@@ -1011,7 +1011,7 @@
         /* Set the phase */
         hcryp->Phase = CRYP_PHASE_PROCESS;
 
-        /* Statrt DES/TDES encryption process */
+        /* Start DES/TDES encryption process */
         status = CRYP_TDES_Process(hcryp, Timeout);
         break;
 
@@ -5339,7 +5339,7 @@
 }
 
 /**
-  * @brief  Sets the payload phase in iterrupt mode
+  * @brief  Sets the payload phase in interrupt mode
   * @param  hcryp: pointer to a CRYP_HandleTypeDef structure that contains
   *         the configuration information for CRYP module
   * @retval state
diff --git a/Src/stm32f4xx_hal_dac.c b/Src/stm32f4xx_hal_dac.c
index 9023e3e..8953638 100644
--- a/Src/stm32f4xx_hal_dac.c
+++ b/Src/stm32f4xx_hal_dac.c
@@ -99,9 +99,9 @@
        A DMA request can be generated when an external trigger (but not a software trigger)
        occurs if DMA1 requests are enabled using HAL_DAC_Start_DMA().
        DMA1 requests are mapped as following:
-      (#) DAC channel1 mapped on DMA1 Stream5 channel7 which must be 
+      (#) DAC channel1 mapped on DMA1 Stream5 channel7 which must be
           already configured
-      (#) DAC channel2 mapped on DMA1 Stream6 channel7 which must be 
+      (#) DAC channel2 mapped on DMA1 Stream6 channel7 which must be
           already configured
 
      [..]
@@ -168,7 +168,7 @@
       and a pointer to the user callback function.
 
     Use function HAL_DAC_UnRegisterCallback() to reset a callback to the default
-      weak (surcharged) function. It allows to reset following callbacks:
+      weak (overridden) function. It allows to reset following callbacks:
       (+) ConvCpltCallbackCh1     : callback when a half transfer is completed on Ch1.
       (+) ConvHalfCpltCallbackCh1 : callback when a transfer is completed on Ch1.
       (+) ErrorCallbackCh1        : callback when an error occurs on Ch1.
@@ -183,9 +183,9 @@
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
       By default, after the HAL_DAC_Init and if the state is HAL_DAC_STATE_RESET
-      all callbacks are reset to the corresponding legacy weak (surcharged) functions.
+      all callbacks are reset to the corresponding legacy weak (overridden) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the HAL_DAC_Init
+      reset to the legacy weak (overridden) functions in the HAL_DAC_Init
       and  HAL_DAC_DeInit only when these callbacks are null (not registered beforehand).
       If not, MspInit or MspDeInit are not null, the HAL_DAC_Init and HAL_DAC_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
@@ -200,7 +200,7 @@
 
       When The compilation define USE_HAL_DAC_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
-      and weak (surcharged) callbacks are used.
+      and weak (overridden) callbacks are used.
 
      *** DAC HAL driver macros list ***
      =============================================
@@ -270,7 +270,7 @@
   */
 HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac)
 {
-  /* Check DAC handle */
+  /* Check the DAC peripheral handle */
   if (hdac == NULL)
   {
     return HAL_ERROR;
@@ -331,7 +331,7 @@
   */
 HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef *hdac)
 {
-  /* Check DAC handle */
+  /* Check the DAC peripheral handle */
   if (hdac == NULL)
   {
     return HAL_ERROR;
@@ -434,6 +434,12 @@
   */
 HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel)
 {
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
 
@@ -489,6 +495,12 @@
   */
 HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel)
 {
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
 
@@ -519,11 +531,17 @@
   *            @arg DAC_ALIGN_12B_R: 12bit right data alignment selected
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t *pData, uint32_t Length,
+HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, const uint32_t *pData, uint32_t Length,
                                     uint32_t Alignment)
 {
-  HAL_StatusTypeDef status = HAL_OK;
-  uint32_t tmpreg = 0U;
+  HAL_StatusTypeDef status = HAL_ERROR;
+  uint32_t tmpreg;
+
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
 
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
@@ -560,12 +578,10 @@
         /* Get DHR12L1 address */
         tmpreg = (uint32_t)&hdac->Instance->DHR12L1;
         break;
-      case DAC_ALIGN_8B_R:
+      default: /* case DAC_ALIGN_8B_R */
         /* Get DHR8R1 address */
         tmpreg = (uint32_t)&hdac->Instance->DHR8R1;
         break;
-      default:
-        break;
     }
   }
 #if defined(DAC_CHANNEL2_SUPPORT)
@@ -594,17 +610,13 @@
         /* Get DHR12L2 address */
         tmpreg = (uint32_t)&hdac->Instance->DHR12L2;
         break;
-      case DAC_ALIGN_8B_R:
+      default: /* case DAC_ALIGN_8B_R */
         /* Get DHR8R2 address */
         tmpreg = (uint32_t)&hdac->Instance->DHR8R2;
         break;
-      default:
-        break;
     }
   }
 #endif /* DAC_CHANNEL2_SUPPORT */
-
-  /* Enable the DMA Stream */
   if (Channel == DAC_CHANNEL_1)
   {
     /* Enable the DAC DMA underrun interrupt */
@@ -653,6 +665,12 @@
   */
 HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel)
 {
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
 
@@ -701,10 +719,13 @@
   */
 void HAL_DAC_IRQHandler(DAC_HandleTypeDef *hdac)
 {
-  if (__HAL_DAC_GET_IT_SOURCE(hdac, DAC_IT_DMAUDR1))
+  uint32_t itsource = hdac->Instance->CR;
+  uint32_t itflag   = hdac->Instance->SR;
+
+  if ((itsource & DAC_IT_DMAUDR1) == DAC_IT_DMAUDR1)
   {
     /* Check underrun flag of DAC channel 1 */
-    if (__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR1))
+    if ((itflag & DAC_FLAG_DMAUDR1) == DAC_FLAG_DMAUDR1)
     {
       /* Change DAC state to error state */
       hdac->State = HAL_DAC_STATE_ERROR;
@@ -716,7 +737,7 @@
       __HAL_DAC_CLEAR_FLAG(hdac, DAC_FLAG_DMAUDR1);
 
       /* Disable the selected DAC channel1 DMA request */
-      CLEAR_BIT(hdac->Instance->CR, DAC_CR_DMAEN1);
+      __HAL_DAC_DISABLE_IT(hdac, DAC_CR_DMAEN1);
 
       /* Error callback */
 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
@@ -728,10 +749,10 @@
   }
 
 #if defined(DAC_CHANNEL2_SUPPORT)
-  if (__HAL_DAC_GET_IT_SOURCE(hdac, DAC_IT_DMAUDR2))
+  if ((itsource & DAC_IT_DMAUDR2) == DAC_IT_DMAUDR2)
   {
     /* Check underrun flag of DAC channel 2 */
-    if (__HAL_DAC_GET_FLAG(hdac, DAC_FLAG_DMAUDR2))
+    if ((itflag & DAC_FLAG_DMAUDR2) == DAC_FLAG_DMAUDR2)
     {
       /* Change DAC state to error state */
       hdac->State = HAL_DAC_STATE_ERROR;
@@ -743,7 +764,7 @@
       __HAL_DAC_CLEAR_FLAG(hdac, DAC_FLAG_DMAUDR2);
 
       /* Disable the selected DAC channel2 DMA request */
-      CLEAR_BIT(hdac->Instance->CR, DAC_CR_DMAEN2);
+      __HAL_DAC_DISABLE_IT(hdac, DAC_CR_DMAEN2);
 
       /* Error callback */
 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
@@ -776,6 +797,12 @@
 {
   __IO uint32_t tmp = 0UL;
 
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
   assert_param(IS_DAC_ALIGN(Alignment));
@@ -893,10 +920,13 @@
   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
   * @retval The selected DAC channel data output value.
   */
-uint32_t HAL_DAC_GetValue(DAC_HandleTypeDef *hdac, uint32_t Channel)
+uint32_t HAL_DAC_GetValue(const DAC_HandleTypeDef *hdac, uint32_t Channel)
 {
   uint32_t result = 0;
 
+  /* Check the DAC peripheral handle */
+  assert_param(hdac != NULL);
+
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
 
@@ -925,11 +955,19 @@
   *            @arg DAC_CHANNEL_2: DAC Channel2 selected
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac, DAC_ChannelConfTypeDef *sConfig, uint32_t Channel)
+HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac,
+                                        const DAC_ChannelConfTypeDef *sConfig, uint32_t Channel)
 {
+  HAL_StatusTypeDef status = HAL_OK;
   uint32_t tmpreg1;
   uint32_t tmpreg2;
 
+  /* Check the DAC peripheral handle and channel configuration struct */
+  if ((hdac == NULL) || (sConfig == NULL))
+  {
+    return HAL_ERROR;
+  }
+
   /* Check the DAC parameters */
   assert_param(IS_DAC_TRIGGER(sConfig->DAC_Trigger));
   assert_param(IS_DAC_OUTPUT_BUFFER_STATE(sConfig->DAC_OutputBuffer));
@@ -944,7 +982,8 @@
   /* Get the DAC CR value */
   tmpreg1 = hdac->Instance->CR;
   /* Clear BOFFx, TENx, TSELx, WAVEx and MAMPx bits */
-  tmpreg1 &= ~(((uint32_t)(DAC_CR_MAMP1 | DAC_CR_WAVE1 | DAC_CR_TSEL1 | DAC_CR_TEN1 | DAC_CR_BOFF1)) << (Channel & 0x10UL));
+  tmpreg1 &= ~(((uint32_t)(DAC_CR_MAMP1 | DAC_CR_WAVE1 | DAC_CR_TSEL1 | DAC_CR_TEN1 | DAC_CR_BOFF1))
+               << (Channel & 0x10UL));
   /* Configure for the selected DAC channel: buffer output, trigger */
   /* Set TSELx and TENx bits according to DAC_Trigger value */
   /* Set BOFFx bit according to DAC_OutputBuffer value */
@@ -963,7 +1002,7 @@
   __HAL_UNLOCK(hdac);
 
   /* Return function status */
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -992,7 +1031,7 @@
   *         the configuration information for the specified DAC.
   * @retval HAL state
   */
-HAL_DAC_StateTypeDef HAL_DAC_GetState(DAC_HandleTypeDef *hdac)
+HAL_DAC_StateTypeDef HAL_DAC_GetState(const DAC_HandleTypeDef *hdac)
 {
   /* Return DAC handle state */
   return hdac->State;
@@ -1005,7 +1044,7 @@
   *         the configuration information for the specified DAC.
   * @retval DAC Error Code
   */
-uint32_t HAL_DAC_GetError(DAC_HandleTypeDef *hdac)
+uint32_t HAL_DAC_GetError(const DAC_HandleTypeDef *hdac)
 {
   return hdac->ErrorCode;
 }
@@ -1028,7 +1067,9 @@
 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
 /**
   * @brief  Register a User DAC Callback
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used instead of the weak (overridden) predefined callback
+  * @note   The HAL_DAC_RegisterCallback() may be called before HAL_DAC_Init() in HAL_DAC_STATE_RESET to register
+  *         callbacks for HAL_DAC_MSPINIT_CB_ID and HAL_DAC_MSPDEINIT_CB_ID
   * @param  hdac DAC handle
   * @param  CallbackID ID of the callback to be registered
   *         This parameter can be one of the following values:
@@ -1052,6 +1093,12 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
   if (pCallback == NULL)
   {
     /* Update the error code */
@@ -1059,9 +1106,6 @@
     return HAL_ERROR;
   }
 
-  /* Process locked */
-  __HAL_LOCK(hdac);
-
   if (hdac->State == HAL_DAC_STATE_READY)
   {
     switch (CallbackID)
@@ -1132,14 +1176,14 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hdac);
   return status;
 }
 
 /**
   * @brief  Unregister a User DAC Callback
-  *         DAC Callback is redirected to the weak (surcharged) predefined callback
+  *         DAC Callback is redirected to the weak (overridden) predefined callback
+  * @note   The HAL_DAC_UnRegisterCallback() may be called before HAL_DAC_Init() in HAL_DAC_STATE_RESET to un-register
+  *         callbacks for HAL_DAC_MSPINIT_CB_ID and HAL_DAC_MSPDEINIT_CB_ID
   * @param  hdac DAC handle
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
@@ -1160,8 +1204,11 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hdac);
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
 
   if (hdac->State == HAL_DAC_STATE_READY)
   {
@@ -1247,8 +1294,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hdac);
   return status;
 }
 #endif /* USE_HAL_DAC_REGISTER_CALLBACKS */
@@ -1334,8 +1379,6 @@
 #endif /* DAC */
 
 #endif /* HAL_DAC_MODULE_ENABLED */
-
 /**
   * @}
   */
-
diff --git a/Src/stm32f4xx_hal_dac_ex.c b/Src/stm32f4xx_hal_dac_ex.c
index 343dd98..6e5ab51 100644
--- a/Src/stm32f4xx_hal_dac_ex.c
+++ b/Src/stm32f4xx_hal_dac_ex.c
@@ -23,15 +23,6 @@
                       ##### How to use this driver #####
   ==============================================================================
     [..]
-
-     *** Dual mode IO operation ***
-     ==============================
-     [..]
-      (+) When Dual mode is enabled (i.e. DAC Channel1 and Channel2 are used simultaneously) :
-          Use HAL_DACEx_DualGetValue() to get digital data to be converted and use
-          HAL_DACEx_DualSetValue() to set digital value to converted simultaneously in
-          Channel 1 and Channel 2.
-
      *** Signal generation operation ***
      ===================================
      [..]
@@ -61,6 +52,7 @@
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
+
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
@@ -100,6 +92,12 @@
 {
   uint32_t tmp_swtrig = 0UL;
 
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
 
   /* Process locked */
   __HAL_LOCK(hdac);
@@ -141,6 +139,12 @@
   */
 HAL_StatusTypeDef HAL_DACEx_DualStop(DAC_HandleTypeDef *hdac)
 {
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
 
   /* Disable the Peripheral */
   __HAL_DAC_DISABLE(hdac, DAC_CHANNEL_1);
@@ -180,6 +184,12 @@
   */
 HAL_StatusTypeDef HAL_DACEx_TriangleWaveGenerate(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Amplitude)
 {
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
   assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(Amplitude));
@@ -230,6 +240,12 @@
   */
 HAL_StatusTypeDef HAL_DACEx_NoiseWaveGenerate(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Amplitude)
 {
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
   /* Check the parameters */
   assert_param(IS_DAC_CHANNEL(Channel));
   assert_param(IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(Amplitude));
@@ -275,6 +291,12 @@
   uint32_t data;
   uint32_t tmp;
 
+  /* Check the DAC peripheral handle */
+  if (hdac == NULL)
+  {
+    return HAL_ERROR;
+  }
+
   /* Check the parameters */
   assert_param(IS_DAC_ALIGN(Alignment));
   assert_param(IS_DAC_DATA(Data1));
@@ -391,7 +413,7 @@
   *         the configuration information for the specified DAC.
   * @retval The selected DAC channel data output value.
   */
-uint32_t HAL_DACEx_DualGetValue(DAC_HandleTypeDef *hdac)
+uint32_t HAL_DACEx_DualGetValue(const DAC_HandleTypeDef *hdac)
 {
   uint32_t tmp = 0UL;
 
@@ -492,4 +514,3 @@
 /**
   * @}
   */
-
diff --git a/Src/stm32f4xx_hal_dma2d.c b/Src/stm32f4xx_hal_dma2d.c
index 4cfac40..76f2b46 100644
--- a/Src/stm32f4xx_hal_dma2d.c
+++ b/Src/stm32f4xx_hal_dma2d.c
@@ -118,7 +118,7 @@
           and a pointer to the user callback function.
 
       (#) Use function @ref HAL_DMA2D_UnRegisterCallback() to reset a callback to the default
-          weak (surcharged) function.
+          weak (overridden) function.
           @ref HAL_DMA2D_UnRegisterCallback() takes as parameters the HAL peripheral handle,
           and the Callback ID.
           This function allows to reset following callbacks:
@@ -130,16 +130,16 @@
             (+) MspDeInitCallback  : DMA2D MspDeInit.
 
       (#) By default, after the @ref HAL_DMA2D_Init and if the state is HAL_DMA2D_STATE_RESET
-          all callbacks are reset to the corresponding legacy weak (surcharged) functions:
+          all callbacks are reset to the corresponding legacy weak (overridden) functions:
           examples @ref HAL_DMA2D_LineEventCallback(), @ref HAL_DMA2D_CLUTLoadingCpltCallback()
           Exception done for MspInit and MspDeInit callbacks that are respectively
-          reset to the legacy weak (surcharged) functions in the @ref HAL_DMA2D_Init
+          reset to the legacy weak (overridden) functions in the @ref HAL_DMA2D_Init
           and @ref HAL_DMA2D_DeInit only when these callbacks are null (not registered beforehand)
           If not, MspInit or MspDeInit are not null, the @ref HAL_DMA2D_Init and @ref HAL_DMA2D_DeInit
           keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
 
           Exception as well for Transfer Completion and Transfer Error callbacks that are not defined
-          as weak (surcharged) functions. They must be defined by the user to be resorted to.
+          as weak (overridden) functions. They must be defined by the user to be resorted to.
 
           Callbacks can be registered/unregistered in READY state only.
           Exception done for MspInit/MspDeInit callbacks that can be registered/unregistered
@@ -151,7 +151,7 @@
 
           When The compilation define USE_HAL_DMA2D_REGISTER_CALLBACKS is set to 0 or
           not defined, the callback registering feature is not available
-          and weak (surcharged) callbacks are used.
+          and weak (overridden) callbacks are used.
 
      [..]
       (@) You can refer to the DMA2D HAL driver header file for more useful macros
@@ -422,7 +422,7 @@
 #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1)
 /**
   * @brief  Register a User DMA2D Callback
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used instead of the weak (overridden) predefined callback
   * @param hdma2d DMA2D handle
   * @param CallbackID ID of the callback to be registered
   *        This parameter can be one of the following values:
@@ -521,7 +521,7 @@
 
 /**
   * @brief  Unregister a DMA2D Callback
-  *         DMA2D Callback is redirected to the weak (surcharged) predefined callback
+  *         DMA2D Callback is redirected to the weak (overridden) predefined callback
   * @param hdma2d DMA2D handle
   * @param CallbackID ID of the callback to be unregistered
   *        This parameter can be one of the following values:
@@ -562,11 +562,11 @@
         break;
 
       case HAL_DMA2D_MSPINIT_CB_ID :
-        hdma2d->MspInitCallback = HAL_DMA2D_MspInit; /* Legacy weak (surcharged) Msp Init */
+        hdma2d->MspInitCallback = HAL_DMA2D_MspInit; /* Legacy weak (overridden) Msp Init */
         break;
 
       case HAL_DMA2D_MSPDEINIT_CB_ID :
-        hdma2d->MspDeInitCallback = HAL_DMA2D_MspDeInit; /* Legacy weak (surcharged) Msp DeInit */
+        hdma2d->MspDeInitCallback = HAL_DMA2D_MspDeInit; /* Legacy weak (overridden) Msp DeInit */
         break;
 
       default :
@@ -582,11 +582,11 @@
     switch (CallbackID)
     {
       case HAL_DMA2D_MSPINIT_CB_ID :
-        hdma2d->MspInitCallback = HAL_DMA2D_MspInit;   /* Legacy weak (surcharged) Msp Init */
+        hdma2d->MspInitCallback = HAL_DMA2D_MspInit;   /* Legacy weak (overridden) Msp Init */
         break;
 
       case HAL_DMA2D_MSPDEINIT_CB_ID :
-        hdma2d->MspDeInitCallback = HAL_DMA2D_MspDeInit;  /* Legacy weak (surcharged) Msp DeInit */
+        hdma2d->MspDeInitCallback = HAL_DMA2D_MspDeInit;  /* Legacy weak (overridden) Msp DeInit */
         break;
 
       default :
diff --git a/Src/stm32f4xx_hal_dsi.c b/Src/stm32f4xx_hal_dsi.c
index 2ae7faa..b193c24 100644
--- a/Src/stm32f4xx_hal_dsi.c
+++ b/Src/stm32f4xx_hal_dsi.c
@@ -1852,6 +1852,16 @@
     __HAL_UNLOCK(hdsi);
     return HAL_ERROR;
   }
+  else if ((hdsi->Instance->WRPCR & DSI_WRPCR_REGEN) != DSI_WRPCR_REGEN)
+  {
+    /* Process Unlocked */
+    __HAL_UNLOCK(hdsi);
+    return HAL_ERROR;
+  }
+  else
+  {
+    /* Nothing to do */
+  }
 
   /* Verify that there are no ULPS exit or request on data lanes */
   if ((hdsi->Instance->PUCR & (DSI_PUCR_UEDL | DSI_PUCR_URDL)) != 0U)
@@ -2170,6 +2180,16 @@
     __HAL_UNLOCK(hdsi);
     return HAL_ERROR;
   }
+  else if ((hdsi->Instance->WRPCR & DSI_WRPCR_REGEN) != DSI_WRPCR_REGEN)
+  {
+    /* Process Unlocked */
+    __HAL_UNLOCK(hdsi);
+    return HAL_ERROR;
+  }
+  else
+  {
+    /* Nothing to do */
+  }
 
   /* Verify that there are no ULPS exit or request on both data and clock lanes */
   if ((hdsi->Instance->PUCR & (DSI_PUCR_UEDL | DSI_PUCR_URDL | DSI_PUCR_UECL | DSI_PUCR_URCL)) != 0U)
diff --git a/Src/stm32f4xx_hal_eth.c b/Src/stm32f4xx_hal_eth.c
index 50d95b8..ff0cfec 100644
--- a/Src/stm32f4xx_hal_eth.c
+++ b/Src/stm32f4xx_hal_eth.c
@@ -202,7 +202,7 @@
 #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
@@ -501,7 +501,6 @@
   {
     /* Update the error code */
     heth->ErrorCode |= HAL_ETH_ERROR_INVALID_CALLBACK;
-
     return HAL_ERROR;
   }
 
@@ -579,7 +578,7 @@
 
 /**
   * @brief  Unregister an ETH Callback
-  *         ETH callabck is redirected to the weak predefined callback
+  *         ETH callback 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:
@@ -702,7 +701,7 @@
   {
     heth->gState = HAL_ETH_STATE_BUSY;
 
-    /* Set nombre of descriptors to build */
+    /* Set number of descriptors to build */
     heth->RxDescList.RxBuildDescCnt = ETH_RX_DESC_CNT;
 
     /* Build all descriptors */
@@ -772,7 +771,7 @@
     SET_BIT(heth->Instance->MMCTIMR, ETH_MMCTIMR_TGFM | ETH_MMCTIMR_TGFMSCM | \
             ETH_MMCTIMR_TGFSCM);
 
-    /* Set nombre of descriptors to build */
+    /* Set number of descriptors to build */
     heth->RxDescList.RxBuildDescCnt = ETH_RX_DESC_CNT;
 
     /* Build all descriptors */
@@ -836,6 +835,7 @@
   {
     /* Set the ETH peripheral state to BUSY */
     heth->gState = HAL_ETH_STATE_BUSY;
+
     /* Disable the DMA transmission */
     CLEAR_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_ST);
 
@@ -903,6 +903,7 @@
     /* 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;
@@ -1085,7 +1086,6 @@
   uint32_t bufflength;
   uint8_t rxdataready = 0U;
 
-
   if (pAppBuff == NULL)
   {
     heth->ErrorCode |= HAL_ETH_ERROR_PARAM;
@@ -1108,9 +1108,9 @@
     if (READ_BIT(dmarxdesc->DESC0,  ETH_DMARXDESC_LS)  != (uint32_t)RESET)
     {
       /* Get timestamp high */
-      heth->RxDescList.TimeStamp.TimeStampHigh = dmarxdesc->DESC6;
+      heth->RxDescList.TimeStamp.TimeStampHigh = dmarxdesc->DESC7;
       /* Get timestamp low */
-      heth->RxDescList.TimeStamp.TimeStampLow  = dmarxdesc->DESC7;
+      heth->RxDescList.TimeStamp.TimeStampLow  = dmarxdesc->DESC6;
     }
     if ((READ_BIT(dmarxdesc->DESC0, ETH_DMARXDESC_FS) != (uint32_t)RESET) || (heth->RxDescList.pRxStart != NULL))
     {
@@ -1193,6 +1193,7 @@
   */
 static void ETH_UpdateDescriptor(ETH_HandleTypeDef *heth)
 {
+  uint32_t tailidx;
   uint32_t descidx;
   uint32_t desccount;
   ETH_DMADescTypeDef *dmarxdesc;
@@ -1238,12 +1239,6 @@
         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 */
@@ -1256,8 +1251,14 @@
 
   if (heth->RxDescList.RxBuildDescCnt != desccount)
   {
+    /* Set the tail pointer index */
+    tailidx = (descidx + 1U) % ETH_RX_DESC_CNT;
+
+    /* DMB instruction to avoid race condition */
+    __DMB();
+
     /* Set the Tail pointer address */
-    WRITE_REG(heth->Instance->DMARPDR, 0);
+    WRITE_REG(heth->Instance->DMARPDR, ((uint32_t)(heth->Init.RxDesc + (tailidx))));
 
     heth->RxDescList.RxBuildDescIdx = descidx;
     heth->RxDescList.RxBuildDescCnt = desccount;
@@ -1317,7 +1318,7 @@
 /**
   * @brief  Rx Link callback.
   * @param  pStart: pointer to packet start
-  * @param  pStart: pointer to packet end
+  * @param  pEnd: pointer to packet end
   * @param  buff: pointer to received data
   * @param  Length: received data length
   * @retval None
@@ -1904,14 +1905,12 @@
     }
   }
 
-
   /* ETH DMA Error */
   if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMASR_AIS))
   {
     if (__HAL_ETH_DMA_GET_IT_SOURCE(heth, ETH_DMAIER_AISE))
     {
       heth->ErrorCode |= HAL_ETH_ERROR_DMA;
-
       /* if fatal bus error occurred */
       if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMASR_FBES))
       {
@@ -2116,7 +2115,7 @@
   * @param  RegValue: the value to write
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_ETH_WritePHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
+HAL_StatusTypeDef HAL_ETH_WritePHYRegister(const ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
                                            uint32_t RegValue)
 {
   uint32_t tmpreg1;
@@ -2254,6 +2253,7 @@
                                                     ETH_DMAOMR_FUGF) >> 6) > 0U) ? ENABLE : DISABLE;
   dmaconf->ReceiveThresholdControl = READ_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_RTC);
   dmaconf->SecondFrameOperate = ((READ_BIT(heth->Instance->DMAOMR, ETH_DMAOMR_OSF) >> 2) > 0U) ? ENABLE : DISABLE;
+
   return HAL_OK;
 }
 
@@ -2369,7 +2369,7 @@
   *         the configuration of the ETH MAC filters.
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig(ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig)
+HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig(ETH_HandleTypeDef *heth, const ETH_MACFilterConfigTypeDef *pFilterConfig)
 {
   uint32_t filterconfig;
   uint32_t tmpreg1;
@@ -2447,7 +2447,8 @@
   * @param  pMACAddr: Pointer to MAC address buffer data (6 bytes)
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_ETH_SetSourceMACAddrMatch(ETH_HandleTypeDef *heth, uint32_t AddrNbr, uint8_t *pMACAddr)
+HAL_StatusTypeDef HAL_ETH_SetSourceMACAddrMatch(const ETH_HandleTypeDef *heth, uint32_t AddrNbr,
+                                                const uint8_t *pMACAddr)
 {
   uint32_t macaddrlr;
   uint32_t macaddrhr;
@@ -2546,7 +2547,7 @@
   *         that contains the Power Down configuration
   * @retval None.
   */
-void HAL_ETH_EnterPowerDownMode(ETH_HandleTypeDef *heth, ETH_PowerDownConfigTypeDef *pPowerDownConfig)
+void HAL_ETH_EnterPowerDownMode(ETH_HandleTypeDef *heth, const ETH_PowerDownConfigTypeDef *pPowerDownConfig)
 {
   uint32_t powerdownconfig;
 
@@ -2650,7 +2651,7 @@
   *         the configuration information for ETHERNET module
   * @retval HAL state
   */
-HAL_ETH_StateTypeDef HAL_ETH_GetState(ETH_HandleTypeDef *heth)
+HAL_ETH_StateTypeDef HAL_ETH_GetState(const ETH_HandleTypeDef *heth)
 {
   return heth->gState;
 }
@@ -2661,7 +2662,7 @@
   *         the configuration information for ETHERNET module
   * @retval ETH Error Code
   */
-uint32_t HAL_ETH_GetError(ETH_HandleTypeDef *heth)
+uint32_t HAL_ETH_GetError(const ETH_HandleTypeDef *heth)
 {
   return heth->ErrorCode;
 }
@@ -2672,7 +2673,7 @@
   *         the configuration information for ETHERNET module
   * @retval ETH DMA Error Code
   */
-uint32_t HAL_ETH_GetDMAError(ETH_HandleTypeDef *heth)
+uint32_t HAL_ETH_GetDMAError(const ETH_HandleTypeDef *heth)
 {
   return heth->DMAErrorCode;
 }
@@ -2683,7 +2684,7 @@
   *         the configuration information for ETHERNET module
   * @retval ETH MAC Error Code
   */
-uint32_t HAL_ETH_GetMACError(ETH_HandleTypeDef *heth)
+uint32_t HAL_ETH_GetMACError(const ETH_HandleTypeDef *heth)
 {
   return heth->MACErrorCode;
 }
@@ -2694,7 +2695,7 @@
   *         the configuration information for ETHERNET module
   * @retval ETH MAC WakeUp event source
   */
-uint32_t HAL_ETH_GetMACWakeUpSource(ETH_HandleTypeDef *heth)
+uint32_t HAL_ETH_GetMACWakeUpSource(const ETH_HandleTypeDef *heth)
 {
   return heth->MACWakeUpEvent;
 }
@@ -2941,10 +2942,10 @@
   {
     dmatxdesc = heth->Init.TxDesc + i;
 
-    WRITE_REG(dmatxdesc->DESC0, 0x0);
-    WRITE_REG(dmatxdesc->DESC1, 0x0);
-    WRITE_REG(dmatxdesc->DESC2, 0x0);
-    WRITE_REG(dmatxdesc->DESC3, 0x0);
+    WRITE_REG(dmatxdesc->DESC0, 0x0U);
+    WRITE_REG(dmatxdesc->DESC1, 0x0U);
+    WRITE_REG(dmatxdesc->DESC2, 0x0U);
+    WRITE_REG(dmatxdesc->DESC3, 0x0U);
 
     WRITE_REG(heth->TxDescList.TxDesc[i], (uint32_t)dmatxdesc);
 
@@ -2986,12 +2987,12 @@
   {
     dmarxdesc =  heth->Init.RxDesc + i;
 
-    WRITE_REG(dmarxdesc->DESC0, 0x0);
-    WRITE_REG(dmarxdesc->DESC1, 0x0);
-    WRITE_REG(dmarxdesc->DESC2, 0x0);
-    WRITE_REG(dmarxdesc->DESC3, 0x0);
-    WRITE_REG(dmarxdesc->BackupAddr0, 0x0);
-    WRITE_REG(dmarxdesc->BackupAddr1, 0x0);
+    WRITE_REG(dmarxdesc->DESC0, 0x0U);
+    WRITE_REG(dmarxdesc->DESC1, 0x0U);
+    WRITE_REG(dmarxdesc->DESC2, 0x0U);
+    WRITE_REG(dmarxdesc->DESC3, 0x0U);
+    WRITE_REG(dmarxdesc->BackupAddr0, 0x0U);
+    WRITE_REG(dmarxdesc->BackupAddr1, 0x0U);
 
     /* Set Own bit of the Rx descriptor Status */
     dmarxdesc->DESC0 = ETH_DMARXDESC_OWN;
@@ -3015,11 +3016,11 @@
     }
   }
 
-  WRITE_REG(heth->RxDescList.RxDescIdx, 0);
-  WRITE_REG(heth->RxDescList.RxDescCnt, 0);
-  WRITE_REG(heth->RxDescList.RxBuildDescIdx, 0);
-  WRITE_REG(heth->RxDescList.RxBuildDescCnt, 0);
-  WRITE_REG(heth->RxDescList.ItMode, 0);
+  WRITE_REG(heth->RxDescList.RxDescIdx, 0U);
+  WRITE_REG(heth->RxDescList.RxDescCnt, 0U);
+  WRITE_REG(heth->RxDescList.RxBuildDescIdx, 0U);
+  WRITE_REG(heth->RxDescList.RxBuildDescCnt, 0U);
+  WRITE_REG(heth->RxDescList.ItMode, 0U);
 
   /* Set Receive Descriptor List Address */
   WRITE_REG(heth->Instance->DMARDLAR, (uint32_t) heth->Init.RxDesc);
@@ -3170,7 +3171,6 @@
   dmatxdesclist->PacketAddress[descidx] = dmatxdesclist->CurrentPacketAddress;
 
   dmatxdesclist->CurTxDesc = descidx;
-
   /* disable the interrupt */
   __disable_irq();
 
@@ -3217,4 +3217,3 @@
 /**
   * @}
   */
-
diff --git a/Src/stm32f4xx_hal_exti.c b/Src/stm32f4xx_hal_exti.c
index 0804555..89166e2 100644
--- a/Src/stm32f4xx_hal_exti.c
+++ b/Src/stm32f4xx_hal_exti.c
@@ -64,7 +64,7 @@
         (++) Provide exiting handle as parameter.
         (++) Provide pointer on EXTI_ConfigTypeDef structure as second parameter.
 
-    (#) Clear Exti configuration of a dedicated line using HAL_EXTI_GetConfigLine().
+    (#) Clear Exti configuration of a dedicated line using HAL_EXTI_ClearConfigLine().
         (++) Provide exiting handle as parameter.
 
     (#) Register callback to treat Exti interrupts using HAL_EXTI_RegisterCallback().
@@ -75,7 +75,7 @@
 
     (#) Get interrupt pending bit using HAL_EXTI_GetPending().
 
-    (#) Clear interrupt pending bit using HAL_EXTI_GetPending().
+    (#) Clear interrupt pending bit using HAL_EXTI_ClearPending().
 
     (#) Generate software interrupt using HAL_EXTI_GenerateSWI().
 
diff --git a/Src/stm32f4xx_hal_fmpi2c.c b/Src/stm32f4xx_hal_fmpi2c.c
index 602cea4..a84b29d 100644
--- a/Src/stm32f4xx_hal_fmpi2c.c
+++ b/Src/stm32f4xx_hal_fmpi2c.c
@@ -357,28 +357,28 @@
 
 /* Private define for @ref PreviousState usage */
 #define FMPI2C_STATE_MSK             ((uint32_t)((uint32_t)((uint32_t)HAL_FMPI2C_STATE_BUSY_TX | \
-                                                         (uint32_t)HAL_FMPI2C_STATE_BUSY_RX) & \
-                                              (uint32_t)(~((uint32_t)HAL_FMPI2C_STATE_READY))))
+                                                            (uint32_t)HAL_FMPI2C_STATE_BUSY_RX) & \
+                                                 (uint32_t)(~((uint32_t)HAL_FMPI2C_STATE_READY))))
 /*!< Mask State define, keep only RX and TX bits */
 #define FMPI2C_STATE_NONE            ((uint32_t)(HAL_FMPI2C_MODE_NONE))
 /*!< Default Value */
 #define FMPI2C_STATE_MASTER_BUSY_TX  ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_TX & FMPI2C_STATE_MSK) | \
-                                              (uint32_t)HAL_FMPI2C_MODE_MASTER))
+                                                 (uint32_t)HAL_FMPI2C_MODE_MASTER))
 /*!< Master Busy TX, combinaison of State LSB and Mode enum */
 #define FMPI2C_STATE_MASTER_BUSY_RX  ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_RX & FMPI2C_STATE_MSK) | \
-                                              (uint32_t)HAL_FMPI2C_MODE_MASTER))
+                                                 (uint32_t)HAL_FMPI2C_MODE_MASTER))
 /*!< Master Busy RX, combinaison of State LSB and Mode enum */
 #define FMPI2C_STATE_SLAVE_BUSY_TX   ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_TX & FMPI2C_STATE_MSK) | \
-                                              (uint32_t)HAL_FMPI2C_MODE_SLAVE))
+                                                 (uint32_t)HAL_FMPI2C_MODE_SLAVE))
 /*!< Slave Busy TX, combinaison of State LSB and Mode enum */
 #define FMPI2C_STATE_SLAVE_BUSY_RX   ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_RX & FMPI2C_STATE_MSK) | \
-                                              (uint32_t)HAL_FMPI2C_MODE_SLAVE))
+                                                 (uint32_t)HAL_FMPI2C_MODE_SLAVE))
 /*!< Slave Busy RX, combinaison of State LSB and Mode enum  */
 #define FMPI2C_STATE_MEM_BUSY_TX     ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_TX & FMPI2C_STATE_MSK) | \
-                                              (uint32_t)HAL_FMPI2C_MODE_MEM))
+                                                 (uint32_t)HAL_FMPI2C_MODE_MEM))
 /*!< Memory Busy TX, combinaison of State LSB and Mode enum */
 #define FMPI2C_STATE_MEM_BUSY_RX     ((uint32_t)(((uint32_t)HAL_FMPI2C_STATE_BUSY_RX & FMPI2C_STATE_MSK) | \
-                                              (uint32_t)HAL_FMPI2C_MODE_MEM))
+                                                 (uint32_t)HAL_FMPI2C_MODE_MEM))
 /*!< Memory Busy RX, combinaison of State LSB and Mode enum */
 
 
@@ -401,9 +401,15 @@
   * @}
   */
 
-/* Private macro -------------------------------------------------------------*/
+/* Private macros ------------------------------------------------------------*/
+/** @addtogroup FMPI2C_Private_Macro
+  * @{
+  */
 /* Macro to get remaining data to transfer on DMA side */
 #define FMPI2C_GET_DMA_REMAIN_DATA(__HANDLE__)     __HAL_DMA_GET_COUNTER(__HANDLE__)
+/**
+  * @}
+  */
 
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
@@ -419,6 +425,7 @@
 static void FMPI2C_DMAError(DMA_HandleTypeDef *hdma);
 static void FMPI2C_DMAAbort(DMA_HandleTypeDef *hdma);
 
+
 /* Private functions to handle IT transfer */
 static void FMPI2C_ITAddrCplt(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags);
 static void FMPI2C_ITMasterSeqCplt(FMPI2C_HandleTypeDef *hfmpi2c);
@@ -430,37 +437,37 @@
 
 /* Private functions to handle IT transfer */
 static HAL_StatusTypeDef FMPI2C_RequestMemoryWrite(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress,
-                                                uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
-                                                uint32_t Tickstart);
+                                                   uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
+                                                   uint32_t Tickstart);
 static HAL_StatusTypeDef FMPI2C_RequestMemoryRead(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress,
-                                               uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
-                                               uint32_t Tickstart);
+                                                  uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
+                                                  uint32_t Tickstart);
 
 /* Private functions for FMPI2C transfer IRQ handler */
 static HAL_StatusTypeDef FMPI2C_Master_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                           uint32_t ITSources);
+                                              uint32_t ITSources);
 static HAL_StatusTypeDef FMPI2C_Mem_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                        uint32_t ITSources);
-static HAL_StatusTypeDef FMPI2C_Slave_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                          uint32_t ITSources);
-static HAL_StatusTypeDef FMPI2C_Master_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                            uint32_t ITSources);
-static HAL_StatusTypeDef FMPI2C_Mem_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                         uint32_t ITSources);
-static HAL_StatusTypeDef FMPI2C_Slave_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
                                            uint32_t ITSources);
+static HAL_StatusTypeDef FMPI2C_Slave_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
+                                             uint32_t ITSources);
+static HAL_StatusTypeDef FMPI2C_Master_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
+                                               uint32_t ITSources);
+static HAL_StatusTypeDef FMPI2C_Mem_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
+                                            uint32_t ITSources);
+static HAL_StatusTypeDef FMPI2C_Slave_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
+                                              uint32_t ITSources);
 
 /* Private functions to handle flags during polling transfer */
 static HAL_StatusTypeDef FMPI2C_WaitOnFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Flag, FlagStatus Status,
-                                                    uint32_t Timeout, uint32_t Tickstart);
+                                                       uint32_t Timeout, uint32_t Tickstart);
 static HAL_StatusTypeDef FMPI2C_WaitOnTXISFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout,
-                                                        uint32_t Tickstart);
+                                                           uint32_t Tickstart);
 static HAL_StatusTypeDef FMPI2C_WaitOnRXNEFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout,
-                                                        uint32_t Tickstart);
+                                                           uint32_t Tickstart);
 static HAL_StatusTypeDef FMPI2C_WaitOnSTOPFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout,
-                                                        uint32_t Tickstart);
+                                                           uint32_t Tickstart);
 static HAL_StatusTypeDef FMPI2C_IsErrorOccurred(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout,
-                                             uint32_t Tickstart);
+                                                uint32_t Tickstart);
 
 /* Private functions to centralize the enable/disable of Interrupts */
 static void FMPI2C_Enable_IRQ(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t InterruptRequest);
@@ -474,7 +481,7 @@
 
 /* Private function to handle  start, restart or stop a transfer */
 static void FMPI2C_TransferConfig(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode,
-                               uint32_t Request);
+                                  uint32_t Request);
 
 /* Private function to Convert Specific options */
 static void FMPI2C_ConvertOtherXferOptions(FMPI2C_HandleTypeDef *hfmpi2c);
@@ -602,7 +609,12 @@
   /* Configure FMPI2Cx: Addressing Master mode */
   if (hfmpi2c->Init.AddressingMode == FMPI2C_ADDRESSINGMODE_10BIT)
   {
-    hfmpi2c->Instance->CR2 = (FMPI2C_CR2_ADD10);
+    SET_BIT(hfmpi2c->Instance->CR2, FMPI2C_CR2_ADD10);
+  }
+  else
+  {
+    /* Clear the FMPI2C ADD10 bit */
+    CLEAR_BIT(hfmpi2c->Instance->CR2, FMPI2C_CR2_ADD10);
   }
   /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */
   hfmpi2c->Instance->CR2 |= (FMPI2C_CR2_AUTOEND | FMPI2C_CR2_NACK);
@@ -613,7 +625,7 @@
 
   /* Configure FMPI2Cx: Dual mode and Own Address2 */
   hfmpi2c->Instance->OAR2 = (hfmpi2c->Init.DualAddressMode | hfmpi2c->Init.OwnAddress2 | \
-                          (hfmpi2c->Init.OwnAddress2Masks << 8));
+                             (hfmpi2c->Init.OwnAddress2Masks << 8));
 
   /*---------------------------- FMPI2Cx CR1 Configuration ----------------------*/
   /* Configure FMPI2Cx: Generalcall and NoStretch mode */
@@ -712,6 +724,8 @@
 /**
   * @brief  Register a User FMPI2C Callback
   *         To be used instead of the weak predefined callback
+  * @note   The HAL_FMPI2C_RegisterCallback() may be called before HAL_FMPI2C_Init() in HAL_FMPI2C_STATE_RESET
+  *         to register callbacks for HAL_FMPI2C_MSPINIT_CB_ID and HAL_FMPI2C_MSPDEINIT_CB_ID.
   * @param  hfmpi2c Pointer to a FMPI2C_HandleTypeDef structure that contains
   *                the configuration information for the specified FMPI2C.
   * @param  CallbackID ID of the callback to be registered
@@ -731,7 +745,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_RegisterCallback(FMPI2C_HandleTypeDef *hfmpi2c, HAL_FMPI2C_CallbackIDTypeDef CallbackID,
-                                           pFMPI2C_CallbackTypeDef pCallback)
+                                              pFMPI2C_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
@@ -742,8 +756,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hfmpi2c);
 
   if (HAL_FMPI2C_STATE_READY == hfmpi2c->State)
   {
@@ -832,14 +844,14 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hfmpi2c);
   return status;
 }
 
 /**
   * @brief  Unregister an FMPI2C Callback
   *         FMPI2C callback is redirected to the weak predefined callback
+  * @note   The HAL_FMPI2C_UnRegisterCallback() may be called before HAL_FMPI2C_Init() in HAL_FMPI2C_STATE_RESET
+  *         to un-register callbacks for HAL_FMPI2C_MSPINIT_CB_ID and HAL_FMPI2C_MSPDEINIT_CB_ID.
   * @param  hfmpi2c Pointer to a FMPI2C_HandleTypeDef structure that contains
   *                the configuration information for the specified FMPI2C.
   * @param  CallbackID ID of the callback to be unregistered
@@ -862,9 +874,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hfmpi2c);
-
   if (HAL_FMPI2C_STATE_READY == hfmpi2c->State)
   {
     switch (CallbackID)
@@ -952,8 +961,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hfmpi2c);
   return status;
 }
 
@@ -976,8 +983,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hfmpi2c);
 
   if (HAL_FMPI2C_STATE_READY == hfmpi2c->State)
   {
@@ -992,8 +997,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hfmpi2c);
   return status;
 }
 
@@ -1008,9 +1011,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hfmpi2c);
-
   if (HAL_FMPI2C_STATE_READY == hfmpi2c->State)
   {
     hfmpi2c->AddrCallback = HAL_FMPI2C_AddrCallback; /* Legacy weak AddrCallback  */
@@ -1024,8 +1024,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hfmpi2c);
   return status;
 }
 
@@ -1120,7 +1118,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                          uint16_t Size, uint32_t Timeout)
+                                             uint16_t Size, uint32_t Timeout)
 {
   uint32_t tickstart;
   uint32_t xfermode;
@@ -1211,13 +1209,13 @@
         {
           hfmpi2c->XferSize = MAX_NBYTE_SIZE;
           FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_RELOAD_MODE,
-                             FMPI2C_NO_STARTSTOP);
+                                FMPI2C_NO_STARTSTOP);
         }
         else
         {
           hfmpi2c->XferSize = hfmpi2c->XferCount;
           FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_AUTOEND_MODE,
-                             FMPI2C_NO_STARTSTOP);
+                                FMPI2C_NO_STARTSTOP);
         }
       }
     }
@@ -1261,7 +1259,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Receive(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                         uint16_t Size, uint32_t Timeout)
+                                            uint16_t Size, uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -1291,15 +1289,15 @@
     /* Set NBYTES to write and reload if hfmpi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
     if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
     {
-      hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      hfmpi2c->XferSize = 1U;
       FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_RELOAD_MODE,
-                         FMPI2C_GENERATE_START_READ);
+                            FMPI2C_GENERATE_START_READ);
     }
     else
     {
       hfmpi2c->XferSize = hfmpi2c->XferCount;
       FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_AUTOEND_MODE,
-                         FMPI2C_GENERATE_START_READ);
+                            FMPI2C_GENERATE_START_READ);
     }
 
     while (hfmpi2c->XferCount > 0U)
@@ -1331,13 +1329,13 @@
         {
           hfmpi2c->XferSize = MAX_NBYTE_SIZE;
           FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_RELOAD_MODE,
-                             FMPI2C_NO_STARTSTOP);
+                                FMPI2C_NO_STARTSTOP);
         }
         else
         {
           hfmpi2c->XferSize = hfmpi2c->XferCount;
           FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_AUTOEND_MODE,
-                             FMPI2C_NO_STARTSTOP);
+                                FMPI2C_NO_STARTSTOP);
         }
       }
     }
@@ -1379,9 +1377,11 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Transmit(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                         uint32_t Timeout)
+                                            uint32_t Timeout)
 {
   uint32_t tickstart;
+  uint16_t tmpXferCount;
+  HAL_StatusTypeDef error;
 
   if (hfmpi2c->State == HAL_FMPI2C_STATE_READY)
   {
@@ -1416,6 +1416,19 @@
       return HAL_ERROR;
     }
 
+    /* Preload TX data if no stretch enable */
+    if (hfmpi2c->Init.NoStretchMode == FMPI2C_NOSTRETCH_ENABLE)
+    {
+      /* Preload TX register */
+      /* Write data to TXDR */
+      hfmpi2c->Instance->TXDR = *hfmpi2c->pBuffPtr;
+
+      /* Increment Buffer pointer */
+      hfmpi2c->pBuffPtr++;
+
+      hfmpi2c->XferCount--;
+    }
+
     /* Clear ADDR flag */
     __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_ADDR);
 
@@ -1462,31 +1475,48 @@
     }
 
     /* Wait until AF flag is set */
-    if (FMPI2C_WaitOnFlagUntilTimeout(hfmpi2c, FMPI2C_FLAG_AF, RESET, Timeout, tickstart) != HAL_OK)
+    error = FMPI2C_WaitOnFlagUntilTimeout(hfmpi2c, FMPI2C_FLAG_AF, RESET, Timeout, tickstart);
+
+    if (error != HAL_OK)
     {
-      /* Disable Address Acknowledge */
-      hfmpi2c->Instance->CR2 |= FMPI2C_CR2_NACK;
-      return HAL_ERROR;
+      /* Check that FMPI2C transfer finished */
+      /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */
+      /* Mean XferCount == 0 */
+
+      tmpXferCount = hfmpi2c->XferCount;
+      if ((hfmpi2c->ErrorCode == HAL_FMPI2C_ERROR_AF) && (tmpXferCount == 0U))
+      {
+        /* Reset ErrorCode to NONE */
+        hfmpi2c->ErrorCode = HAL_FMPI2C_ERROR_NONE;
+      }
+      else
+      {
+        /* Disable Address Acknowledge */
+        hfmpi2c->Instance->CR2 |= FMPI2C_CR2_NACK;
+        return HAL_ERROR;
+      }
     }
-
-    /* Flush TX register */
-    FMPI2C_Flush_TXDR(hfmpi2c);
-
-    /* Clear AF flag */
-    __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_AF);
-
-    /* Wait until STOP flag is set */
-    if (FMPI2C_WaitOnSTOPFlagUntilTimeout(hfmpi2c, Timeout, tickstart) != HAL_OK)
+    else
     {
-      /* Disable Address Acknowledge */
-      hfmpi2c->Instance->CR2 |= FMPI2C_CR2_NACK;
+      /* Flush TX register */
+      FMPI2C_Flush_TXDR(hfmpi2c);
 
-      return HAL_ERROR;
+      /* Clear AF flag */
+      __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_AF);
+
+      /* Wait until STOP flag is set */
+      if (FMPI2C_WaitOnSTOPFlagUntilTimeout(hfmpi2c, Timeout, tickstart) != HAL_OK)
+      {
+        /* Disable Address Acknowledge */
+        hfmpi2c->Instance->CR2 |= FMPI2C_CR2_NACK;
+
+        return HAL_ERROR;
+      }
+
+      /* Clear STOP flag */
+      __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF);
     }
 
-    /* Clear STOP flag */
-    __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF);
-
     /* Wait until BUSY flag is reset */
     if (FMPI2C_WaitOnFlagUntilTimeout(hfmpi2c, FMPI2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK)
     {
@@ -1522,7 +1552,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Receive(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                        uint32_t Timeout)
+                                           uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -1652,7 +1682,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                             uint16_t Size)
+                                                uint16_t Size)
 {
   uint32_t xfermode;
 
@@ -1689,7 +1719,7 @@
 
     /* Send Slave Address */
     /* Set NBYTES to write and reload if hfmpi2c->XferCount > MAX_NBYTE_SIZE */
-        if (hfmpi2c->XferSize > 0U)
+    if (hfmpi2c->XferSize > 0U)
     {
       /* Preload TX register */
       /* Write data to TXDR */
@@ -1742,7 +1772,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                            uint16_t Size)
+                                               uint16_t Size)
 {
   uint32_t xfermode;
 
@@ -1768,7 +1798,7 @@
 
     if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
     {
-      hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      hfmpi2c->XferSize = 1U;
       xfermode = FMPI2C_RELOAD_MODE;
     }
     else
@@ -1831,6 +1861,20 @@
     hfmpi2c->XferOptions = FMPI2C_NO_OPTION_FRAME;
     hfmpi2c->XferISR     = FMPI2C_Slave_ISR_IT;
 
+    /* Preload TX data if no stretch enable */
+    if (hfmpi2c->Init.NoStretchMode == FMPI2C_NOSTRETCH_ENABLE)
+    {
+      /* Preload TX register */
+      /* Write data to TXDR */
+      hfmpi2c->Instance->TXDR = *hfmpi2c->pBuffPtr;
+
+      /* Increment Buffer pointer */
+      hfmpi2c->pBuffPtr++;
+
+      hfmpi2c->XferCount--;
+      hfmpi2c->XferSize--;
+    }
+
     /* Process Unlocked */
     __HAL_UNLOCK(hfmpi2c);
 
@@ -1913,7 +1957,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                              uint16_t Size)
+                                                 uint16_t Size)
 {
   uint32_t xfermode;
   HAL_StatusTypeDef dmaxferstatus;
@@ -2076,7 +2120,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                             uint16_t Size)
+                                                uint16_t Size)
 {
   uint32_t xfermode;
   HAL_StatusTypeDef dmaxferstatus;
@@ -2103,7 +2147,7 @@
 
     if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
     {
-      hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      hfmpi2c->XferSize = 1U;
       xfermode = FMPI2C_RELOAD_MODE;
     }
     else
@@ -2189,7 +2233,7 @@
       /* Send Slave Address */
       /* Set NBYTES to read and generate START condition */
       FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_AUTOEND_MODE,
-                         FMPI2C_GENERATE_START_READ);
+                            FMPI2C_GENERATE_START_READ);
 
       /* Process Unlocked */
       __HAL_UNLOCK(hfmpi2c);
@@ -2245,39 +2289,88 @@
     hfmpi2c->XferOptions = FMPI2C_NO_OPTION_FRAME;
     hfmpi2c->XferISR     = FMPI2C_Slave_ISR_DMA;
 
-    if (hfmpi2c->hdmatx != NULL)
+    /* Preload TX data if no stretch enable */
+    if (hfmpi2c->Init.NoStretchMode == FMPI2C_NOSTRETCH_ENABLE)
     {
-      /* Set the FMPI2C DMA transfer complete callback */
-      hfmpi2c->hdmatx->XferCpltCallback = FMPI2C_DMASlaveTransmitCplt;
+      /* Preload TX register */
+      /* Write data to TXDR */
+      hfmpi2c->Instance->TXDR = *hfmpi2c->pBuffPtr;
 
-      /* Set the DMA error callback */
-      hfmpi2c->hdmatx->XferErrorCallback = FMPI2C_DMAError;
+      /* Increment Buffer pointer */
+      hfmpi2c->pBuffPtr++;
 
-      /* Set the unused DMA callbacks to NULL */
-      hfmpi2c->hdmatx->XferHalfCpltCallback = NULL;
-      hfmpi2c->hdmatx->XferAbortCallback = NULL;
+      hfmpi2c->XferCount--;
+      hfmpi2c->XferSize--;
+    }
 
-      /* Enable the DMA stream */
-      dmaxferstatus = HAL_DMA_Start_IT(hfmpi2c->hdmatx, (uint32_t)pData, (uint32_t)&hfmpi2c->Instance->TXDR,
-                                       hfmpi2c->XferSize);
+    if (hfmpi2c->XferCount != 0U)
+    {
+      if (hfmpi2c->hdmatx != NULL)
+      {
+        /* Set the FMPI2C DMA transfer complete callback */
+        hfmpi2c->hdmatx->XferCpltCallback = FMPI2C_DMASlaveTransmitCplt;
+
+        /* Set the DMA error callback */
+        hfmpi2c->hdmatx->XferErrorCallback = FMPI2C_DMAError;
+
+        /* Set the unused DMA callbacks to NULL */
+        hfmpi2c->hdmatx->XferHalfCpltCallback = NULL;
+        hfmpi2c->hdmatx->XferAbortCallback = NULL;
+
+        /* Enable the DMA stream */
+        dmaxferstatus = HAL_DMA_Start_IT(hfmpi2c->hdmatx,
+                                         (uint32_t)hfmpi2c->pBuffPtr, (uint32_t)&hfmpi2c->Instance->TXDR,
+                                         hfmpi2c->XferSize);
+      }
+      else
+      {
+        /* Update FMPI2C state */
+        hfmpi2c->State     = HAL_FMPI2C_STATE_LISTEN;
+        hfmpi2c->Mode      = HAL_FMPI2C_MODE_NONE;
+
+        /* Update FMPI2C error code */
+        hfmpi2c->ErrorCode |= HAL_FMPI2C_ERROR_DMA_PARAM;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(hfmpi2c);
+
+        return HAL_ERROR;
+      }
+
+      if (dmaxferstatus == HAL_OK)
+      {
+        /* Enable Address Acknowledge */
+        hfmpi2c->Instance->CR2 &= ~FMPI2C_CR2_NACK;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(hfmpi2c);
+
+        /* Note : The FMPI2C interrupts must be enabled after unlocking current process
+                  to avoid the risk of FMPI2C interrupt handle execution before current
+                  process unlock */
+        /* Enable ERR, STOP, NACK, ADDR interrupts */
+        FMPI2C_Enable_IRQ(hfmpi2c, FMPI2C_XFER_LISTEN_IT);
+
+        /* Enable DMA Request */
+        hfmpi2c->Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
+      }
+      else
+      {
+        /* Update FMPI2C state */
+        hfmpi2c->State     = HAL_FMPI2C_STATE_LISTEN;
+        hfmpi2c->Mode      = HAL_FMPI2C_MODE_NONE;
+
+        /* Update FMPI2C error code */
+        hfmpi2c->ErrorCode |= HAL_FMPI2C_ERROR_DMA;
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(hfmpi2c);
+
+        return HAL_ERROR;
+      }
     }
     else
     {
-      /* Update FMPI2C state */
-      hfmpi2c->State     = HAL_FMPI2C_STATE_LISTEN;
-      hfmpi2c->Mode      = HAL_FMPI2C_MODE_NONE;
-
-      /* Update FMPI2C error code */
-      hfmpi2c->ErrorCode |= HAL_FMPI2C_ERROR_DMA_PARAM;
-
-      /* Process Unlocked */
-      __HAL_UNLOCK(hfmpi2c);
-
-      return HAL_ERROR;
-    }
-
-    if (dmaxferstatus == HAL_OK)
-    {
       /* Enable Address Acknowledge */
       hfmpi2c->Instance->CR2 &= ~FMPI2C_CR2_NACK;
 
@@ -2285,27 +2378,10 @@
       __HAL_UNLOCK(hfmpi2c);
 
       /* Note : The FMPI2C interrupts must be enabled after unlocking current process
-                to avoid the risk of FMPI2C interrupt handle execution before current
-                process unlock */
+      to avoid the risk of FMPI2C interrupt handle execution before current
+      process unlock */
       /* Enable ERR, STOP, NACK, ADDR interrupts */
       FMPI2C_Enable_IRQ(hfmpi2c, FMPI2C_XFER_LISTEN_IT);
-
-      /* Enable DMA Request */
-      hfmpi2c->Instance->CR1 |= FMPI2C_CR1_TXDMAEN;
-    }
-    else
-    {
-      /* Update FMPI2C state */
-      hfmpi2c->State     = HAL_FMPI2C_STATE_LISTEN;
-      hfmpi2c->Mode      = HAL_FMPI2C_MODE_NONE;
-
-      /* Update FMPI2C error code */
-      hfmpi2c->ErrorCode |= HAL_FMPI2C_ERROR_DMA;
-
-      /* Process Unlocked */
-      __HAL_UNLOCK(hfmpi2c);
-
-      return HAL_ERROR;
     }
 
     return HAL_OK;
@@ -2419,6 +2495,7 @@
     return HAL_BUSY;
   }
 }
+
 /**
   * @brief  Write an amount of data in blocking mode to a specific memory address
   * @param  hfmpi2c Pointer to a FMPI2C_HandleTypeDef structure that contains
@@ -2433,7 +2510,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Write(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                    uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
+                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -2517,13 +2594,13 @@
         {
           hfmpi2c->XferSize = MAX_NBYTE_SIZE;
           FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_RELOAD_MODE,
-                             FMPI2C_NO_STARTSTOP);
+                                FMPI2C_NO_STARTSTOP);
         }
         else
         {
           hfmpi2c->XferSize = hfmpi2c->XferCount;
           FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_AUTOEND_MODE,
-                             FMPI2C_NO_STARTSTOP);
+                                FMPI2C_NO_STARTSTOP);
         }
       }
 
@@ -2570,7 +2647,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Read(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                   uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
+                                      uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -2617,15 +2694,15 @@
     /* Set NBYTES to write and reload if hfmpi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
     if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
     {
-      hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      hfmpi2c->XferSize = 1U;
       FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_RELOAD_MODE,
-                         FMPI2C_GENERATE_START_READ);
+                            FMPI2C_GENERATE_START_READ);
     }
     else
     {
       hfmpi2c->XferSize = hfmpi2c->XferCount;
       FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_AUTOEND_MODE,
-                         FMPI2C_GENERATE_START_READ);
+                            FMPI2C_GENERATE_START_READ);
     }
 
     do
@@ -2655,15 +2732,15 @@
 
         if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
         {
-          hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+          hfmpi2c->XferSize = 1U;
           FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t) hfmpi2c->XferSize, FMPI2C_RELOAD_MODE,
-                             FMPI2C_NO_STARTSTOP);
+                                FMPI2C_NO_STARTSTOP);
         }
         else
         {
           hfmpi2c->XferSize = hfmpi2c->XferCount;
           FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_AUTOEND_MODE,
-                             FMPI2C_NO_STARTSTOP);
+                                FMPI2C_NO_STARTSTOP);
         }
       }
     } while (hfmpi2c->XferCount > 0U);
@@ -2707,7 +2784,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Write_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
+                                          uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 {
   /* Check the parameters */
   assert_param(IS_FMPI2C_MEMADD_SIZE(MemAddSize));
@@ -2795,7 +2872,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Read_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                      uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
+                                         uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 {
   /* Check the parameters */
   assert_param(IS_FMPI2C_MEMADD_SIZE(MemAddSize));
@@ -2868,6 +2945,7 @@
     return HAL_BUSY;
   }
 }
+
 /**
   * @brief  Write an amount of data in non-blocking mode with DMA to a specific memory address
   * @param  hfmpi2c Pointer to a FMPI2C_HandleTypeDef structure that contains
@@ -2881,7 +2959,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Write_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                        uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
+                                           uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 {
   HAL_StatusTypeDef dmaxferstatus;
 
@@ -3027,7 +3105,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Mem_Read_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint16_t MemAddress,
-                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
+                                          uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
 {
   HAL_StatusTypeDef dmaxferstatus;
 
@@ -3172,7 +3250,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_IsDeviceReady(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint32_t Trials,
-                                        uint32_t Timeout)
+                                           uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -3264,22 +3342,6 @@
         __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF);
       }
 
-      /* Check if the maximum allowed number of trials has been reached */
-      if (FMPI2C_Trials == Trials)
-      {
-        /* Generate Stop */
-        hfmpi2c->Instance->CR2 |= FMPI2C_CR2_STOP;
-
-        /* Wait until STOPF flag is reset */
-        if (FMPI2C_WaitOnFlagUntilTimeout(hfmpi2c, FMPI2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK)
-        {
-          return HAL_ERROR;
-        }
-
-        /* Clear STOP Flag */
-        __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF);
-      }
-
       /* Increment Trials */
       FMPI2C_Trials++;
     } while (FMPI2C_Trials < Trials);
@@ -3314,7 +3376,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                                 uint16_t Size, uint32_t XferOptions)
+                                                    uint16_t Size, uint32_t XferOptions)
 {
   uint32_t xfermode;
   uint32_t xferrequest = FMPI2C_GENERATE_START_WRITE;
@@ -3428,7 +3490,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                                  uint16_t Size, uint32_t XferOptions)
+                                                     uint16_t Size, uint32_t XferOptions)
 {
   uint32_t xfermode;
   uint32_t xferrequest = FMPI2C_GENERATE_START_WRITE;
@@ -3625,7 +3687,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                                uint16_t Size, uint32_t XferOptions)
+                                                   uint16_t Size, uint32_t XferOptions)
 {
   uint32_t xfermode;
   uint32_t xferrequest = FMPI2C_GENERATE_START_READ;
@@ -3712,7 +3774,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Master_Seq_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t *pData,
-                                                 uint16_t Size, uint32_t XferOptions)
+                                                    uint16_t Size, uint32_t XferOptions)
 {
   uint32_t xfermode;
   uint32_t xferrequest = FMPI2C_GENERATE_START_READ;
@@ -3844,7 +3906,7 @@
       /* Send Slave Address */
       /* Set NBYTES to read and generate START condition */
       FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_AUTOEND_MODE,
-                         FMPI2C_GENERATE_START_READ);
+                            FMPI2C_GENERATE_START_READ);
 
       /* Process Unlocked */
       __HAL_UNLOCK(hfmpi2c);
@@ -3878,7 +3940,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Transmit_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                                uint32_t XferOptions)
+                                                   uint32_t XferOptions)
 {
   /* Declaration of tmp to prevent undefined behavior of volatile usage */
   FlagStatus tmp;
@@ -3978,7 +4040,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Transmit_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                                 uint32_t XferOptions)
+                                                    uint32_t XferOptions)
 {
   /* Declaration of tmp to prevent undefined behavior of volatile usage */
   FlagStatus tmp;
@@ -4016,7 +4078,7 @@
           hfmpi2c->Instance->CR1 &= ~FMPI2C_CR1_RXDMAEN;
 
           /* Set the FMPI2C DMA Abort callback :
-           will lead to call HAL_FMPI2C_ErrorCallback() at end of DMA abort procedure */
+          will lead to call HAL_FMPI2C_ErrorCallback() at end of DMA abort procedure */
           hfmpi2c->hdmarx->XferAbortCallback = FMPI2C_DMAAbort;
 
           /* Abort DMA RX */
@@ -4038,7 +4100,7 @@
         if (hfmpi2c->hdmatx != NULL)
         {
           /* Set the FMPI2C DMA Abort callback :
-           will lead to call HAL_FMPI2C_ErrorCallback() at end of DMA abort procedure */
+          will lead to call HAL_FMPI2C_ErrorCallback() at end of DMA abort procedure */
           hfmpi2c->hdmatx->XferAbortCallback = FMPI2C_DMAAbort;
 
           /* Abort DMA TX */
@@ -4162,7 +4224,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Receive_IT(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                               uint32_t XferOptions)
+                                                  uint32_t XferOptions)
 {
   /* Declaration of tmp to prevent undefined behavior of volatile usage */
   FlagStatus tmp;
@@ -4262,7 +4324,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPI2C_Slave_Seq_Receive_DMA(FMPI2C_HandleTypeDef *hfmpi2c, uint8_t *pData, uint16_t Size,
-                                                uint32_t XferOptions)
+                                                   uint32_t XferOptions)
 {
   /* Declaration of tmp to prevent undefined behavior of volatile usage */
   FlagStatus tmp;
@@ -4560,7 +4622,7 @@
   *                the configuration information for the specified FMPI2C.
   * @retval None
   */
-void HAL_FMPI2C_EV_IRQHandler(FMPI2C_HandleTypeDef *hfmpi2c)
+void HAL_FMPI2C_EV_IRQHandler(FMPI2C_HandleTypeDef *hfmpi2c) /* Derogation MISRAC2012-Rule-8.13 */
 {
   /* Get current IT Flags and IT sources value */
   uint32_t itflags   = READ_REG(hfmpi2c->Instance->ISR);
@@ -4862,7 +4924,7 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_Master_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                           uint32_t ITSources)
+                                              uint32_t ITSources)
 {
   uint16_t devaddress;
   uint32_t tmpITFlags = ITFlags;
@@ -4925,7 +4987,15 @@
 
       if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
       {
-        hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+        /* Errata workaround 170323 */
+        if (FMPI2C_GET_DIR(hfmpi2c) == FMPI2C_DIRECTION_RECEIVE)
+        {
+          hfmpi2c->XferSize = 1U;
+        }
+        else
+        {
+          hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+        }
         FMPI2C_TransferConfig(hfmpi2c, devaddress, (uint8_t)hfmpi2c->XferSize, FMPI2C_RELOAD_MODE, FMPI2C_NO_STARTSTOP);
       }
       else
@@ -4934,12 +5004,12 @@
         if (hfmpi2c->XferOptions != FMPI2C_NO_OPTION_FRAME)
         {
           FMPI2C_TransferConfig(hfmpi2c, devaddress, (uint8_t)hfmpi2c->XferSize,
-                             hfmpi2c->XferOptions, FMPI2C_NO_STARTSTOP);
+                                hfmpi2c->XferOptions, FMPI2C_NO_STARTSTOP);
         }
         else
         {
           FMPI2C_TransferConfig(hfmpi2c, devaddress, (uint8_t)hfmpi2c->XferSize,
-                             FMPI2C_AUTOEND_MODE, FMPI2C_NO_STARTSTOP);
+                                FMPI2C_AUTOEND_MODE, FMPI2C_NO_STARTSTOP);
         }
       }
     }
@@ -5080,15 +5150,23 @@
     {
       if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
       {
-        hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+        /* Errata workaround 170323 */
+        if (FMPI2C_GET_DIR(hfmpi2c) == FMPI2C_DIRECTION_RECEIVE)
+        {
+          hfmpi2c->XferSize = 1U;
+        }
+        else
+        {
+          hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+        }
         FMPI2C_TransferConfig(hfmpi2c, (uint16_t)hfmpi2c->Devaddress, (uint8_t)hfmpi2c->XferSize,
-                           FMPI2C_RELOAD_MODE, FMPI2C_NO_STARTSTOP);
+                              FMPI2C_RELOAD_MODE, FMPI2C_NO_STARTSTOP);
       }
       else
       {
         hfmpi2c->XferSize = hfmpi2c->XferCount;
         FMPI2C_TransferConfig(hfmpi2c, (uint16_t)hfmpi2c->Devaddress, (uint8_t)hfmpi2c->XferSize,
-                           FMPI2C_AUTOEND_MODE, FMPI2C_NO_STARTSTOP);
+                              FMPI2C_AUTOEND_MODE, FMPI2C_NO_STARTSTOP);
       }
     }
     else
@@ -5114,11 +5192,19 @@
 
     if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
     {
-      hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      /* Errata workaround 170323 */
+      if (FMPI2C_GET_DIR(hfmpi2c) == FMPI2C_DIRECTION_RECEIVE)
+      {
+        hfmpi2c->XferSize = 1U;
+      }
+      else
+      {
+        hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      }
 
       /* Set NBYTES to write and reload if hfmpi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
       FMPI2C_TransferConfig(hfmpi2c, (uint16_t)hfmpi2c->Devaddress, (uint8_t)hfmpi2c->XferSize,
-                         FMPI2C_RELOAD_MODE, direction);
+                            FMPI2C_RELOAD_MODE, direction);
     }
     else
     {
@@ -5126,7 +5212,7 @@
 
       /* Set NBYTES to write and generate RESTART */
       FMPI2C_TransferConfig(hfmpi2c, (uint16_t)hfmpi2c->Devaddress, (uint8_t)hfmpi2c->XferSize,
-                         FMPI2C_AUTOEND_MODE, direction);
+                            FMPI2C_AUTOEND_MODE, direction);
     }
   }
   else
@@ -5156,7 +5242,7 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_Slave_ISR_IT(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                          uint32_t ITSources)
+                                             uint32_t ITSources)
 {
   uint32_t tmpoptions = hfmpi2c->XferOptions;
   uint32_t tmpITFlags = ITFlags;
@@ -5171,9 +5257,8 @@
     /* Call FMPI2C Slave complete process */
     FMPI2C_ITSlaveCplt(hfmpi2c, tmpITFlags);
   }
-
-  if ((FMPI2C_CHECK_FLAG(tmpITFlags, FMPI2C_FLAG_AF) != RESET) && \
-      (FMPI2C_CHECK_IT_SOURCE(ITSources, FMPI2C_IT_NACKI) != RESET))
+  else if ((FMPI2C_CHECK_FLAG(tmpITFlags, FMPI2C_FLAG_AF) != RESET) && \
+           (FMPI2C_CHECK_IT_SOURCE(ITSources, FMPI2C_IT_NACKI) != RESET))
   {
     /* Check that FMPI2C transfer finished */
     /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */
@@ -5297,7 +5382,7 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_Master_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                            uint32_t ITSources)
+                                               uint32_t ITSources)
 {
   uint16_t devaddress;
   uint32_t xfermode;
@@ -5336,7 +5421,15 @@
       /* Prepare the new XferSize to transfer */
       if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
       {
-        hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+        /* Errata workaround 170323 */
+        if (FMPI2C_GET_DIR(hfmpi2c) == FMPI2C_DIRECTION_RECEIVE)
+        {
+          hfmpi2c->XferSize = 1U;
+        }
+        else
+        {
+          hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+        }
         xfermode = FMPI2C_RELOAD_MODE;
       }
       else
@@ -5484,15 +5577,23 @@
       /* Prepare the new XferSize to transfer */
       if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
       {
-        hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+        /* Errata workaround 170323 */
+        if (FMPI2C_GET_DIR(hfmpi2c) == FMPI2C_DIRECTION_RECEIVE)
+        {
+          hfmpi2c->XferSize = 1U;
+        }
+        else
+        {
+          hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+        }
         FMPI2C_TransferConfig(hfmpi2c, (uint16_t)hfmpi2c->Devaddress, (uint8_t)hfmpi2c->XferSize,
-                           FMPI2C_RELOAD_MODE, FMPI2C_NO_STARTSTOP);
+                              FMPI2C_RELOAD_MODE, FMPI2C_NO_STARTSTOP);
       }
       else
       {
         hfmpi2c->XferSize = hfmpi2c->XferCount;
         FMPI2C_TransferConfig(hfmpi2c, (uint16_t)hfmpi2c->Devaddress, (uint8_t)hfmpi2c->XferSize,
-                           FMPI2C_AUTOEND_MODE, FMPI2C_NO_STARTSTOP);
+                              FMPI2C_AUTOEND_MODE, FMPI2C_NO_STARTSTOP);
       }
 
       /* Update XferCount value */
@@ -5531,11 +5632,19 @@
 
     if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
     {
-      hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      /* Errata workaround 170323 */
+      if (FMPI2C_GET_DIR(hfmpi2c) == FMPI2C_DIRECTION_RECEIVE)
+      {
+        hfmpi2c->XferSize = 1U;
+      }
+      else
+      {
+        hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      }
 
       /* Set NBYTES to write and reload if hfmpi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */
       FMPI2C_TransferConfig(hfmpi2c, (uint16_t)hfmpi2c->Devaddress, (uint8_t)hfmpi2c->XferSize,
-                         FMPI2C_RELOAD_MODE, direction);
+                            FMPI2C_RELOAD_MODE, direction);
     }
     else
     {
@@ -5543,7 +5652,7 @@
 
       /* Set NBYTES to write and generate RESTART */
       FMPI2C_TransferConfig(hfmpi2c, (uint16_t)hfmpi2c->Devaddress, (uint8_t)hfmpi2c->XferSize,
-                         FMPI2C_AUTOEND_MODE, direction);
+                            FMPI2C_AUTOEND_MODE, direction);
     }
 
     /* Update XferCount value */
@@ -5585,7 +5694,7 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_Slave_ISR_DMA(struct __FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ITFlags,
-                                           uint32_t ITSources)
+                                              uint32_t ITSources)
 {
   uint32_t tmpoptions = hfmpi2c->XferOptions;
   uint32_t treatdmanack = 0U;
@@ -5601,9 +5710,8 @@
     /* Call FMPI2C Slave complete process */
     FMPI2C_ITSlaveCplt(hfmpi2c, ITFlags);
   }
-
-  if ((FMPI2C_CHECK_FLAG(ITFlags, FMPI2C_FLAG_AF) != RESET) && \
-      (FMPI2C_CHECK_IT_SOURCE(ITSources, FMPI2C_IT_NACKI) != RESET))
+  else if ((FMPI2C_CHECK_FLAG(ITFlags, FMPI2C_FLAG_AF) != RESET) && \
+           (FMPI2C_CHECK_IT_SOURCE(ITSources, FMPI2C_IT_NACKI) != RESET))
   {
     /* Check that FMPI2C transfer finished */
     /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */
@@ -5730,8 +5838,8 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_RequestMemoryWrite(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress,
-                                                uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
-                                                uint32_t Tickstart)
+                                                   uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
+                                                   uint32_t Tickstart)
 {
   FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)MemAddSize, FMPI2C_RELOAD_MODE, FMPI2C_GENERATE_START_WRITE);
 
@@ -5785,8 +5893,8 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_RequestMemoryRead(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress,
-                                               uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
-                                               uint32_t Tickstart)
+                                                  uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout,
+                                                  uint32_t Tickstart)
 {
   FMPI2C_TransferConfig(hfmpi2c, DevAddress, (uint8_t)MemAddSize, FMPI2C_SOFTEND_MODE, FMPI2C_GENERATE_START_WRITE);
 
@@ -6202,14 +6310,14 @@
 {
   uint32_t tmpcr1value = READ_REG(hfmpi2c->Instance->CR1);
   uint32_t tmpITFlags = ITFlags;
+  uint32_t tmpoptions = hfmpi2c->XferOptions;
   HAL_FMPI2C_StateTypeDef tmpstate = hfmpi2c->State;
 
   /* Clear STOP Flag */
   __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF);
 
   /* Disable Interrupts and Store Previous state */
-  if ((tmpstate == HAL_FMPI2C_STATE_BUSY_TX) || (tmpstate == HAL_FMPI2C_STATE_BUSY_TX_LISTEN) ||
-      (tmpstate == HAL_FMPI2C_STATE_LISTEN))
+  if ((tmpstate == HAL_FMPI2C_STATE_BUSY_TX) || (tmpstate == HAL_FMPI2C_STATE_BUSY_TX_LISTEN))
   {
     FMPI2C_Disable_IRQ(hfmpi2c, FMPI2C_XFER_LISTEN_IT | FMPI2C_XFER_TX_IT);
     hfmpi2c->PreviousState = FMPI2C_STATE_SLAVE_BUSY_TX;
@@ -6219,6 +6327,11 @@
     FMPI2C_Disable_IRQ(hfmpi2c, FMPI2C_XFER_LISTEN_IT | FMPI2C_XFER_RX_IT);
     hfmpi2c->PreviousState = FMPI2C_STATE_SLAVE_BUSY_RX;
   }
+  else if (tmpstate == HAL_FMPI2C_STATE_LISTEN)
+  {
+    FMPI2C_Disable_IRQ(hfmpi2c, FMPI2C_XFER_LISTEN_IT | FMPI2C_XFER_TX_IT | FMPI2C_XFER_RX_IT);
+    hfmpi2c->PreviousState = FMPI2C_STATE_NONE;
+  }
   else
   {
     /* Do nothing */
@@ -6285,6 +6398,57 @@
     hfmpi2c->ErrorCode |= HAL_FMPI2C_ERROR_AF;
   }
 
+  if ((FMPI2C_CHECK_FLAG(tmpITFlags, FMPI2C_FLAG_AF) != RESET) && \
+      (FMPI2C_CHECK_IT_SOURCE(tmpcr1value, FMPI2C_IT_NACKI) != RESET))
+  {
+    /* Check that FMPI2C transfer finished */
+    /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */
+    /* Mean XferCount == 0*/
+    /* So clear Flag NACKF only */
+    if (hfmpi2c->XferCount == 0U)
+    {
+      if ((hfmpi2c->State == HAL_FMPI2C_STATE_LISTEN) && (tmpoptions == FMPI2C_FIRST_AND_LAST_FRAME))
+        /* Same action must be done for (tmpoptions == FMPI2C_LAST_FRAME) which removed for
+           Warning[Pa134]: left and right operands are identical */
+      {
+        /* Call FMPI2C Listen complete process */
+        FMPI2C_ITListenCplt(hfmpi2c, tmpITFlags);
+      }
+      else if ((hfmpi2c->State == HAL_FMPI2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != FMPI2C_NO_OPTION_FRAME))
+      {
+        /* Clear NACK Flag */
+        __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_AF);
+
+        /* Flush TX register */
+        FMPI2C_Flush_TXDR(hfmpi2c);
+
+        /* Last Byte is Transmitted */
+        /* Call FMPI2C Slave Sequential complete process */
+        FMPI2C_ITSlaveSeqCplt(hfmpi2c);
+      }
+      else
+      {
+        /* Clear NACK Flag */
+        __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_AF);
+      }
+    }
+    else
+    {
+      /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/
+      /* Clear NACK Flag */
+      __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_AF);
+
+      /* Set ErrorCode corresponding to a Non-Acknowledge */
+      hfmpi2c->ErrorCode |= HAL_FMPI2C_ERROR_AF;
+
+      if ((tmpoptions == FMPI2C_FIRST_FRAME) || (tmpoptions == FMPI2C_NEXT_FRAME))
+      {
+        /* Call the corresponding callback to inform upper layer of End of Transfer */
+        FMPI2C_ITError(hfmpi2c, hfmpi2c->ErrorCode);
+      }
+    }
+  }
+
   hfmpi2c->Mode = HAL_FMPI2C_MODE_NONE;
   hfmpi2c->XferISR = NULL;
 
@@ -6412,6 +6576,7 @@
 static void FMPI2C_ITError(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t ErrorCode)
 {
   HAL_FMPI2C_StateTypeDef tmpstate = hfmpi2c->State;
+
   uint32_t tmppreviousstate;
 
   /* Reset handle parameters */
@@ -6439,20 +6604,38 @@
     /* Disable all interrupts */
     FMPI2C_Disable_IRQ(hfmpi2c, FMPI2C_XFER_LISTEN_IT | FMPI2C_XFER_RX_IT | FMPI2C_XFER_TX_IT);
 
+    /* Flush TX register */
+    FMPI2C_Flush_TXDR(hfmpi2c);
+
     /* If state is an abort treatment on going, don't change state */
     /* This change will be do later */
     if (hfmpi2c->State != HAL_FMPI2C_STATE_ABORT)
     {
       /* Set HAL_FMPI2C_STATE_READY */
       hfmpi2c->State         = HAL_FMPI2C_STATE_READY;
+
+      /* Check if a STOPF is detected */
+      if (__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF) == SET)
+      {
+        if (__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_AF) == SET)
+        {
+          __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_AF);
+          hfmpi2c->ErrorCode |= HAL_FMPI2C_ERROR_AF;
+        }
+
+        /* Clear STOP Flag */
+        __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF);
+      }
+
     }
     hfmpi2c->XferISR       = NULL;
   }
 
   /* Abort DMA TX transfer if any */
   tmppreviousstate = hfmpi2c->PreviousState;
+
   if ((hfmpi2c->hdmatx != NULL) && ((tmppreviousstate == FMPI2C_STATE_MASTER_BUSY_TX) || \
-                                 (tmppreviousstate == FMPI2C_STATE_SLAVE_BUSY_TX)))
+                                    (tmppreviousstate == FMPI2C_STATE_SLAVE_BUSY_TX)))
   {
     if ((hfmpi2c->Instance->CR1 & FMPI2C_CR1_TXDMAEN) == FMPI2C_CR1_TXDMAEN)
     {
@@ -6482,7 +6665,7 @@
   }
   /* Abort DMA RX transfer if any */
   else if ((hfmpi2c->hdmarx != NULL) && ((tmppreviousstate == FMPI2C_STATE_MASTER_BUSY_RX) || \
-                                      (tmppreviousstate == FMPI2C_STATE_SLAVE_BUSY_RX)))
+                                         (tmppreviousstate == FMPI2C_STATE_SLAVE_BUSY_RX)))
   {
     if ((hfmpi2c->Instance->CR1 & FMPI2C_CR1_RXDMAEN) == FMPI2C_CR1_RXDMAEN)
     {
@@ -6625,6 +6808,7 @@
   }
 }
 
+
 /**
   * @brief  DMA FMPI2C slave transmit process complete callback.
   * @param  hdma DMA handle
@@ -6653,6 +6837,7 @@
   }
 }
 
+
 /**
   * @brief DMA FMPI2C master receive process complete callback.
   * @param  hdma DMA handle
@@ -6681,7 +6866,15 @@
     /* Set the XferSize to transfer */
     if (hfmpi2c->XferCount > MAX_NBYTE_SIZE)
     {
-      hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      /* Errata workaround 170323 */
+      if (FMPI2C_GET_DIR(hfmpi2c) == FMPI2C_DIRECTION_RECEIVE)
+      {
+        hfmpi2c->XferSize = 1U;
+      }
+      else
+      {
+        hfmpi2c->XferSize = MAX_NBYTE_SIZE;
+      }
     }
     else
     {
@@ -6703,6 +6896,7 @@
   }
 }
 
+
 /**
   * @brief  DMA FMPI2C slave receive process complete callback.
   * @param  hdma DMA handle
@@ -6731,6 +6925,7 @@
   }
 }
 
+
 /**
   * @brief  DMA FMPI2C communication error callback.
   * @param hdma DMA handle
@@ -6769,6 +6964,7 @@
   }
 }
 
+
 /**
   * @brief DMA FMPI2C communication abort callback
   *        (To be called at end of DMA Abort procedure).
@@ -6793,6 +6989,7 @@
   FMPI2C_TreatErrorCallback(hfmpi2c);
 }
 
+
 /**
   * @brief  This function handles FMPI2C Communication Timeout. It waits
   *                until a flag is no longer in the specified status.
@@ -6805,10 +7002,16 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_WaitOnFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Flag, FlagStatus Status,
-                                                    uint32_t Timeout, uint32_t Tickstart)
+                                                       uint32_t Timeout, uint32_t Tickstart)
 {
   while (__HAL_FMPI2C_GET_FLAG(hfmpi2c, Flag) == Status)
   {
+    /* Check if an error is detected */
+    if (FMPI2C_IsErrorOccurred(hfmpi2c, Timeout, Tickstart) != HAL_OK)
+    {
+      return HAL_ERROR;
+    }
+
     /* Check for the Timeout */
     if (Timeout != HAL_MAX_DELAY)
     {
@@ -6839,7 +7042,7 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_WaitOnTXISFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout,
-                                                        uint32_t Tickstart)
+                                                           uint32_t Tickstart)
 {
   while (__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_TXIS) == RESET)
   {
@@ -6880,7 +7083,7 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_WaitOnSTOPFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout,
-                                                        uint32_t Tickstart)
+                                                           uint32_t Tickstart)
 {
   while (__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF) == RESET)
   {
@@ -6918,18 +7121,20 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPI2C_WaitOnRXNEFlagUntilTimeout(FMPI2C_HandleTypeDef *hfmpi2c, uint32_t Timeout,
-                                                        uint32_t Tickstart)
+                                                           uint32_t Tickstart)
 {
-  while (__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_RXNE) == RESET)
+  HAL_StatusTypeDef status = HAL_OK;
+
+  while ((__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_RXNE) == RESET) && (status == HAL_OK))
   {
     /* Check if an error is detected */
     if (FMPI2C_IsErrorOccurred(hfmpi2c, Timeout, Tickstart) != HAL_OK)
     {
-      return HAL_ERROR;
+      status = HAL_ERROR;
     }
 
     /* Check if a STOPF is detected */
-    if (__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF) == SET)
+    if ((__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF) == SET) && (status == HAL_OK))
     {
       /* Check if an RXNE is pending */
       /* Store Last receive data if any */
@@ -6937,19 +7142,14 @@
       {
         /* Return HAL_OK */
         /* The Reading of data from RXDR will be done in caller function */
-        return HAL_OK;
+        status = HAL_OK;
       }
-      else
+
+      /* Check a no-acknowledge have been detected */
+      if (__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_AF) == SET)
       {
-        if (__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_AF) == SET)
-        {
-          __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_AF);
-          hfmpi2c->ErrorCode = HAL_FMPI2C_ERROR_AF;
-        }
-        else
-        {
-          hfmpi2c->ErrorCode = HAL_FMPI2C_ERROR_NONE;
-        }
+        __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_AF);
+        hfmpi2c->ErrorCode = HAL_FMPI2C_ERROR_AF;
 
         /* Clear STOP Flag */
         __HAL_FMPI2C_CLEAR_FLAG(hfmpi2c, FMPI2C_FLAG_STOPF);
@@ -6963,12 +7163,16 @@
         /* Process Unlocked */
         __HAL_UNLOCK(hfmpi2c);
 
-        return HAL_ERROR;
+        status = HAL_ERROR;
+      }
+      else
+      {
+        hfmpi2c->ErrorCode = HAL_FMPI2C_ERROR_NONE;
       }
     }
 
     /* Check for the Timeout */
-    if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
+    if ((((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) && (status == HAL_OK))
     {
       if ((__HAL_FMPI2C_GET_FLAG(hfmpi2c, FMPI2C_FLAG_RXNE) == RESET))
       {
@@ -6978,11 +7182,11 @@
         /* Process Unlocked */
         __HAL_UNLOCK(hfmpi2c);
 
-        return HAL_ERROR;
+        status = HAL_ERROR;
       }
     }
   }
-  return HAL_OK;
+  return status;
 }
 
 /**
@@ -7036,7 +7240,7 @@
             /* Check for the Timeout */
             if ((HAL_GetTick() - tickstart) > FMPI2C_TIMEOUT_STOPF)
             {
-              error_code |=HAL_FMPI2C_ERROR_TIMEOUT;
+              error_code |= HAL_FMPI2C_ERROR_TIMEOUT;
 
               status = HAL_ERROR;
 
@@ -7135,7 +7339,7 @@
   * @retval None
   */
 static void FMPI2C_TransferConfig(FMPI2C_HandleTypeDef *hfmpi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode,
-                               uint32_t Request)
+                                  uint32_t Request)
 {
   /* Check the parameters */
   assert_param(IS_FMPI2C_ALL_INSTANCE(hfmpi2c->Instance));
@@ -7165,8 +7369,9 @@
 {
   uint32_t tmpisr = 0U;
 
-  if ((hfmpi2c->XferISR == FMPI2C_Master_ISR_DMA) || \
-      (hfmpi2c->XferISR == FMPI2C_Slave_ISR_DMA))
+  if ((hfmpi2c->XferISR != FMPI2C_Master_ISR_DMA) && \
+      (hfmpi2c->XferISR != FMPI2C_Slave_ISR_DMA) && \
+      (hfmpi2c->XferISR != FMPI2C_Mem_ISR_DMA))
   {
     if ((InterruptRequest & FMPI2C_XFER_LISTEN_IT) == FMPI2C_XFER_LISTEN_IT)
     {
@@ -7174,32 +7379,6 @@
       tmpisr |= FMPI2C_IT_ADDRI | FMPI2C_IT_STOPI | FMPI2C_IT_NACKI | FMPI2C_IT_ERRI;
     }
 
-    if (InterruptRequest == FMPI2C_XFER_ERROR_IT)
-    {
-      /* Enable ERR and NACK interrupts */
-      tmpisr |= FMPI2C_IT_ERRI | FMPI2C_IT_NACKI;
-    }
-
-    if (InterruptRequest == FMPI2C_XFER_CPLT_IT)
-    {
-      /* Enable STOP interrupts */
-      tmpisr |= (FMPI2C_IT_STOPI | FMPI2C_IT_TCI);
-    }
-
-    if (InterruptRequest == FMPI2C_XFER_RELOAD_IT)
-    {
-      /* Enable TC interrupts */
-      tmpisr |= FMPI2C_IT_TCI;
-    }
-  }
-  else
-  {
-    if ((InterruptRequest & FMPI2C_XFER_LISTEN_IT) == FMPI2C_XFER_LISTEN_IT)
-    {
-      /* Enable ERR, STOP, NACK, and ADDR interrupts */
-      tmpisr |= FMPI2C_IT_ADDRI | FMPI2C_IT_STOPI | FMPI2C_IT_NACKI | FMPI2C_IT_ERRI;
-    }
-
     if ((InterruptRequest & FMPI2C_XFER_TX_IT) == FMPI2C_XFER_TX_IT)
     {
       /* Enable ERR, TC, STOP, NACK and TXI interrupts */
@@ -7225,6 +7404,45 @@
     }
   }
 
+  else
+  {
+    if ((InterruptRequest & FMPI2C_XFER_LISTEN_IT) == FMPI2C_XFER_LISTEN_IT)
+    {
+      /* Enable ERR, STOP, NACK and ADDR interrupts */
+      tmpisr |= FMPI2C_IT_ADDRI | FMPI2C_IT_STOPI | FMPI2C_IT_NACKI | FMPI2C_IT_ERRI;
+    }
+
+    if ((InterruptRequest & FMPI2C_XFER_TX_IT) == FMPI2C_XFER_TX_IT)
+    {
+      /* Enable ERR, TC, STOP, NACK and TXI interrupts */
+      tmpisr |= FMPI2C_IT_ERRI | FMPI2C_IT_TCI | FMPI2C_IT_STOPI | FMPI2C_IT_NACKI | FMPI2C_IT_TXI;
+    }
+
+    if ((InterruptRequest & FMPI2C_XFER_RX_IT) == FMPI2C_XFER_RX_IT)
+    {
+      /* Enable ERR, TC, STOP, NACK and RXI interrupts */
+      tmpisr |= FMPI2C_IT_ERRI | FMPI2C_IT_TCI | FMPI2C_IT_STOPI | FMPI2C_IT_NACKI | FMPI2C_IT_RXI;
+    }
+
+    if (InterruptRequest == FMPI2C_XFER_ERROR_IT)
+    {
+      /* Enable ERR and NACK interrupts */
+      tmpisr |= FMPI2C_IT_ERRI | FMPI2C_IT_NACKI;
+    }
+
+    if (InterruptRequest == FMPI2C_XFER_CPLT_IT)
+    {
+      /* Enable STOP interrupts */
+      tmpisr |= (FMPI2C_IT_STOPI | FMPI2C_IT_TCI);
+    }
+
+    if (InterruptRequest == FMPI2C_XFER_RELOAD_IT)
+    {
+      /* Enable TC interrupts */
+      tmpisr |= FMPI2C_IT_TCI;
+    }
+  }
+
   /* Enable interrupts only at the end */
   /* to avoid the risk of FMPI2C interrupt handle execution before */
   /* all interrupts requested done */
diff --git a/Src/stm32f4xx_hal_fmpsmbus.c b/Src/stm32f4xx_hal_fmpsmbus.c
index c2769e0..4c913c6 100644
--- a/Src/stm32f4xx_hal_fmpsmbus.c
+++ b/Src/stm32f4xx_hal_fmpsmbus.c
@@ -211,7 +211,7 @@
   */
 /* Private functions to handle flags during polling transfer */
 static HAL_StatusTypeDef FMPSMBUS_WaitOnFlagUntilTimeout(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint32_t Flag,
-                                                      FlagStatus Status, uint32_t Timeout);
+                                                         FlagStatus Status, uint32_t Timeout);
 
 /* Private functions for FMPSMBUS transfer IRQ handler */
 static HAL_StatusTypeDef FMPSMBUS_Master_ISR(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint32_t StatusFlags);
@@ -227,7 +227,7 @@
 
 /* Private function to handle start, restart or stop a transfer */
 static void FMPSMBUS_TransferConfig(FMPSMBUS_HandleTypeDef *hfmpsmbus,  uint16_t DevAddress, uint8_t Size,
-                                 uint32_t Mode, uint32_t Request);
+                                    uint32_t Mode, uint32_t Request);
 
 /* Private function to Convert Specific options */
 static void FMPSMBUS_ConvertOtherXferOptions(FMPSMBUS_HandleTypeDef *hfmpsmbus);
@@ -379,13 +379,13 @@
   /*---------------------------- FMPSMBUSx OAR2 Configuration -----------------------*/
   /* Configure FMPSMBUSx: Dual mode and Own Address2 */
   hfmpsmbus->Instance->OAR2 = (hfmpsmbus->Init.DualAddressMode | hfmpsmbus->Init.OwnAddress2 | \
-                            (hfmpsmbus->Init.OwnAddress2Masks << 8U));
+                               (hfmpsmbus->Init.OwnAddress2Masks << 8U));
 
   /*---------------------------- FMPSMBUSx CR1 Configuration ------------------------*/
   /* Configure FMPSMBUSx: Generalcall and NoStretch mode */
   hfmpsmbus->Instance->CR1 = (hfmpsmbus->Init.GeneralCallMode | hfmpsmbus->Init.NoStretchMode | \
-                           hfmpsmbus->Init.PacketErrorCheckMode | hfmpsmbus->Init.PeripheralMode | \
-                           hfmpsmbus->Init.AnalogFilter);
+                              hfmpsmbus->Init.PacketErrorCheckMode | hfmpsmbus->Init.PeripheralMode | \
+                              hfmpsmbus->Init.AnalogFilter);
 
   /* Enable Slave Byte Control only in case of Packet Error Check is enabled
      and FMPSMBUS Peripheral is set in Slave mode */
@@ -585,6 +585,9 @@
 /**
   * @brief  Register a User FMPSMBUS Callback
   *         To be used instead of the weak predefined callback
+  * @note   The HAL_FMPSMBUS_RegisterCallback() may be called before HAL_FMPSMBUS_Init() in
+  *         HAL_FMPSMBUS_STATE_RESET to register callbacks for HAL_FMPSMBUS_MSPINIT_CB_ID and
+  *         HAL_FMPSMBUS_MSPDEINIT_CB_ID.
   * @param  hfmpsmbus Pointer to a FMPSMBUS_HandleTypeDef structure that contains
   *                the configuration information for the specified FMPSMBUS.
   * @param  CallbackID ID of the callback to be registered
@@ -601,8 +604,8 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPSMBUS_RegisterCallback(FMPSMBUS_HandleTypeDef *hfmpsmbus,
-                                             HAL_FMPSMBUS_CallbackIDTypeDef CallbackID,
-                                             pFMPSMBUS_CallbackTypeDef pCallback)
+                                                HAL_FMPSMBUS_CallbackIDTypeDef CallbackID,
+                                                pFMPSMBUS_CallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
@@ -614,9 +617,6 @@
     return HAL_ERROR;
   }
 
-  /* Process locked */
-  __HAL_LOCK(hfmpsmbus);
-
   if (HAL_FMPSMBUS_STATE_READY == hfmpsmbus->State)
   {
     switch (CallbackID)
@@ -692,14 +692,15 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hfmpsmbus);
   return status;
 }
 
 /**
   * @brief  Unregister an FMPSMBUS Callback
   *         FMPSMBUS callback is redirected to the weak predefined callback
+  * @note   The HAL_FMPSMBUS_UnRegisterCallback() may be called before HAL_FMPSMBUS_Init() in
+  *         HAL_FMPSMBUS_STATE_RESET to un-register callbacks for HAL_FMPSMBUS_MSPINIT_CB_ID and
+  *         HAL_FMPSMBUS_MSPDEINIT_CB_ID
   * @param  hfmpsmbus Pointer to a FMPSMBUS_HandleTypeDef structure that contains
   *                the configuration information for the specified FMPSMBUS.
   * @param  CallbackID ID of the callback to be unregistered
@@ -716,13 +717,10 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPSMBUS_UnRegisterCallback(FMPSMBUS_HandleTypeDef *hfmpsmbus,
-                                               HAL_FMPSMBUS_CallbackIDTypeDef CallbackID)
+                                                  HAL_FMPSMBUS_CallbackIDTypeDef CallbackID)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hfmpsmbus);
-
   if (HAL_FMPSMBUS_STATE_READY == hfmpsmbus->State)
   {
     switch (CallbackID)
@@ -798,8 +796,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hfmpsmbus);
   return status;
 }
 
@@ -812,7 +808,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPSMBUS_RegisterAddrCallback(FMPSMBUS_HandleTypeDef *hfmpsmbus,
-                                                 pFMPSMBUS_AddrCallbackTypeDef pCallback)
+                                                    pFMPSMBUS_AddrCallbackTypeDef pCallback)
 {
   HAL_StatusTypeDef status = HAL_OK;
 
@@ -823,8 +819,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hfmpsmbus);
 
   if (HAL_FMPSMBUS_STATE_READY == hfmpsmbus->State)
   {
@@ -839,8 +833,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hfmpsmbus);
   return status;
 }
 
@@ -855,9 +847,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hfmpsmbus);
-
   if (HAL_FMPSMBUS_STATE_READY == hfmpsmbus->State)
   {
     hfmpsmbus->AddrCallback = HAL_FMPSMBUS_AddrCallback; /* Legacy weak AddrCallback  */
@@ -871,8 +860,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hfmpsmbus);
   return status;
 }
 
@@ -937,10 +924,10 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPSMBUS_Master_Transmit_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint16_t DevAddress,
-                                               uint8_t *pData, uint16_t Size, uint32_t XferOptions)
+                                                  uint8_t *pData, uint16_t Size, uint32_t XferOptions)
 {
   uint32_t tmp;
-  uint32_t sizetoxfer = 0U;
+  uint32_t sizetoxfer;
 
   /* Check the parameters */
   assert_param(IS_FMPSMBUS_TRANSFER_OPTIONS_REQUEST(XferOptions));
@@ -974,20 +961,27 @@
     }
 
     sizetoxfer = hfmpsmbus->XferSize;
-    if ((hfmpsmbus->XferSize > 0U) && ((XferOptions == FMPSMBUS_FIRST_FRAME) ||
-                                       (XferOptions == FMPSMBUS_FIRST_AND_LAST_FRAME_NO_PEC) ||
-                                       (XferOptions == FMPSMBUS_FIRST_FRAME_WITH_PEC) ||
-                                       (XferOptions == FMPSMBUS_FIRST_AND_LAST_FRAME_WITH_PEC)))
+    if ((sizetoxfer > 0U) && ((XferOptions == FMPSMBUS_FIRST_FRAME) ||
+                              (XferOptions == FMPSMBUS_FIRST_AND_LAST_FRAME_NO_PEC) ||
+                              (XferOptions == FMPSMBUS_FIRST_FRAME_WITH_PEC) ||
+                              (XferOptions == FMPSMBUS_FIRST_AND_LAST_FRAME_WITH_PEC)))
     {
-      /* Preload TX register */
-      /* Write data to TXDR */
-      hfmpsmbus->Instance->TXDR = *hfmpsmbus->pBuffPtr;
+      if (hfmpsmbus->pBuffPtr != NULL)
+      {
+        /* Preload TX register */
+        /* Write data to TXDR */
+        hfmpsmbus->Instance->TXDR = *hfmpsmbus->pBuffPtr;
 
-      /* Increment Buffer pointer */
-      hfmpsmbus->pBuffPtr++;
+        /* Increment Buffer pointer */
+        hfmpsmbus->pBuffPtr++;
 
-      hfmpsmbus->XferCount--;
-      hfmpsmbus->XferSize--;
+        hfmpsmbus->XferCount--;
+        hfmpsmbus->XferSize--;
+      }
+      else
+      {
+        return HAL_ERROR;
+      }
     }
 
     /* Send Slave Address */
@@ -995,8 +989,8 @@
     if ((sizetoxfer < hfmpsmbus->XferCount) && (sizetoxfer == MAX_NBYTE_SIZE))
     {
       FMPSMBUS_TransferConfig(hfmpsmbus, DevAddress, (uint8_t)sizetoxfer,
-                           FMPSMBUS_RELOAD_MODE | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE),
-                           FMPSMBUS_GENERATE_START_WRITE);
+                              FMPSMBUS_RELOAD_MODE | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE),
+                              FMPSMBUS_GENERATE_START_WRITE);
     }
     else
     {
@@ -1010,7 +1004,7 @@
           (IS_FMPSMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(tmp) == 0))
       {
         FMPSMBUS_TransferConfig(hfmpsmbus, DevAddress, (uint8_t)sizetoxfer, hfmpsmbus->XferOptions,
-                             FMPSMBUS_NO_STARTSTOP);
+                                FMPSMBUS_NO_STARTSTOP);
       }
       /* Else transfer direction change, so generate Restart with new transfer direction */
       else
@@ -1020,16 +1014,23 @@
 
         /* Handle Transfer */
         FMPSMBUS_TransferConfig(hfmpsmbus, DevAddress, (uint8_t)sizetoxfer,
-                             hfmpsmbus->XferOptions,
-                             FMPSMBUS_GENERATE_START_WRITE);
+                                hfmpsmbus->XferOptions,
+                                FMPSMBUS_GENERATE_START_WRITE);
       }
 
       /* If PEC mode is enable, size to transmit manage by SW part should be Size-1 byte, corresponding to PEC byte */
       /* PEC byte is automatically sent by HW block, no need to manage it in Transmit process */
       if (FMPSMBUS_GET_PEC_MODE(hfmpsmbus) != 0UL)
       {
-        hfmpsmbus->XferSize--;
-        hfmpsmbus->XferCount--;
+        if (hfmpsmbus->XferSize > 0U)
+        {
+          hfmpsmbus->XferSize--;
+          hfmpsmbus->XferCount--;
+        }
+        else
+        {
+          return HAL_ERROR;
+        }
       }
     }
 
@@ -1061,7 +1062,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPSMBUS_Master_Receive_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint16_t DevAddress, uint8_t *pData,
-                                              uint16_t Size, uint32_t XferOptions)
+                                                 uint16_t Size, uint32_t XferOptions)
 {
   uint32_t tmp;
 
@@ -1102,8 +1103,8 @@
     if ((hfmpsmbus->XferSize < hfmpsmbus->XferCount) && (hfmpsmbus->XferSize == MAX_NBYTE_SIZE))
     {
       FMPSMBUS_TransferConfig(hfmpsmbus, DevAddress, (uint8_t)hfmpsmbus->XferSize,
-                           FMPSMBUS_RELOAD_MODE  | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE),
-                           FMPSMBUS_GENERATE_START_READ);
+                              FMPSMBUS_RELOAD_MODE  | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE),
+                              FMPSMBUS_GENERATE_START_READ);
     }
     else
     {
@@ -1117,7 +1118,7 @@
           (IS_FMPSMBUS_TRANSFER_OTHER_OPTIONS_REQUEST(tmp) == 0))
       {
         FMPSMBUS_TransferConfig(hfmpsmbus, DevAddress, (uint8_t)hfmpsmbus->XferSize, hfmpsmbus->XferOptions,
-                             FMPSMBUS_NO_STARTSTOP);
+                                FMPSMBUS_NO_STARTSTOP);
       }
       /* Else transfer direction change, so generate Restart with new transfer direction */
       else
@@ -1127,8 +1128,8 @@
 
         /* Handle Transfer */
         FMPSMBUS_TransferConfig(hfmpsmbus, DevAddress, (uint8_t)hfmpsmbus->XferSize,
-                             hfmpsmbus->XferOptions,
-                             FMPSMBUS_GENERATE_START_READ);
+                                hfmpsmbus->XferOptions,
+                                FMPSMBUS_GENERATE_START_READ);
       }
     }
 
@@ -1223,7 +1224,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPSMBUS_Slave_Transmit_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint8_t *pData, uint16_t Size,
-                                              uint32_t XferOptions)
+                                                 uint32_t XferOptions)
 {
   /* Check the parameters */
   assert_param(IS_FMPSMBUS_TRANSFER_OPTIONS_REQUEST(XferOptions));
@@ -1272,14 +1273,14 @@
     if ((hfmpsmbus->XferSize < hfmpsmbus->XferCount) && (hfmpsmbus->XferSize == MAX_NBYTE_SIZE))
     {
       FMPSMBUS_TransferConfig(hfmpsmbus, 0, (uint8_t)hfmpsmbus->XferSize,
-                           FMPSMBUS_RELOAD_MODE | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE),
-                           FMPSMBUS_NO_STARTSTOP);
+                              FMPSMBUS_RELOAD_MODE | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE),
+                              FMPSMBUS_NO_STARTSTOP);
     }
     else
     {
       /* Set NBYTE to transmit */
       FMPSMBUS_TransferConfig(hfmpsmbus, 0, (uint8_t)hfmpsmbus->XferSize, hfmpsmbus->XferOptions,
-                           FMPSMBUS_NO_STARTSTOP);
+                              FMPSMBUS_NO_STARTSTOP);
 
       /* If PEC mode is enable, size to transmit should be Size-1 byte, corresponding to PEC byte */
       /* PEC byte is automatically sent by HW block, no need to manage it in Transmit process */
@@ -1321,7 +1322,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPSMBUS_Slave_Receive_IT(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint8_t *pData, uint16_t Size,
-                                             uint32_t XferOptions)
+                                                uint32_t XferOptions)
 {
   /* Check the parameters */
   assert_param(IS_FMPSMBUS_TRANSFER_OPTIONS_REQUEST(XferOptions));
@@ -1366,7 +1367,7 @@
     if (((FMPSMBUS_GET_PEC_MODE(hfmpsmbus) != 0UL) && (hfmpsmbus->XferSize == 2U)) || (hfmpsmbus->XferSize == 1U))
     {
       FMPSMBUS_TransferConfig(hfmpsmbus, 0, (uint8_t)hfmpsmbus->XferSize, hfmpsmbus->XferOptions,
-                           FMPSMBUS_NO_STARTSTOP);
+                              FMPSMBUS_NO_STARTSTOP);
     }
     else
     {
@@ -1481,7 +1482,7 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_FMPSMBUS_IsDeviceReady(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint16_t DevAddress, uint32_t Trials,
-                                          uint32_t Timeout)
+                                             uint32_t Timeout)
 {
   uint32_t tickstart;
 
@@ -1630,7 +1631,7 @@
 
   /* FMPSMBUS in mode Transmitter ---------------------------------------------------*/
   if ((FMPSMBUS_CHECK_IT_SOURCE(tmpcr1value, (FMPSMBUS_IT_TCI | FMPSMBUS_IT_STOPI |
-                                           FMPSMBUS_IT_NACKI | FMPSMBUS_IT_TXI)) != RESET) &&
+                                              FMPSMBUS_IT_NACKI | FMPSMBUS_IT_TXI)) != RESET) &&
       ((FMPSMBUS_CHECK_FLAG(tmpisrvalue, FMPSMBUS_FLAG_TXIS) != RESET) ||
        (FMPSMBUS_CHECK_FLAG(tmpisrvalue, FMPSMBUS_FLAG_TCR) != RESET) ||
        (FMPSMBUS_CHECK_FLAG(tmpisrvalue, FMPSMBUS_FLAG_TC) != RESET) ||
@@ -1655,7 +1656,7 @@
 
   /* FMPSMBUS in mode Receiver ----------------------------------------------------*/
   if ((FMPSMBUS_CHECK_IT_SOURCE(tmpcr1value, (FMPSMBUS_IT_TCI | FMPSMBUS_IT_STOPI |
-                                           FMPSMBUS_IT_NACKI | FMPSMBUS_IT_RXI)) != RESET) &&
+                                              FMPSMBUS_IT_NACKI | FMPSMBUS_IT_RXI)) != RESET) &&
       ((FMPSMBUS_CHECK_FLAG(tmpisrvalue, FMPSMBUS_FLAG_RXNE) != RESET) ||
        (FMPSMBUS_CHECK_FLAG(tmpisrvalue, FMPSMBUS_FLAG_TCR) != RESET) ||
        (FMPSMBUS_CHECK_FLAG(tmpisrvalue, FMPSMBUS_FLAG_TC) != RESET) ||
@@ -1776,7 +1777,7 @@
   * @retval None
   */
 __weak void HAL_FMPSMBUS_AddrCallback(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint8_t TransferDirection,
-                                   uint16_t AddrMatchCode)
+                                      uint16_t AddrMatchCode)
 {
   /* Prevent unused argument(s) compilation warning */
   UNUSED(hfmpsmbus);
@@ -2026,15 +2027,15 @@
       if (hfmpsmbus->XferCount > MAX_NBYTE_SIZE)
       {
         FMPSMBUS_TransferConfig(hfmpsmbus, DevAddress, MAX_NBYTE_SIZE,
-                             (FMPSMBUS_RELOAD_MODE | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE)),
-                             FMPSMBUS_NO_STARTSTOP);
+                                (FMPSMBUS_RELOAD_MODE | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE)),
+                                FMPSMBUS_NO_STARTSTOP);
         hfmpsmbus->XferSize = MAX_NBYTE_SIZE;
       }
       else
       {
         hfmpsmbus->XferSize = hfmpsmbus->XferCount;
         FMPSMBUS_TransferConfig(hfmpsmbus, DevAddress, (uint8_t)hfmpsmbus->XferSize, hfmpsmbus->XferOptions,
-                             FMPSMBUS_NO_STARTSTOP);
+                                FMPSMBUS_NO_STARTSTOP);
         /* If PEC mode is enable, size to transmit should be Size-1 byte, corresponding to PEC byte */
         /* PEC byte is automatically sent by HW block, no need to manage it in Transmit process */
         if (FMPSMBUS_GET_PEC_MODE(hfmpsmbus) != 0UL)
@@ -2293,8 +2294,8 @@
       {
         /* Set Reload for next Bytes */
         FMPSMBUS_TransferConfig(hfmpsmbus, 0, 1,
-                             FMPSMBUS_RELOAD_MODE  | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE),
-                             FMPSMBUS_NO_STARTSTOP);
+                                FMPSMBUS_RELOAD_MODE  | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE),
+                                FMPSMBUS_NO_STARTSTOP);
 
         /* Ack last Byte Read */
         hfmpsmbus->Instance->CR2 &= ~FMPI2C_CR2_NACK;
@@ -2307,15 +2308,15 @@
         if (hfmpsmbus->XferCount > MAX_NBYTE_SIZE)
         {
           FMPSMBUS_TransferConfig(hfmpsmbus, 0, MAX_NBYTE_SIZE,
-                               (FMPSMBUS_RELOAD_MODE | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE)),
-                               FMPSMBUS_NO_STARTSTOP);
+                                  (FMPSMBUS_RELOAD_MODE | (hfmpsmbus->XferOptions & FMPSMBUS_SENDPEC_MODE)),
+                                  FMPSMBUS_NO_STARTSTOP);
           hfmpsmbus->XferSize = MAX_NBYTE_SIZE;
         }
         else
         {
           hfmpsmbus->XferSize = hfmpsmbus->XferCount;
           FMPSMBUS_TransferConfig(hfmpsmbus, 0, (uint8_t)hfmpsmbus->XferSize, hfmpsmbus->XferOptions,
-                               FMPSMBUS_NO_STARTSTOP);
+                                  FMPSMBUS_NO_STARTSTOP);
           /* If PEC mode is enable, size to transmit should be Size-1 byte, corresponding to PEC byte */
           /* PEC byte is automatically sent by HW block, no need to manage it in Transmit process */
           if (FMPSMBUS_GET_PEC_MODE(hfmpsmbus) != 0UL)
@@ -2619,8 +2620,11 @@
     __HAL_FMPSMBUS_CLEAR_FLAG(hfmpsmbus, FMPSMBUS_FLAG_PECERR);
   }
 
-  /* Flush TX register */
-  FMPSMBUS_Flush_TXDR(hfmpsmbus);
+  if (hfmpsmbus->ErrorCode != HAL_FMPSMBUS_ERROR_NONE)
+  {
+    /* Flush TX register */
+    FMPSMBUS_Flush_TXDR(hfmpsmbus);
+  }
 
   /* Store current volatile hfmpsmbus->ErrorCode, misra rule */
   tmperror = hfmpsmbus->ErrorCode;
@@ -2663,7 +2667,7 @@
   * @retval HAL status
   */
 static HAL_StatusTypeDef FMPSMBUS_WaitOnFlagUntilTimeout(FMPSMBUS_HandleTypeDef *hfmpsmbus, uint32_t Flag,
-                                                      FlagStatus Status, uint32_t Timeout)
+                                                         FlagStatus Status, uint32_t Timeout)
 {
   uint32_t tickstart = HAL_GetTick();
 
@@ -2734,7 +2738,7 @@
   * @retval None
   */
 static void FMPSMBUS_TransferConfig(FMPSMBUS_HandleTypeDef *hfmpsmbus,  uint16_t DevAddress, uint8_t Size,
-                                 uint32_t Mode, uint32_t Request)
+                                    uint32_t Mode, uint32_t Request)
 {
   /* Check the parameters */
   assert_param(IS_FMPSMBUS_ALL_INSTANCE(hfmpsmbus->Instance));
diff --git a/Src/stm32f4xx_hal_hash.c b/Src/stm32f4xx_hal_hash.c
index f3aafe0..5fc5cc9 100644
--- a/Src/stm32f4xx_hal_hash.c
+++ b/Src/stm32f4xx_hal_hash.c
@@ -1657,7 +1657,7 @@
   HASH_HandleTypeDef *hhash = (HASH_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
   uint32_t inputaddr;
   uint32_t buffersize;
-  HAL_StatusTypeDef status = HAL_OK;
+  HAL_StatusTypeDef status;
 
   if (hhash->State != HAL_HASH_STATE_SUSPENDED)
   {
diff --git a/Src/stm32f4xx_hal_hcd.c b/Src/stm32f4xx_hal_hcd.c
index c7c5b70..7ab1222 100644
--- a/Src/stm32f4xx_hal_hcd.c
+++ b/Src/stm32f4xx_hal_hcd.c
@@ -109,7 +109,9 @@
   */
 HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd)
 {
-  USB_OTG_GlobalTypeDef *USBx;
+#if defined (USB_OTG_FS)
+  const USB_OTG_GlobalTypeDef *USBx;
+#endif /* defined (USB_OTG_FS) */
 
   /* Check the HCD handle allocation */
   if (hhcd == NULL)
@@ -120,7 +122,9 @@
   /* Check the parameters */
   assert_param(IS_HCD_ALL_INSTANCE(hhcd->Instance));
 
+#if defined (USB_OTG_FS)
   USBx = hhcd->Instance;
+#endif /* defined (USB_OTG_FS) */
 
   if (hhcd->State == HAL_HCD_STATE_RESET)
   {
@@ -150,23 +154,37 @@
 
   hhcd->State = HAL_HCD_STATE_BUSY;
 
+#if defined (USB_OTG_FS)
   /* Disable DMA mode for FS instance */
-  if ((USBx->CID & (0x1U << 8)) == 0U)
+  if (USBx == USB_OTG_FS)
   {
     hhcd->Init.dma_enable = 0U;
   }
+#endif /* defined (USB_OTG_FS) */
 
   /* Disable the Interrupts */
   __HAL_HCD_DISABLE(hhcd);
 
   /* Init the Core (common init.) */
-  (void)USB_CoreInit(hhcd->Instance, hhcd->Init);
+  if (USB_CoreInit(hhcd->Instance, hhcd->Init) != HAL_OK)
+  {
+    hhcd->State = HAL_HCD_STATE_ERROR;
+    return HAL_ERROR;
+  }
 
-  /* Force Host Mode*/
-  (void)USB_SetCurrentMode(hhcd->Instance, USB_HOST_MODE);
+  /* Force Host Mode */
+  if (USB_SetCurrentMode(hhcd->Instance, USB_HOST_MODE) != HAL_OK)
+  {
+    hhcd->State = HAL_HCD_STATE_ERROR;
+    return HAL_ERROR;
+  }
 
   /* Init Host */
-  (void)USB_HostInit(hhcd->Instance, hhcd->Init);
+  if (USB_HostInit(hhcd->Instance, hhcd->Init) != HAL_OK)
+  {
+    hhcd->State = HAL_HCD_STATE_ERROR;
+    return HAL_ERROR;
+  }
 
   hhcd->State = HAL_HCD_STATE_READY;
 
@@ -197,24 +215,22 @@
   *          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;
+  uint32_t HostCoreSpeed;
+  uint32_t HCcharMps = mps;
 
   __HAL_LOCK(hhcd);
   hhcd->hc[ch_num].do_ping = 0U;
   hhcd->hc[ch_num].dev_addr = dev_address;
-  hhcd->hc[ch_num].max_packet = mps;
   hhcd->hc[ch_num].ch_num = ch_num;
   hhcd->hc[ch_num].ep_type = ep_type;
   hhcd->hc[ch_num].ep_num = epnum & 0x7FU;
 
+  (void)HAL_HCD_HC_ClearHubInfo(hhcd, ch_num);
+
   if ((epnum & 0x80U) == 0x80U)
   {
     hhcd->hc[ch_num].ep_is_in = 1U;
@@ -224,15 +240,27 @@
     hhcd->hc[ch_num].ep_is_in = 0U;
   }
 
-  hhcd->hc[ch_num].speed = speed;
+  HostCoreSpeed = USB_GetHostSpeed(hhcd->Instance);
 
-  status =  USB_HC_Init(hhcd->Instance,
-                        ch_num,
-                        epnum,
-                        dev_address,
-                        speed,
-                        ep_type,
-                        mps);
+  if (ep_type == EP_TYPE_ISOC)
+  {
+    /* FS device plugged to HS HUB */
+    if ((speed == HCD_DEVICE_SPEED_FULL) && (HostCoreSpeed == HPRT0_PRTSPD_HIGH_SPEED))
+    {
+      if (HCcharMps > ISO_SPLT_MPS)
+      {
+        /* ISO Max Packet Size for Split mode */
+        HCcharMps = ISO_SPLT_MPS;
+      }
+    }
+  }
+
+  hhcd->hc[ch_num].speed = speed;
+  hhcd->hc[ch_num].max_packet = (uint16_t)HCcharMps;
+
+  status =  USB_HC_Init(hhcd->Instance, ch_num, epnum,
+                        dev_address, speed, ep_type, (uint16_t)HCcharMps);
+
   __HAL_UNLOCK(hhcd);
 
   return status;
@@ -250,7 +278,7 @@
   HAL_StatusTypeDef status = HAL_OK;
 
   __HAL_LOCK(hhcd);
-  (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
+  (void)USB_HC_Halt(hhcd->Instance, ch_num);
   __HAL_UNLOCK(hhcd);
 
   return status;
@@ -389,24 +417,41 @@
   switch (ep_type)
   {
     case EP_TYPE_CTRL:
-      if ((token == 1U) && (direction == 0U)) /*send data */
+      if (token == 1U) /* send data */
       {
-        if (length == 0U)
+        if (direction == 0U)
         {
-          /* For Status OUT stage, Length==0, Status Out PID = 1 */
-          hhcd->hc[ch_num].toggle_out = 1U;
-        }
+          if (length == 0U)
+          {
+            /* For Status OUT stage, Length == 0U, Status Out PID = 1 */
+            hhcd->hc[ch_num].toggle_out = 1U;
+          }
 
-        /* Set the Data Toggle bit as per the Flag */
-        if (hhcd->hc[ch_num].toggle_out == 0U)
-        {
-          /* Put the PID 0 */
-          hhcd->hc[ch_num].data_pid = HC_PID_DATA0;
+          /* Set the Data Toggle bit as per the Flag */
+          if (hhcd->hc[ch_num].toggle_out == 0U)
+          {
+            /* Put the PID 0 */
+            hhcd->hc[ch_num].data_pid = HC_PID_DATA0;
+          }
+          else
+          {
+            /* Put the PID 1 */
+            hhcd->hc[ch_num].data_pid = HC_PID_DATA1;
+          }
         }
         else
         {
-          /* Put the PID 1 */
-          hhcd->hc[ch_num].data_pid = HC_PID_DATA1;
+          if (hhcd->hc[ch_num].do_ssplit == 1U)
+          {
+            if (hhcd->hc[ch_num].toggle_in == 0U)
+            {
+              hhcd->hc[ch_num].data_pid = HC_PID_DATA0;
+            }
+            else
+            {
+              hhcd->hc[ch_num].data_pid = HC_PID_DATA1;
+            }
+          }
         }
       }
       break;
@@ -541,8 +586,11 @@
         (void)USB_FlushTxFifo(USBx, 0x10U);
         (void)USB_FlushRxFifo(USBx);
 
-        /* Restore FS Clock */
-        (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ);
+        if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY)
+        {
+          /* Restore FS Clock */
+          (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ);
+        }
 
         /* Handle Host Port Disconnect Interrupt */
 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
@@ -571,16 +619,6 @@
       __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_SOF);
     }
 
-    /* Handle Rx Queue Level Interrupts */
-    if ((__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_RXFLVL)) != 0U)
-    {
-      USB_MASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL);
-
-      HCD_RXQLVL_IRQHandler(hhcd);
-
-      USB_UNMASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL);
-    }
-
     /* Handle Host channel Interrupt */
     if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HCINT))
     {
@@ -601,6 +639,16 @@
       }
       __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_HCINT);
     }
+
+    /* Handle Rx Queue Level Interrupts */
+    if ((__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_RXFLVL)) != 0U)
+    {
+      USB_MASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL);
+
+      HCD_RXQLVL_IRQHandler(hhcd);
+
+      USB_UNMASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL);
+    }
   }
 }
 
@@ -1084,7 +1132,7 @@
   * @param  hhcd HCD handle
   * @retval HAL state
   */
-HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef *hhcd)
+HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef const *hhcd)
 {
   return hhcd->State;
 }
@@ -1103,7 +1151,7 @@
   *            URB_ERROR/
   *            URB_STALL
   */
-HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef *hhcd, uint8_t chnum)
+HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef const *hhcd, uint8_t chnum)
 {
   return hhcd->hc[chnum].urb_state;
 }
@@ -1116,7 +1164,7 @@
   *         This parameter can be a value from 1 to 15
   * @retval last transfer size in byte
   */
-uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef *hhcd, uint8_t chnum)
+uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef const *hhcd, uint8_t chnum)
 {
   return hhcd->hc[chnum].xfer_count;
 }
@@ -1138,7 +1186,7 @@
   *            HC_BBLERR/
   *            HC_DATATGLERR
   */
-HCD_HCStateTypeDef  HAL_HCD_HC_GetState(HCD_HandleTypeDef *hhcd, uint8_t chnum)
+HCD_HCStateTypeDef  HAL_HCD_HC_GetState(HCD_HandleTypeDef const *hhcd, uint8_t chnum)
 {
   return hhcd->hc[chnum].state;
 }
@@ -1164,6 +1212,54 @@
 }
 
 /**
+  * @brief  Set host channel Hub information.
+  * @param  hhcd HCD handle
+  * @param  ch_num Channel number.
+  *         This parameter can be a value from 1 to 15
+  * @param  addr Hub address
+  * @param  PortNbr Hub port number
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_HCD_HC_SetHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num,
+                                        uint8_t addr, uint8_t PortNbr)
+{
+  uint32_t HostCoreSpeed = USB_GetHostSpeed(hhcd->Instance);
+
+  /* LS/FS device plugged to HS HUB */
+  if ((hhcd->hc[ch_num].speed != HCD_DEVICE_SPEED_HIGH) && (HostCoreSpeed == HPRT0_PRTSPD_HIGH_SPEED))
+  {
+    hhcd->hc[ch_num].do_ssplit = 1U;
+
+    if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) && (hhcd->hc[ch_num].ep_is_in != 0U))
+    {
+      hhcd->hc[ch_num].toggle_in = 1U;
+    }
+  }
+
+  hhcd->hc[ch_num].hub_addr = addr;
+  hhcd->hc[ch_num].hub_port_nbr = PortNbr;
+
+  return HAL_OK;
+}
+
+
+/**
+  * @brief  Clear host channel hub information.
+  * @param  hhcd HCD handle
+  * @param  ch_num Channel number.
+  *         This parameter can be a value from 1 to 15
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_HCD_HC_ClearHubInfo(HCD_HandleTypeDef *hhcd, uint8_t ch_num)
+{
+  hhcd->hc[ch_num].do_ssplit = 0U;
+  hhcd->hc[ch_num].do_csplit = 0U;
+  hhcd->hc[ch_num].hub_addr = 0U;
+  hhcd->hc[ch_num].hub_port_nbr = 0U;
+
+  return HAL_OK;
+}
+/**
   * @}
   */
 
@@ -1183,84 +1279,86 @@
   */
 static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum)
 {
-  USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
+  const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t ch_num = (uint32_t)chnum;
-
   uint32_t tmpreg;
 
-  if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR)
+  if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, 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);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR);
+    hhcd->hc[chnum].state = HC_XACTERR;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_BBERR) == USB_OTG_HCINT_BBERR)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, 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);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_BBERR);
+    hhcd->hc[chnum].state = HC_BBLERR;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_ACK) == USB_OTG_HCINT_ACK)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL))
   {
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_ACK);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL);
+    hhcd->hc[chnum].state = HC_STALL;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR))
   {
-    __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);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR);
+    hhcd->hc[chnum].state = HC_DATATGLERR;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_DTERR) == USB_OTG_HCINT_DTERR)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR))
   {
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_DTERR);
-    hhcd->hc[ch_num].state = HC_DATATGLERR;
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
-  }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_TXERR) == USB_OTG_HCINT_TXERR)
-  {
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_TXERR);
-    hhcd->hc[ch_num].state = HC_XACTERR;
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR);
+    hhcd->hc[chnum].state = HC_XACTERR;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
   }
   else
   {
     /* ... */
   }
 
-  if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_FRMOR) == USB_OTG_HCINT_FRMOR)
+  if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, 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);
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
+    __HAL_HCD_CLEAR_HC_INT(chnum, 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, chnum, USB_OTG_HCINT_XFRC))
   {
+    /* Clear any pending ACK IT */
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK);
+
+    if (hhcd->hc[chnum].do_csplit == 1U)
+    {
+      hhcd->hc[chnum].do_csplit = 0U;
+      __HAL_HCD_CLEAR_HC_CSPLT(chnum);
+    }
+
     if (hhcd->Init.dma_enable != 0U)
     {
-      hhcd->hc[ch_num].xfer_count = hhcd->hc[ch_num].XferSize - \
-                                    (USBx_HC(ch_num)->HCTSIZ & USB_OTG_HCTSIZ_XFRSIZ);
+      hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].XferSize - (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_XFRSIZ);
     }
 
-    hhcd->hc[ch_num].state = HC_XFRC;
-    hhcd->hc[ch_num].ErrCnt = 0U;
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_XFRC);
+    hhcd->hc[chnum].state = HC_XFRC;
+    hhcd->hc[chnum].ErrCnt = 0U;
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC);
 
-    if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) ||
-        (hhcd->hc[ch_num].ep_type == EP_TYPE_BULK))
+    if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) ||
+        (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
     {
-      (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
-      __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
+      (void)USB_HC_Halt(hhcd->Instance, chnum);
+      __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK);
     }
-    else if ((hhcd->hc[ch_num].ep_type == EP_TYPE_INTR) ||
-             (hhcd->hc[ch_num].ep_type == EP_TYPE_ISOC))
+    else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) ||
+             (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC))
     {
-      USBx_HC(ch_num)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM;
-      hhcd->hc[ch_num].urb_state = URB_DONE;
+      USBx_HC(chnum)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM;
+      hhcd->hc[chnum].urb_state = URB_DONE;
 
 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
-      hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+      hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state);
 #else
-      HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+      HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state);
 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
     }
     else
@@ -1270,96 +1368,220 @@
 
     if (hhcd->Init.dma_enable == 1U)
     {
-      if (((hhcd->hc[ch_num].XferSize / hhcd->hc[ch_num].max_packet) & 1U) != 0U)
+      if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet) & 1U) != 0U)
       {
-        hhcd->hc[ch_num].toggle_in ^= 1U;
+        hhcd->hc[chnum].toggle_in ^= 1U;
       }
     }
     else
     {
-      hhcd->hc[ch_num].toggle_in ^= 1U;
+      hhcd->hc[chnum].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, chnum, USB_OTG_HCINT_ACK))
   {
-    if (hhcd->hc[ch_num].state == HC_XFRC)
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK);
+
+    if (hhcd->hc[chnum].do_ssplit == 1U)
     {
-      hhcd->hc[ch_num].urb_state = URB_DONE;
+      hhcd->hc[chnum].do_csplit = 1U;
+      hhcd->hc[chnum].state = HC_ACK;
+
+      (void)USB_HC_Halt(hhcd->Instance, chnum);
     }
-    else if (hhcd->hc[ch_num].state == HC_STALL)
+  }
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH))
+  {
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH);
+
+    if (hhcd->hc[chnum].state == HC_XFRC)
     {
-      hhcd->hc[ch_num].urb_state = URB_STALL;
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].urb_state = URB_DONE;
     }
-    else if ((hhcd->hc[ch_num].state == HC_XACTERR) ||
-             (hhcd->hc[ch_num].state == HC_DATATGLERR))
+    else if (hhcd->hc[chnum].state == HC_STALL)
     {
-      hhcd->hc[ch_num].ErrCnt++;
-      if (hhcd->hc[ch_num].ErrCnt > 2U)
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].urb_state = URB_STALL;
+    }
+    else if ((hhcd->hc[chnum].state == HC_XACTERR) ||
+             (hhcd->hc[chnum].state == HC_DATATGLERR))
+    {
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].ErrCnt++;
+      if (hhcd->hc[chnum].ErrCnt > 2U)
       {
-        hhcd->hc[ch_num].ErrCnt = 0U;
-        hhcd->hc[ch_num].urb_state = URB_ERROR;
+        hhcd->hc[chnum].ErrCnt = 0U;
+
+        if (hhcd->hc[chnum].do_ssplit == 1U)
+        {
+          hhcd->hc[chnum].do_csplit = 0U;
+          hhcd->hc[chnum].ep_ss_schedule = 0U;
+          __HAL_HCD_CLEAR_HC_CSPLT(chnum);
+        }
+
+        hhcd->hc[chnum].urb_state = URB_ERROR;
       }
       else
       {
-        hhcd->hc[ch_num].urb_state = URB_NOTREADY;
+        hhcd->hc[chnum].urb_state = URB_NOTREADY;
 
+        if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) ||
+            (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
+        {
+          /* re-activate the channel */
+          tmpreg = USBx_HC(chnum)->HCCHAR;
+          tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
+          tmpreg |= USB_OTG_HCCHAR_CHENA;
+          USBx_HC(chnum)->HCCHAR = tmpreg;
+        }
+      }
+    }
+    else if (hhcd->hc[chnum].state == HC_NYET)
+    {
+      hhcd->hc[chnum].state = HC_HALTED;
+
+      if (hhcd->hc[chnum].do_csplit == 1U)
+      {
+        if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)
+        {
+          hhcd->hc[chnum].NyetErrCnt++;
+          if (hhcd->hc[chnum].NyetErrCnt > 2U)
+          {
+            hhcd->hc[chnum].NyetErrCnt = 0U;
+            hhcd->hc[chnum].do_csplit = 0U;
+
+            if (hhcd->hc[chnum].ErrCnt < 3U)
+            {
+              hhcd->hc[chnum].ep_ss_schedule = 1U;
+            }
+            __HAL_HCD_CLEAR_HC_CSPLT(chnum);
+            hhcd->hc[chnum].urb_state = URB_ERROR;
+          }
+          else
+          {
+            hhcd->hc[chnum].urb_state = URB_NOTREADY;
+          }
+        }
+        else
+        {
+          hhcd->hc[chnum].urb_state = URB_NOTREADY;
+        }
+
+        if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) ||
+            (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
+        {
+          /* re-activate the channel */
+          tmpreg = USBx_HC(chnum)->HCCHAR;
+          tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
+          tmpreg |= USB_OTG_HCCHAR_CHENA;
+          USBx_HC(chnum)->HCCHAR = tmpreg;
+        }
+      }
+    }
+    else if (hhcd->hc[chnum].state == HC_ACK)
+    {
+      hhcd->hc[chnum].state = HC_HALTED;
+
+      if (hhcd->hc[chnum].do_csplit == 1U)
+      {
+        hhcd->hc[chnum].urb_state = URB_NOTREADY;
+
+        /* Set Complete split and re-activate the channel */
+        USBx_HC(chnum)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT;
+        USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_NYET;
+        USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINT_ACK;
+
+        if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) ||
+            (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
+        {
+          /* re-activate the channel */
+          tmpreg = USBx_HC(chnum)->HCCHAR;
+          tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
+          tmpreg |= USB_OTG_HCCHAR_CHENA;
+          USBx_HC(chnum)->HCCHAR = tmpreg;
+        }
+      }
+    }
+    else if (hhcd->hc[chnum].state == HC_NAK)
+    {
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].urb_state = URB_NOTREADY;
+
+      if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) ||
+          (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
+      {
         /* re-activate the channel */
-        tmpreg = USBx_HC(ch_num)->HCCHAR;
+        tmpreg = USBx_HC(chnum)->HCCHAR;
         tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
         tmpreg |= USB_OTG_HCCHAR_CHENA;
-        USBx_HC(ch_num)->HCCHAR = tmpreg;
+        USBx_HC(chnum)->HCCHAR = tmpreg;
       }
     }
-    else if (hhcd->hc[ch_num].state == HC_NAK)
+    else if (hhcd->hc[chnum].state == HC_BBLERR)
     {
-      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;
-    }
-    else if (hhcd->hc[ch_num].state == HC_BBLERR)
-    {
-      hhcd->hc[ch_num].ErrCnt++;
-      hhcd->hc[ch_num].urb_state = URB_ERROR;
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].ErrCnt++;
+      hhcd->hc[chnum].urb_state = URB_ERROR;
     }
     else
     {
-      /* ... */
+      if (hhcd->hc[chnum].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);
+    hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state);
 #else
-    HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+    HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].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, chnum, USB_OTG_HCINT_NYET))
   {
-    if (hhcd->hc[ch_num].ep_type == EP_TYPE_INTR)
-    {
-      hhcd->hc[ch_num].ErrCnt = 0U;
-      (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
-    }
-    else if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) ||
-             (hhcd->hc[ch_num].ep_type == EP_TYPE_BULK))
-    {
-      hhcd->hc[ch_num].ErrCnt = 0U;
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET);
+    hhcd->hc[chnum].state = HC_NYET;
 
-      if (hhcd->Init.dma_enable == 0U)
+    if (hhcd->hc[chnum].do_ssplit == 0U)
+    {
+      hhcd->hc[chnum].ErrCnt = 0U;
+    }
+
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
+  }
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK))
+  {
+    if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)
+    {
+      hhcd->hc[chnum].ErrCnt = 0U;
+      hhcd->hc[chnum].state = HC_NAK;
+      (void)USB_HC_Halt(hhcd->Instance, chnum);
+    }
+    else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) ||
+             (hhcd->hc[chnum].ep_type == EP_TYPE_BULK))
+    {
+      hhcd->hc[chnum].ErrCnt = 0U;
+
+      if ((hhcd->Init.dma_enable == 0U) || (hhcd->hc[chnum].do_csplit == 1U))
       {
-        hhcd->hc[ch_num].state = HC_NAK;
-        (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
+        hhcd->hc[chnum].state = HC_NAK;
+        (void)USB_HC_Halt(hhcd->Instance, chnum);
       }
     }
     else
     {
       /* ... */
     }
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
+
+    if (hhcd->hc[chnum].do_csplit == 1U)
+    {
+      hhcd->hc[chnum].do_csplit = 0U;
+      __HAL_HCD_CLEAR_HC_CSPLT(chnum);
+      __HAL_HCD_UNMASK_ACK_HC_INT(chnum);
+    }
+
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK);
   }
   else
   {
@@ -1376,184 +1598,231 @@
   */
 static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum)
 {
-  USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
+  const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t ch_num = (uint32_t)chnum;
   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, chnum, 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);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR);
+    hhcd->hc[chnum].state = HC_XACTERR;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_ACK) == USB_OTG_HCINT_ACK)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK))
   {
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_ACK);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK);
 
-    if (hhcd->hc[ch_num].do_ping == 1U)
+    if (hhcd->hc[chnum].do_ping == 1U)
     {
-      hhcd->hc[ch_num].do_ping = 0U;
-      hhcd->hc[ch_num].urb_state = URB_NOTREADY;
-      (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
+      hhcd->hc[chnum].do_ping = 0U;
+      hhcd->hc[chnum].urb_state = URB_NOTREADY;
+      hhcd->hc[chnum].state = HC_ACK;
+      (void)USB_HC_Halt(hhcd->Instance, chnum);
+    }
+
+    if ((hhcd->hc[chnum].do_ssplit == 1U) && (hhcd->hc[chnum].do_csplit == 0U))
+    {
+      if (hhcd->hc[chnum].ep_type != EP_TYPE_ISOC)
+      {
+        hhcd->hc[chnum].do_csplit = 1U;
+      }
+
+      hhcd->hc[chnum].state = HC_ACK;
+      (void)USB_HC_Halt(hhcd->Instance, chnum);
+
+      /* reset error_count */
+      hhcd->hc[chnum].ErrCnt = 0U;
     }
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_FRMOR) == USB_OTG_HCINT_FRMOR)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, 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);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR);
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
   }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_XFRC) == USB_OTG_HCINT_XFRC)
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC))
   {
-    hhcd->hc[ch_num].ErrCnt = 0U;
+    hhcd->hc[chnum].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, chnum, USB_OTG_HCINT_NYET))
     {
-      hhcd->hc[ch_num].do_ping = 1U;
-      __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NYET);
+      hhcd->hc[chnum].do_ping = 1U;
+      __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET);
     }
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_XFRC);
-    hhcd->hc[ch_num].state = HC_XFRC;
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
-  }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NYET) == USB_OTG_HCINT_NYET)
-  {
-    hhcd->hc[ch_num].state = HC_NYET;
-    hhcd->hc[ch_num].do_ping = 1U;
-    hhcd->hc[ch_num].ErrCnt = 0U;
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NYET);
-  }
-  else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL)
-  {
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_STALL);
-    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)
-  {
-    hhcd->hc[ch_num].ErrCnt = 0U;
-    hhcd->hc[ch_num].state = HC_NAK;
 
-    if (hhcd->hc[ch_num].do_ping == 0U)
+    if (hhcd->hc[chnum].do_csplit != 0U)
     {
-      if (hhcd->hc[ch_num].speed == HCD_DEVICE_SPEED_HIGH)
+      hhcd->hc[chnum].do_csplit = 0U;
+      __HAL_HCD_CLEAR_HC_CSPLT(chnum);
+    }
+
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC);
+    hhcd->hc[chnum].state = HC_XFRC;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
+  }
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET))
+  {
+    hhcd->hc[chnum].state = HC_NYET;
+
+    if (hhcd->hc[chnum].do_ssplit == 0U)
+    {
+      hhcd->hc[chnum].do_ping = 1U;
+    }
+
+    hhcd->hc[chnum].ErrCnt = 0U;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET);
+  }
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL))
+  {
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL);
+    hhcd->hc[chnum].state = HC_STALL;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
+  }
+  else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK))
+  {
+    hhcd->hc[chnum].ErrCnt = 0U;
+    hhcd->hc[chnum].state = HC_NAK;
+
+    if (hhcd->hc[chnum].do_ping == 0U)
+    {
+      if (hhcd->hc[chnum].speed == HCD_DEVICE_SPEED_HIGH)
       {
-        hhcd->hc[ch_num].do_ping = 1U;
+        hhcd->hc[chnum].do_ping = 1U;
       }
     }
 
-    (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK);
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
+    __HAL_HCD_CLEAR_HC_INT(chnum, 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, chnum, USB_OTG_HCINT_TXERR))
   {
     if (hhcd->Init.dma_enable == 0U)
     {
-      hhcd->hc[ch_num].state = HC_XACTERR;
-      (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num);
+      hhcd->hc[chnum].state = HC_XACTERR;
+      (void)USB_HC_Halt(hhcd->Instance, chnum);
     }
     else
     {
-      hhcd->hc[ch_num].ErrCnt++;
-      if (hhcd->hc[ch_num].ErrCnt > 2U)
+      hhcd->hc[chnum].ErrCnt++;
+      if (hhcd->hc[chnum].ErrCnt > 2U)
       {
-        hhcd->hc[ch_num].ErrCnt = 0U;
-        hhcd->hc[ch_num].urb_state = URB_ERROR;
+        hhcd->hc[chnum].ErrCnt = 0U;
+        hhcd->hc[chnum].urb_state = URB_ERROR;
 
 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
-        hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+        hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state);
 #else
-        HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+        HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state);
 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
       }
       else
       {
-        hhcd->hc[ch_num].urb_state = URB_NOTREADY;
+        hhcd->hc[chnum].urb_state = URB_NOTREADY;
       }
     }
-    __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_TXERR);
+    __HAL_HCD_CLEAR_HC_INT(chnum, 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, chnum, 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);
+    hhcd->hc[chnum].state = HC_DATATGLERR;
+    (void)USB_HC_Halt(hhcd->Instance, chnum);
+    __HAL_HCD_CLEAR_HC_INT(chnum, 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, chnum, USB_OTG_HCINT_CHH))
   {
-    if (hhcd->hc[ch_num].state == HC_XFRC)
+    __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH);
+
+    if (hhcd->hc[chnum].state == HC_XFRC)
     {
-      hhcd->hc[ch_num].urb_state  = URB_DONE;
-      if ((hhcd->hc[ch_num].ep_type == EP_TYPE_BULK) ||
-          (hhcd->hc[ch_num].ep_type == EP_TYPE_INTR))
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].urb_state = URB_DONE;
+
+      if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) ||
+          (hhcd->hc[chnum].ep_type == EP_TYPE_INTR))
       {
         if (hhcd->Init.dma_enable == 0U)
         {
-          hhcd->hc[ch_num].toggle_out ^= 1U;
+          hhcd->hc[chnum].toggle_out ^= 1U;
         }
 
-        if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[ch_num].xfer_len > 0U))
+        if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U))
         {
-          num_packets = (hhcd->hc[ch_num].xfer_len + hhcd->hc[ch_num].max_packet - 1U) / hhcd->hc[ch_num].max_packet;
+          num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet;
 
           if ((num_packets & 1U) != 0U)
           {
-            hhcd->hc[ch_num].toggle_out ^= 1U;
+            hhcd->hc[chnum].toggle_out ^= 1U;
           }
         }
       }
     }
-    else if (hhcd->hc[ch_num].state == HC_NAK)
+    else if (hhcd->hc[chnum].state == HC_ACK)
     {
-      hhcd->hc[ch_num].urb_state = URB_NOTREADY;
-    }
-    else if (hhcd->hc[ch_num].state == HC_NYET)
-    {
-      hhcd->hc[ch_num].urb_state  = URB_NOTREADY;
-    }
-    else if (hhcd->hc[ch_num].state == HC_STALL)
-    {
-      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].ErrCnt++;
-      if (hhcd->hc[ch_num].ErrCnt > 2U)
+      hhcd->hc[chnum].state = HC_HALTED;
+
+      if (hhcd->hc[chnum].do_csplit == 1U)
       {
-        hhcd->hc[ch_num].ErrCnt = 0U;
-        hhcd->hc[ch_num].urb_state = URB_ERROR;
+        hhcd->hc[chnum].urb_state = URB_NOTREADY;
+      }
+    }
+    else if (hhcd->hc[chnum].state == HC_NAK)
+    {
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].urb_state = URB_NOTREADY;
+
+      if (hhcd->hc[chnum].do_csplit == 1U)
+      {
+        hhcd->hc[chnum].do_csplit = 0U;
+        __HAL_HCD_CLEAR_HC_CSPLT(chnum);
+      }
+    }
+    else if (hhcd->hc[chnum].state == HC_NYET)
+    {
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].urb_state  = URB_NOTREADY;
+    }
+    else if (hhcd->hc[chnum].state == HC_STALL)
+    {
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].urb_state  = URB_STALL;
+    }
+    else if ((hhcd->hc[chnum].state == HC_XACTERR) ||
+             (hhcd->hc[chnum].state == HC_DATATGLERR))
+    {
+      hhcd->hc[chnum].state = HC_HALTED;
+      hhcd->hc[chnum].ErrCnt++;
+      if (hhcd->hc[chnum].ErrCnt > 2U)
+      {
+        hhcd->hc[chnum].ErrCnt = 0U;
+        hhcd->hc[chnum].urb_state = URB_ERROR;
       }
       else
       {
-        hhcd->hc[ch_num].urb_state = URB_NOTREADY;
+        hhcd->hc[chnum].urb_state = URB_NOTREADY;
 
         /* re-activate the channel  */
-        tmpreg = USBx_HC(ch_num)->HCCHAR;
+        tmpreg = USBx_HC(chnum)->HCCHAR;
         tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
         tmpreg |= USB_OTG_HCCHAR_CHENA;
-        USBx_HC(ch_num)->HCCHAR = tmpreg;
+        USBx_HC(chnum)->HCCHAR = tmpreg;
       }
     }
     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);
+    hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state);
 #else
-    HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state);
+    HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state);
 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */
   }
   else
   {
-    /* ... */
+    return;
   }
 }
 
@@ -1564,17 +1833,17 @@
   */
 static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd)
 {
-  USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
+  const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t pktsts;
   uint32_t pktcnt;
   uint32_t GrxstspReg;
   uint32_t xferSizePktCnt;
   uint32_t tmpreg;
-  uint32_t ch_num;
+  uint32_t chnum;
 
   GrxstspReg = hhcd->Instance->GRXSTSP;
-  ch_num = GrxstspReg & USB_OTG_GRXSTSP_EPNUM;
+  chnum = GrxstspReg & USB_OTG_GRXSTSP_EPNUM;
   pktsts = (GrxstspReg & USB_OTG_GRXSTSP_PKTSTS) >> 17;
   pktcnt = (GrxstspReg & USB_OTG_GRXSTSP_BCNT) >> 4;
 
@@ -1582,33 +1851,33 @@
   {
     case GRXSTS_PKTSTS_IN:
       /* Read the data into the host buffer. */
-      if ((pktcnt > 0U) && (hhcd->hc[ch_num].xfer_buff != (void *)0))
+      if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0))
       {
-        if ((hhcd->hc[ch_num].xfer_count + pktcnt) <= hhcd->hc[ch_num].xfer_len)
+        if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len)
         {
           (void)USB_ReadPacket(hhcd->Instance,
-                               hhcd->hc[ch_num].xfer_buff, (uint16_t)pktcnt);
+                               hhcd->hc[chnum].xfer_buff, (uint16_t)pktcnt);
 
           /* manage multiple Xfer */
-          hhcd->hc[ch_num].xfer_buff += pktcnt;
-          hhcd->hc[ch_num].xfer_count += pktcnt;
+          hhcd->hc[chnum].xfer_buff += pktcnt;
+          hhcd->hc[chnum].xfer_count += pktcnt;
 
           /* get transfer size packet count */
-          xferSizePktCnt = (USBx_HC(ch_num)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19;
+          xferSizePktCnt = (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19;
 
-          if ((hhcd->hc[ch_num].max_packet == pktcnt) && (xferSizePktCnt > 0U))
+          if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U))
           {
             /* re-activate the channel when more packets are expected */
-            tmpreg = USBx_HC(ch_num)->HCCHAR;
+            tmpreg = USBx_HC(chnum)->HCCHAR;
             tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
             tmpreg |= USB_OTG_HCCHAR_CHENA;
-            USBx_HC(ch_num)->HCCHAR = tmpreg;
-            hhcd->hc[ch_num].toggle_in ^= 1U;
+            USBx_HC(chnum)->HCCHAR = tmpreg;
+            hhcd->hc[chnum].toggle_in ^= 1U;
           }
         }
         else
         {
-          hhcd->hc[ch_num].urb_state = URB_ERROR;
+          hhcd->hc[chnum].urb_state = URB_ERROR;
         }
       }
       break;
@@ -1630,7 +1899,7 @@
   */
 static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd)
 {
-  USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
+  const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
   __IO uint32_t hprt0;
   __IO uint32_t hprt0_dup;
@@ -1663,7 +1932,7 @@
 
     if ((hprt0 & USB_OTG_HPRT_PENA) == USB_OTG_HPRT_PENA)
     {
-      if (hhcd->Init.phy_itface  == USB_OTG_EMBEDDED_PHY)
+      if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY)
       {
         if ((hprt0 & USB_OTG_HPRT_PSPD) == (HPRT0_PRTSPD_LOW_SPEED << 17))
         {
@@ -1678,7 +1947,7 @@
       {
         if (hhcd->Init.speed == HCD_SPEED_FULL)
         {
-          USBx_HOST->HFIR = 60000U;
+          USBx_HOST->HFIR = HFIR_60_MHZ;
         }
       }
 #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U)
diff --git a/Src/stm32f4xx_hal_i2c.c b/Src/stm32f4xx_hal_i2c.c
index 8034cf9..dce9ab1 100644
--- a/Src/stm32f4xx_hal_i2c.c
+++ b/Src/stm32f4xx_hal_i2c.c
@@ -89,7 +89,7 @@
            add his own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()
       (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and user can
            add his own code by customization of function pointer HAL_I2C_ErrorCallback()
-      (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
+      (+) Abort a master or memory I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
       (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and user can
            add his own code by customization of function pointer HAL_I2C_AbortCpltCallback()
 
@@ -139,7 +139,7 @@
             or using HAL_I2C_Master_Seq_Receive_DMA()
       (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed and user can
            add his own code by customization of function pointer HAL_I2C_MasterRxCpltCallback()
-      (++) Abort a master IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
+      (++) Abort a master or memory IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
       (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and user can
            add his own code by customization of function pointer HAL_I2C_AbortCpltCallback()
       (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT() HAL_I2C_DisableListen_IT()
@@ -193,7 +193,7 @@
            add his own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback()
       (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and user can
            add his own code by customization of function pointer HAL_I2C_ErrorCallback()
-      (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
+      (+) Abort a master or memory I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT()
       (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and user can
            add his own code by customization of function pointer HAL_I2C_AbortCpltCallback()
 
@@ -313,7 +313,7 @@
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
-/** @addtogroup I2C_Private_Define
+/** @defgroup I2C_Private_Define I2C Private Define
   * @{
   */
 #define I2C_TIMEOUT_FLAG          35U         /*!< Timeout 35 ms             */
@@ -334,6 +334,14 @@
   */
 
 /* Private macro -------------------------------------------------------------*/
+/** @addtogroup I2C_Private_Macros
+  * @{
+  */
+/* Macro to get remaining data to transfer on DMA side */
+#define I2C_GET_DMA_REMAIN_DATA(__HANDLE__)     __HAL_DMA_GET_COUNTER(__HANDLE__)
+/**
+  * @}
+  */
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
 
@@ -2823,6 +2831,11 @@
 
         if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BTF) == SET)
         {
+          if (hi2c->XferSize == 3U)
+          {
+            /* Disable Acknowledge */
+            CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_ACK);
+          }
           /* Read data from DR */
           *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->DR;
 
@@ -4700,7 +4713,7 @@
 }
 
 /**
-  * @brief  Abort a master I2C IT or DMA process communication with Interrupt.
+  * @brief  Abort a master or memory I2C IT or DMA process communication with Interrupt.
   * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
   *         the configuration information for the specified I2C.
   * @param  DevAddress Target device address: The device 7 bits address value
@@ -4716,7 +4729,8 @@
   UNUSED(DevAddress);
 
   /* Abort Master transfer during Receive or Transmit process    */
-  if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && (CurrentMode == HAL_I2C_MODE_MASTER))
+  if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && ((CurrentMode == HAL_I2C_MODE_MASTER) || 
+                                                             (CurrentMode == HAL_I2C_MODE_MEM)))
   {
     /* Process Locked */
     __HAL_LOCK(hi2c);
@@ -5492,7 +5506,7 @@
   }
   else
   {
-    /* Clear TXE and BTF flag */
+    /* Clear TXE and BTF flags */
     I2C_Flush_DR(hi2c);
   }
 }
@@ -5508,7 +5522,9 @@
   if (hi2c->State == HAL_I2C_STATE_BUSY_RX)
   {
     uint32_t tmp;
+    uint32_t CurrentXferOptions;
 
+    CurrentXferOptions = hi2c->XferOptions;
     tmp = hi2c->XferCount;
     if (tmp > 3U)
     {
@@ -5564,7 +5580,14 @@
         else
         {
           hi2c->Mode = HAL_I2C_MODE_NONE;
-          hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
+          if ((CurrentXferOptions == I2C_FIRST_AND_LAST_FRAME) || (CurrentXferOptions == I2C_LAST_FRAME))
+          {
+            hi2c->PreviousState = I2C_STATE_NONE;
+          }
+          else
+          {
+            hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
+          }
 
 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
           hi2c->MasterRxCpltCallback(hi2c);
@@ -5712,7 +5735,14 @@
     else
     {
       hi2c->Mode = HAL_I2C_MODE_NONE;
-      hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
+      if ((CurrentXferOptions == I2C_FIRST_AND_LAST_FRAME) || (CurrentXferOptions == I2C_LAST_FRAME))
+      {
+        hi2c->PreviousState = I2C_STATE_NONE;
+      }
+      else
+      {
+        hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
+      }
 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
       hi2c->MasterRxCpltCallback(hi2c);
 #else
@@ -6159,7 +6189,7 @@
   {
     if ((CurrentState == HAL_I2C_STATE_BUSY_RX) || (CurrentState == HAL_I2C_STATE_BUSY_RX_LISTEN))
     {
-      hi2c->XferCount = (uint16_t)(__HAL_DMA_GET_COUNTER(hi2c->hdmarx));
+      hi2c->XferCount = (uint16_t)(I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx));
 
       if (hi2c->XferCount != 0U)
       {
@@ -6187,7 +6217,7 @@
     }
     else
     {
-      hi2c->XferCount = (uint16_t)(__HAL_DMA_GET_COUNTER(hi2c->hdmatx));
+      hi2c->XferCount = (uint16_t)(I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx));
 
       if (hi2c->XferCount != 0U)
       {
@@ -6356,7 +6386,7 @@
     /* Disable Acknowledge */
     CLEAR_BIT(hi2c->Instance->CR1, I2C_CR1_ACK);
 
-    /*Clear TXE flag*/
+    /* Clear TXE flag */
     I2C_Flush_DR(hi2c);
 
 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
@@ -7020,7 +7050,14 @@
       else
       {
         hi2c->Mode = HAL_I2C_MODE_NONE;
-        hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
+        if ((CurrentXferOptions == I2C_FIRST_AND_LAST_FRAME) || (CurrentXferOptions == I2C_LAST_FRAME))
+        {
+          hi2c->PreviousState = I2C_STATE_NONE;
+        }
+        else
+        {
+          hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX;
+        }
 
 #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
         hi2c->MasterRxCpltCallback(hi2c);
diff --git a/Src/stm32f4xx_hal_irda.c b/Src/stm32f4xx_hal_irda.c
index c754d46..df3f7fc 100644
--- a/Src/stm32f4xx_hal_irda.c
+++ b/Src/stm32f4xx_hal_irda.c
@@ -439,6 +439,8 @@
 /**
   * @brief  Register a User IRDA Callback
   *         To be used instead of the weak predefined callback
+  * @note   The HAL_IRDA_RegisterCallback() may be called before HAL_IRDA_Init() in HAL_IRDA_STATE_RESET
+  *         to register callbacks for HAL_IRDA_MSPINIT_CB_ID and HAL_IRDA_MSPDEINIT_CB_ID
   * @param  hirda irda handle
   * @param  CallbackID ID of the callback to be registered
   *         This parameter can be one of the following values:
@@ -466,8 +468,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hirda);
 
   if (hirda->gState == HAL_IRDA_STATE_READY)
   {
@@ -552,15 +552,14 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hirda);
-
   return status;
 }
 
 /**
   * @brief  Unregister an IRDA callback
   *         IRDA callback is redirected to the weak predefined callback
+  * @note   The HAL_IRDA_UnRegisterCallback() may be called before HAL_IRDA_Init() in HAL_IRDA_STATE_RESET
+  *         to un-register callbacks for HAL_IRDA_MSPINIT_CB_ID and HAL_IRDA_MSPDEINIT_CB_ID
   * @param  hirda irda handle
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
@@ -580,9 +579,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hirda);
-
   if (HAL_IRDA_STATE_READY == hirda->gState)
   {
     switch (CallbackID)
@@ -666,9 +662,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hirda);
-
   return status;
 }
 #endif /* USE_HAL_IRDA_REGISTER_CALLBACKS */
diff --git a/Src/stm32f4xx_hal_lptim.c b/Src/stm32f4xx_hal_lptim.c
index e302d59..05fa66d 100644
--- a/Src/stm32f4xx_hal_lptim.c
+++ b/Src/stm32f4xx_hal_lptim.c
@@ -185,7 +185,7 @@
 #if (USE_HAL_LPTIM_REGISTER_CALLBACKS == 1)
 static void LPTIM_ResetCallback(LPTIM_HandleTypeDef *lptim);
 #endif /* USE_HAL_LPTIM_REGISTER_CALLBACKS */
-static HAL_StatusTypeDef LPTIM_WaitForFlag(LPTIM_HandleTypeDef *hlptim, uint32_t flag);
+static HAL_StatusTypeDef LPTIM_WaitForFlag(const LPTIM_HandleTypeDef *hlptim, uint32_t flag);
 
 /* Exported functions --------------------------------------------------------*/
 
@@ -2077,9 +2077,6 @@
     return HAL_ERROR;
   }
 
-  /* Process locked */
-  __HAL_LOCK(hlptim);
-
   if (hlptim->State == HAL_LPTIM_STATE_READY)
   {
     switch (CallbackID)
@@ -2150,9 +2147,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hlptim);
-
   return status;
 }
 
@@ -2178,9 +2172,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hlptim);
-
   if (hlptim->State == HAL_LPTIM_STATE_READY)
   {
     switch (CallbackID)
@@ -2262,9 +2253,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hlptim);
-
   return status;
 }
 #endif /* USE_HAL_LPTIM_REGISTER_CALLBACKS */
@@ -2292,7 +2280,7 @@
   * @param  hlptim LPTIM handle
   * @retval HAL state
   */
-HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(LPTIM_HandleTypeDef *hlptim)
+HAL_LPTIM_StateTypeDef HAL_LPTIM_GetState(const LPTIM_HandleTypeDef *hlptim)
 {
   /* Return LPTIM handle state */
   return hlptim->State;
@@ -2339,7 +2327,7 @@
   * @param  flag   The lptim flag
   * @retval HAL status
   */
-static HAL_StatusTypeDef LPTIM_WaitForFlag(LPTIM_HandleTypeDef *hlptim, uint32_t flag)
+static HAL_StatusTypeDef LPTIM_WaitForFlag(const LPTIM_HandleTypeDef *hlptim, uint32_t flag)
 {
   HAL_StatusTypeDef result = HAL_OK;
   uint32_t count = TIMEOUT * (SystemCoreClock / 20UL / 1000UL);
diff --git a/Src/stm32f4xx_hal_ltdc.c b/Src/stm32f4xx_hal_ltdc.c
index fcc5fa1..f5f8148 100644
--- a/Src/stm32f4xx_hal_ltdc.c
+++ b/Src/stm32f4xx_hal_ltdc.c
@@ -178,7 +178,13 @@
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
+/** @defgroup LTDC_Private_Define LTDC Private Define
+  * @{
+  */
 #define LTDC_TIMEOUT_VALUE ((uint32_t)100U)  /* 100ms */
+/**
+  * @}
+  */
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
@@ -549,7 +555,7 @@
         break;
 
       case HAL_LTDC_MSPINIT_CB_ID :
-        hltdc->MspInitCallback = HAL_LTDC_MspInit;                  /* Legcay weak MspInit Callback     */
+        hltdc->MspInitCallback = HAL_LTDC_MspInit;                  /* Legcay weak MspInit Callback  */
         break;
 
       case HAL_LTDC_MSPDEINIT_CB_ID :
diff --git a/Src/stm32f4xx_hal_ltdc_ex.c b/Src/stm32f4xx_hal_ltdc_ex.c
index 2ee7795..ab2ca72 100644
--- a/Src/stm32f4xx_hal_ltdc_ex.c
+++ b/Src/stm32f4xx_hal_ltdc_ex.c
@@ -74,16 +74,18 @@
   /* The following polarity is inverted:
                      LTDC_DEPOLARITY_AL <-> LTDC_DEPOLARITY_AH */
 
+#if !defined(POLARITIES_INVERSION_UPDATED)
   /* Note 1 : Code in line w/ Current LTDC specification */
   hltdc->Init.DEPolarity = (VidCfg->DEPolarity == \
                             DSI_DATA_ENABLE_ACTIVE_HIGH) ? LTDC_DEPOLARITY_AL : LTDC_DEPOLARITY_AH;
   hltdc->Init.VSPolarity = (VidCfg->VSPolarity == DSI_VSYNC_ACTIVE_HIGH) ? LTDC_VSPOLARITY_AH : LTDC_VSPOLARITY_AL;
   hltdc->Init.HSPolarity = (VidCfg->HSPolarity == DSI_HSYNC_ACTIVE_HIGH) ? LTDC_HSPOLARITY_AH : LTDC_HSPOLARITY_AL;
-
+#else
   /* Note 2: Code to be used in case LTDC polarities inversion updated in the specification */
-  /* hltdc->Init.DEPolarity = VidCfg->DEPolarity << 29;
-     hltdc->Init.VSPolarity = VidCfg->VSPolarity << 29;
-     hltdc->Init.HSPolarity = VidCfg->HSPolarity << 29; */
+  hltdc->Init.DEPolarity = VidCfg->DEPolarity << 29;
+  hltdc->Init.VSPolarity = VidCfg->VSPolarity << 29;
+  hltdc->Init.HSPolarity = VidCfg->HSPolarity << 29;
+#endif /* POLARITIES_INVERSION_UPDATED */
 
   /* Retrieve vertical timing parameters from DSI */
   hltdc->Init.VerticalSync       = VidCfg->VerticalSyncActive - 1U;
@@ -115,17 +117,18 @@
                      LTDC_VSPOLARITY_AL <-> LTDC_VSPOLARITY_AH
                      LTDC_HSPOLARITY_AL <-> LTDC_HSPOLARITY_AH)*/
 
+#if !defined(POLARITIES_INVERSION_UPDATED)
   /* Note 1 : Code in line w/ Current LTDC specification */
   hltdc->Init.DEPolarity = (CmdCfg->DEPolarity == \
                             DSI_DATA_ENABLE_ACTIVE_HIGH) ? LTDC_DEPOLARITY_AL : LTDC_DEPOLARITY_AH;
   hltdc->Init.VSPolarity = (CmdCfg->VSPolarity == DSI_VSYNC_ACTIVE_HIGH) ? LTDC_VSPOLARITY_AL : LTDC_VSPOLARITY_AH;
   hltdc->Init.HSPolarity = (CmdCfg->HSPolarity == DSI_HSYNC_ACTIVE_HIGH) ? LTDC_HSPOLARITY_AL : LTDC_HSPOLARITY_AH;
-
+#else
   /* Note 2: Code to be used in case LTDC polarities inversion updated in the specification */
-  /* hltdc->Init.DEPolarity = CmdCfg->DEPolarity << 29;
-     hltdc->Init.VSPolarity = CmdCfg->VSPolarity << 29;
-     hltdc->Init.HSPolarity = CmdCfg->HSPolarity << 29; */
-
+  hltdc->Init.DEPolarity = CmdCfg->DEPolarity << 29;
+  hltdc->Init.VSPolarity = CmdCfg->VSPolarity << 29;
+  hltdc->Init.HSPolarity = CmdCfg->HSPolarity << 29;
+#endif /* POLARITIES_INVERSION_UPDATED */
   return HAL_OK;
 }
 
diff --git a/Src/stm32f4xx_hal_nand.c b/Src/stm32f4xx_hal_nand.c
index a0b89e6..5cd4ab2 100644
--- a/Src/stm32f4xx_hal_nand.c
+++ b/Src/stm32f4xx_hal_nand.c
@@ -77,15 +77,15 @@
       and a pointer to the user callback function.
 
       Use function HAL_NAND_UnRegisterCallback() to reset a callback to the default
-      weak (surcharged) function. It allows to reset following callbacks:
+      weak (overridden) function. It allows to reset following callbacks:
         (+) MspInitCallback    : NAND MspInit.
         (+) MspDeInitCallback  : NAND MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
       By default, after the HAL_NAND_Init and if the state is HAL_NAND_STATE_RESET
-      all callbacks are reset to the corresponding legacy weak (surcharged) functions.
+      all callbacks are reset to the corresponding legacy weak (overridden) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the HAL_NAND_Init
+      reset to the legacy weak (overridden) functions in the HAL_NAND_Init
       and  HAL_NAND_DeInit only when these callbacks are null (not registered beforehand).
       If not, MspInit or MspDeInit are not null, the HAL_NAND_Init and HAL_NAND_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
@@ -100,7 +100,7 @@
 
       When The compilation define USE_HAL_NAND_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
-      and weak (surcharged) callbacks are used.
+      and weak (overridden) callbacks are used.
 
   @endverbatim
   ******************************************************************************
@@ -199,7 +199,7 @@
   __FMC_NAND_ENABLE(hnand->Instance, hnand->Init.NandBank);
 #else
   __FMC_NAND_ENABLE(hnand->Instance);
-#endif
+#endif /* (FMC_Bank2_3) || (FSMC_Bank2_3) */
 
   /* Update the NAND controller state */
   hnand->State = HAL_NAND_STATE_READY;
@@ -428,7 +428,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* Send Read ID command sequence */
     *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA))  = NAND_CMD_READID;
@@ -441,7 +441,7 @@
     if (hnand->Init.MemoryDataWidth == FSMC_NAND_PCC_MEM_BUS_WIDTH_8)
 #else /* FMC_PCR2_PWID is defined */
     if (hnand->Init.MemoryDataWidth == FMC_NAND_PCC_MEM_BUS_WIDTH_8)
-#endif
+#endif /* FSMC_PCR2_PWID */
     {
       data = *(__IO uint32_t *)deviceaddress;
 
@@ -512,7 +512,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* Send NAND reset command */
     *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = 0xFF;
@@ -561,8 +561,8 @@
   * @param  NumPageToRead  number of pages to read from block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
-                                        uint32_t NumPageToRead)
+HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                        uint8_t *pBuffer, uint32_t NumPageToRead)
 {
   uint32_t index;
   uint32_t tickstart;
@@ -597,7 +597,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* NAND raw address calculation */
     nandaddress = ARRAY_ADDRESS(pAddress, hnand);
@@ -730,8 +730,8 @@
   * @param  NumPageToRead  number of pages to read from block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer,
-                                         uint32_t NumPageToRead)
+HAL_StatusTypeDef HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                         uint16_t *pBuffer, uint32_t NumPageToRead)
 {
   uint32_t index;
   uint32_t tickstart;
@@ -766,7 +766,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* NAND raw address calculation */
     nandaddress = ARRAY_ADDRESS(pAddress, hnand);
@@ -860,9 +860,9 @@
 
       /* Calculate PageSize */
 #if defined(FSMC_PCR2_PWID)
-    if (hnand->Init.MemoryDataWidth == FSMC_NAND_PCC_MEM_BUS_WIDTH_8)
+      if (hnand->Init.MemoryDataWidth == FSMC_NAND_PCC_MEM_BUS_WIDTH_8)
 #else
-    if (hnand->Init.MemoryDataWidth == FMC_NAND_PCC_MEM_BUS_WIDTH_8)
+      if (hnand->Init.MemoryDataWidth == FMC_NAND_PCC_MEM_BUS_WIDTH_8)
 #endif /* FSMC_PCR2_PWID */
       {
         hnand->Config.PageSize = hnand->Config.PageSize / 2U;
@@ -913,8 +913,8 @@
   * @param  NumPageToWrite   number of pages to write to block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
-                                         uint32_t NumPageToWrite)
+HAL_StatusTypeDef HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                         const uint8_t *pBuffer, uint32_t NumPageToWrite)
 {
   uint32_t index;
   uint32_t tickstart;
@@ -922,7 +922,7 @@
   uint32_t numpageswritten = 0U;
   uint32_t nandaddress;
   uint32_t nbpages = NumPageToWrite;
-  uint8_t *buff = pBuffer;
+  const uint8_t *buff = pBuffer;
 
   /* Check the NAND controller state */
   if (hnand->State == HAL_NAND_STATE_BUSY)
@@ -949,7 +949,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* NAND raw address calculation */
     nandaddress = ARRAY_ADDRESS(pAddress, hnand);
@@ -1077,8 +1077,8 @@
   * @param  NumPageToWrite   number of pages to write to block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer,
-                                          uint32_t NumPageToWrite)
+HAL_StatusTypeDef HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                          const uint16_t *pBuffer, uint32_t NumPageToWrite)
 {
   uint32_t index;
   uint32_t tickstart;
@@ -1086,7 +1086,7 @@
   uint32_t numpageswritten = 0U;
   uint32_t nandaddress;
   uint32_t nbpages = NumPageToWrite;
-  uint16_t *buff = pBuffer;
+  const uint16_t *buff = pBuffer;
 
   /* Check the NAND controller state */
   if (hnand->State == HAL_NAND_STATE_BUSY)
@@ -1113,7 +1113,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* NAND raw address calculation */
     nandaddress = ARRAY_ADDRESS(pAddress, hnand);
@@ -1181,9 +1181,9 @@
 
       /* Calculate PageSize */
 #if defined(FSMC_PCR2_PWID)
-    if (hnand->Init.MemoryDataWidth == FSMC_NAND_PCC_MEM_BUS_WIDTH_8)
+      if (hnand->Init.MemoryDataWidth == FSMC_NAND_PCC_MEM_BUS_WIDTH_8)
 #else
-    if (hnand->Init.MemoryDataWidth == FMC_NAND_PCC_MEM_BUS_WIDTH_8)
+      if (hnand->Init.MemoryDataWidth == FMC_NAND_PCC_MEM_BUS_WIDTH_8)
 #endif /* FSMC_PCR2_PWID */
       {
         hnand->Config.PageSize = hnand->Config.PageSize / 2U;
@@ -1256,8 +1256,8 @@
   * @param  NumSpareAreaToRead Number of spare area to read
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer,
-                                             uint32_t NumSpareAreaToRead)
+HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                             uint8_t *pBuffer, uint32_t NumSpareAreaToRead)
 {
   uint32_t index;
   uint32_t tickstart;
@@ -1293,7 +1293,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* NAND raw address calculation */
     nandaddress = ARRAY_ADDRESS(pAddress, hnand);
@@ -1432,7 +1432,7 @@
   * @param  NumSpareAreaToRead Number of spare area to read
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
+HAL_StatusTypeDef HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
                                               uint16_t *pBuffer, uint32_t NumSpareAreaToRead)
 {
   uint32_t index;
@@ -1469,7 +1469,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* NAND raw address calculation */
     nandaddress = ARRAY_ADDRESS(pAddress, hnand);
@@ -1608,8 +1608,8 @@
   * @param  NumSpareAreaTowrite   number of spare areas to write to block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
-                                              uint8_t *pBuffer, uint32_t NumSpareAreaTowrite)
+HAL_StatusTypeDef HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                              const uint8_t *pBuffer, uint32_t NumSpareAreaTowrite)
 {
   uint32_t index;
   uint32_t tickstart;
@@ -1618,7 +1618,7 @@
   uint32_t nandaddress;
   uint32_t columnaddress;
   uint32_t nbspare = NumSpareAreaTowrite;
-  uint8_t *buff = pBuffer;
+  const uint8_t *buff = pBuffer;
 
   /* Check the NAND controller state */
   if (hnand->State == HAL_NAND_STATE_BUSY)
@@ -1645,7 +1645,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* Page address calculation */
     nandaddress = ARRAY_ADDRESS(pAddress, hnand);
@@ -1782,8 +1782,8 @@
   * @param  NumSpareAreaTowrite   number of spare areas to write to block
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress,
-                                               uint16_t *pBuffer, uint32_t NumSpareAreaTowrite)
+HAL_StatusTypeDef HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress,
+                                               const uint16_t *pBuffer, uint32_t NumSpareAreaTowrite)
 {
   uint32_t index;
   uint32_t tickstart;
@@ -1792,7 +1792,7 @@
   uint32_t nandaddress;
   uint32_t columnaddress;
   uint32_t nbspare = NumSpareAreaTowrite;
-  uint16_t *buff = pBuffer;
+  const uint16_t *buff = pBuffer;
 
   /* Check the NAND controller state */
   if (hnand->State == HAL_NAND_STATE_BUSY)
@@ -1819,7 +1819,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* NAND raw address calculation */
     nandaddress = ARRAY_ADDRESS(pAddress, hnand);
@@ -1954,7 +1954,7 @@
   * @param  pAddress  pointer to NAND address structure
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
+HAL_StatusTypeDef HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, const NAND_AddressTypeDef *pAddress)
 {
   uint32_t deviceaddress;
 
@@ -1983,7 +1983,7 @@
     }
 #else
     deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
     /* Send Erase block command sequence */
     *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_ERASE0;
@@ -2021,7 +2021,7 @@
   *           - NAND_VALID_ADDRESS: When the new address is valid address
   *           - NAND_INVALID_ADDRESS: When the new address is invalid address
   */
-uint32_t HAL_NAND_Address_Inc(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
+uint32_t HAL_NAND_Address_Inc(const NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
 {
   uint32_t status = NAND_VALID_ADDRESS;
 
@@ -2052,7 +2052,7 @@
 #if (USE_HAL_NAND_REGISTER_CALLBACKS == 1)
 /**
   * @brief  Register a User NAND Callback
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used to override the weak predefined callback
   * @param hnand : NAND handle
   * @param CallbackId : ID of the callback to be registered
   *        This parameter can be one of the following values:
@@ -2072,9 +2072,6 @@
     return HAL_ERROR;
   }
 
-  /* Process locked */
-  __HAL_LOCK(hnand);
-
   if (hnand->State == HAL_NAND_STATE_READY)
   {
     switch (CallbackId)
@@ -2116,14 +2113,12 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hnand);
   return status;
 }
 
 /**
   * @brief  Unregister a User NAND Callback
-  *         NAND Callback is redirected to the weak (surcharged) predefined callback
+  *         NAND Callback is redirected to the weak predefined callback
   * @param hnand : NAND handle
   * @param CallbackId : ID of the callback to be unregistered
   *        This parameter can be one of the following values:
@@ -2136,9 +2131,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hnand);
-
   if (hnand->State == HAL_NAND_STATE_READY)
   {
     switch (CallbackId)
@@ -2180,8 +2172,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hnand);
   return status;
 }
 #endif /* USE_HAL_NAND_REGISTER_CALLBACKS */
@@ -2332,7 +2322,7 @@
   *                the configuration information for NAND module.
   * @retval HAL state
   */
-HAL_NAND_StateTypeDef HAL_NAND_GetState(NAND_HandleTypeDef *hnand)
+HAL_NAND_StateTypeDef HAL_NAND_GetState(const NAND_HandleTypeDef *hnand)
 {
   return hnand->State;
 }
@@ -2343,7 +2333,7 @@
   *                the configuration information for NAND module.
   * @retval NAND status
   */
-uint32_t HAL_NAND_Read_Status(NAND_HandleTypeDef *hnand)
+uint32_t HAL_NAND_Read_Status(const NAND_HandleTypeDef *hnand)
 {
   uint32_t data;
   uint32_t deviceaddress;
@@ -2361,7 +2351,7 @@
   }
 #else
   deviceaddress = NAND_DEVICE;
-#endif
+#endif /* FMC_Bank2_3 */
 
   /* Send Read status operation command */
   *(__IO uint8_t *)((uint32_t)(deviceaddress | CMD_AREA)) = NAND_CMD_STATUS;
diff --git a/Src/stm32f4xx_hal_nor.c b/Src/stm32f4xx_hal_nor.c
index 0a82044..22366b4 100644
--- a/Src/stm32f4xx_hal_nor.c
+++ b/Src/stm32f4xx_hal_nor.c
@@ -74,15 +74,15 @@
       and a pointer to the user callback function.
 
       Use function HAL_NOR_UnRegisterCallback() to reset a callback to the default
-      weak (surcharged) function. It allows to reset following callbacks:
+      weak (overridden) function. It allows to reset following callbacks:
         (+) MspInitCallback    : NOR MspInit.
         (+) MspDeInitCallback  : NOR MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
       By default, after the HAL_NOR_Init and if the state is HAL_NOR_STATE_RESET
-      all callbacks are reset to the corresponding legacy weak (surcharged) functions.
+      all callbacks are reset to the corresponding legacy weak (overridden) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the HAL_NOR_Init
+      reset to the legacy weak (overridden) functions in the HAL_NOR_Init
       and  HAL_NOR_DeInit only when these callbacks are null (not registered beforehand).
       If not, MspInit or MspDeInit are not null, the HAL_NOR_Init and HAL_NOR_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
@@ -97,7 +97,7 @@
 
       When The compilation define USE_HAL_NOR_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
-      and weak (surcharged) callbacks are used.
+      and weak (overridden) callbacks are used.
 
   @endverbatim
   ******************************************************************************
@@ -106,7 +106,7 @@
 /* Includes ------------------------------------------------------------------*/
 #include "stm32f4xx_hal.h"
 
-#if defined(FMC_Bank1) || defined(FSMC_Bank1)
+#if  defined(FMC_Bank1) || defined(FSMC_Bank1)
 
 /** @addtogroup STM32F4xx_HAL_Driver
   * @{
@@ -127,6 +127,11 @@
   */
 
 /* Constants to define address to set to write a command */
+#define NOR_CMD_ADDRESS_FIRST_BYTE            (uint16_t)0x0AAA
+#define NOR_CMD_ADDRESS_FIRST_CFI_BYTE        (uint16_t)0x00AA
+#define NOR_CMD_ADDRESS_SECOND_BYTE           (uint16_t)0x0555
+#define NOR_CMD_ADDRESS_THIRD_BYTE            (uint16_t)0x0AAA
+
 #define NOR_CMD_ADDRESS_FIRST                 (uint16_t)0x0555
 #define NOR_CMD_ADDRESS_FIRST_CFI             (uint16_t)0x0055
 #define NOR_CMD_ADDRESS_SECOND                (uint16_t)0x02AA
@@ -264,7 +269,8 @@
   (void)FMC_NORSRAM_Timing_Init(hnor->Instance, Timing, hnor->Init.NSBank);
 
   /* Initialize NOR extended mode timing Interface */
-  (void)FMC_NORSRAM_Extended_Timing_Init(hnor->Extended, ExtTiming, hnor->Init.NSBank, hnor->Init.ExtendedMode);
+  (void)FMC_NORSRAM_Extended_Timing_Init(hnor->Extended, ExtTiming,
+                                         hnor->Init.NSBank, hnor->Init.ExtendedMode);
 
   /* Enable the NORSRAM device */
   __FMC_NORSRAM_ENABLE(hnor->Instance, hnor->Init.NSBank);
@@ -310,7 +316,16 @@
   else
   {
     /* Get the value of the command set */
-    NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_CFI), NOR_CMD_DATA_CFI);
+    if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_CFI_BYTE),
+                NOR_CMD_DATA_CFI);
+    }
+    else
+    {
+      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);
@@ -472,9 +487,22 @@
     /* Send read ID command */
     if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
     {
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_AUTO_SELECT);
+      if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_BYTE),
+                  NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND_BYTE),
+                  NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD_BYTE),
+                  NOR_CMD_DATA_AUTO_SELECT);
+      }
+      else
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
+                  NOR_CMD_DATA_AUTO_SELECT);
+      }
     }
     else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
     {
@@ -641,9 +669,22 @@
     /* Send read data command */
     if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
     {
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_READ_RESET);
+      if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_BYTE),
+                  NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND_BYTE),
+                  NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD_BYTE),
+                  NOR_CMD_DATA_READ_RESET);
+      }
+      else
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
+                  NOR_CMD_DATA_READ_RESET);
+      }
     }
     else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
     {
@@ -722,9 +763,21 @@
     /* Send program data command */
     if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
     {
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_PROGRAM);
+      if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_BYTE),
+                  NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND_BYTE),
+                  NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD_BYTE),
+                  NOR_CMD_DATA_PROGRAM);
+      }
+      else
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_PROGRAM);
+      }
     }
     else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
     {
@@ -814,9 +867,22 @@
     /* Send read data command */
     if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
     {
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_READ_RESET);
+      if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_BYTE),
+                  NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND_BYTE),
+                  NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD_BYTE),
+                  NOR_CMD_DATA_READ_RESET);
+      }
+      else
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
+                  NOR_CMD_DATA_READ_RESET);
+      }
     }
     else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
     {
@@ -909,10 +975,20 @@
 
     if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
     {
-      /* Issue unlock command sequence */
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-
+      if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+      {
+        /* Issue unlock command sequence */
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_BYTE),
+                  NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND_BYTE),
+                  NOR_CMD_DATA_SECOND);
+      }
+      else
+      {
+        /* Issue unlock command sequence */
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+      }
       /* Write Buffer Load Command */
       NOR_WRITE((deviceaddress + uwAddress), NOR_CMD_DATA_BUFFER_AND_PROG);
       NOR_WRITE((deviceaddress + uwAddress), (uint16_t)(uwBufferSize - 1U));
@@ -1012,14 +1088,26 @@
     /* Send block erase command sequence */
     if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
     {
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
-                NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH),
-                NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH),
-                NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
+      if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_BYTE),
+                  NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND_BYTE),
+                  NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD_BYTE),
+                  NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
+      }
+      else
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
+                  NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH),
+                  NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH),
+                  NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
+      }
       NOR_WRITE((uint32_t)(BlockAddress + Address), NOR_CMD_DATA_BLOCK_ERASE);
     }
     else if (hnor->CommandSet == NOR_INTEL_SHARP_EXT_COMMAND_SET)
@@ -1097,15 +1185,28 @@
     /* Send NOR chip erase command sequence */
     if (hnor->CommandSet == NOR_AMD_FUJITSU_COMMAND_SET)
     {
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
-                NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH),
-                NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH),
-                NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
-      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SIXTH), NOR_CMD_DATA_CHIP_ERASE);
+      if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_BYTE),
+                  NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND_BYTE),
+                  NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD_BYTE),
+                  NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
+      }
+      else
+      {
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST), NOR_CMD_DATA_FIRST);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SECOND), NOR_CMD_DATA_SECOND);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD),
+                  NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH),
+                  NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH),
+                  NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
+        NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SIXTH),
+                  NOR_CMD_DATA_CHIP_ERASE);
+      }
     }
     else
     {
@@ -1176,8 +1277,15 @@
     }
 
     /* Send read CFI query command */
-    NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_CFI), NOR_CMD_DATA_CFI);
-
+    if (uwNORMemoryDataWidth == NOR_MEMORY_8B)
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_CFI_BYTE),
+                NOR_CMD_DATA_CFI);
+    }
+    else
+    {
+      NOR_WRITE(NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIRST_CFI), NOR_CMD_DATA_CFI);
+    }
     /* read the NOR CFI information */
     pNOR_CFI->CFI_1 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI1_ADDRESS);
     pNOR_CFI->CFI_2 = *(__IO uint16_t *) NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, CFI2_ADDRESS);
@@ -1201,7 +1309,7 @@
 #if (USE_HAL_NOR_REGISTER_CALLBACKS == 1)
 /**
   * @brief  Register a User NOR Callback
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used to override the weak predefined callback
   * @param hnor : NOR handle
   * @param CallbackId : ID of the callback to be registered
   *        This parameter can be one of the following values:
@@ -1221,9 +1329,6 @@
     return HAL_ERROR;
   }
 
-  /* Process locked */
-  __HAL_LOCK(hnor);
-
   state = hnor->State;
   if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_RESET) || (state == HAL_NOR_STATE_PROTECTED))
   {
@@ -1247,14 +1352,12 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hnor);
   return status;
 }
 
 /**
   * @brief  Unregister a User NOR Callback
-  *         NOR Callback is redirected to the weak (surcharged) predefined callback
+  *         NOR Callback is redirected to the weak predefined callback
   * @param hnor : NOR handle
   * @param CallbackId : ID of the callback to be unregistered
   *        This parameter can be one of the following values:
@@ -1267,9 +1370,6 @@
   HAL_StatusTypeDef status = HAL_OK;
   HAL_NOR_StateTypeDef state;
 
-  /* Process locked */
-  __HAL_LOCK(hnor);
-
   state = hnor->State;
   if ((state == HAL_NOR_STATE_READY) || (state == HAL_NOR_STATE_RESET) || (state == HAL_NOR_STATE_PROTECTED))
   {
@@ -1293,8 +1393,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hnor);
   return status;
 }
 #endif /* (USE_HAL_NOR_REGISTER_CALLBACKS) */
@@ -1411,7 +1509,7 @@
   *                the configuration information for NOR module.
   * @retval NOR controller state
   */
-HAL_NOR_StateTypeDef HAL_NOR_GetState(NOR_HandleTypeDef *hnor)
+HAL_NOR_StateTypeDef HAL_NOR_GetState(const NOR_HandleTypeDef *hnor)
 {
   return hnor->State;
 }
diff --git a/Src/stm32f4xx_hal_pcd.c b/Src/stm32f4xx_hal_pcd.c
index 7e46592..fa50ea1 100644
--- a/Src/stm32f4xx_hal_pcd.c
+++ b/Src/stm32f4xx_hal_pcd.c
@@ -122,7 +122,9 @@
   */
 HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
 {
-  USB_OTG_GlobalTypeDef *USBx;
+#if defined (USB_OTG_FS)
+  const USB_OTG_GlobalTypeDef *USBx;
+#endif /* defined (USB_OTG_FS) */
   uint8_t i;
 
   /* Check the PCD handle allocation */
@@ -134,7 +136,9 @@
   /* Check the parameters */
   assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance));
 
+#if defined (USB_OTG_FS)
   USBx = hpcd->Instance;
+#endif /* defined (USB_OTG_FS) */
 
   if (hpcd->State == HAL_PCD_STATE_RESET)
   {
@@ -171,11 +175,13 @@
 
   hpcd->State = HAL_PCD_STATE_BUSY;
 
+#if defined (USB_OTG_FS)
   /* Disable DMA mode for FS instance */
-  if ((USBx->CID & (0x1U << 8)) == 0U)
+  if (USBx == USB_OTG_FS)
   {
     hpcd->Init.dma_enable = 0U;
   }
+#endif /* defined (USB_OTG_FS) */
 
   /* Disable the Interrupts */
   __HAL_PCD_DISABLE(hpcd);
@@ -187,8 +193,12 @@
     return HAL_ERROR;
   }
 
-  /* Force Device Mode*/
-  (void)USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE);
+  /* Force Device Mode */
+  if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK)
+  {
+    hpcd->State = HAL_PCD_STATE_ERROR;
+    return HAL_ERROR;
+  }
 
   /* Init endpoints structures */
   for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
@@ -224,13 +234,17 @@
 
   hpcd->USB_Address = 0U;
   hpcd->State = HAL_PCD_STATE_READY;
-#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) \
+ || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) \
+ || defined(STM32F423xx)
   /* Activate LPM */
   if (hpcd->Init.lpm_enable == 1U)
   {
     (void)HAL_PCDEx_ActivateLPM(hpcd);
   }
-#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
+#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||
+          defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||
+          defined(STM32F423xx) */
   (void)USB_DevDisconnect(hpcd->Instance);
 
   return HAL_OK;
@@ -318,7 +332,7 @@
   *          @arg @ref HAL_PCD_SUSPEND_CB_ID USB PCD Suspend callback ID
   *          @arg @ref HAL_PCD_RESUME_CB_ID USB PCD Resume callback ID
   *          @arg @ref HAL_PCD_CONNECT_CB_ID USB PCD Connect callback ID
-  *          @arg @ref HAL_PCD_DISCONNECT_CB_ID OTG PCD Disconnect callback ID
+  *          @arg @ref HAL_PCD_DISCONNECT_CB_ID USB PCD Disconnect callback ID
   *          @arg @ref HAL_PCD_MSPINIT_CB_ID MspDeInit callback ID
   *          @arg @ref HAL_PCD_MSPDEINIT_CB_ID MspDeInit callback ID
   * @param  pCallback pointer to the Callback function
@@ -432,7 +446,7 @@
   *          @arg @ref HAL_PCD_SUSPEND_CB_ID USB PCD Suspend callback ID
   *          @arg @ref HAL_PCD_RESUME_CB_ID USB PCD Resume callback ID
   *          @arg @ref HAL_PCD_CONNECT_CB_ID USB PCD Connect callback ID
-  *          @arg @ref HAL_PCD_DISCONNECT_CB_ID OTG PCD Disconnect callback ID
+  *          @arg @ref HAL_PCD_DISCONNECT_CB_ID USB PCD Disconnect callback ID
   *          @arg @ref HAL_PCD_MSPINIT_CB_ID MspDeInit callback ID
   *          @arg @ref HAL_PCD_MSPDEINIT_CB_ID MspDeInit callback ID
   * @retval HAL status
@@ -1004,8 +1018,8 @@
 
   __HAL_LOCK(hpcd);
 
-  if ((hpcd->Init.battery_charging_enable == 1U) &&
-      (hpcd->Init.phy_itface != USB_OTG_ULPI_PHY))
+  if (((USBx->GUSBCFG & USB_OTG_GUSBCFG_PHYSEL) != 0U) &&
+      (hpcd->Init.battery_charging_enable == 1U))
   {
     /* Enable USB Transceiver */
     USBx->GCCFG |= USB_OTG_GCCFG_PWRDWN;
@@ -1033,8 +1047,8 @@
 
   (void)USB_FlushTxFifo(hpcd->Instance, 0x10U);
 
-  if ((hpcd->Init.battery_charging_enable == 1U) &&
-      (hpcd->Init.phy_itface != USB_OTG_ULPI_PHY))
+  if (((USBx->GUSBCFG & USB_OTG_GUSBCFG_PHYSEL) != 0U) &&
+      (hpcd->Init.battery_charging_enable == 1U))
   {
     /* Disable USB Transceiver */
     USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN);
@@ -1306,7 +1320,9 @@
       }
       __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP);
     }
-#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) \
+ || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) \
+ || defined(STM32F423xx)
     /* Handle LPM Interrupt */
     if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_LPMINT))
     {
@@ -1332,7 +1348,9 @@
 #endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
       }
     }
-#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
+#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||
+          defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||
+          defined(STM32F423xx) */
     /* Handle Reset Interrupt */
     if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBRST))
     {
@@ -1513,16 +1531,17 @@
   */
 void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd)
 {
+#if defined (USB_OTG_FS)
   USB_OTG_GlobalTypeDef *USBx;
-
   USBx = hpcd->Instance;
 
-  if ((USBx->CID & (0x1U << 8)) == 0U)
+  if (USBx == USB_OTG_FS)
   {
     /* Clear EXTI pending Bit */
     __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG();
   }
   else
+#endif /* defined (USB_OTG_FS) */
   {
     /* Clear EXTI pending Bit */
     __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG();
@@ -1733,8 +1752,8 @@
 
   __HAL_LOCK(hpcd);
 
-  if ((hpcd->Init.battery_charging_enable == 1U) &&
-      (hpcd->Init.phy_itface != USB_OTG_ULPI_PHY))
+  if (((USBx->GUSBCFG & USB_OTG_GUSBCFG_PHYSEL) != 0U) &&
+      (hpcd->Init.battery_charging_enable == 1U))
   {
     /* Enable USB Transceiver */
     USBx->GCCFG |= USB_OTG_GCCFG_PWRDWN;
@@ -1757,8 +1776,8 @@
   __HAL_LOCK(hpcd);
   (void)USB_DevDisconnect(hpcd->Instance);
 
-  if ((hpcd->Init.battery_charging_enable == 1U) &&
-      (hpcd->Init.phy_itface != USB_OTG_ULPI_PHY))
+  if (((USBx->GUSBCFG & USB_OTG_GUSBCFG_PHYSEL) != 0U) &&
+      (hpcd->Init.battery_charging_enable == 1U))
   {
     /* Disable USB Transceiver */
     USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN);
@@ -1818,6 +1837,7 @@
     /* Assign a Tx FIFO */
     ep->tx_fifo_num = ep->num;
   }
+
   /* Set initial data PID. */
   if (ep_type == EP_TYPE_BULK)
   {
@@ -1851,7 +1871,7 @@
     ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
     ep->is_in = 0U;
   }
-  ep->num   = ep_addr & EP_ADDR_MSK;
+  ep->num = ep_addr & EP_ADDR_MSK;
 
   __HAL_LOCK(hpcd);
   (void)USB_DeactivateEndpoint(hpcd->Instance, ep);
@@ -1886,14 +1906,7 @@
     ep->dma_addr = (uint32_t)pBuf;
   }
 
-  if ((ep_addr & EP_ADDR_MSK) == 0U)
-  {
-    (void)USB_EP0StartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable);
-  }
-  else
-  {
-    (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable);
-  }
+  (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable);
 
   return HAL_OK;
 }
@@ -1904,7 +1917,7 @@
   * @param  ep_addr endpoint address
   * @retval Data Size
   */
-uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
+uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr)
 {
   return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count;
 }
@@ -1934,14 +1947,7 @@
     ep->dma_addr = (uint32_t)pBuf;
   }
 
-  if ((ep_addr & EP_ADDR_MSK) == 0U)
-  {
-    (void)USB_EP0StartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable);
-  }
-  else
-  {
-    (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable);
-  }
+  (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable);
 
   return HAL_OK;
 }
@@ -2119,20 +2125,21 @@
   * @param  hpcd PCD handle
   * @retval HAL state
   */
-PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd)
+PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef const *hpcd)
 {
   return hpcd->State;
 }
 
+#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
 /**
   * @brief  Set the USB Device high speed test mode.
   * @param  hpcd PCD handle
   * @param  testmode USB Device high speed test mode
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_PCD_SetTestMode(PCD_HandleTypeDef *hpcd, uint8_t testmode)
+HAL_StatusTypeDef HAL_PCD_SetTestMode(const PCD_HandleTypeDef *hpcd, uint8_t testmode)
 {
-  USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
+  const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
 
   switch (testmode)
@@ -2151,6 +2158,7 @@
 
   return HAL_OK;
 }
+#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 /**
   * @}
   */
@@ -2233,9 +2241,9 @@
 static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum)
 {
   USB_OTG_EPTypeDef *ep;
-  USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
+  const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U);
+  uint32_t gSNPSiD = *(__IO const uint32_t *)(&USBx->CID + 0x1U);
   uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT;
 
   if (hpcd->Init.dma_enable == 1U)
@@ -2344,9 +2352,9 @@
   */
 static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum)
 {
-  USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
+  const USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U);
+  uint32_t gSNPSiD = *(__IO const uint32_t *)(&USBx->CID + 0x1U);
   uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT;
 
   if ((gSNPSiD > USB_OTG_CORE_ID_300A) &&
diff --git a/Src/stm32f4xx_hal_pcd_ex.c b/Src/stm32f4xx_hal_pcd_ex.c
index 292faf1..b66be6a 100644
--- a/Src/stm32f4xx_hal_pcd_ex.c
+++ b/Src/stm32f4xx_hal_pcd_ex.c
@@ -115,7 +115,9 @@
 
   return HAL_OK;
 }
-#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) \
+ || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) \
+ || defined(STM32F423xx)
 /**
   * @brief  Activate LPM feature.
   * @param  hpcd PCD handle
@@ -148,8 +150,11 @@
 
   return HAL_OK;
 }
-#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
-#if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||
+          defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||
+          defined(STM32F423xx) */
+#if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) \
+ || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
 /**
   * @brief  Handle BatteryCharging Process.
   * @param  hpcd PCD handle
@@ -178,9 +183,9 @@
 
   /* Primary detection: checks if connected to Standard Downstream Port
   (without charging capability) */
-  USBx->GCCFG &= ~ USB_OTG_GCCFG_DCDEN;
+  USBx->GCCFG &= ~USB_OTG_GCCFG_DCDEN;
   HAL_Delay(50U);
-  USBx->GCCFG |=  USB_OTG_GCCFG_PDEN;
+  USBx->GCCFG |= USB_OTG_GCCFG_PDEN;
   HAL_Delay(50U);
 
   if ((USBx->GCCFG & USB_OTG_GCCFG_PDET) == 0U)
@@ -196,9 +201,9 @@
   {
     /* start secondary detection to check connection to Charging Downstream
     Port or Dedicated Charging Port */
-    USBx->GCCFG &= ~ USB_OTG_GCCFG_PDEN;
+    USBx->GCCFG &= ~(USB_OTG_GCCFG_PDEN);
     HAL_Delay(50U);
-    USBx->GCCFG |=  USB_OTG_GCCFG_SDEN;
+    USBx->GCCFG |= USB_OTG_GCCFG_SDEN;
     HAL_Delay(50U);
 
     if ((USBx->GCCFG & USB_OTG_GCCFG_SDET) == USB_OTG_GCCFG_SDET)
@@ -285,7 +290,8 @@
 
   return HAL_OK;
 }
-#endif /* defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
+#endif /* defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||
+          defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
 /**
diff --git a/Src/stm32f4xx_hal_pwr.c b/Src/stm32f4xx_hal_pwr.c
index f5863fa..5ccde64 100644
--- a/Src/stm32f4xx_hal_pwr.c
+++ b/Src/stm32f4xx_hal_pwr.c
@@ -179,10 +179,12 @@
    ==================
     [..]
       (+) Entry:
-        The Sleep mode is entered by using the HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI)
+        The Sleep mode is entered by using the HAL_PWR_EnterSLEEPMode(Regulator, SLEEPEntry)
               functions with
           (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction
           (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction
+          (++) PWR_SLEEPENTRY_WFE_NO_EVT_CLEAR: Enter SLEEP mode with WFE instruction and
+                                                no clear of pending event before.
       
       -@@- The Regulator parameter is not used for the STM32F4 family 
               and is kept as parameter just to maintain compatibility with the 
@@ -204,10 +206,17 @@
       the HAL_PWREx_DisableFlashPowerDown() function. 
 
       (+) Entry:
-         The Stop mode is entered using the HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON) 
+         The Stop mode is entered using the HAL_PWR_EnterSTOPMode(Regulator, STOPEntry) 
              function with:
-          (++) Main regulator ON.
-          (++) Low Power regulator ON.
+       (++) Regulator:
+        (+++) Main regulator ON.
+        (+++) Low Power regulator ON.
+       (++) STOPEntry:
+        (+++) PWR_STOPENTRY_WFI              : Enter STOP mode with WFI instruction.
+        (+++) PWR_STOPENTRY_WFE              : Enter STOP mode with WFE instruction and
+                                               clear of pending events before.
+        (+++) PWR_STOPENTRY_WFE_NO_EVT_CLEAR : Enter STOP mode with WFE instruction and
+                                               no clear of pending event before.
       (+) Exit:
         Any EXTI Line (Internal or External) configured in Interrupt/Event mode.
 
@@ -372,8 +381,11 @@
   *       just to maintain compatibility with the lower power families.
   * @param SLEEPEntry Specifies if SLEEP mode in entered with WFI or WFE instruction.
   *          This parameter can be one of the following values:
-  *            @arg PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction
-  *            @arg PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction
+  *            @arg PWR_SLEEPENTRY_WFI              : Enter SLEEP mode with WFI instruction
+  *            @arg PWR_SLEEPENTRY_WFE              : Enter SLEEP mode with WFE instruction and
+  *                                                   clear of pending events before.
+  *            @arg PWR_SLEEPENTRY_WFE_NO_EVT_CLEAR : Enter SLEEP mode with WFE instruction and
+  *                                                   no clear of pending event before.
   * @retval None
   */
 void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry)
@@ -396,9 +408,14 @@
   }
   else
   {
+    if(SLEEPEntry != PWR_SLEEPENTRY_WFE_NO_EVT_CLEAR)
+    {
+      /* Clear all pending event */
+      __SEV();
+      __WFE();
+    }
+
     /* Request Wait For Event */
-    __SEV();
-    __WFE();
     __WFE();
   }
 }
@@ -418,8 +435,11 @@
   *            @arg PWR_LOWPOWERREGULATOR_ON: Stop mode with low power regulator ON
   * @param STOPEntry Specifies if Stop mode in entered with WFI or WFE instruction.
   *          This parameter can be one of the following values:
-  *            @arg PWR_STOPENTRY_WFI: Enter Stop mode with WFI instruction
-  *            @arg PWR_STOPENTRY_WFE: Enter Stop mode with WFE instruction
+  *            @arg PWR_STOPENTRY_WFI              : Enter Stop mode with WFI instruction 
+  *            @arg PWR_STOPENTRY_WFE              : Enter Stop mode with WFE instruction and
+  *                                                  clear of pending events before.
+  *            @arg PWR_STOPENTRY_WFE_NO_EVT_CLEAR : Enter STOP mode with WFE instruction and
+  *                                                  no clear of pending event before.
   * @retval None
   */
 void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry)
@@ -442,9 +462,13 @@
   }
   else
   {
+    if(STOPEntry != PWR_STOPENTRY_WFE_NO_EVT_CLEAR)
+    {
+      /* Clear all pending event */
+      __SEV();
+      __WFE();
+    }
     /* Request Wait For Event */
-    __SEV();
-    __WFE();
     __WFE();
   }
   /* Reset SLEEPDEEP bit of Cortex System Control Register */
diff --git a/Src/stm32f4xx_hal_qspi.c b/Src/stm32f4xx_hal_qspi.c
index a3326f2..93d4afa 100644
--- a/Src/stm32f4xx_hal_qspi.c
+++ b/Src/stm32f4xx_hal_qspi.c
@@ -162,7 +162,7 @@
       and a pointer to the user callback function.
 
       Use function HAL_QSPI_UnRegisterCallback() to reset a callback to the default
-      weak (surcharged) function. It allows to reset following callbacks:
+      weak (overridden) function. It allows to reset following callbacks:
         (+) ErrorCallback : callback when error occurs.
         (+) AbortCpltCallback : callback when abort is completed.
         (+) FifoThresholdCallback : callback when the fifo threshold is reached.
@@ -178,9 +178,9 @@
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
       By default, after the HAL_QSPI_Init and if the state is HAL_QSPI_STATE_RESET
-      all callbacks are reset to the corresponding legacy weak (surcharged) functions.
+      all callbacks are reset to the corresponding legacy weak (overridden) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the HAL_QSPI_Init
+      reset to the legacy weak (overridden) functions in the HAL_QSPI_Init
       and  HAL_QSPI_DeInit only when these callbacks are null (not registered beforehand).
       If not, MspInit or MspDeInit are not null, the HAL_QSPI_Init and HAL_QSPI_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
@@ -195,7 +195,7 @@
 
       When The compilation define USE_HAL_QSPI_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
-      and weak (surcharged) callbacks are used.
+      and weak (overridden) callbacks are used.
 
     *** Workarounds linked to Silicon Limitation ***
     ====================================================
@@ -2075,7 +2075,7 @@
 #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1)
 /**
   * @brief  Register a User QSPI Callback
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used to override the weak predefined callback
   * @param hqspi QSPI handle
   * @param CallbackId ID of the callback to be registered
   *        This parameter can be one of the following values:
@@ -2189,7 +2189,7 @@
 
 /**
   * @brief  Unregister a User QSPI Callback
-  *         QSPI Callback is redirected to the weak (surcharged) predefined callback
+  *         QSPI Callback is redirected to the weak predefined callback
   * @param hqspi QSPI handle
   * @param CallbackId ID of the callback to be unregistered
   *        This parameter can be one of the following values:
diff --git a/Src/stm32f4xx_hal_rcc_ex.c b/Src/stm32f4xx_hal_rcc_ex.c
index 5076628..9964cd5 100644
--- a/Src/stm32f4xx_hal_rcc_ex.c
+++ b/Src/stm32f4xx_hal_rcc_ex.c
@@ -843,6 +843,10 @@
       }
       break;
     }
+  default:
+    {
+       break;
+    }
   }
   return frequency;
 }
@@ -1253,6 +1257,10 @@
       }
       break;
     }
+  default:
+    {
+       break;
+    }
   }
   return frequency;
 }
@@ -1910,6 +1918,10 @@
       }
       break;
     }
+  default:
+    {
+       break;
+    }
   }
   return frequency;
 }
@@ -2140,6 +2152,10 @@
       }
       break;
     }
+  default:
+    {
+       break;
+    }
   }
   return frequency;
 }
@@ -2491,6 +2507,10 @@
       }
       break;
     }
+  default:
+    {
+       break;
+    }
   }
   return frequency;
 }
@@ -2745,6 +2765,10 @@
       }
       break;
     }
+  default:
+    {
+       break;
+    }
   }
   return frequency;
 }
diff --git a/Src/stm32f4xx_hal_rng.c b/Src/stm32f4xx_hal_rng.c
index bd50438..885ce69 100644
--- a/Src/stm32f4xx_hal_rng.c
+++ b/Src/stm32f4xx_hal_rng.c
@@ -52,7 +52,7 @@
 
     [..]
     Use function HAL_RNG_UnRegisterCallback() to reset a callback to the default
-    weak (surcharged) function.
+    weak (overridden) function.
     HAL_RNG_UnRegisterCallback() takes as parameters the HAL peripheral handle,
     and the Callback ID.
     This function allows to reset following callbacks:
@@ -66,10 +66,10 @@
 
     [..]
     By default, after the HAL_RNG_Init() and when the state is HAL_RNG_STATE_RESET
-    all callbacks are set to the corresponding weak (surcharged) functions:
+    all callbacks are set to the corresponding weak (overridden) functions:
     example HAL_RNG_ErrorCallback().
     Exception done for MspInit and MspDeInit functions that are respectively
-    reset to the legacy weak (surcharged) functions in the HAL_RNG_Init()
+    reset to the legacy weak (overridden) functions in the HAL_RNG_Init()
     and HAL_RNG_DeInit() only when these callbacks are null (not registered beforehand).
     If not, MspInit or MspDeInit are not null, the HAL_RNG_Init() and HAL_RNG_DeInit()
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
@@ -86,7 +86,7 @@
     [..]
     When The compilation define USE_HAL_RNG_REGISTER_CALLBACKS is set to 0 or
     not defined, the callback registration feature is not available
-    and weak (surcharged) callbacks are used.
+    and weak (overridden) callbacks are used.
 
   @endverbatim
   ******************************************************************************
@@ -307,8 +307,6 @@
     hrng->ErrorCode = HAL_RNG_ERROR_INVALID_CALLBACK;
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hrng);
 
   if (HAL_RNG_STATE_READY == hrng->State)
   {
@@ -362,8 +360,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hrng);
   return status;
 }
 
@@ -382,8 +378,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hrng);
 
   if (HAL_RNG_STATE_READY == hrng->State)
   {
@@ -437,8 +431,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hrng);
   return status;
 }
 
@@ -697,15 +689,16 @@
 void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng)
 {
   uint32_t rngclockerror = 0U;
+  uint32_t itflag   = hrng->Instance->SR;
 
   /* RNG clock error interrupt occurred */
-  if (__HAL_RNG_GET_IT(hrng, RNG_IT_CEI) != RESET)
+  if ((itflag & RNG_IT_CEI) == RNG_IT_CEI)
   {
     /* Update the error code */
     hrng->ErrorCode = HAL_RNG_ERROR_CLOCK;
     rngclockerror = 1U;
   }
-  else if (__HAL_RNG_GET_IT(hrng, RNG_IT_SEI) != RESET)
+  else if ((itflag & RNG_IT_SEI) == RNG_IT_SEI)
   {
     /* Update the error code */
     hrng->ErrorCode = HAL_RNG_ERROR_SEED;
@@ -736,7 +729,7 @@
   }
 
   /* Check RNG data ready interrupt occurred */
-  if (__HAL_RNG_GET_IT(hrng, RNG_IT_DRDY) != RESET)
+  if ((itflag & RNG_IT_DRDY) == RNG_IT_DRDY)
   {
     /* Generate random number once, so disable the IT */
     __HAL_RNG_DISABLE_IT(hrng);
@@ -768,7 +761,7 @@
   *                the configuration information for RNG.
   * @retval random value
   */
-uint32_t HAL_RNG_ReadLastRandomNumber(RNG_HandleTypeDef *hrng)
+uint32_t HAL_RNG_ReadLastRandomNumber(const RNG_HandleTypeDef *hrng)
 {
   return (hrng->RandomNumber);
 }
@@ -830,7 +823,7 @@
   *                the configuration information for RNG.
   * @retval HAL state
   */
-HAL_RNG_StateTypeDef HAL_RNG_GetState(RNG_HandleTypeDef *hrng)
+HAL_RNG_StateTypeDef HAL_RNG_GetState(const RNG_HandleTypeDef *hrng)
 {
   return hrng->State;
 }
@@ -840,7 +833,7 @@
   * @param  hrng: pointer to a RNG_HandleTypeDef structure.
   * @retval RNG Error Code
   */
-uint32_t HAL_RNG_GetError(RNG_HandleTypeDef *hrng)
+uint32_t HAL_RNG_GetError(const RNG_HandleTypeDef *hrng)
 {
   /* Return RNG Error Code */
   return hrng->ErrorCode;
diff --git a/Src/stm32f4xx_hal_rtc.c b/Src/stm32f4xx_hal_rtc.c
index f4d5dbc..0365acc 100644
--- a/Src/stm32f4xx_hal_rtc.c
+++ b/Src/stm32f4xx_hal_rtc.c
@@ -14,7 +14,7 @@
   ******************************************************************************
   * @attention
   *
-  * Copyright (c) 2017 STMicroelectronics.
+  * Copyright (c) 2016 STMicroelectronics.
   * All rights reserved.
   *
   * This software is licensed under terms that can be found in the LICENSE file
@@ -534,7 +534,7 @@
 
 /**
   * @brief  Unregisters an RTC Callback
-  *         RTC callabck is redirected to the weak predefined callback
+  *         RTC callback is redirected to the weak predefined callback
   * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
   *                the configuration information for RTC.
   * @param  CallbackID ID of the callback to be unregistered
@@ -1305,7 +1305,8 @@
     /* Wait till RTC ALRAWF flag is set and if timeout is reached exit */
     do
     {
-      if (count-- == 0U)
+      count = count - 1U;
+      if (count == 0U)
       {
         /* Enable the write protection for RTC registers */
         __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1341,7 +1342,8 @@
     /* Wait till RTC ALRBWF flag is set and if timeout is reached exit */
     do
     {
-      if (count-- == 0U)
+      count = count - 1U;
+      if (count == 0U)
       {
         /* Enable the write protection for RTC registers */
         __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1541,21 +1543,24 @@
   */
 void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc)
 {
+  /* 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 */
-
-      /* Clear the Alarm A interrupt pending bit */
-      __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
     }
   }
 
@@ -1565,21 +1570,18 @@
     /* 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 */
-
-      /* Clear the Alarm B 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();
-
   /* Change RTC state */
   hrtc->State = HAL_RTC_STATE_READY;
 }
@@ -1675,8 +1677,8 @@
 {
   uint32_t tickstart = 0U;
 
-  /* Clear RSF flag */
-  hrtc->Instance->ISR &= (uint32_t)RTC_RSF_MASK;
+  /* Clear RSF flag, keep reserved bits at reset values (setting other flags has no effect) */
+  hrtc->Instance->ISR = ((uint32_t)(RTC_RSF_MASK & RTC_ISR_RESERVED_MASK));
 
   /* Get tick */
   tickstart = HAL_GetTick();
@@ -1871,7 +1873,7 @@
   */
 uint8_t RTC_ByteToBcd2(uint8_t number)
 {
-  uint8_t bcdhigh = 0U;
+  uint32_t bcdhigh = 0U;
 
   while (number >= 10U)
   {
@@ -1889,9 +1891,9 @@
   */
 uint8_t RTC_Bcd2ToByte(uint8_t number)
 {
-  uint8_t tmp = 0U;
-  tmp = ((uint8_t)(number & (uint8_t)0xF0) >> (uint8_t)0x4) * 10;
-  return (tmp + (number & (uint8_t)0x0F));
+  uint32_t tens = 0U;
+  tens = (((uint32_t)number & 0xF0U) >> 4U) * 10U;
+  return (uint8_t)(tens + ((uint32_t)number & 0x0FU));
 }
 
 /**
diff --git a/Src/stm32f4xx_hal_rtc_ex.c b/Src/stm32f4xx_hal_rtc_ex.c
index eb5708f..f6aec5e 100644
--- a/Src/stm32f4xx_hal_rtc_ex.c
+++ b/Src/stm32f4xx_hal_rtc_ex.c
@@ -14,7 +14,7 @@
   ******************************************************************************
   * @attention
   *
-  * Copyright (c) 2017 STMicroelectronics.
+  * Copyright (c) 2016 STMicroelectronics.
   * All rights reserved.
   *
   * This software is licensed under terms that can be found in the LICENSE file
@@ -605,6 +605,9 @@
   */
 void HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc)
 {
+  /* 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)
   {
@@ -618,7 +621,8 @@
       HAL_RTCEx_TimeStampEventCallback(hrtc);
 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
 
-      /* Clear the Timestamp interrupt pending bit */
+      /* 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);
     }
   }
@@ -629,15 +633,15 @@
     /* 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);
     }
   }
 
@@ -648,22 +652,19 @@
     /* 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);
     }
   }
 #endif /* RTC_TAMPER2_SUPPORT */
 
-  /* 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;
 }
@@ -979,7 +980,8 @@
     /* Wait till RTC WUTWF flag is reset and if timeout is reached exit */
     do
     {
-      if (count-- == 0U)
+      count = count - 1U;
+      if (count == 0U)
       {
         /* Enable the write protection for RTC registers */
         __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1006,7 +1008,8 @@
   /* Wait till RTC WUTWF flag is set and if timeout is reached exit */
   do
   {
-    if (count-- == 0U)
+    count = count - 1U;
+    if (count == 0U)
     {
       /* Enable the write protection for RTC registers */
       __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc);
@@ -1130,23 +1133,23 @@
   */
 void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc)
 {
+  /* 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)
   {
+    /* 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 Wakeup timer 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;
 }
diff --git a/Src/stm32f4xx_hal_sai.c b/Src/stm32f4xx_hal_sai.c
index eda41dd..e881d25 100644
--- a/Src/stm32f4xx_hal_sai.c
+++ b/Src/stm32f4xx_hal_sai.c
@@ -172,7 +172,7 @@
 
     [..]
     Use function HAL_SAI_UnRegisterCallback() to reset a callback to the default
-    weak (surcharged) function.
+    weak function.
     HAL_SAI_UnRegisterCallback() takes as parameters the HAL peripheral handle,
     and the callback ID.
     [..]
@@ -187,10 +187,10 @@
 
     [..]
     By default, after the HAL_SAI_Init and if the state is HAL_SAI_STATE_RESET
-    all callbacks are reset to the corresponding legacy weak (surcharged) functions:
+    all callbacks are reset to the corresponding legacy weak functions:
     examples HAL_SAI_RxCpltCallback(), HAL_SAI_ErrorCallback().
     Exception done for MspInit and MspDeInit callbacks that are respectively
-    reset to the legacy weak (surcharged) functions in the HAL_SAI_Init
+    reset to the legacy weak functions in the HAL_SAI_Init
     and HAL_SAI_DeInit only when these callbacks are null (not registered beforehand).
     If not, MspInit or MspDeInit are not null, the HAL_SAI_Init and HAL_SAI_DeInit
     keep and use the user MspInit/MspDeInit callbacks (registered beforehand).
@@ -207,7 +207,7 @@
     [..]
     When the compilation define USE_HAL_SAI_REGISTER_CALLBACKS is set to 0 or
     not defined, the callback registering feature is not available
-    and weak (surcharged) callbacks are used.
+    and weak callbacks are used.
 
   @endverbatim
   */
diff --git a/Src/stm32f4xx_hal_sd.c b/Src/stm32f4xx_hal_sd.c
index f4145e9..fd50841 100644
--- a/Src/stm32f4xx_hal_sd.c
+++ b/Src/stm32f4xx_hal_sd.c
@@ -696,7 +696,11 @@
     }
 
     /* Get error state */
+#if defined(SDIO_STA_STBITERR)
+    if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT) || (__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_STBITERR)))
+#else /* SDIO_STA_STBITERR not defined */
     if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT))
+#endif /* SDIO_STA_STBITERR */
     {
       /* Clear all the static flags */
       __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
@@ -911,7 +915,11 @@
     }
 
     /* Get error state */
+#if defined(SDIO_STA_STBITERR)
+    if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT) || (__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_STBITERR)))
+#else /* SDIO_STA_STBITERR not defined */
     if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT))
+#endif /* SDIO_STA_STBITERR */		
     {
       /* Clear all the static flags */
       __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
@@ -2921,13 +2929,17 @@
       }
     }
 
-    if((HAL_GetTick() - tickstart) >=  SDMMC_DATATIMEOUT)
+    if((HAL_GetTick() - tickstart) >=  SDMMC_SWDATATIMEOUT)
     {
       return HAL_SD_ERROR_TIMEOUT;
     }
   }
 
+#if defined(SDIO_STA_STBITERR)
+  if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT) || (__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_STBITERR)))
+#else /* SDIO_STA_STBITERR not defined */
   if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT))
+#endif /* SDIO_STA_STBITERR */
   {
     return HAL_SD_ERROR_DATA_TIMEOUT;
   }
@@ -2949,7 +2961,7 @@
     *pData = SDIO_ReadFIFO(hsd->Instance);
     pData++;
 
-    if((HAL_GetTick() - tickstart) >=  SDMMC_DATATIMEOUT)
+    if((HAL_GetTick() - tickstart) >=  SDMMC_SWDATATIMEOUT)
     {
       return HAL_SD_ERROR_TIMEOUT;
     }
@@ -3141,13 +3153,17 @@
       break;
     }
 
-    if((HAL_GetTick() - tickstart) >=  SDMMC_DATATIMEOUT)
+    if((HAL_GetTick() - tickstart) >=  SDMMC_SWDATATIMEOUT)
     {
       return HAL_SD_ERROR_TIMEOUT;
     }
   }
 
+#if defined(SDIO_STA_STBITERR)
+  if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT) || (__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_STBITERR)))
+#else /* SDIO_STA_STBITERR not defined */
   if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT))
+#endif /* SDIO_STA_STBITERR */
   {
     __HAL_SD_CLEAR_FLAG(hsd, SDIO_FLAG_DTIMEOUT);
 
diff --git a/Src/stm32f4xx_hal_sdram.c b/Src/stm32f4xx_hal_sdram.c
index 31633a2..eb31bde 100644
--- a/Src/stm32f4xx_hal_sdram.c
+++ b/Src/stm32f4xx_hal_sdram.c
@@ -82,15 +82,15 @@
       and a pointer to the user callback function.
 
       Use function HAL_SDRAM_UnRegisterCallback() to reset a callback to the default
-      weak (surcharged) function. It allows to reset following callbacks:
+      weak (overridden) function. It allows to reset following callbacks:
         (+) MspInitCallback    : SDRAM MspInit.
         (+) MspDeInitCallback  : SDRAM MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
       By default, after the HAL_SDRAM_Init and if the state is HAL_SDRAM_STATE_RESET
-      all callbacks are reset to the corresponding legacy weak (surcharged) functions.
+      all callbacks are reset to the corresponding legacy weak (overridden) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the HAL_SDRAM_Init
+      reset to the legacy weak (overridden) functions in the HAL_SDRAM_Init
       and  HAL_SDRAM_DeInit only when these callbacks are null (not registered beforehand).
       If not, MspInit or MspDeInit are not null, the HAL_SDRAM_Init and HAL_SDRAM_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
@@ -105,7 +105,7 @@
 
       When The compilation define USE_HAL_SDRAM_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
-      and weak (surcharged) callbacks are used.
+      and weak (overridden) callbacks are used.
 
   @endverbatim
   ******************************************************************************
@@ -132,9 +132,15 @@
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
+/** @addtogroup SDRAM_Private_Functions SDRAM Private Functions
+  * @{
+  */
 static void SDRAM_DMACplt(DMA_HandleTypeDef *hdma);
 static void SDRAM_DMACpltProt(DMA_HandleTypeDef *hdma);
 static void SDRAM_DMAError(DMA_HandleTypeDef *hdma);
+/**
+  * @}
+  */
 
 /* Exported functions --------------------------------------------------------*/
 /** @defgroup SDRAM_Exported_Functions SDRAM Exported Functions
@@ -785,7 +791,7 @@
 #if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
 /**
   * @brief  Register a User SDRAM Callback
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used to override the weak predefined callback
   * @param hsdram : SDRAM handle
   * @param CallbackId : ID of the callback to be registered
   *        This parameter can be one of the following values:
@@ -806,9 +812,6 @@
     return HAL_ERROR;
   }
 
-  /* Process locked */
-  __HAL_LOCK(hsdram);
-
   state = hsdram->State;
   if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
@@ -851,14 +854,12 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsdram);
   return status;
 }
 
 /**
   * @brief  Unregister a User SDRAM Callback
-  *         SDRAM Callback is redirected to the weak (surcharged) predefined callback
+  *         SDRAM Callback is redirected to the weak predefined callback
   * @param hsdram : SDRAM handle
   * @param CallbackId : ID of the callback to be unregistered
   *        This parameter can be one of the following values:
@@ -874,9 +875,6 @@
   HAL_StatusTypeDef status = HAL_OK;
   HAL_SDRAM_StateTypeDef state;
 
-  /* Process locked */
-  __HAL_LOCK(hsdram);
-
   state = hsdram->State;
   if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
   {
@@ -925,14 +923,12 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsdram);
   return status;
 }
 
 /**
   * @brief  Register a User SDRAM Callback for DMA transfers
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used to override the weak predefined callback
   * @param hsdram : SDRAM handle
   * @param CallbackId : ID of the callback to be registered
   *        This parameter can be one of the following values:
@@ -1229,6 +1225,9 @@
   * @}
   */
 
+/** @addtogroup SDRAM_Private_Functions SDRAM Private Functions
+  * @{
+  */
 /**
   * @brief  DMA SDRAM process complete callback.
   * @param  hdma : DMA handle
@@ -1298,6 +1297,9 @@
 /**
   * @}
   */
+/**
+  * @}
+  */
 
 #endif /* HAL_SDRAM_MODULE_ENABLED */
 
diff --git a/Src/stm32f4xx_hal_smartcard.c b/Src/stm32f4xx_hal_smartcard.c
index 9d165cd..a3c9b54 100644
--- a/Src/stm32f4xx_hal_smartcard.c
+++ b/Src/stm32f4xx_hal_smartcard.c
@@ -449,6 +449,9 @@
 /**
   * @brief  Register a User SMARTCARD Callback
   *         To be used instead of the weak predefined callback
+  * @note   The HAL_SMARTCARD_RegisterCallback() may be called before HAL_SMARTCARD_Init()
+  *         in HAL_SMARTCARD_STATE_RESET to register callbacks for HAL_SMARTCARD_MSPINIT_CB_ID
+  *         and HAL_SMARTCARD_MSPDEINIT_CB_ID
   * @param  hsc smartcard handle
   * @param  CallbackID ID of the callback to be registered
   *         This parameter can be one of the following values:
@@ -474,8 +477,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(hsc);
 
   if (hsc->gState == HAL_SMARTCARD_STATE_READY)
   {
@@ -554,15 +555,15 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsc);
-
   return status;
 }
 
 /**
   * @brief  Unregister an SMARTCARD callback
   *         SMARTCARD callback is redirected to the weak predefined callback
+  * @note   The HAL_SMARTCARD_UnRegisterCallback() may be called before HAL_SMARTCARD_Init()
+  *         in HAL_SMARTCARD_STATE_RESET to un-register callbacks for HAL_SMARTCARD_MSPINIT_CB_ID
+  *         and HAL_SMARTCARD_MSPDEINIT_CB_ID
   * @param  hsc smartcard handle
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
@@ -580,9 +581,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(hsc);
-
   if (HAL_SMARTCARD_STATE_READY == hsc->gState)
   {
     switch (CallbackID)
@@ -659,9 +657,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsc);
-
   return status;
 }
 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */
diff --git a/Src/stm32f4xx_hal_smbus.c b/Src/stm32f4xx_hal_smbus.c
index 84d5d89..f8dbf31 100644
--- a/Src/stm32f4xx_hal_smbus.c
+++ b/Src/stm32f4xx_hal_smbus.c
@@ -181,7 +181,7 @@
 
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
-/** @addtogroup SMBUS_Private_Define
+/** @defgroup SMBUS_Private_Define SMBUS Private Define
   * @{
   */
 #define SMBUS_TIMEOUT_FLAG          35U         /*!< Timeout 35 ms             */
@@ -855,7 +855,6 @@
 {
   /* Write a dummy data in DR to clear it */
   hsmbus->Instance->DR = 0x00U;
-
 }
 
 /**
@@ -1694,12 +1693,11 @@
       /* Clear AF flag */
       __HAL_SMBUS_CLEAR_FLAG(hsmbus, SMBUS_FLAG_AF);
 
-      /* Disable EVT, BUF and ERR interrupt */
+      /* Disable EVT, BUF and ERR interrupts */
       __HAL_SMBUS_DISABLE_IT(hsmbus, SMBUS_IT_EVT | SMBUS_IT_BUF | SMBUS_IT_ERR);
 
       /* Flush data register */
       SMBUS_Flush_DR(hsmbus);
-
     }
   }
 
diff --git a/Src/stm32f4xx_hal_spdifrx.c b/Src/stm32f4xx_hal_spdifrx.c
index da7c302..3b0ab1f 100644
--- a/Src/stm32f4xx_hal_spdifrx.c
+++ b/Src/stm32f4xx_hal_spdifrx.c
@@ -33,10 +33,12 @@
         (##) SPDIFRX pins configuration:
             (+++) Enable the clock for the SPDIFRX GPIOs.
             (+++) Configure these SPDIFRX pins as alternate function pull-up.
-        (##) NVIC configuration if you need to use interrupt process (HAL_SPDIFRX_ReceiveControlFlow_IT() and HAL_SPDIFRX_ReceiveDataFlow_IT() API's).
+        (##) NVIC configuration if you need to use interrupt process (HAL_SPDIFRX_ReceiveControlFlow_IT() and
+             HAL_SPDIFRX_ReceiveDataFlow_IT() API's).
             (+++) Configure the SPDIFRX interrupt priority.
             (+++) Enable the NVIC SPDIFRX IRQ handle.
-        (##) DMA Configuration if you need to use DMA process (HAL_SPDIFRX_ReceiveDataFlow_DMA() and HAL_SPDIFRX_ReceiveControlFlow_DMA() API's).
+        (##) DMA Configuration if you need to use DMA process (HAL_SPDIFRX_ReceiveDataFlow_DMA() and
+             HAL_SPDIFRX_ReceiveControlFlow_DMA() API's).
             (+++) Declare a DMA handle structure for the reception of the Data Flow channel.
             (+++) Declare a DMA handle structure for the reception of the Control Flow channel.
             (+++) Enable the DMAx interface clock.
@@ -46,8 +48,8 @@
             (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on the
                 DMA CtrlRx/DataRx channel.
 
-   (#) Program the input selection, re-tries number, wait for activity, channel status selection, data format, stereo mode and masking of user bits
-       using HAL_SPDIFRX_Init() function.
+   (#) Program the input selection, re-tries number, wait for activity, channel status selection, data format,
+       stereo mode and masking of user bits using HAL_SPDIFRX_Init() function.
 
    -@- The specific SPDIFRX interrupts (RXNE/CSRNE and Error Interrupts) will be managed using the macros
        __SPDIFRX_ENABLE_IT() and __SPDIFRX_DISABLE_IT() inside the receive process.
@@ -90,7 +92,7 @@
    =============================================
    [..]
      Below the list of most used macros in SPDIFRX HAL driver.
-      (+) __HAL_SPDIFRX_IDLE: Disable the specified SPDIFRX peripheral (IDEL State)
+      (+) __HAL_SPDIFRX_IDLE: Disable the specified SPDIFRX peripheral (IDLE State)
       (+) __HAL_SPDIFRX_SYNC: Enable the synchronization state of the specified SPDIFRX peripheral (SYNC State)
       (+) __HAL_SPDIFRX_RCV: Enable the receive state of the specified SPDIFRX peripheral (RCV State)
       (+) __HAL_SPDIFRX_ENABLE_IT : Enable the specified SPDIFRX interrupts
@@ -173,8 +175,13 @@
 #if defined(STM32F446xx)
 /* Private typedef -----------------------------------------------------------*/
 /* Private define ------------------------------------------------------------*/
-#define SPDIFRX_TIMEOUT_VALUE  0xFFFFU
-
+/** @defgroup SPDIFRX_Private_Defines SPDIFRX Private Defines
+  * @{
+  */
+#define SPDIFRX_TIMEOUT_VALUE  10U
+/**
+  * @}
+  */
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
@@ -888,7 +895,8 @@
       {
         if (count == 0U)
         {
-          /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
+          /* 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);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_CSRNE);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_PERRIE);
@@ -973,7 +981,8 @@
       {
         if (count == 0U)
         {
-          /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
+          /* 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);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_CSRNE);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_PERRIE);
@@ -1047,7 +1056,8 @@
     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;
@@ -1074,7 +1084,8 @@
       {
         if (count == 0U)
         {
-          /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
+          /* 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);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_CSRNE);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_PERRIE);
@@ -1148,7 +1159,8 @@
     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;
@@ -1175,7 +1187,8 @@
       {
         if (count == 0U)
         {
-          /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
+          /* 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);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_CSRNE);
           __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_PERRIE);
@@ -1224,8 +1237,14 @@
   hspdif->Instance->CR &= (uint16_t)(~SPDIFRX_CR_CBDMAEN);
 
   /* Disable the SPDIFRX DMA channel */
-  __HAL_DMA_DISABLE(hspdif->hdmaDrRx);
-  __HAL_DMA_DISABLE(hspdif->hdmaCsRx);
+  if (hspdif->hdmaDrRx != NULL)
+  {
+    __HAL_DMA_DISABLE(hspdif->hdmaDrRx);
+  }
+  if (hspdif->hdmaCsRx != NULL)
+  {
+    __HAL_DMA_DISABLE(hspdif->hdmaCsRx);
+  }
 
   /* Disable SPDIFRX peripheral */
   __HAL_SPDIFRX_IDLE(hspdif);
@@ -1578,8 +1597,8 @@
   * @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)
@@ -1589,7 +1608,8 @@
     {
       if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
       {
-        /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
+        /* 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);
         __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_CSRNE);
         __HAL_SPDIFRX_DISABLE_IT(hspdif, SPDIFRX_IT_PERRIE);
diff --git a/Src/stm32f4xx_hal_spi.c b/Src/stm32f4xx_hal_spi.c
index 416b1ec..e66200a 100644
--- a/Src/stm32f4xx_hal_spi.c
+++ b/Src/stm32f4xx_hal_spi.c
@@ -1223,6 +1223,15 @@
       hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr);
       hspi->pTxBuffPtr += sizeof(uint16_t);
       hspi->TxXferCount--;
+
+#if (USE_SPI_CRC != 0U)
+      /* Enable CRC Transmission */
+      if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE))
+      {
+        SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT);
+      }
+#endif /* USE_SPI_CRC */
+
     }
     while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U))
     {
@@ -1269,6 +1278,14 @@
       *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr);
       hspi->pTxBuffPtr += sizeof(uint8_t);
       hspi->TxXferCount--;
+
+#if (USE_SPI_CRC != 0U)
+      /* Enable CRC Transmission */
+      if ((hspi->TxXferCount == 0U) && (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE))
+      {
+        SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT);
+      }
+#endif /* USE_SPI_CRC */
     }
     while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U))
     {
@@ -3615,6 +3632,13 @@
   */
 static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart)
 {
+  /* Wait until TXE flag */
+  if(SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_TXE, SET, Timeout, Tickstart) != HAL_OK)
+  {
+    SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG);
+    return HAL_TIMEOUT;
+  }
+
   /* Timeout in µs */
   __IO uint32_t count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U);
   /* Erratasheet: BSY bit may stay high at the end of a data transfer in Slave mode */
diff --git a/Src/stm32f4xx_hal_sram.c b/Src/stm32f4xx_hal_sram.c
index ef2eaf0..1788437 100644
--- a/Src/stm32f4xx_hal_sram.c
+++ b/Src/stm32f4xx_hal_sram.c
@@ -83,15 +83,15 @@
       and a pointer to the user callback function.
 
       Use function HAL_SRAM_UnRegisterCallback() to reset a callback to the default
-      weak (surcharged) function. It allows to reset following callbacks:
+      weak (overridden) function. It allows to reset following callbacks:
         (+) MspInitCallback    : SRAM MspInit.
         (+) MspDeInitCallback  : SRAM MspDeInit.
       This function) takes as parameters the HAL peripheral handle and the Callback ID.
 
       By default, after the HAL_SRAM_Init and if the state is HAL_SRAM_STATE_RESET
-      all callbacks are reset to the corresponding legacy weak (surcharged) functions.
+      all callbacks are reset to the corresponding legacy weak (overridden) functions.
       Exception done for MspInit and MspDeInit callbacks that are respectively
-      reset to the legacy weak (surcharged) functions in the HAL_SRAM_Init
+      reset to the legacy weak (overridden) functions in the HAL_SRAM_Init
       and  HAL_SRAM_DeInit only when these callbacks are null (not registered beforehand).
       If not, MspInit or MspDeInit are not null, the HAL_SRAM_Init and HAL_SRAM_DeInit
       keep and use the user MspInit/MspDeInit callbacks (registered beforehand)
@@ -106,7 +106,7 @@
 
       When The compilation define USE_HAL_SRAM_REGISTER_CALLBACKS is set to 0 or
       not defined, the callback registering feature is not available
-      and weak (surcharged) callbacks are used.
+      and weak (overridden) callbacks are used.
 
   @endverbatim
   ******************************************************************************
@@ -133,9 +133,15 @@
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
+/** @addtogroup SRAM_Private_Functions SRAM Private Functions
+  * @{
+  */
 static void SRAM_DMACplt(DMA_HandleTypeDef *hdma);
 static void SRAM_DMACpltProt(DMA_HandleTypeDef *hdma);
 static void SRAM_DMAError(DMA_HandleTypeDef *hdma);
+/**
+  * @}
+  */
 
 /* Exported functions --------------------------------------------------------*/
 
@@ -731,7 +737,7 @@
 #if (USE_HAL_SRAM_REGISTER_CALLBACKS == 1)
 /**
   * @brief  Register a User SRAM Callback
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used to override the weak predefined callback
   * @param hsram : SRAM handle
   * @param CallbackId : ID of the callback to be registered
   *        This parameter can be one of the following values:
@@ -751,9 +757,6 @@
     return HAL_ERROR;
   }
 
-  /* Process locked */
-  __HAL_LOCK(hsram);
-
   state = hsram->State;
   if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_RESET) || (state == HAL_SRAM_STATE_PROTECTED))
   {
@@ -777,14 +780,12 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsram);
   return status;
 }
 
 /**
   * @brief  Unregister a User SRAM Callback
-  *         SRAM Callback is redirected to the weak (surcharged) predefined callback
+  *         SRAM Callback is redirected to the weak predefined callback
   * @param hsram : SRAM handle
   * @param CallbackId : ID of the callback to be unregistered
   *        This parameter can be one of the following values:
@@ -799,9 +800,6 @@
   HAL_StatusTypeDef status = HAL_OK;
   HAL_SRAM_StateTypeDef state;
 
-  /* Process locked */
-  __HAL_LOCK(hsram);
-
   state = hsram->State;
   if ((state == HAL_SRAM_STATE_READY) || (state == HAL_SRAM_STATE_PROTECTED))
   {
@@ -847,14 +845,12 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(hsram);
   return status;
 }
 
 /**
   * @brief  Register a User SRAM Callback for DMA transfers
-  *         To be used instead of the weak (surcharged) predefined callback
+  *         To be used to override the weak predefined callback
   * @param hsram : SRAM handle
   * @param CallbackId : ID of the callback to be registered
   *        This parameter can be one of the following values:
@@ -1018,7 +1014,7 @@
   *                the configuration information for SRAM module.
   * @retval HAL state
   */
-HAL_SRAM_StateTypeDef HAL_SRAM_GetState(SRAM_HandleTypeDef *hsram)
+HAL_SRAM_StateTypeDef HAL_SRAM_GetState(const SRAM_HandleTypeDef *hsram)
 {
   return hsram->State;
 }
@@ -1031,6 +1027,10 @@
   * @}
   */
 
+/** @addtogroup SRAM_Private_Functions SRAM Private Functions
+  * @{
+  */
+
 /**
   * @brief  DMA SRAM process complete callback.
   * @param  hdma : DMA handle
@@ -1101,6 +1101,10 @@
   * @}
   */
 
+/**
+  * @}
+  */
+
 #endif /* HAL_SRAM_MODULE_ENABLED */
 
 /**
diff --git a/Src/stm32f4xx_hal_tim.c b/Src/stm32f4xx_hal_tim.c
index e35049b..d5978cc 100644
--- a/Src/stm32f4xx_hal_tim.c
+++ b/Src/stm32f4xx_hal_tim.c
@@ -275,6 +275,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)
@@ -536,7 +537,7 @@
   }
   else if (htim->State == HAL_TIM_STATE_READY)
   {
-    if ((pData == NULL) && (Length > 0U))
+    if ((pData == NULL) || (Length == 0U))
     {
       return HAL_ERROR;
     }
@@ -658,6 +659,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)
@@ -1059,7 +1061,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;
     }
@@ -1322,6 +1324,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)
@@ -1723,7 +1726,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;
     }
@@ -1985,6 +1988,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)
@@ -2378,7 +2382,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;
     }
@@ -2634,6 +2638,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)
@@ -3011,7 +3016,7 @@
   * @param  sConfig TIM Encoder Interface configuration structure
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef *sConfig)
+HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, const TIM_Encoder_InitTypeDef *sConfig)
 {
   uint32_t tmpsmcr;
   uint32_t tmpccmr1;
@@ -3037,6 +3042,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)
   {
@@ -3546,7 +3552,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;
       }
@@ -3571,7 +3577,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;
       }
@@ -3600,7 +3606,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;
       }
@@ -3816,13 +3822,16 @@
   */
 void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
 {
+  uint32_t itsource = htim->Instance->DIER;
+  uint32_t itflag   = htim->Instance->SR;
+
   /* Capture compare 1 event */
-  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET)
+  if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1))
   {
-    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET)
+    if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1))
     {
       {
-        __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
+        __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1);
         htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
 
         /* Input capture event */
@@ -3850,11 +3859,11 @@
     }
   }
   /* Capture compare 2 event */
-  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET)
+  if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2))
   {
-    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET)
+    if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2))
     {
-      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);
+      __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2);
       htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
       /* Input capture event */
       if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U)
@@ -3880,11 +3889,11 @@
     }
   }
   /* Capture compare 3 event */
-  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET)
+  if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3))
   {
-    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET)
+    if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3))
     {
-      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);
+      __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3);
       htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
       /* Input capture event */
       if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U)
@@ -3910,11 +3919,11 @@
     }
   }
   /* Capture compare 4 event */
-  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)
+  if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4))
   {
-    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET)
+    if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4))
     {
-      __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
+      __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4);
       htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
       /* Input capture event */
       if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U)
@@ -3940,11 +3949,11 @@
     }
   }
   /* TIM Update event */
-  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
+  if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE))
   {
-    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET)
+    if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE))
     {
-      __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
+      __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE);
 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
       htim->PeriodElapsedCallback(htim);
 #else
@@ -3953,11 +3962,11 @@
     }
   }
   /* TIM Break input event */
-  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET)
+  if ((itflag & (TIM_FLAG_BREAK)) == (TIM_FLAG_BREAK))
   {
-    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET)
+    if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK))
     {
-      __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK);
+      __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK);
 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
       htim->BreakCallback(htim);
 #else
@@ -3966,11 +3975,11 @@
     }
   }
   /* TIM Trigger detection event */
-  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET)
+  if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER))
   {
-    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET)
+    if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER))
     {
-      __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER);
+      __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER);
 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
       htim->TriggerCallback(htim);
 #else
@@ -3979,11 +3988,11 @@
     }
   }
   /* TIM commutation event */
-  if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET)
+  if ((itflag & (TIM_FLAG_COM)) == (TIM_FLAG_COM))
   {
-    if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET)
+    if ((itsource & (TIM_IT_COM)) == (TIM_IT_COM))
     {
-      __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM);
+      __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_COM);
 #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
       htim->CommutationCallback(htim);
 #else
@@ -4470,7 +4479,8 @@
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
-                                              uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, uint32_t  BurstLength)
+                                              uint32_t BurstRequestSrc, const uint32_t *BurstBuffer,
+                                              uint32_t  BurstLength)
 {
   HAL_StatusTypeDef status;
 
@@ -5834,8 +5844,6 @@
   {
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(htim);
 
   if (htim->State == HAL_TIM_STATE_READY)
   {
@@ -6027,9 +6035,6 @@
     status = HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(htim);
-
   return status;
 }
 
@@ -6072,9 +6077,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(htim);
-
   if (htim->State == HAL_TIM_STATE_READY)
   {
     switch (CallbackID)
@@ -6306,9 +6308,6 @@
     status = HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(htim);
-
   return status;
 }
 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
@@ -6815,6 +6814,13 @@
   /* Generate an update event to reload the Prescaler
      and the repetition counter (only for advanced timer) value immediately */
   TIMx->EGR = TIM_EGR_UG;
+
+  /* Check if the update flag is set after the Update Generation, if so clear the UIF flag */
+  if (HAL_IS_BIT_SET(TIMx->SR, TIM_FLAG_UPDATE))
+  {
+    /* Clear the update flag */
+    CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE);
+  }
 }
 
 /**
@@ -6829,11 +6835,12 @@
   uint32_t tmpccer;
   uint32_t tmpcr2;
 
+  /* Get the TIMx CCER register value */
+  tmpccer = TIMx->CCER;
+
   /* Disable the Channel 1: Reset the CC1E Bit */
   TIMx->CCER &= ~TIM_CCER_CC1E;
 
-  /* Get the TIMx CCER register value */
-  tmpccer = TIMx->CCER;
   /* Get the TIMx CR2 register value */
   tmpcr2 =  TIMx->CR2;
 
@@ -6904,11 +6911,12 @@
   uint32_t tmpccer;
   uint32_t tmpcr2;
 
+  /* Get the TIMx CCER register value */
+  tmpccer = TIMx->CCER;
+
   /* Disable the Channel 2: Reset the CC2E Bit */
   TIMx->CCER &= ~TIM_CCER_CC2E;
 
-  /* Get the TIMx CCER register value */
-  tmpccer = TIMx->CCER;
   /* Get the TIMx CR2 register value */
   tmpcr2 =  TIMx->CR2;
 
@@ -6937,7 +6945,6 @@
     tmpccer |= (OC_Config->OCNPolarity << 4U);
     /* Reset the Output N State */
     tmpccer &= ~TIM_CCER_CC2NE;
-
   }
 
   if (IS_TIM_BREAK_INSTANCE(TIMx))
@@ -6980,11 +6987,12 @@
   uint32_t tmpccer;
   uint32_t tmpcr2;
 
+  /* Get the TIMx CCER register value */
+  tmpccer = TIMx->CCER;
+
   /* Disable the Channel 3: Reset the CC2E Bit */
   TIMx->CCER &= ~TIM_CCER_CC3E;
 
-  /* Get the TIMx CCER register value */
-  tmpccer = TIMx->CCER;
   /* Get the TIMx CR2 register value */
   tmpcr2 =  TIMx->CR2;
 
@@ -7054,11 +7062,12 @@
   uint32_t tmpccer;
   uint32_t tmpcr2;
 
+  /* Get the TIMx CCER register value */
+  tmpccer = TIMx->CCER;
+
   /* Disable the Channel 4: Reset the CC4E Bit */
   TIMx->CCER &= ~TIM_CCER_CC4E;
 
-  /* Get the TIMx CCER register value */
-  tmpccer = TIMx->CCER;
   /* Get the TIMx CR2 register value */
   tmpcr2 =  TIMx->CR2;
 
@@ -7249,9 +7258,9 @@
   uint32_t tmpccer;
 
   /* Disable the Channel 1: Reset the CC1E Bit */
+  tmpccer = TIMx->CCER;
   TIMx->CCER &= ~TIM_CCER_CC1E;
   tmpccmr1 = TIMx->CCMR1;
-  tmpccer = TIMx->CCER;
 
   /* Select the Input */
   if (IS_TIM_CC2_INSTANCE(TIMx) != RESET)
@@ -7339,9 +7348,9 @@
   uint32_t tmpccer;
 
   /* Disable the Channel 2: Reset the CC2E Bit */
+  tmpccer = TIMx->CCER;
   TIMx->CCER &= ~TIM_CCER_CC2E;
   tmpccmr1 = TIMx->CCMR1;
-  tmpccer = TIMx->CCER;
 
   /* Select the Input */
   tmpccmr1 &= ~TIM_CCMR1_CC2S;
@@ -7378,9 +7387,9 @@
   uint32_t tmpccer;
 
   /* Disable the Channel 2: Reset the CC2E Bit */
+  tmpccer = TIMx->CCER;
   TIMx->CCER &= ~TIM_CCER_CC2E;
   tmpccmr1 = TIMx->CCMR1;
-  tmpccer = TIMx->CCER;
 
   /* Set the filter */
   tmpccmr1 &= ~TIM_CCMR1_IC2F;
@@ -7422,9 +7431,9 @@
   uint32_t tmpccer;
 
   /* Disable the Channel 3: Reset the CC3E Bit */
+  tmpccer = TIMx->CCER;
   TIMx->CCER &= ~TIM_CCER_CC3E;
   tmpccmr2 = TIMx->CCMR2;
-  tmpccer = TIMx->CCER;
 
   /* Select the Input */
   tmpccmr2 &= ~TIM_CCMR2_CC3S;
@@ -7470,9 +7479,9 @@
   uint32_t tmpccer;
 
   /* Disable the Channel 4: Reset the CC4E Bit */
+  tmpccer = TIMx->CCER;
   TIMx->CCER &= ~TIM_CCER_CC4E;
   tmpccmr2 = TIMx->CCMR2;
-  tmpccer = TIMx->CCER;
 
   /* Select the Input */
   tmpccmr2 &= ~TIM_CCMR2_CC4S;
diff --git a/Src/stm32f4xx_hal_tim_ex.c b/Src/stm32f4xx_hal_tim_ex.c
index 98f26f5..889f8fb 100644
--- a/Src/stm32f4xx_hal_tim_ex.c
+++ b/Src/stm32f4xx_hal_tim_ex.c
@@ -151,6 +151,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));
 
@@ -501,7 +502,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;
     }
@@ -834,7 +835,7 @@
 
     /* Disable the TIM Break interrupt (only if no more channel is active) */
     tmpccer = htim->Instance->CCER;
-    if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)
+    if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET)
     {
       __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
     }
@@ -882,7 +883,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;
     }
@@ -1080,17 +1081,6 @@
     (+) Stop the Complementary PWM and disable interrupts.
     (+) Start the Complementary PWM and enable DMA transfers.
     (+) Stop the Complementary PWM and disable DMA transfers.
-    (+) Start the Complementary Input Capture measurement.
-    (+) Stop the Complementary Input Capture.
-    (+) Start the Complementary Input Capture and enable interrupts.
-    (+) Stop the Complementary Input Capture and disable interrupts.
-    (+) Start the Complementary Input Capture and enable DMA transfers.
-    (+) Stop the Complementary Input Capture and disable DMA transfers.
-    (+) Start the Complementary One Pulse generation.
-    (+) Stop the Complementary One Pulse.
-    (+) Start the Complementary One Pulse and enable interrupts.
-    (+) Stop the Complementary One Pulse and disable interrupts.
-
 @endverbatim
   * @{
   */
@@ -1316,7 +1306,7 @@
 
     /* Disable the TIM Break interrupt (only if no more channel is active) */
     tmpccer = htim->Instance->CCER;
-    if ((tmpccer & (TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) == (uint32_t)RESET)
+    if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET)
     {
       __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK);
     }
@@ -1364,7 +1354,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;
     }
@@ -2100,7 +2090,6 @@
   */
 HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)
 {
-
   /* Check parameters */
   assert_param(IS_TIM_REMAP(htim->Instance, Remap));
 
@@ -2151,7 +2140,7 @@
   */
 
 /**
-  * @brief  Hall commutation changed callback in non-blocking mode
+  * @brief  Commutation callback in non-blocking mode
   * @param  htim TIM handle
   * @retval None
   */
@@ -2165,7 +2154,7 @@
    */
 }
 /**
-  * @brief  Hall commutation changed half complete callback in non-blocking mode
+  * @brief  Commutation half complete callback in non-blocking mode
   * @param  htim TIM handle
   * @retval None
   */
@@ -2180,7 +2169,7 @@
 }
 
 /**
-  * @brief  Hall Break detection callback in non-blocking mode
+  * @brief  Break detection callback in non-blocking mode
   * @param  htim TIM handle
   * @retval None
   */
@@ -2331,15 +2320,6 @@
       TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY);
     }
   }
-  else if (hdma == htim->hdma[TIM_DMA_ID_CC4])
-  {
-    htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
-
-    if (hdma->Init.Mode == DMA_NORMAL)
-    {
-      TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY);
-    }
-  }
   else
   {
     /* nothing to do */
@@ -2408,13 +2388,13 @@
 {
   uint32_t tmp;
 
-  tmp = TIM_CCER_CC1NE << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */
+  tmp = TIM_CCER_CC1NE << (Channel & 0xFU); /* 0xFU = 15 bits max shift */
 
   /* Reset the CCxNE Bit */
   TIMx->CCER &=  ~tmp;
 
   /* Set or reset the CCxNE Bit */
-  TIMx->CCER |= (uint32_t)(ChannelNState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */
+  TIMx->CCER |= (uint32_t)(ChannelNState << (Channel & 0xFU)); /* 0xFU = 15 bits max shift */
 }
 /**
   * @}
diff --git a/Src/stm32f4xx_hal_timebase_rtc_alarm_template.c b/Src/stm32f4xx_hal_timebase_rtc_alarm_template.c
index e13c721..3852be9 100644
--- a/Src/stm32f4xx_hal_timebase_rtc_alarm_template.c
+++ b/Src/stm32f4xx_hal_timebase_rtc_alarm_template.c
@@ -6,7 +6,7 @@
   *
   *          This file override the native HAL time base functions (defined as weak)
   *          to use the RTC ALARM for time base generation:
-  *           + Intializes the RTC peripheral to increment the seconds registers each 1ms
+  *           + Initializes the RTC peripheral to increment the seconds registers each 1ms
   *           + The alarm is configured to assert an interrupt when the RTC reaches 1ms 
   *           + HAL_IncTick is called at each Alarm event and the time is reset to 00:00:00
   *           + HSE (default), LSE or LSI can be selected as RTC clock source
@@ -102,19 +102,19 @@
   HAL_StatusTypeDef     status;
 
 #ifdef RTC_CLOCK_SOURCE_LSE
-  /* Configue LSE as RTC clock soucre */
+  /* Configure LSE as RTC clock source */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
   RCC_OscInitStruct.LSEState = RCC_LSE_ON;
   PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
 #elif defined (RTC_CLOCK_SOURCE_LSI)
-  /* Configue LSI as RTC clock soucre */
+  /* Configure LSI as RTC clock source */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
   RCC_OscInitStruct.LSIState = RCC_LSI_ON;
   PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
 #elif defined (RTC_CLOCK_SOURCE_HSE)
-  /* Configue HSE as RTC clock soucre */
+  /* Configure HSE as RTC clock source */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
diff --git a/Src/stm32f4xx_hal_timebase_rtc_wakeup_template.c b/Src/stm32f4xx_hal_timebase_rtc_wakeup_template.c
index 50f9d7f..5b47e18 100644
--- a/Src/stm32f4xx_hal_timebase_rtc_wakeup_template.c
+++ b/Src/stm32f4xx_hal_timebase_rtc_wakeup_template.c
@@ -6,7 +6,7 @@
   *    
   *          This file overrides the native HAL time base functions (defined as weak)
   *          to use the RTC WAKEUP for the time base generation:
-  *           + Intializes the RTC peripheral and configures the wakeup timer to be
+  *           + Initializes the RTC peripheral and configures the wakeup timer to be
   *             incremented each 1ms
   *           + The wakeup feature is configured to assert an interrupt each 1ms 
   *           + HAL_IncTick is called inside the HAL_RTCEx_WakeUpTimerEventCallback
@@ -109,19 +109,19 @@
   HAL_StatusTypeDef     status;
 
 #ifdef RTC_CLOCK_SOURCE_LSE
-  /* Configue LSE as RTC clock soucre */
+  /* Configure LSE as RTC clock source */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
   RCC_OscInitStruct.LSEState = RCC_LSE_ON;
   PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
 #elif defined (RTC_CLOCK_SOURCE_LSI)
-  /* Configue LSI as RTC clock soucre */
+  /* Configure LSI as RTC clock source */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
   RCC_OscInitStruct.LSIState = RCC_LSI_ON;
   PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
 #elif defined (RTC_CLOCK_SOURCE_HSE)
-  /* Configue HSE as RTC clock soucre */
+  /* Configure HSE as RTC clock source */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
diff --git a/Src/stm32f4xx_hal_timebase_tim_template.c b/Src/stm32f4xx_hal_timebase_tim_template.c
index affb884..b9d63d4 100644
--- a/Src/stm32f4xx_hal_timebase_tim_template.c
+++ b/Src/stm32f4xx_hal_timebase_tim_template.c
@@ -6,7 +6,7 @@
   *    
   *          This file overrides the native HAL time base functions (defined as weak)
   *          the TIM time base:
-  *           + Intializes the TIM peripheral generate a Period elapsed Event each 1ms
+  *           + Initializes the TIM peripheral generate a Period elapsed Event each 1ms
   *           + HAL_IncTick is called inside HAL_TIM_PeriodElapsedCallback ie each 1ms
   * 
   ******************************************************************************
diff --git a/Src/stm32f4xx_hal_uart.c b/Src/stm32f4xx_hal_uart.c
index e2af538..33a5f00 100644
--- a/Src/stm32f4xx_hal_uart.c
+++ b/Src/stm32f4xx_hal_uart.c
@@ -740,6 +740,8 @@
 /**
   * @brief  Register a User UART Callback
   *         To be used instead of the weak predefined callback
+  * @note   The HAL_UART_RegisterCallback() may be called before HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init(),
+  *         HAL_MultiProcessor_Init() to register callbacks for HAL_UART_MSPINIT_CB_ID and HAL_UART_MSPDEINIT_CB_ID
   * @param  huart uart handle
   * @param  CallbackID ID of the callback to be registered
   *         This parameter can be one of the following values:
@@ -768,8 +770,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(huart);
 
   if (huart->gState == HAL_UART_STATE_READY)
   {
@@ -854,15 +854,15 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(huart);
-
   return status;
 }
 
 /**
   * @brief  Unregister an UART Callback
   *         UART callaback is redirected to the weak predefined callback
+  * @note   The HAL_UART_UnRegisterCallback() may be called before HAL_UART_Init(), HAL_HalfDuplex_Init(),
+  *         HAL_LIN_Init(), HAL_MultiProcessor_Init() to un-register callbacks for HAL_UART_MSPINIT_CB_ID
+  *         and HAL_UART_MSPDEINIT_CB_ID
   * @param  huart uart handle
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
@@ -882,9 +882,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(huart);
-
   if (HAL_UART_STATE_READY == huart->gState)
   {
     switch (CallbackID)
@@ -968,9 +965,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(huart);
-
   return status;
 }
 
@@ -1177,6 +1171,8 @@
     {
       if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
       {
+        huart->gState = HAL_UART_STATE_READY;
+
         return HAL_TIMEOUT;
       }
       if (pdata8bits == NULL)
@@ -1194,6 +1190,8 @@
 
     if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)
     {
+      huart->gState = HAL_UART_STATE_READY;
+
       return HAL_TIMEOUT;
     }
 
@@ -1261,6 +1259,8 @@
     {
       if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK)
       {
+        huart->RxState = HAL_UART_STATE_READY;
+
         return HAL_TIMEOUT;
       }
       if (pdata8bits == NULL)
@@ -3191,20 +3191,32 @@
     /* Check for the Timeout */
     if (Timeout != HAL_MAX_DELAY)
     {
-      if ((Timeout == 0U) || ((HAL_GetTick() - Tickstart) > Timeout))
+      if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
       {
-        /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
-        ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
-        ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
-
-        huart->gState  = HAL_UART_STATE_READY;
-        huart->RxState = HAL_UART_STATE_READY;
-
-        /* Process Unlocked */
-        __HAL_UNLOCK(huart);
 
         return HAL_TIMEOUT;
       }
+
+      if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC))
+      {
+        if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) == SET)
+        {
+          /* Clear Overrun Error flag*/
+          __HAL_UART_CLEAR_OREFLAG(huart);
+
+          /* Blocking error : transfer is aborted
+          Set the UART state ready to be able to start again the process,
+          Disable Rx Interrupts if ongoing */
+          UART_EndRxTransfer(huart);
+
+          huart->ErrorCode = HAL_UART_ERROR_ORE;
+
+          /* Process Unlocked */
+          __HAL_UNLOCK(huart);
+
+          return HAL_ERROR;
+        }
+      }
     }
   }
   return HAL_OK;
diff --git a/Src/stm32f4xx_hal_usart.c b/Src/stm32f4xx_hal_usart.c
index b6df8e7..5a7c821 100644
--- a/Src/stm32f4xx_hal_usart.c
+++ b/Src/stm32f4xx_hal_usart.c
@@ -427,6 +427,8 @@
 /**
   * @brief  Register a User USART Callback
   *         To be used instead of the weak predefined callback
+  * @note   The HAL_USART_RegisterCallback() may be called before HAL_USART_Init() in HAL_USART_STATE_RESET
+  *         to register callbacks for HAL_USART_MSPINIT_CB_ID and HAL_USART_MSPDEINIT_CB_ID
   * @param  husart usart handle
   * @param  CallbackID ID of the callback to be registered
   *         This parameter can be one of the following values:
@@ -454,8 +456,6 @@
 
     return HAL_ERROR;
   }
-  /* Process locked */
-  __HAL_LOCK(husart);
 
   if (husart->State == HAL_USART_STATE_READY)
   {
@@ -536,15 +536,14 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(husart);
-
   return status;
 }
 
 /**
   * @brief  Unregister an USART Callback
   *         USART callaback is redirected to the weak predefined callback
+  * @note   The HAL_USART_UnRegisterCallback() may be called before HAL_USART_Init() in HAL_USART_STATE_RESET
+  *         to un-register callbacks for HAL_USART_MSPINIT_CB_ID and HAL_USART_MSPDEINIT_CB_ID
   * @param  husart usart handle
   * @param  CallbackID ID of the callback to be unregistered
   *         This parameter can be one of the following values:
@@ -563,9 +562,6 @@
 {
   HAL_StatusTypeDef status = HAL_OK;
 
-  /* Process locked */
-  __HAL_LOCK(husart);
-
   if (husart->State == HAL_USART_STATE_READY)
   {
     switch (CallbackID)
@@ -645,9 +641,6 @@
     status =  HAL_ERROR;
   }
 
-  /* Release Lock */
-  __HAL_UNLOCK(husart);
-
   return status;
 }
 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */
@@ -2094,6 +2087,9 @@
 /**
   * @}
   */
+/**
+  * @}
+  */
 
 /** @defgroup USART_Private_Functions USART Private Functions
  * @{
@@ -2823,10 +2819,6 @@
   * @}
   */
 
-/**
-  * @}
-  */
-
 #endif /* HAL_USART_MODULE_ENABLED */
 /**
   * @}
diff --git a/Src/stm32f4xx_ll_crc.c b/Src/stm32f4xx_ll_crc.c
index 1138793..b64b476 100644
--- a/Src/stm32f4xx_ll_crc.c
+++ b/Src/stm32f4xx_ll_crc.c
@@ -59,7 +59,7 @@
   *          - SUCCESS: CRC registers are de-initialized
   *          - ERROR: CRC registers are not de-initialized
   */
-ErrorStatus LL_CRC_DeInit(CRC_TypeDef *CRCx)
+ErrorStatus LL_CRC_DeInit(const CRC_TypeDef *CRCx)
 {
   ErrorStatus status = SUCCESS;
 
diff --git a/Src/stm32f4xx_ll_dac.c b/Src/stm32f4xx_ll_dac.c
index 0a5c2ff..77ce358 100644
--- a/Src/stm32f4xx_ll_dac.c
+++ b/Src/stm32f4xx_ll_dac.c
@@ -47,19 +47,16 @@
   */
 #if defined(DAC_CHANNEL2_SUPPORT)
 #define IS_LL_DAC_CHANNEL(__DACX__, __DAC_CHANNEL__)                           \
-  (                                                                            \
-      ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_1)                                  \
+  (((__DAC_CHANNEL__) == LL_DAC_CHANNEL_1)                                     \
    || ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_2)                                  \
   )
 #else
 #define IS_LL_DAC_CHANNEL(__DACX__, __DAC_CHANNEL__)                           \
-  (                                                                            \
-   ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_1)                                     \
-  )
+  (((__DAC_CHANNEL__) == LL_DAC_CHANNEL_1))
 #endif /* DAC_CHANNEL2_SUPPORT */
 
 #define IS_LL_DAC_TRIGGER_SOURCE(__TRIGGER_SOURCE__)                           \
-  (   ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_SOFTWARE)                           \
+  (((__TRIGGER_SOURCE__) == LL_DAC_TRIG_SOFTWARE)                              \
    || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM2_TRGO)                      \
    || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM4_TRGO)                      \
    || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM5_TRGO)                      \
@@ -70,45 +67,45 @@
   )
 
 #define IS_LL_DAC_WAVE_AUTO_GENER_MODE(__WAVE_AUTO_GENERATION_MODE__)              \
-  (   ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NONE)        \
-      || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NOISE)    \
-      || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE) \
+  (((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NONE)           \
+   || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NOISE)       \
+   || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE)    \
   )
 
 #define IS_LL_DAC_WAVE_AUTO_GENER_CONFIG(__WAVE_AUTO_GENERATION_MODE__, __WAVE_AUTO_GENERATION_CONFIG__)  \
   ( (((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NOISE)                               \
-     && (  ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BIT0)                           \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS1_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS2_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS3_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS4_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS5_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS6_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS7_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS8_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS9_0)                     \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS10_0)                    \
-           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS11_0))                   \
+     && (((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BIT0)                             \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS1_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS2_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS3_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS4_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS5_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS6_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS7_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS8_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS9_0)                       \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS10_0)                      \
+         || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS11_0))                     \
     )                                                                                                     \
     ||(((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE)                          \
-       && (  ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1)                           \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_3)                        \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_7)                        \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_15)                       \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_31)                       \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_63)                       \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_127)                      \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_255)                      \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_511)                      \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1023)                     \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_2047)                     \
-             || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_4095))                    \
+       && (((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1)                             \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_3)                          \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_7)                          \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_15)                         \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_31)                         \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_63)                         \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_127)                        \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_255)                        \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_511)                        \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1023)                       \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_2047)                       \
+           || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_4095))                      \
       )                                                                                                   \
   )
 
 #define IS_LL_DAC_OUTPUT_BUFFER(__OUTPUT_BUFFER__)                             \
-  (   ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_ENABLE)                     \
-      || ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_DISABLE)                 \
+  (((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_ENABLE)                        \
+   || ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_DISABLE)                    \
   )
 
 /**
@@ -135,7 +132,7 @@
   *          - SUCCESS: DAC registers are de-initialized
   *          - ERROR: not applicable
   */
-ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx)
+ErrorStatus LL_DAC_DeInit(const DAC_TypeDef *DACx)
 {
   /* Check the parameters */
   assert_param(IS_DAC_ALL_INSTANCE(DACx));
@@ -169,15 +166,15 @@
   * @param  DAC_Channel This parameter can be one of the following values:
   *         @arg @ref LL_DAC_CHANNEL_1
   *         @arg @ref LL_DAC_CHANNEL_2 (1)
-  *         
-  *         (1) On this STM32 serie, parameter not available on all devices.
+  *
+  *         (1) On this STM32 series, parameter not available on all devices.
   *             Refer to device datasheet for channels availability.
   * @param  DAC_InitStruct Pointer to a @ref LL_DAC_InitTypeDef structure
   * @retval An ErrorStatus enumeration value:
   *          - SUCCESS: DAC registers are initialized
   *          - ERROR: DAC registers are not initialized
   */
-ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct)
+ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, const LL_DAC_InitTypeDef *DAC_InitStruct)
 {
   ErrorStatus status = SUCCESS;
 
@@ -277,4 +274,3 @@
   */
 
 #endif /* USE_FULL_LL_DRIVER */
-
diff --git a/Src/stm32f4xx_ll_fmc.c b/Src/stm32f4xx_ll_fmc.c
index 1bdf9de..2431213 100644
--- a/Src/stm32f4xx_ll_fmc.c
+++ b/Src/stm32f4xx_ll_fmc.c
@@ -61,7 +61,8 @@
 /** @addtogroup STM32F4xx_HAL_Driver
   * @{
   */
-#if defined(HAL_NOR_MODULE_ENABLED) || defined(HAL_SRAM_MODULE_ENABLED) || (defined(HAL_NAND_MODULE_ENABLED)) || defined(HAL_PCCARD_MODULE_ENABLED) || defined(HAL_SDRAM_MODULE_ENABLED)
+#if defined(HAL_NOR_MODULE_ENABLED) || (defined(HAL_NAND_MODULE_ENABLED)) || defined(HAL_PCCARD_MODULE_ENABLED) || defined(HAL_SDRAM_MODULE_ENABLED)\
+ || defined(HAL_SRAM_MODULE_ENABLED)
 
 /** @defgroup FMC_LL  FMC Low Layer
   * @brief FMC driver modules
@@ -1449,7 +1450,7 @@
   *         FMC_SDRAM_NORMAL_MODE, FMC_SDRAM_SELF_REFRESH_MODE or
   *         FMC_SDRAM_POWER_DOWN_MODE.
   */
-uint32_t FMC_SDRAM_GetModeStatus(FMC_SDRAM_TypeDef *Device, uint32_t Bank)
+uint32_t FMC_SDRAM_GetModeStatus(const FMC_SDRAM_TypeDef *Device, uint32_t Bank)
 {
   uint32_t tmpreg;
 
diff --git a/Src/stm32f4xx_ll_fmpi2c.c b/Src/stm32f4xx_ll_fmpi2c.c
index 04966ea..94718b7 100644
--- a/Src/stm32f4xx_ll_fmpi2c.c
+++ b/Src/stm32f4xx_ll_fmpi2c.c
@@ -46,22 +46,22 @@
   */
 
 #define IS_LL_FMPI2C_PERIPHERAL_MODE(__VALUE__)    (((__VALUE__) == LL_FMPI2C_MODE_I2C)          || \
-                                                 ((__VALUE__) == LL_FMPI2C_MODE_SMBUS_HOST)   || \
-                                                 ((__VALUE__) == LL_FMPI2C_MODE_SMBUS_DEVICE) || \
-                                                 ((__VALUE__) == LL_FMPI2C_MODE_SMBUS_DEVICE_ARP))
+                                                    ((__VALUE__) == LL_FMPI2C_MODE_SMBUS_HOST)   || \
+                                                    ((__VALUE__) == LL_FMPI2C_MODE_SMBUS_DEVICE) || \
+                                                    ((__VALUE__) == LL_FMPI2C_MODE_SMBUS_DEVICE_ARP))
 
 #define IS_LL_FMPI2C_ANALOG_FILTER(__VALUE__)      (((__VALUE__) == LL_FMPI2C_ANALOGFILTER_ENABLE) || \
-                                                 ((__VALUE__) == LL_FMPI2C_ANALOGFILTER_DISABLE))
+                                                    ((__VALUE__) == LL_FMPI2C_ANALOGFILTER_DISABLE))
 
 #define IS_LL_FMPI2C_DIGITAL_FILTER(__VALUE__)     ((__VALUE__) <= 0x0000000FU)
 
 #define IS_LL_FMPI2C_OWN_ADDRESS1(__VALUE__)       ((__VALUE__) <= 0x000003FFU)
 
 #define IS_LL_FMPI2C_TYPE_ACKNOWLEDGE(__VALUE__)   (((__VALUE__) == LL_FMPI2C_ACK) || \
-                                                 ((__VALUE__) == LL_FMPI2C_NACK))
+                                                    ((__VALUE__) == LL_FMPI2C_NACK))
 
 #define IS_LL_FMPI2C_OWN_ADDRSIZE(__VALUE__)       (((__VALUE__) == LL_FMPI2C_OWNADDRESS1_7BIT) || \
-                                                 ((__VALUE__) == LL_FMPI2C_OWNADDRESS1_10BIT))
+                                                    ((__VALUE__) == LL_FMPI2C_OWNADDRESS1_10BIT))
 /**
   * @}
   */
@@ -84,7 +84,7 @@
   *          - SUCCESS: FMPI2C registers are de-initialized
   *          - ERROR: FMPI2C registers are not de-initialized
   */
-ErrorStatus LL_FMPI2C_DeInit(FMPI2C_TypeDef *FMPI2Cx)
+ErrorStatus LL_FMPI2C_DeInit(const FMPI2C_TypeDef *FMPI2Cx)
 {
   ErrorStatus status = SUCCESS;
 
@@ -115,7 +115,7 @@
   *          - SUCCESS: FMPI2C registers are initialized
   *          - ERROR: Not applicable
   */
-ErrorStatus LL_FMPI2C_Init(FMPI2C_TypeDef *FMPI2Cx, LL_FMPI2C_InitTypeDef *FMPI2C_InitStruct)
+ErrorStatus LL_FMPI2C_Init(FMPI2C_TypeDef *FMPI2Cx, const LL_FMPI2C_InitTypeDef *FMPI2C_InitStruct)
 {
   /* Check the FMPI2C Instance FMPI2Cx */
   assert_param(IS_FMPI2C_ALL_INSTANCE(FMPI2Cx));
diff --git a/Src/stm32f4xx_ll_fsmc.c b/Src/stm32f4xx_ll_fsmc.c
index 8172871..ff79111 100644
--- a/Src/stm32f4xx_ll_fsmc.c
+++ b/Src/stm32f4xx_ll_fsmc.c
@@ -59,7 +59,8 @@
 /** @addtogroup STM32F4xx_HAL_Driver
   * @{
   */
-#if defined(HAL_NOR_MODULE_ENABLED) || defined(HAL_SRAM_MODULE_ENABLED) || defined(HAL_NAND_MODULE_ENABLED) || defined(HAL_PCCARD_MODULE_ENABLED)
+#if defined(HAL_NOR_MODULE_ENABLED) || defined(HAL_NAND_MODULE_ENABLED) || defined(HAL_PCCARD_MODULE_ENABLED) \
+ || defined(HAL_SRAM_MODULE_ENABLED)
 
 /** @defgroup FSMC_LL  FSMC Low Layer
   * @brief FSMC driver modules
diff --git a/Src/stm32f4xx_ll_lptim.c b/Src/stm32f4xx_ll_lptim.c
index 4ec0840..bb75125 100644
--- a/Src/stm32f4xx_ll_lptim.c
+++ b/Src/stm32f4xx_ll_lptim.c
@@ -92,7 +92,7 @@
   *          - SUCCESS: LPTIMx registers are de-initialized
   *          - ERROR: invalid LPTIMx instance
   */
-ErrorStatus LL_LPTIM_DeInit(LPTIM_TypeDef *LPTIMx)
+ErrorStatus LL_LPTIM_DeInit(const LPTIM_TypeDef *LPTIMx)
 {
   ErrorStatus result = SUCCESS;
 
@@ -259,8 +259,7 @@
       do
       {
         rcc_clock.SYSCLK_Frequency--; /* Used for timeout */
-      }
-      while (((LL_LPTIM_IsActiveFlag_ARROK(LPTIMx) != 1UL)) && ((rcc_clock.SYSCLK_Frequency) > 0UL));
+      } while (((LL_LPTIM_IsActiveFlag_ARROK(LPTIMx) != 1UL)) && ((rcc_clock.SYSCLK_Frequency) > 0UL));
 
       LL_LPTIM_ClearFlag_ARROK(LPTIMx);
     }
diff --git a/Src/stm32f4xx_ll_rng.c b/Src/stm32f4xx_ll_rng.c
index 333d63c..fc1ea50 100644
--- a/Src/stm32f4xx_ll_rng.c
+++ b/Src/stm32f4xx_ll_rng.c
@@ -59,7 +59,7 @@
   *          - SUCCESS: RNG registers are de-initialized
   *          - ERROR: not applicable
   */
-ErrorStatus LL_RNG_DeInit(RNG_TypeDef *RNGx)
+ErrorStatus LL_RNG_DeInit(const RNG_TypeDef *RNGx)
 {
   ErrorStatus status = SUCCESS;
 
@@ -77,7 +77,7 @@
     /* Enable RNG reset state */
     LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_RNG);
 
-  /* Release RNG from reset state */
+    /* Release RNG from reset state */
     LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_RNG);
 #endif /* !RCC_AHB2_SUPPORT */
   }
diff --git a/Src/stm32f4xx_ll_rtc.c b/Src/stm32f4xx_ll_rtc.c
index f3ee3ce..4d106da 100644
--- a/Src/stm32f4xx_ll_rtc.c
+++ b/Src/stm32f4xx_ll_rtc.c
@@ -6,7 +6,7 @@
   ******************************************************************************
   * @attention
   *
-  * Copyright (c) 2017 STMicroelectronics.
+  * Copyright (c) 2016 STMicroelectronics.
   * All rights reserved.
   *
   * This software is licensed under terms that can be found in the LICENSE file
diff --git a/Src/stm32f4xx_ll_tim.c b/Src/stm32f4xx_ll_tim.c
index a0890c3..49217db 100644
--- a/Src/stm32f4xx_ll_tim.c
+++ b/Src/stm32f4xx_ll_tim.c
@@ -165,7 +165,7 @@
   *          - SUCCESS: TIMx registers are de-initialized
   *          - ERROR: invalid TIMx instance
   */
-ErrorStatus LL_TIM_DeInit(TIM_TypeDef *TIMx)
+ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx)
 {
   ErrorStatus result = SUCCESS;
 
@@ -711,7 +711,6 @@
   MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState);
   MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity);
   MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput);
-  MODIFY_REG(tmpbdtr, TIM_BDTR_MOE, TIM_BDTRInitStruct->AutomaticOutput);
 
   /* Set TIMx_BDTR */
   LL_TIM_WriteReg(TIMx, BDTR, tmpbdtr);
@@ -749,8 +748,6 @@
   assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
   assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
   assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
-  assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
-  assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
 
   /* Disable the Channel 1: Reset the CC1E Bit */
   CLEAR_BIT(TIMx->CCER, TIM_CCER_CC1E);
@@ -778,8 +775,10 @@
 
   if (IS_TIM_BREAK_INSTANCE(TIMx))
   {
-    assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
     assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
+    assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
+    assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
+    assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
 
     /* Set the complementary output Polarity */
     MODIFY_REG(tmpccer, TIM_CCER_CC1NP, TIM_OCInitStruct->OCNPolarity << 2U);
@@ -828,8 +827,6 @@
   assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
   assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
   assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
-  assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
-  assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
 
   /* Disable the Channel 2: Reset the CC2E Bit */
   CLEAR_BIT(TIMx->CCER, TIM_CCER_CC2E);
@@ -857,8 +854,10 @@
 
   if (IS_TIM_BREAK_INSTANCE(TIMx))
   {
-    assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
     assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
+    assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
+    assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
+    assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
 
     /* Set the complementary output Polarity */
     MODIFY_REG(tmpccer, TIM_CCER_CC2NP, TIM_OCInitStruct->OCNPolarity << 6U);
@@ -907,8 +906,6 @@
   assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
   assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
   assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
-  assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
-  assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
 
   /* Disable the Channel 3: Reset the CC3E Bit */
   CLEAR_BIT(TIMx->CCER, TIM_CCER_CC3E);
@@ -936,8 +933,10 @@
 
   if (IS_TIM_BREAK_INSTANCE(TIMx))
   {
-    assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
     assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
+    assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
+    assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
+    assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
 
     /* Set the complementary output Polarity */
     MODIFY_REG(tmpccer, TIM_CCER_CC3NP, TIM_OCInitStruct->OCNPolarity << 10U);
@@ -986,8 +985,6 @@
   assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode));
   assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState));
   assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity));
-  assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity));
-  assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState));
 
   /* Disable the Channel 4: Reset the CC4E Bit */
   CLEAR_BIT(TIMx->CCER, TIM_CCER_CC4E);
@@ -1015,7 +1012,6 @@
 
   if (IS_TIM_BREAK_INSTANCE(TIMx))
   {
-    assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState));
     assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState));
 
     /* Set the Output Idle state */
@@ -1037,7 +1033,6 @@
   return SUCCESS;
 }
 
-
 /**
   * @brief  Configure the TIMx input channel 1.
   * @param  TIMx Timer Instance
@@ -1162,7 +1157,7 @@
              (TIM_CCMR2_CC4S | TIM_CCMR2_IC4F | TIM_CCMR2_IC4PSC),
              (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U);
 
-  /* Select the Polarity and set the CC2E Bit */
+  /* Select the Polarity and set the CC4E Bit */
   MODIFY_REG(TIMx->CCER,
              (TIM_CCER_CC4P | TIM_CCER_CC4NP),
              ((TIM_ICInitStruct->ICPolarity << 12U) | TIM_CCER_CC4E));
diff --git a/Src/stm32f4xx_ll_usb.c b/Src/stm32f4xx_ll_usb.c
index 4e2bd33..2570d42 100644
--- a/Src/stm32f4xx_ll_usb.c
+++ b/Src/stm32f4xx_ll_usb.c
@@ -27,7 +27,7 @@
                     ##### How to use this driver #####
   ==============================================================================
     [..]
-      (#) Fill parameters of Init structure in USB_OTG_CfgTypeDef structure.
+      (#) Fill parameters of Init structure in USB_CfgTypeDef structure.
 
       (#) Call USB_CoreInit() API to initialize the USB Core peripheral.
 
@@ -258,9 +258,9 @@
 
     do
     {
-      HAL_Delay(1U);
-      ms++;
-    } while ((USB_GetMode(USBx) != (uint32_t)USB_HOST_MODE) && (ms < 50U));
+      HAL_Delay(10U);
+      ms += 10U;
+    } while ((USB_GetMode(USBx) != (uint32_t)USB_HOST_MODE) && (ms < HAL_USB_CURRENT_MODE_MAX_DELAY_MS));
   }
   else if (mode == USB_DEVICE_MODE)
   {
@@ -268,16 +268,16 @@
 
     do
     {
-      HAL_Delay(1U);
-      ms++;
-    } while ((USB_GetMode(USBx) != (uint32_t)USB_DEVICE_MODE) && (ms < 50U));
+      HAL_Delay(10U);
+      ms += 10U;
+    } while ((USB_GetMode(USBx) != (uint32_t)USB_DEVICE_MODE) && (ms < HAL_USB_CURRENT_MODE_MAX_DELAY_MS));
   }
   else
   {
     return HAL_ERROR;
   }
 
-  if (ms == 50U)
+  if (ms == HAL_USB_CURRENT_MODE_MAX_DELAY_MS)
   {
     return HAL_ERROR;
   }
@@ -304,7 +304,9 @@
     USBx->DIEPTXF[i] = 0U;
   }
 
-#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) \
+ || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) \
+ || defined(STM32F423xx)
   /* VBUS Sensing setup */
   if (cfg.vbus_sensing_enable == 0U)
   {
@@ -341,7 +343,9 @@
     USBx->GCCFG &= ~USB_OTG_GCCFG_NOVBUSSENS;
     USBx->GCCFG |= USB_OTG_GCCFG_VBUSBSEN;
   }
-#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
+#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||
+          defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||
+          defined(STM32F423xx) */
 
   /* Restart the Phy Clock */
   USBx_PCGCCTL = 0U;
@@ -475,7 +479,7 @@
   {
     count++;
 
-    if (count > 200000U)
+    if (count > HAL_USB_TIMEOUT)
     {
       return HAL_TIMEOUT;
     }
@@ -489,7 +493,7 @@
   {
     count++;
 
-    if (count > 200000U)
+    if (count > HAL_USB_TIMEOUT)
     {
       return HAL_TIMEOUT;
     }
@@ -512,7 +516,7 @@
   {
     count++;
 
-    if (count > 200000U)
+    if (count > HAL_USB_TIMEOUT)
     {
       return HAL_TIMEOUT;
     }
@@ -526,7 +530,7 @@
   {
     count++;
 
-    if (count > 200000U)
+    if (count > HAL_USB_TIMEOUT)
     {
       return HAL_TIMEOUT;
     }
@@ -546,7 +550,7 @@
   *            @arg USB_OTG_SPEED_FULL: Full speed mode
   * @retval  Hal status
   */
-HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed)
+HAL_StatusTypeDef USB_SetDevSpeed(const USB_OTG_GlobalTypeDef *USBx, uint8_t speed)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -562,7 +566,7 @@
   *            @arg USBD_HS_SPEED: High speed mode
   *            @arg USBD_FS_SPEED: Full speed mode
   */
-uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx)
+uint8_t USB_GetDevSpeed(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint8_t speed;
@@ -591,7 +595,7 @@
   * @param  ep pointer to endpoint structure
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
+HAL_StatusTypeDef USB_ActivateEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t epnum = (uint32_t)ep->num;
@@ -629,7 +633,7 @@
   * @param  ep pointer to endpoint structure
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
+HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t epnum = (uint32_t)ep->num;
@@ -668,7 +672,7 @@
   * @param  ep pointer to endpoint structure
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
+HAL_StatusTypeDef USB_DeactivateEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t epnum = (uint32_t)ep->num;
@@ -715,7 +719,7 @@
   * @param  ep pointer to endpoint structure
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
+HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t epnum = (uint32_t)ep->num;
@@ -782,8 +786,21 @@
       */
       USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ);
       USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT);
-      USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT &
-                                     (((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket) << 19));
+
+      if (epnum == 0U)
+      {
+        if (ep->xfer_len > ep->maxpacket)
+        {
+          ep->xfer_len = ep->maxpacket;
+        }
+
+        USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19));
+      }
+      else
+      {
+        USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT &
+                                       (((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket) << 19));
+      }
 
       USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_XFRSIZ & ep->xfer_len);
 
@@ -853,18 +870,34 @@
     USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_XFRSIZ);
     USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_PKTCNT);
 
-    if (ep->xfer_len == 0U)
+    if (epnum == 0U)
     {
-      USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_XFRSIZ & ep->maxpacket);
+      if (ep->xfer_len > 0U)
+      {
+        ep->xfer_len = ep->maxpacket;
+      }
+
+      /* Store transfer size, for EP0 this is equal to endpoint max packet size */
+      ep->xfer_size = ep->maxpacket;
+
+      USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_XFRSIZ & ep->xfer_size);
       USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19));
     }
     else
     {
-      pktcnt = (uint16_t)((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket);
-      ep->xfer_size = ep->maxpacket * pktcnt;
+      if (ep->xfer_len == 0U)
+      {
+        USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_XFRSIZ & ep->maxpacket);
+        USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19));
+      }
+      else
+      {
+        pktcnt = (uint16_t)((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket);
+        ep->xfer_size = ep->maxpacket * pktcnt;
 
-      USBx_OUTEP(epnum)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_PKTCNT & ((uint32_t)pktcnt << 19);
-      USBx_OUTEP(epnum)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_XFRSIZ & ep->xfer_size;
+        USBx_OUTEP(epnum)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_PKTCNT & ((uint32_t)pktcnt << 19);
+        USBx_OUTEP(epnum)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_XFRSIZ & ep->xfer_size;
+      }
     }
 
     if (dma == 1U)
@@ -893,106 +926,6 @@
   return HAL_OK;
 }
 
-/**
-  * @brief  USB_EP0StartXfer : setup and starts a transfer over the EP  0
-  * @param  USBx  Selected device
-  * @param  ep pointer to endpoint structure
-  * @param  dma USB dma enabled or disabled
-  *          This parameter can be one of these values:
-  *           0 : DMA feature not used
-  *           1 : DMA feature used
-  * @retval HAL status
-  */
-HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep, uint8_t dma)
-{
-  uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t epnum = (uint32_t)ep->num;
-
-  /* IN endpoint */
-  if (ep->is_in == 1U)
-  {
-    /* Zero Length Packet? */
-    if (ep->xfer_len == 0U)
-    {
-      USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT);
-      USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19));
-      USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ);
-    }
-    else
-    {
-      /* Program the transfer size and packet count
-      * as follows: xfersize = N * maxpacket +
-      * short_packet pktcnt = N + (short_packet
-      * exist ? 1 : 0)
-      */
-      USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ);
-      USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT);
-
-      if (ep->xfer_len > ep->maxpacket)
-      {
-        ep->xfer_len = ep->maxpacket;
-      }
-      USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19));
-      USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_XFRSIZ & ep->xfer_len);
-    }
-
-    if (dma == 1U)
-    {
-      if ((uint32_t)ep->dma_addr != 0U)
-      {
-        USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
-      }
-
-      /* EP enable, IN data in FIFO */
-      USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
-    }
-    else
-    {
-      /* EP enable, IN data in FIFO */
-      USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
-
-      /* Enable the Tx FIFO Empty Interrupt for this EP */
-      if (ep->xfer_len > 0U)
-      {
-        USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
-      }
-    }
-  }
-  else /* OUT endpoint */
-  {
-    /* Program the transfer size and packet count as follows:
-    * pktcnt = N
-    * xfersize = N * maxpacket
-    */
-    USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_XFRSIZ);
-    USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_PKTCNT);
-
-    if (ep->xfer_len > 0U)
-    {
-      ep->xfer_len = ep->maxpacket;
-    }
-
-    /* Store transfer size, for EP0 this is equal to endpoint max packet size */
-    ep->xfer_size = ep->maxpacket;
-
-    USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19));
-    USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_XFRSIZ & ep->xfer_size);
-
-    if (dma == 1U)
-    {
-      if ((uint32_t)ep->xfer_buff != 0U)
-      {
-        USBx_OUTEP(epnum)->DOEPDMA = (uint32_t)(ep->xfer_buff);
-      }
-    }
-
-    /* EP enable */
-    USBx_OUTEP(epnum)->DOEPCTL |= (USB_OTG_DOEPCTL_CNAK | USB_OTG_DOEPCTL_EPENA);
-  }
-
-  return HAL_OK;
-}
-
 
 /**
    * @brief  USB_EPStoptXfer  Stop transfer on an EP
@@ -1000,7 +933,7 @@
    * @param  ep pointer to endpoint structure
    * @retval HAL status
    */
-HAL_StatusTypeDef USB_EPStopXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
+HAL_StatusTypeDef USB_EPStopXfer(const USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
 {
   __IO uint32_t count = 0U;
   HAL_StatusTypeDef ret = HAL_OK;
@@ -1064,7 +997,7 @@
   *           1 : DMA feature used
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src,
+HAL_StatusTypeDef USB_WritePacket(const USB_OTG_GlobalTypeDef *USBx, uint8_t *src,
                                   uint8_t ch_ep_num, uint16_t len, uint8_t dma)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
@@ -1095,7 +1028,7 @@
   * @param  len  Number of bytes to read
   * @retval pointer to destination buffer
   */
-void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
+void *USB_ReadPacket(const USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint8_t *pDest = dest;
@@ -1137,7 +1070,7 @@
   * @param  ep pointer to endpoint structure
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
+HAL_StatusTypeDef USB_EPSetStall(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t epnum = (uint32_t)ep->num;
@@ -1168,7 +1101,7 @@
   * @param  ep pointer to endpoint structure
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep)
+HAL_StatusTypeDef USB_EPClearStall(const USB_OTG_GlobalTypeDef *USBx, const USB_OTG_EPTypeDef *ep)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t epnum = (uint32_t)ep->num;
@@ -1238,7 +1171,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(const USB_OTG_GlobalTypeDef *USBx, uint8_t address)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1253,7 +1186,7 @@
   * @param  USBx  Selected device
   * @retval HAL status
   */
-HAL_StatusTypeDef  USB_DevConnect(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_DevConnect(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1270,7 +1203,7 @@
   * @param  USBx  Selected device
   * @retval HAL status
   */
-HAL_StatusTypeDef  USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_DevDisconnect(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1285,9 +1218,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 const *USBx)
 {
   uint32_t tmpreg;
 
@@ -1298,11 +1231,28 @@
 }
 
 /**
+  * @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(const 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)
+uint32_t USB_ReadDevAllOutEpInterrupt(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t tmpreg;
@@ -1316,9 +1266,9 @@
 /**
   * @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)
+uint32_t USB_ReadDevAllInEpInterrupt(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t tmpreg;
@@ -1336,7 +1286,7 @@
   *          This parameter can be a value from 0 to 15
   * @retval Device OUT EP Interrupt register
   */
-uint32_t USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum)
+uint32_t USB_ReadDevOutEPInterrupt(const USB_OTG_GlobalTypeDef *USBx, uint8_t epnum)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t tmpreg;
@@ -1354,7 +1304,7 @@
   *          This parameter can be a value from 0 to 15
   * @retval Device IN EP Interrupt register
   */
-uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum)
+uint32_t USB_ReadDevInEPInterrupt(const USB_OTG_GlobalTypeDef *USBx, uint8_t epnum)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t tmpreg;
@@ -1388,7 +1338,7 @@
   *           0 : Host
   *           1 : Device
   */
-uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx)
+uint32_t USB_GetMode(const USB_OTG_GlobalTypeDef *USBx)
 {
   return ((USBx->GINTSTS) & 0x1U);
 }
@@ -1398,7 +1348,7 @@
   * @param  USBx  Selected device
   * @retval HAL status
   */
-HAL_StatusTypeDef  USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_ActivateSetup(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1420,10 +1370,10 @@
   * @param  psetup  pointer to setup packet
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t dma, uint8_t *psetup)
+HAL_StatusTypeDef USB_EP0_OutStart(const USB_OTG_GlobalTypeDef *USBx, uint8_t dma, const uint8_t *psetup)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
-  uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U);
+  uint32_t gSNPSiD = *(__IO const uint32_t *)(&USBx->CID + 0x1U);
 
   if (gSNPSiD > USB_OTG_CORE_ID_300A)
   {
@@ -1462,7 +1412,7 @@
   {
     count++;
 
-    if (count > 200000U)
+    if (count > HAL_USB_TIMEOUT)
     {
       return HAL_TIMEOUT;
     }
@@ -1476,7 +1426,7 @@
   {
     count++;
 
-    if (count > 200000U)
+    if (count > HAL_USB_TIMEOUT)
     {
       return HAL_TIMEOUT;
     }
@@ -1502,7 +1452,9 @@
   /* Restart the Phy Clock */
   USBx_PCGCCTL = 0U;
 
-#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) \
+ || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) \
+ || defined(STM32F423xx)
   /* Disable HW VBUS sensing */
   USBx->GCCFG &= ~(USB_OTG_GCCFG_VBDEN);
 #else
@@ -1513,13 +1465,17 @@
   USBx->GCCFG |= USB_OTG_GCCFG_NOVBUSSENS;
   USBx->GCCFG &= ~USB_OTG_GCCFG_VBUSBSEN;
   USBx->GCCFG &= ~USB_OTG_GCCFG_VBUSASEN;
-#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
-#if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
+#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) ||
+          defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) ||
+          defined(STM32F423xx) */
+#if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) \
+ || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx)
   /* Disable Battery chargin detector */
   USBx->GCCFG &= ~(USB_OTG_GCCFG_BCDEN);
-#endif /* defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
+#endif /* defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) ||
+          defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */
 
-  if ((USBx->CID & (0x1U << 8)) != 0U)
+  if ((USBx->GUSBCFG & USB_OTG_GUSBCFG_PHYSEL) == 0U)
   {
     if (cfg.speed == USBH_FSLS_SPEED)
     {
@@ -1552,7 +1508,7 @@
   /* Clear all pending HC Interrupts */
   for (i = 0U; i < cfg.Host_channels; i++)
   {
-    USBx_HC(i)->HCINT = 0xFFFFFFFFU;
+    USBx_HC(i)->HCINT = CLEAR_INTERRUPT_MASK;
     USBx_HC(i)->HCINTMSK = 0U;
   }
 
@@ -1560,9 +1516,9 @@
   USBx->GINTMSK = 0U;
 
   /* Clear any pending interrupts */
-  USBx->GINTSTS = 0xFFFFFFFFU;
-
-  if ((USBx->CID & (0x1U << 8)) != 0U)
+  USBx->GINTSTS = CLEAR_INTERRUPT_MASK;
+#if defined (USB_OTG_HS)
+  if (USBx == USB_OTG_HS)
   {
     /* set Rx FIFO size */
     USBx->GRXFSIZ  = 0x200U;
@@ -1570,6 +1526,7 @@
     USBx->HPTXFSIZ = (uint32_t)(((0xE0U << 16) & USB_OTG_HPTXFSIZ_PTXFD) | 0x300U);
   }
   else
+#endif /* defined (USB_OTG_HS) */
   {
     /* set Rx FIFO size */
     USBx->GRXFSIZ  = 0x80U;
@@ -1601,7 +1558,7 @@
   *           HCFG_6_MHZ : Low Speed 6 MHz Clock
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq)
+HAL_StatusTypeDef USB_InitFSLSPClkSel(const USB_OTG_GlobalTypeDef *USBx, uint8_t freq)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1610,15 +1567,15 @@
 
   if (freq == HCFG_48_MHZ)
   {
-    USBx_HOST->HFIR = 48000U;
+    USBx_HOST->HFIR = HFIR_48_MHZ;
   }
   else if (freq == HCFG_6_MHZ)
   {
-    USBx_HOST->HFIR = 6000U;
+    USBx_HOST->HFIR = HFIR_6_MHZ;
   }
   else
   {
-    /* ... */
+    return HAL_ERROR;
   }
 
   return HAL_OK;
@@ -1631,7 +1588,7 @@
   * @note (1)The application must wait at least 10 ms
   *   before clearing the reset bit.
   */
-HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_ResetPort(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1658,7 +1615,7 @@
   *           1 : Activate VBUS
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state)
+HAL_StatusTypeDef USB_DriveVbus(const USB_OTG_GlobalTypeDef *USBx, uint8_t state)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   __IO uint32_t hprt0 = 0U;
@@ -1688,7 +1645,7 @@
   *            @arg HCD_SPEED_FULL: Full speed mode
   *            @arg HCD_SPEED_LOW: Low speed mode
   */
-uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx)
+uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef const *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   __IO uint32_t hprt0 = 0U;
@@ -1702,7 +1659,7 @@
   * @param  USBx  Selected device
   * @retval current frame number
   */
-uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx)
+uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef const *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -1744,7 +1701,7 @@
   uint32_t HostCoreSpeed;
 
   /* Clear old interrupt conditions for this host channel. */
-  USBx_HC((uint32_t)ch_num)->HCINT = 0xFFFFFFFFU;
+  USBx_HC((uint32_t)ch_num)->HCINT = CLEAR_INTERRUPT_MASK;
 
   /* Enable channel interrupts required for this transfer. */
   switch (ep_type)
@@ -1764,11 +1721,13 @@
       }
       else
       {
-        if ((USBx->CID & (0x1U << 8)) != 0U)
+#if defined (USB_OTG_HS)
+        if (USBx == USB_OTG_HS)
         {
           USBx_HC((uint32_t)ch_num)->HCINTMSK |= USB_OTG_HCINTMSK_NYET |
                                                  USB_OTG_HCINTMSK_ACKM;
         }
+#endif /* defined (USB_OTG_HS) */
       }
       break;
 
@@ -1805,6 +1764,9 @@
       break;
   }
 
+  /* Clear Hub Start Split transaction */
+  USBx_HC((uint32_t)ch_num)->HCSPLT = 0U;
+
   /* Enable host channel Halt interrupt */
   USBx_HC((uint32_t)ch_num)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM;
 
@@ -1839,7 +1801,8 @@
   USBx_HC((uint32_t)ch_num)->HCCHAR = (((uint32_t)dev_address << 22) & USB_OTG_HCCHAR_DAD) |
                                       ((((uint32_t)epnum & 0x7FU) << 11) & USB_OTG_HCCHAR_EPNUM) |
                                       (((uint32_t)ep_type << 18) & USB_OTG_HCCHAR_EPTYP) |
-                                      ((uint32_t)mps & USB_OTG_HCCHAR_MPSIZ) | HCcharEpDir | HCcharLowSpeed;
+                                      ((uint32_t)mps & USB_OTG_HCCHAR_MPSIZ) |
+                                      USB_OTG_HCCHAR_MC_0 | HCcharEpDir | HCcharLowSpeed;
 
   if ((ep_type == EP_TYPE_INTR) || (ep_type == EP_TYPE_ISOC))
   {
@@ -1867,53 +1830,118 @@
   uint8_t  is_oddframe;
   uint16_t len_words;
   uint16_t num_packets;
-  uint16_t max_hc_pkt_count = 256U;
+  uint16_t max_hc_pkt_count = HC_MAX_PKT_CNT;
 
-  if (((USBx->CID & (0x1U << 8)) != 0U) && (hc->speed == USBH_HS_SPEED))
+#if defined (USB_OTG_HS)
+  if (USBx == USB_OTG_HS)
   {
-    /* in DMA mode host Core automatically issues ping  in case of NYET/NAK */
-    if ((dma == 1U) && ((hc->ep_type == EP_TYPE_CTRL) || (hc->ep_type == EP_TYPE_BULK)))
+    /* in DMA mode host Core automatically issues ping in case of NYET/NAK */
+    if (dma == 1U)
     {
-      USBx_HC((uint32_t)ch_num)->HCINTMSK &= ~(USB_OTG_HCINTMSK_NYET |
-                                               USB_OTG_HCINTMSK_ACKM |
-                                               USB_OTG_HCINTMSK_NAKM);
-    }
+      if (((hc->ep_type == EP_TYPE_CTRL) || (hc->ep_type == EP_TYPE_BULK)) && (hc->do_ssplit == 0U))
+      {
 
-    if ((dma == 0U) && (hc->do_ping == 1U))
+        USBx_HC((uint32_t)ch_num)->HCINTMSK &= ~(USB_OTG_HCINTMSK_NYET |
+                                                 USB_OTG_HCINTMSK_ACKM |
+                                                 USB_OTG_HCINTMSK_NAKM);
+      }
+    }
+    else
     {
-      (void)USB_DoPing(USBx, hc->ch_num);
-      return HAL_OK;
+      if ((hc->speed == USBH_HS_SPEED) && (hc->do_ping == 1U))
+      {
+        (void)USB_DoPing(USBx, hc->ch_num);
+        return HAL_OK;
+      }
     }
-
   }
+#endif /* defined (USB_OTG_HS) */
 
-  /* Compute the expected number of packets associated to the transfer */
-  if (hc->xfer_len > 0U)
+  if (hc->do_ssplit == 1U)
   {
-    num_packets = (uint16_t)((hc->xfer_len + hc->max_packet - 1U) / hc->max_packet);
+    /* Set number of packet to 1 for Split transaction */
+    num_packets = 1U;
 
-    if (num_packets > max_hc_pkt_count)
+    if (hc->ep_is_in != 0U)
     {
-      num_packets = max_hc_pkt_count;
       hc->XferSize = (uint32_t)num_packets * hc->max_packet;
     }
-  }
-  else
-  {
-    num_packets = 1U;
-  }
+    else
+    {
+      if (hc->ep_type == EP_TYPE_ISOC)
+      {
+        if (hc->xfer_len > ISO_SPLT_MPS)
+        {
+          /* Isochrone Max Packet Size for Split mode */
+          hc->XferSize = hc->max_packet;
+          hc->xfer_len = hc->XferSize;
 
-  /*
-   * For IN channel HCTSIZ.XferSize is expected to be an integer multiple of
-   * max_packet size.
-   */
-  if (hc->ep_is_in != 0U)
-  {
-    hc->XferSize = (uint32_t)num_packets * hc->max_packet;
+          if ((hc->iso_splt_xactPos == HCSPLT_BEGIN) || (hc->iso_splt_xactPos == HCSPLT_MIDDLE))
+          {
+            hc->iso_splt_xactPos = HCSPLT_MIDDLE;
+          }
+          else
+          {
+            hc->iso_splt_xactPos = HCSPLT_BEGIN;
+          }
+        }
+        else
+        {
+          hc->XferSize = hc->xfer_len;
+
+          if ((hc->iso_splt_xactPos != HCSPLT_BEGIN) && (hc->iso_splt_xactPos != HCSPLT_MIDDLE))
+          {
+            hc->iso_splt_xactPos = HCSPLT_FULL;
+          }
+          else
+          {
+            hc->iso_splt_xactPos = HCSPLT_END;
+          }
+        }
+      }
+      else
+      {
+        if ((dma == 1U) && (hc->xfer_len > hc->max_packet))
+        {
+          hc->XferSize = (uint32_t)num_packets * hc->max_packet;
+        }
+        else
+        {
+          hc->XferSize = hc->xfer_len;
+        }
+      }
+    }
   }
   else
   {
-    hc->XferSize = hc->xfer_len;
+    /* Compute the expected number of packets associated to the transfer */
+    if (hc->xfer_len > 0U)
+    {
+      num_packets = (uint16_t)((hc->xfer_len + hc->max_packet - 1U) / hc->max_packet);
+
+      if (num_packets > max_hc_pkt_count)
+      {
+        num_packets = max_hc_pkt_count;
+        hc->XferSize = (uint32_t)num_packets * hc->max_packet;
+      }
+    }
+    else
+    {
+      num_packets = 1U;
+    }
+
+    /*
+    * For IN channel HCTSIZ.XferSize is expected to be an integer multiple of
+    * max_packet size.
+    */
+    if (hc->ep_is_in != 0U)
+    {
+      hc->XferSize = (uint32_t)num_packets * hc->max_packet;
+    }
+    else
+    {
+      hc->XferSize = hc->xfer_len;
+    }
   }
 
   /* Initialize the HCTSIZn register */
@@ -1931,6 +1959,65 @@
   USBx_HC(ch_num)->HCCHAR &= ~USB_OTG_HCCHAR_ODDFRM;
   USBx_HC(ch_num)->HCCHAR |= (uint32_t)is_oddframe << 29;
 
+  if (hc->do_ssplit == 1U)
+  {
+    /* Set Hub start Split transaction */
+    USBx_HC((uint32_t)ch_num)->HCSPLT = ((uint32_t)hc->hub_addr << USB_OTG_HCSPLT_HUBADDR_Pos) |
+                                        (uint32_t)hc->hub_port_nbr | USB_OTG_HCSPLT_SPLITEN;
+
+    /* unmask ack & nyet for IN/OUT transactions */
+    USBx_HC((uint32_t)ch_num)->HCINTMSK |= (USB_OTG_HCINTMSK_ACKM |
+                                            USB_OTG_HCINTMSK_NYET);
+
+    if ((hc->do_csplit == 1U) && (hc->ep_is_in == 0U))
+    {
+      USBx_HC((uint32_t)ch_num)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT;
+      USBx_HC((uint32_t)ch_num)->HCINTMSK |= USB_OTG_HCINTMSK_NYET;
+    }
+
+    if (((hc->ep_type == EP_TYPE_ISOC) || (hc->ep_type == EP_TYPE_INTR)) &&
+        (hc->do_csplit == 1U) && (hc->ep_is_in == 1U))
+    {
+      USBx_HC((uint32_t)ch_num)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT;
+    }
+
+    /* Position management for iso out transaction on split mode */
+    if ((hc->ep_type == EP_TYPE_ISOC) && (hc->ep_is_in == 0U))
+    {
+      /* Set data payload position */
+      switch (hc->iso_splt_xactPos)
+      {
+        case HCSPLT_BEGIN:
+          /* First data payload for OUT Transaction */
+          USBx_HC((uint32_t)ch_num)->HCSPLT |= USB_OTG_HCSPLT_XACTPOS_1;
+          break;
+
+        case HCSPLT_MIDDLE:
+          /* Middle data payload for OUT Transaction */
+          USBx_HC((uint32_t)ch_num)->HCSPLT |= USB_OTG_HCSPLT_XACTPOS_Pos;
+          break;
+
+        case HCSPLT_END:
+          /* End data payload for OUT Transaction */
+          USBx_HC((uint32_t)ch_num)->HCSPLT |= USB_OTG_HCSPLT_XACTPOS_0;
+          break;
+
+        case HCSPLT_FULL:
+          /* Entire data payload for OUT Transaction */
+          USBx_HC((uint32_t)ch_num)->HCSPLT |= USB_OTG_HCSPLT_XACTPOS;
+          break;
+
+        default:
+          break;
+      }
+    }
+  }
+  else
+  {
+    /* Clear Hub Start Split transaction */
+    USBx_HC((uint32_t)ch_num)->HCSPLT = 0U;
+  }
+
   /* Set host channel enable */
   tmpreg = USBx_HC(ch_num)->HCCHAR;
   tmpreg &= ~USB_OTG_HCCHAR_CHDIS;
@@ -1952,7 +2039,7 @@
     return HAL_OK;
   }
 
-  if ((hc->ep_is_in == 0U) && (hc->xfer_len > 0U))
+  if ((hc->ep_is_in == 0U) && (hc->xfer_len > 0U) && (hc->do_csplit == 0U))
   {
     switch (hc->ep_type)
     {
@@ -1998,7 +2085,7 @@
   * @param  USBx  Selected device
   * @retval HAL state
   */
-uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx)
+uint32_t USB_HC_ReadInterrupt(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -2012,16 +2099,21 @@
   *         This parameter can be a value from 1 to 15
   * @retval HAL state
   */
-HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num)
+HAL_StatusTypeDef USB_HC_Halt(const USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t hcnum = (uint32_t)hc_num;
   __IO uint32_t count = 0U;
   uint32_t HcEpType = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_EPTYP) >> 18;
   uint32_t ChannelEna = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) >> 31;
+  uint32_t SplitEna = (USBx_HC(hcnum)->HCSPLT & USB_OTG_HCSPLT_SPLITEN) >> 31;
 
-  if (((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == USB_OTG_GAHBCFG_DMAEN) &&
-      (ChannelEna == 0U))
+  /* In buffer DMA, Channel disable must not be programmed for non-split periodic channels.
+     At the end of the next uframe/frame (in the worst case), the core generates a channel halted
+     and disables the channel automatically. */
+
+  if ((((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == USB_OTG_GAHBCFG_DMAEN) && (SplitEna == 0U)) &&
+      ((ChannelEna == 0U) || (((HcEpType == HCCHAR_ISOC) || (HcEpType == HCCHAR_INTR)))))
   {
     return HAL_OK;
   }
@@ -2091,7 +2183,7 @@
   *         This parameter can be a value from 1 to 15
   * @retval HAL state
   */
-HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num)
+HAL_StatusTypeDef USB_DoPing(const USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
   uint32_t chnum = (uint32_t)ch_num;
@@ -2167,8 +2259,8 @@
   }
 
   /* Clear any pending Host interrupts */
-  USBx_HOST->HAINT = 0xFFFFFFFFU;
-  USBx->GINTSTS = 0xFFFFFFFFU;
+  USBx_HOST->HAINT = CLEAR_INTERRUPT_MASK;
+  USBx->GINTSTS = CLEAR_INTERRUPT_MASK;
 
   (void)USB_EnableGlobalInt(USBx);
 
@@ -2180,7 +2272,7 @@
   * @param  USBx Selected device
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_ActivateRemoteWakeup(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -2198,7 +2290,7 @@
   * @param  USBx Selected device
   * @retval HAL status
   */
-HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx)
+HAL_StatusTypeDef USB_DeActivateRemoteWakeup(const USB_OTG_GlobalTypeDef *USBx)
 {
   uint32_t USBx_BASE = (uint32_t)USBx;
 
@@ -2209,7 +2301,6 @@
 }
 #endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
 
-
 /**
   * @}
   */
diff --git a/_htmresc/favicon.png b/_htmresc/favicon.png
new file mode 100644
index 0000000..06713ee
--- /dev/null
+++ b/_htmresc/favicon.png
Binary files differ
diff --git a/_htmresc/mini-st.css b/_htmresc/mini-st_2020.css
similarity index 77%
rename from _htmresc/mini-st.css
rename to _htmresc/mini-st_2020.css
index 71fbc14..986f4d4 100644
--- a/_htmresc/mini-st.css
+++ b/_htmresc/mini-st_2020.css
@@ -1,39 +1,39 @@
 @charset "UTF-8";
 /*
-  Flavor name: Default (mini-default)
-  Author: Angelos Chalaris (chalarangelo@gmail.com)
-  Maintainers: Angelos Chalaris
-  mini.css version: v3.0.0-alpha.3
+  Flavor name: Custom (mini-custom)
+  Generated online - https://minicss.org/flavors
+  mini.css version: v3.0.1
 */
 /*
   Browsers resets and base typography.
 */
 /* Core module CSS variable definitions */
 :root {
-  --fore-color: #111;
-  --secondary-fore-color: #444;
-  --back-color: #f8f8f8;
-  --secondary-back-color: #f0f0f0;
-  --blockquote-color: #f57c00;
-  --pre-color: #1565c0;
-  --border-color: #aaa;
-  --secondary-border-color: #ddd;
-  --heading-ratio: 1.19;
+  --fore-color: #03234b;
+  --secondary-fore-color: #03234b;
+  --back-color: #ffffff;
+  --secondary-back-color: #ffffff;
+  --blockquote-color: #e6007e;
+  --pre-color: #e6007e;
+  --border-color: #3cb4e6;
+  --secondary-border-color: #3cb4e6;
+  --heading-ratio: 1.2;
   --universal-margin: 0.5rem;
-  --universal-padding: 0.125rem;
-  --universal-border-radius: 0.125rem;
-  --a-link-color: #0277bd;
-  --a-visited-color: #01579b; }
+  --universal-padding: 0.25rem;
+  --universal-border-radius: 0.075rem;
+  --background-margin: 1.5%;
+  --a-link-color: #3cb4e6;
+  --a-visited-color: #8c0078; }
 
 html {
-  font-size: 14px; }
+  font-size: 13.5px; }
 
 a, b, del, em, i, ins, q, span, strong, u {
   font-size: 1em; }
 
 html, * {
-  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Helvetica, sans-serif;
-  line-height: 1.4;
+  font-family: -apple-system, BlinkMacSystemFont, Helvetica, arial, sans-serif;
+  line-height: 1.25;
   -webkit-text-size-adjust: 100%; }
 
 * {
@@ -42,7 +42,10 @@
 body {
   margin: 0;
   color: var(--fore-color);
-  background: var(--back-color); }
+  @background: var(--back-color);
+  background: var(--back-color) linear-gradient(#ffd200, #ffd200) repeat-y left top;
+  background-size: var(--background-margin);
+  }
 
 details {
   display: block; }
@@ -62,9 +65,9 @@
   height: auto; }
 
 h1, h2, h3, h4, h5, h6 {
-  line-height: 1.2;
+  line-height: 1.25;
   margin: calc(1.5 * var(--universal-margin)) var(--universal-margin);
-  font-weight: 500; }
+  font-weight: 400; }
   h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
     color: var(--secondary-fore-color);
     display: block;
@@ -74,21 +77,15 @@
   font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) * var(--heading-ratio)); }
 
 h2 {
-  font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio); );
-  background: var(--mark-back-color);
-  font-weight: 600;
-  padding: 0.1em 0.5em 0.2em 0.5em;
-  color: var(--mark-fore-color); }
-
+  font-size: calc(1rem * var(--heading-ratio) * var(--heading-ratio) );
+  border-style: none none solid none ; 
+  border-width: thin;
+  border-color: var(--border-color); }
 h3 {
-  font-size: calc(1rem * var(--heading-ratio));
-  padding-left: calc(2 * var(--universal-margin)); 
-  /* background: var(--border-color); */
-    }
+  font-size: calc(1rem * var(--heading-ratio) ); }
 
 h4 {
-  font-size: 1rem;);
-  padding-left: calc(4 * var(--universal-margin));  }
+  font-size: calc(1rem * var(--heading-ratio)); }
 
 h5 {
   font-size: 1rem; }
@@ -101,7 +98,7 @@
 
 ol, ul {
   margin: var(--universal-margin);
-  padding-left: calc(6 * var(--universal-margin)); }
+  padding-left: calc(3 * var(--universal-margin)); }
 
 b, strong {
   font-weight: 700; }
@@ -111,7 +108,7 @@
   border: 0;
   line-height: 1.25em;
   margin: var(--universal-margin);
-  height: 0.0625rem;
+  height: 0.0714285714rem;
   background: linear-gradient(to right, transparent, var(--border-color) 20%, var(--border-color) 80%, transparent); }
 
 blockquote {
@@ -121,16 +118,16 @@
   color: var(--secondary-fore-color);
   margin: var(--universal-margin);
   padding: calc(3 * var(--universal-padding));
-  border: 0.0625rem solid var(--secondary-border-color);
-  border-left: 0.375rem solid var(--blockquote-color);
+  border: 0.0714285714rem solid var(--secondary-border-color);
+  border-left: 0.3rem solid var(--blockquote-color);
   border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
   blockquote:before {
     position: absolute;
     top: calc(0rem - var(--universal-padding));
     left: 0;
     font-family: sans-serif;
-    font-size: 3rem;
-    font-weight: 700;
+    font-size: 2rem;
+    font-weight: 800;
     content: "\201c";
     color: var(--blockquote-color); }
   blockquote[cite]:after {
@@ -160,8 +157,8 @@
   background: var(--secondary-back-color);
   padding: calc(1.5 * var(--universal-padding));
   margin: var(--universal-margin);
-  border: 0.0625rem solid var(--secondary-border-color);
-  border-left: 0.25rem solid var(--pre-color);
+  border: 0.0714285714rem solid var(--secondary-border-color);
+  border-left: 0.2857142857rem solid var(--pre-color);
   border-radius: 0 var(--universal-border-radius) var(--universal-border-radius) 0; }
 
 sup, sub, code, kbd {
@@ -204,7 +201,8 @@
   box-sizing: border-box;
   display: flex;
   flex: 0 1 auto;
-  flex-flow: row wrap; }
+  flex-flow: row wrap;
+  margin: 0 0 0 var(--background-margin); }
 
 .col-sm,
 [class^='col-sm-'],
@@ -565,9 +563,9 @@
     order: 999; } }
 /* Card component CSS variable definitions */
 :root {
-  --card-back-color: #f8f8f8;
-  --card-fore-color: #111;
-  --card-border-color: #ddd; }
+  --card-back-color: #3cb4e6;
+  --card-fore-color: #03234b;
+  --card-border-color: #03234b; }
 
 .card {
   display: flex;
@@ -578,7 +576,7 @@
   width: 100%;
   background: var(--card-back-color);
   color: var(--card-fore-color);
-  border: 0.0625rem solid var(--card-border-color);
+  border: 0.0714285714rem solid var(--card-border-color);
   border-radius: var(--universal-border-radius);
   margin: var(--universal-margin);
   overflow: hidden; }
@@ -592,7 +590,7 @@
     margin: 0;
     border: 0;
     border-radius: 0;
-    border-bottom: 0.0625rem solid var(--card-border-color);
+    border-bottom: 0.0714285714rem solid var(--card-border-color);
     padding: var(--universal-padding);
     width: 100%; }
     .card > .sectione.media {
@@ -617,17 +615,18 @@
   width: auto; }
 
 .card.warning {
-/*  --card-back-color: #ffca28; */
   --card-back-color: #e5b8b7;
-  --card-border-color: #e8b825; }
+  --card-fore-color: #3b234b;
+  --card-border-color: #8c0078; }
 
 .card.error {
-  --card-back-color: #b71c1c;
-  --card-fore-color: #f8f8f8;
-  --card-border-color: #a71a1a; }
+  --card-back-color: #464650;
+  --card-fore-color: #ffffff;
+  --card-border-color: #8c0078; }
 
 .card > .sectione.dark {
-  --card-back-color: #e0e0e0; }
+  --card-back-color: #3b234b;
+  --card-fore-color: #ffffff; }
 
 .card > .sectione.double-padded {
   padding: calc(1.5 * var(--universal-padding)); }
@@ -637,12 +636,12 @@
 */
 /* Input_control module CSS variable definitions */
 :root {
-  --form-back-color: #f0f0f0;
-  --form-fore-color: #111;
-  --form-border-color: #ddd;
-  --input-back-color: #f8f8f8;
-  --input-fore-color: #111;
-  --input-border-color: #ddd;
+  --form-back-color: #ffe97f;
+  --form-fore-color: #03234b;
+  --form-border-color: #3cb4e6;
+  --input-back-color: #ffffff;
+  --input-fore-color: #03234b;
+  --input-border-color: #3cb4e6;
   --input-focus-color: #0288d1;
   --input-invalid-color: #d32f2f;
   --button-back-color: #e2e2e2;
@@ -655,13 +654,13 @@
 form {
   background: var(--form-back-color);
   color: var(--form-fore-color);
-  border: 0.0625rem solid var(--form-border-color);
+  border: 0.0714285714rem solid var(--form-border-color);
   border-radius: var(--universal-border-radius);
   margin: var(--universal-margin);
   padding: calc(2 * var(--universal-padding)) var(--universal-padding); }
 
 fieldset {
-  border: 0.0625rem solid var(--form-border-color);
+  border: 0.0714285714rem solid var(--form-border-color);
   border-radius: var(--universal-border-radius);
   margin: calc(var(--universal-margin) / 4);
   padding: var(--universal-padding); }
@@ -671,7 +670,7 @@
   display: table;
   max-width: 100%;
   white-space: normal;
-  font-weight: 700;
+  font-weight: 500;
   padding: calc(var(--universal-padding) / 2); }
 
 label {
@@ -716,7 +715,7 @@
   box-sizing: border-box;
   background: var(--input-back-color);
   color: var(--input-fore-color);
-  border: 0.0625rem solid var(--input-border-color);
+  border: 0.0714285714rem solid var(--input-border-color);
   border-radius: var(--universal-border-radius);
   margin: calc(var(--universal-margin) / 2);
   padding: var(--universal-padding) calc(1.5 * var(--universal-padding)); }
@@ -763,8 +762,8 @@
   [type="radio"]:checked:before {
     border-radius: 100%;
     content: '';
-    top: calc(0.0625rem + var(--universal-padding) / 2);
-    left: calc(0.0625rem + var(--universal-padding) / 2);
+    top: calc(0.0714285714rem + var(--universal-padding) / 2);
+    left: calc(0.0714285714rem + var(--universal-padding) / 2);
     background: var(--input-fore-color);
     width: 0.5rem;
     height: 0.5rem; }
@@ -793,7 +792,7 @@
   display: inline-block;
   background: var(--button-back-color);
   color: var(--button-fore-color);
-  border: 0.0625rem solid var(--button-border-color);
+  border: 0.0714285714rem solid var(--button-border-color);
   border-radius: var(--universal-border-radius);
   padding: var(--universal-padding) calc(1.5 * var(--universal-padding));
   margin: var(--universal-margin);
@@ -814,7 +813,7 @@
 
 .button-group {
   display: flex;
-  border: 0.0625rem solid var(--button-group-border-color);
+  border: 0.0714285714rem solid var(--button-group-border-color);
   border-radius: var(--universal-border-radius);
   margin: var(--universal-margin); }
   .button-group > button, .button-group [type="button"], .button-group > [type="submit"], .button-group > [type="reset"], .button-group > .button, .button-group > [role="button"] {
@@ -826,13 +825,13 @@
     border-radius: 0;
     box-shadow: none; }
   .button-group > :not(:first-child) {
-    border-left: 0.0625rem solid var(--button-group-border-color); }
+    border-left: 0.0714285714rem solid var(--button-group-border-color); }
   @media screen and (max-width: 499px) {
     .button-group {
       flex-direction: column; }
       .button-group > :not(:first-child) {
         border: 0;
-        border-top: 0.0625rem solid var(--button-group-border-color); } }
+        border-top: 0.0714285714rem solid var(--button-group-border-color); } }
 
 /*
   Custom elements for forms and input elements.
@@ -874,29 +873,29 @@
 */
 /* Navigation module CSS variable definitions */
 :root {
-  --header-back-color: #f8f8f8;
-  --header-hover-back-color: #f0f0f0;
-  --header-fore-color: #444;
-  --header-border-color: #ddd;
-  --nav-back-color: #f8f8f8;
-  --nav-hover-back-color: #f0f0f0;
-  --nav-fore-color: #444;
-  --nav-border-color: #ddd;
-  --nav-link-color: #0277bd;
-  --footer-fore-color: #444;
-  --footer-back-color: #f8f8f8;
-  --footer-border-color: #ddd;
-  --footer-link-color: #0277bd;
-  --drawer-back-color: #f8f8f8;
-  --drawer-hover-back-color: #f0f0f0;
-  --drawer-border-color: #ddd;
-  --drawer-close-color: #444; }
+  --header-back-color: #03234b;
+  --header-hover-back-color: #ffd200;
+  --header-fore-color: #ffffff;
+  --header-border-color: #3cb4e6;
+  --nav-back-color: #ffffff;
+  --nav-hover-back-color: #ffe97f;
+  --nav-fore-color: #e6007e;
+  --nav-border-color: #3cb4e6;
+  --nav-link-color: #3cb4e6;
+  --footer-fore-color: #ffffff;
+  --footer-back-color: #03234b;
+  --footer-border-color: #3cb4e6;
+  --footer-link-color: #3cb4e6;
+  --drawer-back-color: #ffffff;
+  --drawer-hover-back-color: #ffe97f;
+  --drawer-border-color: #3cb4e6;
+  --drawer-close-color: #e6007e; }
 
 header {
-  height: 3.1875rem;
+  height: 2.75rem;
   background: var(--header-back-color);
   color: var(--header-fore-color);
-  border-bottom: 0.0625rem solid var(--header-border-color);
+  border-bottom: 0.0714285714rem solid var(--header-border-color);
   padding: calc(var(--universal-padding) / 4) 0;
   white-space: nowrap;
   overflow-x: auto;
@@ -927,7 +926,7 @@
 nav {
   background: var(--nav-back-color);
   color: var(--nav-fore-color);
-  border: 0.0625rem solid var(--nav-border-color);
+  border: 0.0714285714rem solid var(--nav-border-color);
   border-radius: var(--universal-border-radius);
   margin: var(--universal-margin); }
   nav * {
@@ -946,10 +945,10 @@
     nav .sublink-1:before {
       position: absolute;
       left: calc(var(--universal-padding) - 1 * var(--universal-padding));
-      top: -0.0625rem;
+      top: -0.0714285714rem;
       content: '';
       height: 100%;
-      border: 0.0625rem solid var(--nav-border-color);
+      border: 0.0714285714rem solid var(--nav-border-color);
       border-left: 0; }
   nav .sublink-2 {
     position: relative;
@@ -957,16 +956,16 @@
     nav .sublink-2:before {
       position: absolute;
       left: calc(var(--universal-padding) - 3 * var(--universal-padding));
-      top: -0.0625rem;
+      top: -0.0714285714rem;
       content: '';
       height: 100%;
-      border: 0.0625rem solid var(--nav-border-color);
+      border: 0.0714285714rem solid var(--nav-border-color);
       border-left: 0; }
 
 footer {
   background: var(--footer-back-color);
   color: var(--footer-fore-color);
-  border-top: 0.0625rem solid var(--footer-border-color);
+  border-top: 0.0714285714rem solid var(--footer-border-color);
   padding: calc(2 * var(--universal-padding)) var(--universal-padding);
   font-size: 0.875rem; }
   footer a, footer a:visited {
@@ -1013,7 +1012,7 @@
     height: 100vh;
     overflow-y: auto;
     background: var(--drawer-back-color);
-    border: 0.0625rem solid var(--drawer-border-color);
+    border: 0.0714285714rem solid var(--drawer-border-color);
     border-radius: 0;
     margin: 0;
     z-index: 1110;
@@ -1060,38 +1059,36 @@
 */
 /* Table module CSS variable definitions. */
 :root {
-  --table-border-color: #aaa;
-  --table-border-separator-color: #666;
-  --table-head-back-color: #e6e6e6;
-  --table-head-fore-color: #111;
-  --table-body-back-color: #f8f8f8;
-  --table-body-fore-color: #111;
-  --table-body-alt-back-color: #eee; }
+  --table-border-color: #03234b;
+  --table-border-separator-color: #03234b;
+  --table-head-back-color: #03234b;
+  --table-head-fore-color: #ffffff;
+  --table-body-back-color: #ffffff;
+  --table-body-fore-color: #03234b;
+  --table-body-alt-back-color: #f4f4f4; }
 
 table {
   border-collapse: separate;
   border-spacing: 0;
-  : margin: calc(1.5 * var(--universal-margin)) var(--universal-margin);
+  margin: 0;
   display: flex;
   flex: 0 1 auto;
   flex-flow: row wrap;
   padding: var(--universal-padding);
-  padding-top: 0;
-	margin: calc(1.5 * var(--universal-margin)) var(--universal-margin);	}
+  padding-top: 0; }
   table caption {
-    font-size: 1.25 * rem;
+    font-size: 1rem;
     margin: calc(2 * var(--universal-margin)) 0;
     max-width: 100%;
-    flex: 0 0 100%;
-		text-align: left;}
+    flex: 0 0 100%; }
   table thead, table tbody {
     display: flex;
     flex-flow: row wrap;
-    border: 0.0625rem solid var(--table-border-color); }
+    border: 0.0714285714rem solid var(--table-border-color); }
   table thead {
     z-index: 999;
     border-radius: var(--universal-border-radius) var(--universal-border-radius) 0 0;
-    border-bottom: 0.0625rem solid var(--table-border-separator-color); }
+    border-bottom: 0.0714285714rem solid var(--table-border-separator-color); }
   table tbody {
     border-top: 0;
     margin-top: calc(0 - var(--universal-margin));
@@ -1109,11 +1106,11 @@
   table td {
     background: var(--table-body-back-color);
     color: var(--table-body-fore-color);
-    border-top: 0.0625rem solid var(--table-border-color); }
+    border-top: 0.0714285714rem solid var(--table-border-color); }
 
 table:not(.horizontal) {
   overflow: auto;
-  max-height: 850px; }
+  max-height: 100%; }
   table:not(.horizontal) thead, table:not(.horizontal) tbody {
     max-width: 100%;
     flex: 0 0 100%; }
@@ -1134,32 +1131,33 @@
   border: 0; }
   table.horizontal thead, table.horizontal tbody {
     border: 0;
+    flex: .2 0 0;
     flex-flow: row nowrap; }
   table.horizontal tbody {
     overflow: auto;
     justify-content: space-between;
-    flex: 1 0 0;
-    margin-left: calc( 4 * var(--universal-margin));
+    flex: .8 0 0;
+    margin-left: 0;
     padding-bottom: calc(var(--universal-padding) / 4); }
   table.horizontal tr {
     flex-direction: column;
     flex: 1 0 auto; }
   table.horizontal th, table.horizontal td {
-    width: 100%;
+    width: auto;
     border: 0;
-    border-bottom: 0.0625rem solid var(--table-border-color); }
+    border-bottom: 0.0714285714rem solid var(--table-border-color); }
     table.horizontal th:not(:first-child), table.horizontal td:not(:first-child) {
       border-top: 0; }
   table.horizontal th {
     text-align: right;
-    border-left: 0.0625rem solid var(--table-border-color);
-    border-right: 0.0625rem solid var(--table-border-separator-color); }
+    border-left: 0.0714285714rem solid var(--table-border-color);
+    border-right: 0.0714285714rem solid var(--table-border-separator-color); }
   table.horizontal thead tr:first-child {
     padding-left: 0; }
   table.horizontal th:first-child, table.horizontal td:first-child {
-    border-top: 0.0625rem solid var(--table-border-color); }
+    border-top: 0.0714285714rem solid var(--table-border-color); }
   table.horizontal tbody tr:last-child td {
-    border-right: 0.0625rem solid var(--table-border-color); }
+    border-right: 0.0714285714rem solid var(--table-border-color); }
     table.horizontal tbody tr:last-child td:first-child {
       border-top-right-radius: 0.25rem; }
     table.horizontal tbody tr:last-child td:last-child {
@@ -1191,12 +1189,12 @@
       display: table-row-group; }
     table tr, table.horizontal tr {
       display: block;
-      border: 0.0625rem solid var(--table-border-color);
+      border: 0.0714285714rem solid var(--table-border-color);
       border-radius: var(--universal-border-radius);
-      background: #fafafa;
+      background: #ffffff;
       padding: var(--universal-padding);
       margin: var(--universal-margin);
-      margin-bottom: calc(2 * var(--universal-margin)); }
+      margin-bottom: calc(1 * var(--universal-margin)); }
     table th, table td, table.horizontal th, table.horizontal td {
       width: auto; }
     table td, table.horizontal td {
@@ -1211,9 +1209,6 @@
       border-top: 0; }
     table tbody tr:last-child td, table.horizontal tbody tr:last-child td {
       border-right: 0; } }
-:root {
-  --table-body-alt-back-color: #eee; }
-
 table tr:nth-of-type(2n) > td {
   background: var(--table-body-alt-back-color); }
 
@@ -1234,8 +1229,8 @@
 */
 /* Contextual module CSS variable definitions */
 :root {
-  --mark-back-color: #0277bd;
-  --mark-fore-color: #fafafa; }
+  --mark-back-color: #3cb4e6;
+  --mark-fore-color: #ffffff; }
 
 mark {
   background: var(--mark-back-color);
@@ -1243,11 +1238,11 @@
   font-size: 0.95em;
   line-height: 1em;
   border-radius: var(--universal-border-radius);
-  padding: calc(var(--universal-padding) / 4) calc(var(--universal-padding) / 2); }
+  padding: calc(var(--universal-padding) / 4) var(--universal-padding); }
   mark.inline-block {
     display: inline-block;
     font-size: 1em;
-    line-height: 1.5;
+    line-height: 1.4;
     padding: calc(var(--universal-padding) / 2) var(--universal-padding); }
 
 :root {
@@ -1314,8 +1309,8 @@
 
 :root {
   --modal-overlay-color: rgba(0, 0, 0, 0.45);
-  --modal-close-color: #444;
-  --modal-close-hover-color: #f0f0f0; }
+  --modal-close-color: #e6007e;
+  --modal-close-hover-color: #ffe97f; }
 
 [type="checkbox"].modal {
   height: 1px;
@@ -1368,13 +1363,14 @@
       z-index: 1211; }
 
 :root {
-  --collapse-label-back-color: #e8e8e8;
-  --collapse-label-fore-color: #212121;
-  --collapse-label-hover-back-color: #f0f0f0;
-  --collapse-selected-label-back-color: #ececec;
-  --collapse-border-color: #ddd;
-  --collapse-content-back-color: #fafafa;
-  --collapse-selected-label-border-color: #0277bd; }
+  --collapse-label-back-color: #03234b;
+  --collapse-label-fore-color: #ffffff;
+  --collapse-label-hover-back-color: #3cb4e6;
+  --collapse-selected-label-back-color: #3cb4e6;
+  --collapse-border-color: var(--collapse-label-back-color);
+  --collapse-selected-border-color: #ceecf8;
+  --collapse-content-back-color: #ffffff;
+  --collapse-selected-label-border-color: #3cb4e6; }
 
 .collapse {
   width: calc(100% - 2 * var(--universal-margin));
@@ -1395,13 +1391,13 @@
   .collapse > label {
     flex-grow: 1;
     display: inline-block;
-    height: 1.5rem;
+    height: 1.25rem;
     cursor: pointer;
-    transition: background 0.3s;
+    transition: background 0.2s;
     color: var(--collapse-label-fore-color);
     background: var(--collapse-label-back-color);
-    border: 0.0625rem solid var(--collapse-border-color);
-    padding: calc(1.5 * var(--universal-padding)); }
+    border: 0.0714285714rem solid var(--collapse-selected-border-color);
+    padding: calc(1.25 * var(--universal-padding)); }
     .collapse > label:hover, .collapse > label:focus {
       background: var(--collapse-label-hover-back-color); }
     .collapse > label + div {
@@ -1418,7 +1414,7 @@
       max-height: 1px; }
   .collapse > :checked + label {
     background: var(--collapse-selected-label-back-color);
-    border-bottom-color: var(--collapse-selected-label-border-color); }
+    border-color: var(--collapse-selected-label-border-color); }
     .collapse > :checked + label + div {
       box-sizing: border-box;
       position: relative;
@@ -1427,13 +1423,13 @@
       overflow: auto;
       margin: 0;
       background: var(--collapse-content-back-color);
-      border: 0.0625rem solid var(--collapse-border-color);
+      border: 0.0714285714rem solid var(--collapse-selected-border-color);
       border-top: 0;
       padding: var(--universal-padding);
       clip: auto;
       -webkit-clip-path: inset(0%);
       clip-path: inset(0%);
-      max-height: 850px; }
+      max-height: 100%; }
   .collapse > label:not(:first-of-type) {
     border-top: 0; }
   .collapse > label:first-of-type {
@@ -1450,11 +1446,8 @@
 /*
   Custom elements for contextual background elements, toasts and tooltips.
 */
-mark.secondary {
-  --mark-back-color: #d32f2f; }
-
 mark.tertiary {
-  --mark-back-color: #308732; }
+  --mark-back-color: #3cb4e6; }
 
 mark.tag {
   padding: calc(var(--universal-padding)/2) var(--universal-padding);
@@ -1463,9 +1456,9 @@
 /*
   Definitions for progress elements and spinners.
 */
-/* Progess module CSS variable definitions */
+/* Progress module CSS variable definitions */
 :root {
-  --progress-back-color: #ddd;
+  --progress-back-color: #3cb4e6;
   --progress-fore-color: #555; }
 
 progress {
@@ -1558,45 +1551,53 @@
     filter: invert(100%); }
 
 span.icon-alert {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12' y2='16'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-bookmark {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z'%3E%3C/path%3E%3C/svg%3E"); }
 span.icon-calendar {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-credit {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='1' y1='10' x2='23' y2='10'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-edit {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.66V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.34'%3E%3C/path%3E%3Cpolygon points='18 2 22 6 12 16 8 16 8 12 18 2'%3E%3C/polygon%3E%3C/svg%3E"); }
 span.icon-link {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3Cpolyline points='15 3 21 3 21 9'%3E%3C/polyline%3E%3Cline x1='10' y1='14' x2='21' y2='3'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-help {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='17' x2='12' y2='17'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-home {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'%3E%3C/path%3E%3Cpolyline points='9 22 9 12 15 12 15 22'%3E%3C/polyline%3E%3C/svg%3E"); }
 span.icon-info {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='16' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='8' x2='12' y2='8'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-lock {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E"); }
 span.icon-mail {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); }
 span.icon-location {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'%3E%3C/path%3E%3Ccircle cx='12' cy='10' r='3'%3E%3C/circle%3E%3C/svg%3E"); }
 span.icon-phone {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); }
 span.icon-rss {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'%3E%3C/path%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'%3E%3C/path%3E%3Ccircle cx='5' cy='19' r='1'%3E%3C/circle%3E%3C/svg%3E"); }
 span.icon-search {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-settings {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E"); }
 span.icon-share {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='3'%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='19' r='3'%3E%3C/circle%3E%3Cline x1='8.59' y1='13.51' x2='15.42' y2='17.49'%3E%3C/line%3E%3Cline x1='15.41' y1='6.51' x2='8.59' y2='10.49'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-cart {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='21' r='1'%3E%3C/circle%3E%3Ccircle cx='20' cy='21' r='1'%3E%3C/circle%3E%3Cpath d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'%3E%3C/path%3E%3C/svg%3E"); }
 span.icon-upload {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'%3E%3C/path%3E%3Cpolyline points='17 8 12 3 7 8'%3E%3C/polyline%3E%3Cline x1='12' y1='3' x2='12' y2='15'%3E%3C/line%3E%3C/svg%3E"); }
 span.icon-user {
-  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); }
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2303234b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='12' cy='7' r='4'%3E%3C/circle%3E%3C/svg%3E"); }
+
+/*
+  Definitions for STMicroelectronics icons (https://brandportal.st.com/document/26).
+*/
+span.icon-st-update {
+  background-image: url("Update.svg"); }
+span.icon-st-add {
+  background-image: url("Add button.svg"); }
 
 /*
   Definitions for utilities and helper classes.
@@ -1604,7 +1605,7 @@
 /* Utility module CSS variable definitions */
 :root {
   --generic-border-color: rgba(0, 0, 0, 0.3);
-  --generic-box-shadow: 0 0.25rem 0.25rem 0 rgba(0, 0, 0, 0.125), 0 0.125rem 0.125rem -0.125rem rgba(0, 0, 0, 0.25); }
+  --generic-box-shadow: 0 0.2857142857rem 0.2857142857rem 0 rgba(0, 0, 0, 0.125), 0 0.1428571429rem 0.1428571429rem -0.1428571429rem rgba(0, 0, 0, 0.125); }
 
 .hidden {
   display: none !important; }
@@ -1622,7 +1623,7 @@
   overflow: hidden !important; }
 
 .bordered {
-  border: 0.0625rem solid var(--generic-border-color) !important; }
+  border: 0.0714285714rem solid var(--generic-border-color) !important; }
 
 .rounded {
   border-radius: var(--universal-border-radius) !important; }
@@ -1697,4 +1698,14 @@
     clip-path: inset(100%) !important;
     overflow: hidden !important; } }
 
-/*# sourceMappingURL=mini-default.css.map */
+/*# sourceMappingURL=mini-custom.css.map */
+
+img[alt="ST logo"] { display: block; margin: auto; width: 75%; max-width: 250px; min-width: 71px; }
+img[alt="Cube logo"] { float: right; width: 30%; max-width: 10rem; min-width: 8rem; padding-right: 1rem;}
+
+.figure {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  text-align: center;
+}
\ No newline at end of file
diff --git a/_htmresc/st_logo.png b/_htmresc/st_logo.png
deleted file mode 100644
index 8b80057..0000000
--- a/_htmresc/st_logo.png
+++ /dev/null
Binary files differ
diff --git a/_htmresc/st_logo_2020.png b/_htmresc/st_logo_2020.png
new file mode 100644
index 0000000..d6cebb5
--- /dev/null
+++ b/_htmresc/st_logo_2020.png
Binary files differ