|  The hardware
abstraction layer (HAL) provides low level drivers and the hardware
interfacing methods to interact with upper layer (application,
libraries and stacks).  It includes a complete set of ready-to-use
APIs, that are feature-oriented instead of IP-Oriented to simplify user
application development.  
| Update History
            V1.2.8/ 13-February-2020Main Changes General updates  to fix known defects and enhancements implementationHAL/LL GPIO updateUpdate GPIO
      initialization sequence to avoid unwanted pulse on GPIO Pin's
 HAL I2C updateUpdate
      HAL_I2C_EV_IRQHandler() API to fix I2C send break issue 
 Add
       additional check on hi2c->hdmatx,
       hdmatx->XferCpltCallback, hi2c->hdmarx,
       hdmarx->XferCpltCallback in I2C_Master_SB() API to
       avoid enabling DMA request when IT mode is used.
 Update
      HAL_I2C_ER_IRQHandler() API to fix acknowledge failure issue with
      I2C memory IT processes
  Add stop
       condition generation when NACK occurs.
 Update HAL_I2C_Init()
      API to force software reset before setting new I2C configuration
 Update
      HAL I2C processes to report ErrorCode when wrong I2C start condition
      occurs
  Add
       new ErrorCode define: HAL_I2C_WRONG_START
  Set ErrorCode
       parameter in I2C handle to HAL_I2C_WRONG_START
 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).
 Add
       additional check on hi2c->hdmtx and hi2c->hdmarx before
       resetting DMA Tx/Rx complete callback
 HAL ADC UpdateAdd "ADC_INTERNAL_NONE" channel to disable the VBAT & TSVREFE channel.
 HAL DCMI updateAdd DCMI_SyncUnmaskTypeDef structure and HAL_DCMI_ConfigSyncUnmask() API to manage embedded synchronization delimiters unmasks
 HAL EXTI updateGeneral update to enhance HAL EXTI driver robustness Add additional assert check on EXTI config linesUpdate to compute EXTI line mask before read/write access to EXTI registers
 Update EXTI callbacks management to be compliant with reference manual: only one PR register for rising and falling interrupts.Update
parameters in EXTI_HandleTypeDef structure: merge HAL EXTI
RisingCallback and FallingCallback in only one PendingCallback.Remove HAL_EXTI_RISING_CB_ID and HAL_EXTI_FALLING_CB_ID values from EXTI_CallbackIDTypeDef enumeration.
 Update HAL_EXTI_IRQHandler() API to serve interrupts correctly.Update to compute EXTI line mask before handle EXTI interrupt.
 Update to support GPIO port interrupts:Add new "GPIOSel" parameter in EXTI_ConfigTypeDef structure
 HAL HASH updateNull pointer on handler "hhash" is now checked before accessing structure member "hhash->Init.DataType" in the following API:
 Following interrupt-based
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.
 HAL_HASH_SHA1_Accmlt_IT()
 HAL_HASHEx_SHA224_Accmlt_IT()
 HAL_HASHEx_SHA256_Accmlt_IT()
 Following aliases have been added (just for clarity sake) as they shall be used at the end of the computation of a multi-buffers message and not at the start:
 HAL_HASH_SHA1_Accmlt_End() to be used instead of HAL_HASH_SHA1_Start()
 HAL_HASH_MD5_Accmlt_End() to be used instead of HAL_HASH_MD5_Start()
 HAL_HASH_SHA1_Accmlt_End_IT() to be used instead of HAL_HASH_SHA1_Start_IT()
 HAL_HASH_MD5_Accmlt_End_IT() to be used instead of HAL_HASH_MD5_Start_IT()
 HAL_HASHEx_SHA224_Accmlt_End() to be used instead of HAL_HASHEx_SHA224_Start()
 HAL_HASHEx_SHA256_Accmlt_End() to be used instead of HAL_HASHEx_SHA256_Start()
 HAL_HASHEx_SHA224_Accmlt_End_IT() to be used instead of HAL_HASHEx_SHA224_Start_IT()
 HAL_HASHEx_SHA256_Accmlt_End_IT() to be used instead of HAL_HASHEx_SHA256_Start_IT()
 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_Accmlt_End() could not be named HAL_HASHEx_SHA256_Accumulate_End(). Otherwise the name would have conflicted with HAL_HASHEx_SHA256_Accumulate_End_IT()). In order to have aligned names following APIs have been renamed:
 HAL_HASH_MD5_Accumulate() renamed HAL_HASH_MD5_Accmlt()
 HAL_HASH_SHA1_Accumulate() renamed HAL_HASH_SHA1_Accmlt()
 HAL_HASHEx_SHA224_Accumulate() renamed HAL_HASHEx_SHA224_Accmlt()
 HAL_HASHEx_SHA256_Accumulate() renamed HAL_HASHEx_SHA256_Accmlt()
 HASH handler state is no more reset to HAL_HASH_STATE_READY once DMA has been started in the following APIs:HAL_HASH_MD5_Start_DMA()HAL_HMAC_MD5_Start_DMA()HAL_HASH_SHA1_Start_DMA()HAL_HMAC_SHA1_Start_DMA()
 HASH phase state is now set to HAL_HASH_PHASE_READY once the digest has been read in the following APIs:HASH_IT()HMAC_Processing()HASH_Start()HASH_Finish()
 Case of a large buffer scattered around in memory each piece of which is not necessarily a multiple of 4 bytes in length.In
section "##### How to use this driver #####", sub-section "*** Remarks
on message length ***" added to provide recommendations to follow in
such case.No modification of the driver as the root-cause is at design-level.
 HAL SDMMC updateFix typo in "FileFormatGroup" parameter in the HAL_MMC_CardCSDTypeDef and HAL_SD_CardCSDTypeDef structures.Fix an improve handle state and error managementRename the defined MMC card capacity type to be more meaningful:Update MMC_HIGH_VOLTAGE_CARD to MMC LOW_CAPACITY_CARDUpdate MMC_DUAL_VOLTAGE_CRAD to MMC_HIGH_CAPACITY_CARD
 HAL QSPI updateRemove Lock mechanism from HAL_QSPI_Init() and HAL_QSPI_DeInit() APIs
 HAL LPTIM updateAdd a polling mechanism to check on LPTIM_FLAG_XXOK flags in different API Add LPTIM_WaitForFlag() API to wait for flag set.Perform new checks on HAL_LPTIM_STATE_TIMEOUT.
 Workaround to fix MCU slack in sleep mode
Update __HAL_LPTIM_DISABLE () macro used to disable LPTIM HW instanceRemove the LPTIM_CR_ENABLE bit clear.Add a new API  LPTIM_Disable() defined in  hal_lptim.c
 Update __HAL_LPTIM_RESET_HANDLE_STATE(__HANDLE__) macro by adding a specific .... when using callback register__HAL_LPTIM_ENABLERemove usseless check on LPTIM2 in the LL driver since F7 support only one instance of LPTIM.Update the  LL_LPTIM_DISABLE() API used to disable LPTIM HW instanceMove API definition to ll_lptim.c
 HAL TIM updateAdd new macros to enable and disable the fast mode when using the one pulse mode to output a waveform with a minimum delay__HAL_TIM_ENABLE_OCxFAST() and __HAL_TIM_DISABLE_OCxFAST().
 Update Encoder interface mode to keep TIM_CCER_CCxNP bits lowAdd TIM_ENCODERINPUTPOLARITY_RISING and TIM_ENCODERINPUTPOLARITY_FALLING definitions to determine encoder input polarity.Add IS_TIM_ENCODERINPUT_POLARITY() macro to check the encoder input polarity.Update HAL_TIM_Encoder_Init() API Replace IS_TIM_IC_POLARITY() macro by IS_TIM_ENCODERINPUT_POLARITY() macro.
 Correct wrong
      instance parameter check in encoder modeReplace
        IS_TIM_CC2_INSTANCE by IS_TIM_ENCODER_INTERFACE_INSTANCE in encoder
        interface : 
 HAL_TIM_Encoder_Start_IT()
 HAL_TIM_Encoder_Stop_IT()
 Replace
        IS_TIM_DMA_CC_INSTANCE by IS_TIM_ENCODER_INTERFACE_INSTANCE in encoder
        interface in DMA mode : 
 HAL_TIM_Encoder_Start_DMA()
 HAL_TIM_Encoder_Stop_DMA()
 Update
      HAL_TIMEx_MasterConfigSynchronization() API to avoid functional errors
      and assert fails when using some TIM instances as input trigger.
 Replace IS_TIM_SYNCHRO_INSTANCE()
       macro by IS_TIM_MASTER_INSTANCE() macro. 
 Add IS_TIM_SLAVE_INSTANCE()
       macro to check on TIM_SMCR_MSM bit.
 Provide new
      API to set and clear UIFREMAP
 Add new
       definition for TIM Update Interrupt Flag Remap
 Add new macro
       in HAL driver to enable and desable the  Update Interrupt Flag
       Remap
  __HAL_TIM_UIFREMAP_ENABLE()
 __HAL_TIM_UIFREMAP_DISABLE()/__HAL_TIM_GET_UIFCPY
        macro
 Add new
       mecanism to check whether the update interrupt flag (UIF) copy is
       set or not 
 Add the
        __HAL_TIM_GET_UIFCPY() macro in the HAL driver
 Add
        LL_TIM_IsActiveUIFCPY() API in the LL driver
 Add new macro
       to check on the Update Interrupt Flag Remap mode
 Remove usseless
      define in the LL driver 
 TIMx_AF1_BKINE
       / TIMx_AF1_BKDFBKE /  TIMx_AF2_BK2INE /  TIMx_AF2_BK2DFBKE /
        TIMx_AF2_BK2INP
 HAL SMARTCARD updateUpdate SMARTCARD_SetConfig() API.Split HAL_RCC_GetPCLK1Freq() and
HAL_RCC_GetPCLK2Freq() macros from the BRR calculation.
 HAL IRDA updateUpdate IRDA_SetConfig() API Split HAL_RCC_GetPCLK1Freq() and
HAL_RCC_GetPCLK2Freq() macros from the IRDA_DIV_SAMPLING16() macro.
 Update some API desciptionHAL_IRDA_Transmit() / HAL_IRDA_Transmit_IT()HAL_IRDA_Receive() / HAL_IRDA_Receive_IT()HAL_IRDA_Transmit_DMA() / HAL_IRDA_Receive_DMA()
 HAL RCC updateUpdate the HAL_RCC_ClockConfig() and HAL_RCC_DeInit() API to don't overwrite the custom tick priorityUpdate HAL_RCC_OscConfig() API to don't return HAL_ERROR if request repeats the current PLL configuration
 HAL/LL USART updateHAL/LL USB update Add handling USB host babble error interrupt Fix Enabling ULPI interface for platforms that integrates USB HS PHY Fix Host data toggling for IN Iso transfers Ensure to disable USB EP during endpoint deactivation
 V1.2.7/ 08-February-2019Main Changes 
General updates  to fix known defects and enhancements implementationGeneral updates  to fix CodeSonar compilation warningsGeneral updates  to fix SW4STM32 compilation errors under LinuxGeneral updates to fix the user manual .chm filesAdd support of HAL callback registration feature 
Add new HAL EXTI driverThe following changes done on the HAL drivers require an update on the application code based on older HAL versions
                Rework of HAL CRYP driver (compatibility break) 
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.The
new HAL CRYP driver is the recommended version. It is located as usual
in Drivers/STM32F7xx_HAL_Driver/Src and
Drivers/STM32f7xx_HAL_Driver/Inc folders. It can be enabled through
switch HAL_CRYP_MODULE_ENABLED in stm32f7xx_hal_conf.hThe legacy HAL CRYP driver is no longer supported. 
HAL/LL Generic updateAdd support of HAL callback registration featureThe feature disabled by default is available for the following HAL drivers:ADC, CAN, CEC, CRYP, DAC, DCMI, DFSDM, DMA2D, DSI, ETH, HASH, HCD, I2C, SMBUS, UART,
USART, IRDA, JPEG, SMARTCARD, LPTIM, LTDC, MDIOS, MMC, NAND, NOR, PCD,
QSPI, RNG, RTC, SAI, SD, SDRAM, SRAM, SPDIFRX, SPI, I2S, TIM and WWDG
 The feature may be enabled individually per HAL PPP driver by setting the corresponding definition USE_HAL_PPP_REGISTER_CALLBACKS
to 1U in stm32f7xx_hal_conf.h project configuration file (template
file stm32f7xx_hal_conf_template.h available from 
Drivers/STM32F7xx_HAL_Driver/Inc)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().
 General updates  to fix MISRA 2012 compilation errors
HAL_IS_BIT_SET()/HAL_IS_BIT_CLR() macros implementation update"stdio.h" include updated with "stddef.h"
 HAL GPIO Update
HAL_GPIO_TogglePin() API implementation update: to improve robustness
HAL_GPIO_DeInit() API update to ensure clear all GPIO EXTI pending interrupts. 
              HAL CRYP update
The CRYP_InitTypeDef is no more supported, changed by CRYP_ConfigTypedef to allow changing parameters using HAL_CRYP_setConfig() API without reinitialize the CRYP IP using the HAL_CRYP_Init() API
New parameters added in the CRYP_ConfigTypeDef structure: B0 and DataWidthUnitInput data size parameter is added in the CRYP_HandleTypeDef structureAdd new APIs to manage the CRYP configuration: HAL_CRYP_SetConfig()HAL_CRYP_GetConfig()
 
Add new APIs to manage the Key derivation:HAL_CRYPEx_EnableAutoKeyDerivation()HAL_CRYPEx_DisableAutoKeyDerivation()
 Add new APIs to encrypt and decrypt data:HAL_CRYP_Encypt()HAL_CRYP_Decypt()HAL_CRYP_Encypt_IT()HAL_CRYP_Decypt_IT()HAL_CRYP_Encypt_DMA()HAL_CRYP_Decypt_DMA()
 Add new APIs to generate TAG:HAL_CRYPEx_AESGCM_GenerateAuthTAG()HAL_CRYPEx_AESCCM_GenerateAuthTAG()
 HAL I2C update
I2C API changes for MISRA-C 2012 compliancy:Rename HAL_I2C_Master_Sequential_Transmit_IT() to HAL_I2C_Master_Seq_Transmit_IT()Rename HAL_I2C_Master_Sequentiel_Receive_IT() to HAL_I2C_Master_Seq_Receive_IT()
Rename HAL_I2C_Slave_Sequentiel_Transmit_IT() to HAL_I2C_Slave_Seq_Transmit_IT() Rename HAL_I2C_Slave_Sequentiel_Receive_DMA() to HAL_I2C_Slave_Seq_Receive_DMA()
 Add support of I2C repeated start feature in DMA Mode:With the following new API's
 HAL_I2C_Master_Seq_Transmit_DMA()
  HAL_I2C_Master_Seq_Receive_DMA()
 HAL_I2C_Slave_Seq_Transmit_DMA()
 HAL_I2C_Slave_Seq_Receive_DMA()
 Add new I2C transfer options to easy manage the sequential transfers
I2C_OTHER_FRAMEI2C_OTHER_AND_LAST_FRAME
 LL  RCC update
                Update LL_RCC_GetSAIClockFreq() API to return the right frequency according to the SAI clock source HAL RNG update
Update to manage RNG error code: 
Add ErrorCode parameter in HAL RNG Handler structureAdd HAL_RNG_GetError() API
 HAL Lock/Unlock mecanism update   LL ADC update
Fix VREFINT/TEMPSENSOR calibration address registers for STM32F74x/75x/F76/F77 devices
                  Note: For STM32F72/F73 the issue will be fixed in next release
 HAL_ADC_Start(), HAL_ADC_Start_IT() and HAL_ADC_Start_DMA() update to prevention from starting ADC2 or ADC3 once multimode is enabled HAL DFSDM  update
General updates to be compliant with DFSDM bits naming used in CMSIS files. HAL CAN  update
                Update possible values list for FilterActivation parameter in CAN_FilterTypeDef structure
CAN_FILTER_ENABLE instead of ENABLE
CAN_FILTER_DISABLE instead of DISABLE HAL CEC  update
Update HAL CEC State management method:Remove HAL_CEC_StateTypeDef structure parametersAdd new defines for CEC states
 HAL DMA2D  update
Remove unused DMA2D_ColorTypeDef structure to be compliant with MISRAC 2012 Rule 2.3General update to use dedicated defines for DMA2D_BACKGROUND_LAYER and DMA2D_FOREGROUND_LAYER instead of numerical values: 0/1. HAL/LL RTC update
                HAL/ LL drivers optimization
                  HAL driver: remove unused variablesLL driver: getter APIs optimization HAL JPEG update
                Update parameters type in JPEG_ConfTypeDef structure to be aligned with 32-bits
 HAL SPI  update
                Overall rework of the driver for a more efficient implementation 
                Add the following new macros:
                  SPI_CHECK_FLAG() 
SPI_CHECK_IT_SOURCE() 
 Add HAL_SPIEx_FlushRxFifo() API to flush the SPI FIFO RX.
Update HAL_SPI_Abort() to fix abort issue in SPI TX or Rx mode only Update HAL_SPI_Transmit()/HAL_SPI_Receive() API's to fix memory overflow issue. HAL I2S  update
Overall rework of the driver for a more efficient implementation 
Add the following new macros:I2S_CHECK_FLAG()I2S_CHECK_IT_SOURCE()
 Update HAL_I2S_Transmit()/HAL_I2S_Receive() API's to fix memory overflow issue. HAL/LL TIM update
Move the following TIM structures from stm32f4xx_hal_tim_ex.h into stm32f4xx_hal_tim.h
TIM_MasterConfigTypeDefTIM_BreakDeadTimeConfigTypeDef
 Add new TIM Callbacks API's:HAL_TIM_PeriodElapsedHalfCpltCallback()HAL_TIM_IC_CaptureHalfCpltCallback()HAL_TIM_PWM_PulseFinishedHalfCpltCallback()HAL_TIM_TriggerHalfCpltCallback()
 TIM API changes for MISRA-C 2012 compliancy: 
Rename HAL_TIM_SlaveConfigSynchronization to HAL_TIM_SlaveConfigSynchroRename HAL_TIM_SlaveConfigSynchronization_IT to HAL_TIM_SlaveConfigSynchro_ITRename HAL_TIMEx_ConfigCommutationEvent to HAL_TIMEx_ConfigCommutEventRename HAL_TIMEx_ConfigCommutationEvent_IT to HAL_TIMEx_ConfigCommutEvent_ITRename HAL_TIMEx_ConfigCommutationEvent_DMA to HAL_TIMEx_ConfigCommutEvent_DMARename HAL_TIMEx_CommutationCallback to HAL_TIMEx_CommutCallbackRename HAL_TIMEx_DMACommutationCplt to TIMEx_DMACommutationCplt
 HAL UART  update
Overall rework of the driver for a more efficient implementation 
Add the following UART API's in stm32f7xx_hal_uart_ex.c:
                   HAL_RS485Ex_Init()HAL_MultiProcessorEx_AddressLength_Set()
 HAL/LL USB update
Rework USB interrupt handler and improve HS DMA support in Device modeFix BCD handling for OTG instance in device modecleanup reference to low speed in device modeallow writing TX FIFO in case of transfer length is equal to available space in the TX FIFOFix Toggle OUT interrupt channel in host mode LL IWDG update
Update LL inline macros to use IWDGx parameter instead of IWDG instance defined in CMSIS device
 V1.2.6 / 29-June-2018Main Changes Update to support STM32F730xx and STM32F750xx value linesHAL DMA updateDMA_CHANNEL_8 to DMA_CHANNEL_15 are also defined in case of STM32F730xx (same features as STM32F733xx line)
 HAL FLASH updateAdd support of STM32F730xx with 4 FLash sectors of 16KB each.Add support of STM32F750xx with 2 FLash sectors of 32KB each.
 HAL GPIO updateAdd support of STM32F730xx value line : same features as STM32F733xx lineAdd support of STM32F750xx value line : same features as STM32F756xx line
 HAL RCC updateAdd support of STM32F730xx value line : same features as STM32F733xx lineAdd support of STM32F750xx value line : same features as STM32F756xx line
 V1.2.5 / 02-February-2018Main
Changes General updates to fix known defects and enhancements implementationHAL updateAdd new macro to get variable aligned on 32-bytes, required for cache maintenance purposeUpdate UNUSED() macro implementation to avoid GCC warningThe warning is detected when the UNUSED() macro is called from C++ file
 HAL SAI updateUpdate HAL_SAI_DMAStop() and HAL_SAI_Abort() process to fix the lock/unlock audio issue 
 HAL PWR updateUpdate
HAL_PWR_EnterSLEEPMode() and HAL_PWR_EnterSTOPMode() APIs to ensure
that all instructions finished before entering STOP mode. 
 HAL HCD updateAdd new callback to be used to handle usb device connection/disconnectionHAL_HCD_PortEnabled_Callback()
 HAL_HCD_PortDisabled_Callback()
 Update to prevent reactivate host interrrupt channel
 V1.2.4 / 22-December-2017Main
Changes General updates to fix known defects and enhancements implementationThe following changes done on the HAL drivers require an update on the application code based on older HAL versionsRework of HAL CAN driver (compatibility break) 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.The
new HAL CAN driver is the recommended version. It is located as usual
in Drivers/STM32F7xx_HAL_Driver/Src and
Drivers/STM32f7xx_HAL_Driver/Inc folders. It can be enabled through
switch HAL_CAN_MODULE_ENABLED in stm32f7xx_hal_conf.hThe
legacy HAL CAN driver is also present in the release in
Drivers/STM32F7xx_HAL_Driver/Src/Legacy and
Drivers/STM32F7xx_HAL_Driver/Inc/Legacy folders for software
compatibility reasons. Its usage is not recommended as deprecated. It
can however be enabled through switch HAL_CAN_LEGACY_MODULE_ENABLED in
stm32f7xx_hal_conf.h
 HAL updateUpdate HAL driver to allow user to change systick period to 1ms , 10 ms or 100 ms :Add the following API's :  HAL_GetTickPrio() : Returns a tick priority.HAL_SetTickFreq() : Sets new tick frequency.HAL_GetTickFreq() : Returns tick frequency.
 Add HAL_TickFreqTypeDef enumeration for the different Tick Frequencies : 10 Hz , 100 Hz and 1KHz (default).
 HAL CAN updateFields of CAN_InitTypeDef structure are reworked: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
 HAL_CAN_Init() is split into both HAL_CAN_Init() and HAL_CAN_Start() API'sHAL_CAN_Transmit()
is replaced by HAL_CAN_AddTxMessage() to place Tx Request, then
HAL_CAN_GetTxMailboxesFreeLevel() for polling until completion.HAL_CAN_Transmit_IT()
is replaced by HAL_CAN_ActivateNotification() to enable transmit IT, then
HAL_CAN_AddTxMessage() for place Tx request.HAL_CAN_Receive()
is replaced by HAL_CAN_GetRxFifoFillLevel() for polling until
reception, then HAL_CAN_GetRxMessage() to get Rx message.
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
HAL_CAN_Slepp() is renamed as HAL_CAN_RequestSleep()HAL_CAN_TxCpltCallback() is split into HAL_CAN_TxMailbox0CompleteCallback(), HAL_CAN_TxMailbox1CompleteCallback() and HAL_CAN_TxMailbox2CompleteCallback().HAL_CAN_RxCpltCallback is split into HAL_CAN_RxFifo0MsgPendingCallback() and HAL_CAN_RxFifo1MsgPendingCallback().
 More complete "How to use the new driver" is detailed in the driver header section itself.
 HAL RCC updateAdd new LL macro LL_RCC_PLL_SetMainSource()
        allowing to configure PLL clock source
 Add new HAL macros__HAL_RCC_GET_RTC_SOURCE()
        allowing to get the RTC clock source__HAL_RCC_GET_RTC_HSE_PRESCALER()
        allowing to get the HSE clock divider for RTC peripheral
 Ensure reset of CIR and CSR
       registers when issuing HAL_RCC_DeInit()/LL_RCC_DeInit functionsUpdate HAL_RCC_GetSysClockFreq()
       to avoid risk of rounding error which may leads to a wrong returned
       value. Update HAL_RCC_DeInit()
        and LL_RCC_DeInit() APIs toBe able to return HAL/LL
        statusAdd checks for HSI, PLL and
        PLLI2S  ready before modifying RCC CFGR registersClear all interrupt flagsInitialize systick interrupt
        period
 HAL DMA updateAdd clean of callbacks in HAL_DMA_DeInit() APIFix wrong DMA_FLAG_FEIFO_4 and DMA_FLAGDMAEIFO_4 defines values 
 HAL I2C updateUpdate Interface APIs headers to remove confusing message about device addressUpdate I2C_WaitOnRXNEFlagUntilTimeout() to resolve a race condition between STOPF and RXNE FlagsUpdate I2C_TransferConfig() to fix wrong bit management
 LL USART updateAdd assert macros to check USART BaudRate register
 HAL ETH updateDo{..} While(0) insured in multi statement macros :__HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER() __HAL_ETH_WAKEUP_EXTI_DISABLE_FALLINGRISING_TRIGGER() 
 HAL FLASH updateHAL_FLASH_Unlock() update to return state error when the FLASH is already unlocked
 HAL GPIO updateAdd missing define of GPIO_PIN_2 in GPIOK_PIN_AVAILABLE list
 HAL PCD updateDo{..} While(0)  insured in multi statement macros
 LL UTILS updatestm32f7xx_ll_utils.h : Update LL_GetPackageType command to return uint32_t instead of uint16_t
 HAL TIM updatestm32f7xx_hal_tim_ex.c : Update HAL_TIMEx_ConfigBreakDeadTime API to avoid to block timer behavior when remains in the state HAL_TIM_STATE_BUSY.
 stm32f7xx_hal_tim.h : Fix __HAL_TIM_SET_PRESCALER() macroFix typos in some exported macros description 
 LL FMC updateHAL_SDRAM_SendCommand() API: Remove the timeout check
 HAL NAND updateFix wrong check for NAND status
 V1.2.3 / 25-August-2017Main
Changes General updates 
to fix known defects and enhancements implementationRemove Date and Version from header filesUpdate HAL drivers to refer to the new CMSIS bit position defines instead of usage the POSITION_VAL() macroHAL CAN updateAdd missing unlock in HAL_CAN_Receive_IT() process
 HAL DCMI updateHAL DCMI driver clean-up: remove non referenced callback APIs: HAL_DCMI_VsyncCallback() and HAL_DCMI_HsyncCallback()
 HAL DFSDM updateFix cast issue on APIs that return signed integer value (uint32_t) 
 HAL DMA updateHAL DMA driver clean-up: remove non referenced callback APIs: HAL_DMA_CleanCallbacks()
 HAL FLASH updateFLASH_Program_DoubleWord() API: Replace 64-bit accesses with 2 double words operations
 HAL Generic updateUpdate assert_param() macro definition to be in line with stm32_ll_utils.c driver
 HAL GPIO updateGPIOK_PIN_AVAILABLE() assert macro update to allow possibility to configure GPIO_PIN_2
 HAL LTDC updateRename HAL_LTDC_LineEvenCallback() API to HAL_LTDC_LineEventCallback()
 HAL PCD updateUpdate HAL_PCD_IRQHandler() API to fix transfer issues when USB HS is used with DMA enabled
 HAL RCC updateUpdate HAL_RCC_GetOscConfig() API to:set PLLR in the RCC_OscInitStructcheck on null pointer
 Update HAL_RCC_ClockConfig() API to:check on null pointeroptimize code size by updating the handling method of the SWS bitsupdate
to use  __HAL_FLASH_GET_LATENCY() flash macro instead of using
direct register access to LATENCY bits in FLASH ACR register. 
 HAL SAI updateUpdate HAL_SAI_DMAStop() API to flush fifo after disabling SAI
 HAL TIM updateUpdate HAL_TIMEx_ConfigBreakInput() API to support BKINP/BKIN2P polarity bits.
 LL DMA updateUpdate
SET_BIT() access to LIFCR and HIFCR registers by WRITE_REG() to avoid
read access that is not allowed when clearing DMA flags
 LL I2C updateUpdate LL_I2C_Init() API to avoid enabling own address1 when OwnAddress1 parameter value in the I2C_InitStruct is equal to 0.
 LL TIM updateUpdate LL_TIM_EnableUpdateEvent() API to clear UDIS bit in CR1 register instead of setting it.Update LL_TIM_DisableUpdateEvent() API to set UDIS bit in CR1 register instead of clearing it.
 LL USB updateUpdate USB_EP0StartXfer() API to fix transfer issues when USB HS is used with DMA enabled
 V1.2.2 / 14-April-2017Main
Changes General updates 
to fix known defects and enhancements implementationHAL CAN updateAdd
      management of overrun error. Allow
      possibility to receive messages from the 2 RX FIFOs in parallel via
      interrupt.Fix message
      lost issue with specific sequence of transmit requests.Handle
      transmission failure with error callback, when NART is enabled.Add __HAL_CAN_CANCEL_TRANSMIT() call to abort transmission when
      timeout is reached
 V1.2.1 / 24-March-2017Main
Changes Update CHM UserManuals to support LL driversGeneral updates 
to fix known defects and enhancements implementation
 HAL DMA updateUpdate HAL_DMA_Init() function to adjust the compatibility check between FIFO threshold and burst configuration
 HAL MMC updateUpdate HAL_MMC_InitCard() function with proper initialization sequence adding a delay after MMC clock enableUpdate MMC_DMAError() function ignore DMA FIFO error as not impacting the data transfer
 HAL SD updateUpdate HAL_SD_InitCard() function with proper initialization sequence adding a delay after SD clock enableUpdate SD_DMAError() function ignore DMA FIFO error as not impacting the data transfer
 HAL NAND updateUpdate HAL_NAND_Address_Inc() function implementation for proper plane number check
 LL SDMMC updateUpdate SDMMC_DATATIMEOUT value with appropriate value needed by reading and writing operations of SD and MMC cards
 LL RTC updateLL_RTC_TIME_Get() and LL_RTC_DATE_Get() inline macros optimization
 LL ADC updateFix wrong ADC group injected sequence configurationLL_ADC_INJ_SetSequencerRanks()
and LL_ADC_INJ_GetSequencerRanks() API's update to take in
consideration the ADC number of conversionsUpdate the defined values for ADC group injected seqencer ranks 
 V1.2.0 / 30-December-2016Main
Changes Official release to add the support of STM32F722xx, STM32F723xx, STM32F732xx and STM32F733xx devicesAdd Low Layer drivers allowing performance and footprint optimizationLow
Layer drivers APIs provide register level programming: require deep
knowledge of peripherals described in STM32F7xx Reference ManualsLow
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 additionnal Low Level Bus, System and
Utilities APIs.Low Layer drivers APIs are implemented as static inline function in new Inc/stm32f7xx_ll_ppp.h files for PPP peripherals, there is no configuration file and each stm32f7xx_ll_ppp.h file must be included in user code.
 General updates 
to fix known defects and enhancements implementationAdd new HAL MMC and SMBUS driversHAL Cortex updateMove HAL_MPU_Disable() and HAL_MPU_Enable() from stm32f7xx_hal_cortex.h to stm32f7xx_hal_cortex.cClear the whole MPU control register in HAL_MPU_Disable() API
 HAL CRYP updateHAL DMA updateAdd a check on DMA stream instance in HAL_DMA_DeInit() API
 HAL ETH update Fix wrong definitions in driver header file stm32f7_hal_eth.h
 HAL FLASH updateSupport OTP program operationAdd the support of PCROP featureUpdate the clearing of error flags
 HAL I2C updateAlign driver source code with other STM32 families
 HAL JPEG update Update the output data management when HAL_JPEG_Pause() is performed during the last data sending
 HAL RCC updateEnable PWR only if necessary for LSE configuration in HAL_RCC_OscConfig() APIRename RCC_LPTIM1CLKSOURCE_PCLK define to RCC_LPTIM1CLKSOURCE_PCLK1Rename RCC_DFSDM1CLKSOURCE_PCLK define to RCC_DFSDM1CLKSOURCE_PCLK2
 HAL SPI updateClear RX FIFO at the end of each transaction
 HAL UART updateRemove USART_CR2_LINEN bit clearing when initializing in synchronous mode
 HAL USB updateAdd support of embedded USB PHY ControllerAdd support of Battery Charging Detector (BCD) feature
 LL SDMMC updateAdd new SDMMC_CmdSDEraseStartAdd, SDMMC_CmdSDEraseEndAdd, SDMMC_CmdOpCondition and SDMMC_CmdSwitch functions
 LL USB updateUpdate PENA bit clearing in OTG_HPRT0 register
 The following changes done on the HAL drivers require an update on the 
application code based on older HAL versionsHAL SD updateOverall rework of the driver for a more efficient implementationModify initialization API and structuresModify Read / Write sequences: separate transfer process and SD Cards state management Adding interrupt mode for Read / Write operations
 Update the HAL_SD_IRQHandler function by optimizing the management of interrupt errors
 Refer to the following example to identify the changes: BSP example and USB_Device/MSC_Standalone application
 HAL TIM updateAdd new AutoReloadPreload field in TIM_Base_InitTypeDef structureRefer to the TIM examples to identify the changes 
 HAL NAND updateModify NAND_AddressTypeDef, NAND_DeviceConfigTypeDef and NAND_HandleTypeDef structures fieldsAdd new HAL_NAND_ConfigDevice API
 V1.1.1 / 01-July-2016Main
Changes HAL DMA update Update HAL_DMA_PollForTransfer() function implementation to avoid early TIMEOUT error. 
 HAL JPEG updateUpdate HAL_JPEG_ConfigEncoding() function to properly set the ImageHeight and ImageWidth
 HAL SPI updateUpdate SPI_DMATransmitReceiveCplt() function to properly handle the CRC and avoid conditional statement duplication
 V1.1.0 / 22-April-2016Main
Changes Official release to add the support of STM32F765xx, STM32F767xx, STM32F768xx, STM32F769xx, STM32F777xx, STM32F778xx and STM32F779xx devices
General updates 
to fix known defects and enhancements implementationAdd new HAL drivers for DFSDM, DSI, JPEG and MDIOS peripheralsEnhance HAL delay and timebase implementationAdd new 
drivers stm32f7xx_hal_timebase_tim_template.c, stm32f7xx_hal_timebase_rtc_alarm_template.c and 
stm32f7xx_hal_timebase_rtc_wakeup_template.c which override the native HAL time 
base functions (defined as weak) to either use the TIM or the RTC as time base tick source. For 
more details about the usage of these drivers, please refer to HAL\HAL_TimeBase 
examples and FreeRTOS-based applications
 The following changes done on the HAL drivers require an update on the 
application code based on HAL V1.0.4HAL UART, USART, IRDA, SMARTCARD, SPI, I2C, QSPI (referenced as PPP here below) driversAdd PPP error management during DMA process. This requires the following updates on user application:Configure and enable 
the PPP IRQ in HAL_PPP_MspInit() function
 In stm32f7xx_it.c file, 
PPP_IRQHandler() 
function: add a call to 
HAL_PPP_IRQHandler() function
Add and customize 
the Error Callback API: HAL_PPP_ErrorCallback()
 HAL I2C (referenced as PPP here below) drivers:
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:Configure and enable 
the PPP IRQ in HAL_PPP_MspInit() function
 In stm32f7xx_it.c file, 
PPP_IRQHandler() 
function: add a call to 
HAL_PPP_IRQHandler() function
 HAL IWDG driver: rework overall driver for better implementationRemove HAL_IWDG_Start(), HAL_IWDG_MspInit() and HAL_IWDG_GetState() APIs
 HAL WWDG driver: rework overall driver for better implementation
Remove HAL_WWDG_Start(), HAL_WWDG_Start_IT(), 
HAL_WWDG_MspDeInit() and HAL_WWDG_GetState() APIs 
Update the HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg, uint32_t counter)  function and API  by removing the  "counter" parameter
 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:Configure and enable 
the QSPI IRQ in HAL_QSPI_MspInit() functionIn stm32f7xx_it.c file, QSPI_IRQHandler() 
function: add a call to 
HAL_QSPI_IRQHandler() function
 HAL CEC driver:  Overall driver rework with compatibility break versus previous HAL versionRemove HAL CEC polling Process functions: HAL_CEC_Transmit() and HAL_CEC_Receive()
Remove
HAL CEC receive interrupt process function HAL_CEC_Receive_IT()
and enable the "receive"  mode during the Init phase
Rename HAL_CEC_GetReceivedFrameSize() funtion to HAL_CEC_GetLastReceivedFrameSize()
Add new HAL APIs: HAL_CEC_SetDeviceAddress() and  
HAL_CEC_ChangeRxBuffer()
Remove the 'InitiatorAddress' field from the CEC_InitTypeDef 
structure and manage it as a parameter in the HAL_CEC_Transmit_IT() function
Add new parameter 'RxFrameSize' in HAL_CEC_RxCpltCallback() function
Move CEC Rx buffer pointer from CEC_HandleTypeDef structure to 
CEC_InitTypeDef structure
 HAL CAN update HAL CEC updateOverall driver rework with break of compatibility with HAL 
V1.0.4
 Remove the HAL CEC polling Process: HAL_CEC_Transmit() and HAL_CEC_Receive()
 Remove the HAL CEC receive interrupt process (HAL_CEC_Receive_IT()) and manage the "Receive" mode enable within the Init phase
Rename HAL_CEC_GetReceivedFrameSize() function to HAL_CEC_GetLastReceivedFrameSize() function
 Add new HAL APIs: HAL_CEC_SetDeviceAddress() and  
HAL_CEC_ChangeRxBuffer()
 Remove the 'InitiatorAddress' field from the CEC_InitTypeDef 
structure and manage it as a parameter in the HAL_CEC_Transmit_IT() function
 Add new parameter 'RxFrameSize' in HAL_CEC_RxCpltCallback() function
 Move CEC Rx buffer pointer from CEC_HandleTypeDef structure to 
CEC_InitTypeDef structure 
 Update driver to implement the new CEC state machine: 
 Add new "rxState" field in 
CEC_HandleTypeDef structure to provide the CEC 
state 
information related to Rx Operations
 Rename "state" 
field in CEC_HandleTypeDef structure to "gstate": CEC state information 
related to global Handle management and Tx Operations
Update CEC process 
to manage the new CEC states.
Update __HAL_CEC_RESET_HANDLE_STATE() macro to handle the new CEC 
state parameters (gState, rxState)
 HAL DMA update Add
new APIs HAL_DMA_RegisterCallback() and HAL_DMA_UnRegisterCallback to
register/unregister the different callbacks identified by
the enum typedef HAL_DMA_CallbackIDTypeDefAdd new API HAL_DMA_Abort_IT() to abort DMA transfer under interrupt context
The new registered Abort callback is called when DMA transfer abortion is completed
 Add the check of 
compatibility between FIFO threshold level and size of the memory burst in the 
HAL_DMA_Init() API
Add new Error Codes: 
HAL_DMA_ERROR_PARAM, HAL_DMA_ERROR_NO_XFER and 
HAL_DMA_ERROR_NOT_SUPPORTEDRemove all DMA states 
related to MEM0/MEM1 in HAL_DMA_StateTypeDef
 HAL DMA2D update Update the 
HAL_DMA2D_DeInit() function to:
Abort transfer in case 
of ongoing DMA2D transfer
 Reset DMA2D control 
registers
Update 
HAL_DMA2D_Abort() to disable DMA2D interrupts after stopping transferOptimize 
HAL_DMA2D_IRQHandler() by reading status registers only once
Update 
HAL_DMA2D_ProgramLineEvent() function to:
Return HAL error state 
in case of wrong line value
 Enable line interrupt 
after setting the line watermark configuration
Add new HAL_DMA2D_CLUTLoad() and HAL_DMA2D_CLUTLoad_IT() 
functions to start DMA2D CLUT loadingHAL_DMA2D_CLUTLoading_Abort() 
function to abort the DMA2D CLUT loading
 HAL_DMA2D_CLUTLoading_Suspend() 
function to suspend the DMA2D CLUT loading
 HAL_DMA2D_CLUTLoading_Resume() 
function to resume the DMA2D CLUT loading
 Add new DMA2D dead time 
management:HAL_DMA2D_EnableDeadTime() 
function to enable DMA2D dead time featureHAL_DMA2D_DisableDeadTime() 
function to disable DMA2D dead time featureHAL_DMA2D_ConfigDeadTime() 
function to configure dead time
 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)
 HAL DCMI update Rename DCMI_DMAConvCplt 
to DCMI_DMAXferCplt
Update HAL_DCMI_Start_DMA() function to Enable the DCMI peripheral
Add new timeout 
implementation based on cpu cycles for DCMI stop
Add HAL_DCMI_Suspend() 
function to suspend DCMI capture
Add HAL_DCMI_Resume() 
function to resume capture after DCMI suspend
Update lock mechanism 
for DCMI process
Update HAL_DCMI_IRQHandler() function to:
Add error management in 
case DMA errors through XferAbortCallback() and 
HAL_DMA_Abort_IT()
 Optimize code by using 
direct register read
Move
the content of the stm32f7xx_hal_dcmi_ex.c/.h files to common driver
files (the extension files are kept empty for projects compatibility
reason)
 HAL FLASH update Add the support of Dual BANK featureAdd __HAL_FLASH_CALC_BOOT_BASE_ADR() macro to calculate the FLASH Boot Base AdressMove Flash total sector define to CMSIS header files
 HAL FMC updateUpdate FMC_NORSRAM_Init() to remove the Burst access mode configurationUpdate FMC_SDRAM_Timing_Init() to fix initialization issue when configuring 2 SDRAM banks
 HAL HCD updateUpdate HCD_Port_IRQHandler() to be compliant with new Time base implementation
 HAL 
I2C update
Add the support of I2C fast mode plus (FM+)Update Polling management:The Timeout value must be estimated for the overall process duration: the Timeout measurement is cumulative
 Add the management of Abort service: Abort DMA transfer through interruptIn the case of Master Abort IT transfer usage:Add new user HAL_I2C_AbortCpltCallback() to inform user of the end of abort processA new abort state is defined in the HAL_I2C_StateTypeDef structure
 Add the management of I2C peripheral errors, ACK
failure and STOP condition detection during DMA process. This requires the following updates
on user application:Configure and enable the I2C IRQ in HAL_I2C_MspInit() functionIn stm32f7xx_it.c file, I2C_IRQHandler() function: add a call to HAL_I2C_IRQHandler() functionAdd and customize the Error Callback API: HAL_I2C_ErrorCallback()Refer to the I2C_EEPROM or I2C_TwoBoards_ComDMA project examples usage of the API
 Add the support of I2C repeated start feature:
With the following new APIs
 HAL_I2C_Master_Sequential_Transmit_IT()
HAL_I2C_Master_Sequential_Receive_IT()
HAL_I2C_Master_Abort_IT()
HAL_I2C_Slave_Sequential_Transmit_IT()
HAL_I2C_Slave_Sequential_Receive_IT()
HAL_I2C_EnableListen_IT()
HAL_I2C_DisableListen_IT()
 HAL_I2C_ListenCpltCallback()
Several 
updates on HAL I2C driver to implement the new I2C state machine: 
Add new API to get the I2C mode: 
HAL_I2C_GetMode()
Update I2C process to 
manage the new I2C states
HAL IWDG updateOverall rework of the driver for a more efficient implementationRemove the following APIs:HAL_IWDG_Start()HAL_IWDG_MspInit()HAL_IWDG_GetState()
 Update implementation:HAL_IWDG_Init() : this function insures the configuration and the start of the IWDG counterHAL_IWDG_Refresh() : this function insures the reload of the IWDG counter
 Refer to the following example to identify the changes: IWDG_Example
 HAL LPTIM updateUpdate 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 
Update HAL_LPTIM_TimeOut_Stop_IT() and HAL_LPTIM_Counter_Stop_IT( ) APIs to 
disable WakeUp Timer EXTI interrupt 
 HAL LTDC updateUpdate 
HAL_LTDC_IRQHandler() to manage the case of reload interruptAdd LTDC extension driver needed with DSIAdd HAL_LTDC_SetPitch() function for pitch reconfigurationAdd new callback API 
HAL_LTDC_ReloadEventCallback()
Add HAL_LTDC_Reload() 
to configure LTDC reload feature
Add new No Reload LTDC 
variant APIs
 HAL_LTDC_ConfigLayer_NoReload() 
to configure the LTDC Layer according to the specified without reloading
HAL_LTDC_SetWindowSize_NoReload() 
to set the LTDC window size without reloading
HAL_LTDC_SetWindowPosition_NoReload() 
to set the LTDC window position without reloading
HAL_LTDC_SetPixelFormat_NoReload() 
to reconfigure the pixel format without reloading
HAL_LTDC_SetAlpha_NoReload() 
to reconfigure the layer alpha value without reloading
HAL_LTDC_SetAddress_NoReload() 
to reconfigure the frame buffer Address without reloading
HAL_LTDC_SetPitch_NoReload() 
to reconfigure the pitch for specific cases
HAL_LTDC_ConfigColorKeying_NoReload() 
to configure the color keying without reloading
HAL_LTDC_EnableColorKeying_NoReload() 
to enable the color keying without reloading
HAL_LTDC_DisableColorKeying_NoReload() 
to disable the color keying without reloading
HAL_LTDC_EnableCLUT_NoReload() 
to enable the color lookup table without reloading
HAL_LTDC_DisableCLUT_NoReload() 
to disable the color lookup table without 
reloadingNote:
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”
 HAL NOR updateUpdate NOR_ADDR_SHIFT macro implementation
 HAL PCD updateUpdate HAL_PCD_IRQHandler() to get HCLK frequency before setting TRDT value
 HAL QSPI updateUpdate to manage QSPI error management during DMA processImprove the DMA transmit process by using QSPI TC interrupt instead of waiting loop on TC flag under DMA ISRThese two improvements require the following updates on user application:Configure and enable the QSPI IRQ in HAL_QSPI_MspInit() functionIn stm32f7xx_it.c file, QSPI_IRQHandler() function: add a call to HAL_QSPI_IRQHandler() functionAdd and customize the Error Callback API: HAL_QSPI_ErrorCallback()
 Add
the management of non-blocking transfer abort service: HAL_QSPI_Abort_IT(). In
this case the user must:Add new callback HAL_QSPI_AbortCpltCallback() to inform user at the end of abort processA new value of State in the HAL_QSPI_StateTypeDef provides the current state during the abort phase
 Polling management update:The Timeout value user must be estimated for the overall process duration: the Timeout measurement is cumulative. 
 Refer to the following examples, which describe the changes:QSPI_ReadWrite_DMAQSPI_MemoryMappedQSPI_ExecuteInPlace
 Add two new APIs for the QSPI fifo threshold:
HAL_QSPI_SetFifoThreshold(): configure the FIFO threshold of 
the QSPI
HAL_QSPI_GetFifoThreshold(): give the current FIFO 
threshold
Fix wrong data size management in HAL_QSPI_Receive_DMA()
 HAL RCC updateUpdate HAL_RCC_PeriphCLKConfig() function to adjust the SystemCoreClockOptimize HAL_RCC_ClockConfig() function codeOptimize internal oscillators and PLL startup times
 HAL RTC update Update HAL_RTC_GetTime() with proper 'SubSeconds' and 'SecondFraction' management
 HAL SAI update Update SAI state in case of TIMEOUT error within the HAL_SAI_Transmit() / HAL_SAI_Receive()
 Update HAL_SAI_IRQHandler:
Add error management in 
case DMA errors through XferAbortCallback() and HAL_DMA_Abort_IT()
Add error management in 
case of IT
 Move
SAI_BlockSynchroConfig() and SAI_GetInputClock() functions to
stm32f7xx_hal_sai.c/.h files (extension files are kept empty for
projects compatibility reason)
 HAL SPDIFRX updateOverall driver update for wait on flag management optimization 
 HAL SPI updateOverall driver optimization to improve performance in polling/interrupt mode to reach maximum peripheral frequencyPolling mode:
Replace the use of SPI_WaitOnFlagUnitTimeout() function by "if" 
statement to check on RXNE/TXE flage while transferring 
data
  Interrupt mode:Minimize access on SPI registers
 All modes:Add the USE_SPI_CRC switch to minimize the number of statements when CRC calculation is disabledUpdate timeout management to check on global processesUpdate error code management in all processes
 Update DMA process:
Add the management of SPI peripheral errors during DMA process. This requires the following updates in
the user application:Configure and enable the SPI IRQ in HAL_SPI_MspInit() functionIn stm32f7xx_it.c file, SPI_IRQHandler() function: add a call to HAL_SPI_IRQHandler() functionAdd and customize the Error Callback API: HAL_SPI_ErrorCallback()Refer to the following example which describe the changes: SPI_FullDuplex_ComDMA
 HAL TIM update Update HAL_TIM_ConfigOCrefClear() function for proper configuration of the SMCR registerAdd new function HAL_TIMEx_ConfigBreakInput() to configure the break input source
 HAL UART, USART, SMARTCARD and IRDA (referenced as PPP here below) update 
Update Polling management:The user Timeout value must be estimated for the overall process duration: the Timeout measurement is cumulative
 Update DMA process:Update the management of PPP peripheral errors during DMA process. This requires the following updates in user application:Configure and enable the PPP IRQ in HAL_PPP_MspInit() functionIn stm32f7xx_it.c file, PPP_IRQHandler() function: add a call to HAL_PPP_IRQHandler() functionAdd and customize the Error Callback API: HAL_PPP_ErrorCallback()
 HAL WWDG update Overall rework of the driver for more efficient implementationRemove the following APIs:HAL_WWDG_Start()HAL_WWDG_Start_IT()HAL_WWDG_MspDeInit()HAL_WWDG_GetState()
 Update implementation:HAL_WWDG_Init()A new parameter in the Init Structure: EWIMode
 HAL_WWDG_MspInit()HAL_WWDG_Refresh() This function insures the reload of the counterThe "counter" parameter has been removed
 HAL_WWDG_IRQHandler()HAL_WWDG_EarlyWakeupCallback() is the new prototype of HAL_WWDG_WakeupCallback()
 Refer to the following example to identify the changes: WWDG_Example
 V1.0.4 / 09-December-2015Main
Changes HAL Generic updateUpdate HAL 
weak empty callbacks to prevent unused argument compilation warnings with some 
compilers by calling the following line:
 HAL ETH update Update HAL_ETH_Init() function to add timeout on the Software reset management
 V1.0.3 / 13-November-2015Main
Changes General updates 
to fix known defects and enhancements implementationOne change done on the HAL CRYP requires an update on 
the application code based on HAL V1.0.2
Update 
HAL_CRYP_DESECB_Decrypt() API to invert pPlainData and pCypherData 
parameters
 HAL Generic updateUpdate HAL 
weak empty callbacks to prevent unused argument compilation warnings with some 
compilers by calling the following line:
Remove references to STM32CubeMX and MicroXplorer from stm32f7xx_hal_msp_template.c file
 HAL ADC updateReplace ADC_CHANNEL_TEMPSENSOR definition from ADC_CHANNEL_16 to ADC_CHANNEL_18  Update HAL ADC driver state machine for code efficiencyAdd 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.
 HAL CORTEX update
Remove duplication 
for __HAL_CORTEX_SYSTICKCLK_CONFIG() macro
 HAL CRYP updateUpdate HAL_CRYP_DESECB_Decrypt() API to fix the inverted pPlainData and pCypherData parameters issue 
 HAL FLASH updateUpdate OB_IWDG_STOP_ACTIVE definitionUpdate OB_RDP_LEVEL_x definition by proper valuesUpdate FLASH_MassErase() function to consider the voltage range parameter in the mass erase configuration 
 HAL RCC updateupdate values for LSE Drive capability definesupdate PLLN min value 50 instead of 100add RCC_PLLI2SP_DIVx defines for PLLI2SP clock dividerUpdate __HAL_RCC_USB_OTG_FS_CLK_DISABLE() macro to remove the disable of the SYSCFG Update HAL_RCCEx_GetPeriphCLKFreq() function for proper SAI clock configuration
 HAL SAI updateupdate for proper management of the external synchronization input selectionupdate of HAL_SAI_Init () funcitonupdate definition of SAI_Block_SyncExt and SAI_Block_Synchronization groups
 update SAI_SLOTACTIVE_X  defines valuesupdate HAL_SAI_Init() function for proper companding mode managementupdate SAI_Transmit_ITxxBit() functions to add the check on transfer counter before writing new data to SAIx_DR registersupdate SAI_FillFifo() function to avoid issue when the number of data to transmit is smaller than the FIFO sizeupdate HAL_SAI_EnableRxMuteMode() function for proper mute managementupdate SAI_InitPCM() function to support 24bits configuration
 HAL SD updateupdate HAL_SD_Get_CardInfo() to properly support high capacity cards
 HAL SPDIFRX updateupdate SPDIFRX_DMARxCplt() function implementation to check on circular mode before disabling the DMA
 HAL TIM updateUpdate HAL_TIM_ConfigClockSource() function implementation for proper parameters check
 HAL UART updateUpdate __HAL_UART_CLEAR_IT macro for proper functionning 
 ll FMC updateadd FMC_PAGE_SIZE_512 define
 ll SDMMC updateupdate SDMMC_SetSDMMCReadWaitMode() function for proper functionning
 V1.0.2 / 21-September-2015Main
Changes HAL Generic updatestm32f7xx_hal.conf_template.h: update HSE_STARTUP_TIMEOUTstm32f7xx_hal_def.h: update the quotation marks used in #error"USE_RTOS should be 0 in the current HAL release"
 HAL DMA updateOverall 
driver update for code optimizationadd 
StreamBaseAddress and StreamIndex new fields in the DMA_HandleTypeDef 
structure
add 
DMA_Base_Registers private structure
add static function 
DMA_CalcBaseAndBitshift()
update 
HAL_DMA_Init() function to use the new added static function
update 
HAL_DMA_DeInit() function to optimize clear flag operations
update 
HAL_DMA_Start_IT() function to optimize interrupts enable
update 
HAL_DMA_PollForTransfer() function to optimize check on flags
update 
HAL_DMA_IRQHandler() function to optimize interrupt flag management
 HAL ETH updateremove duplicated macro IS_ETH_RX_MODE()
 HAL GPIO updateRename 
GPIO_SPEED_LOW define to GPIO_SPEED_FREQ_LOW
Rename 
GPIO_SPEED_MEDIUM define to GPIO_SPEED_FREQ_MEDIUM
Rename 
GPIO_SPEED_FAST define to GPIO_SPEED_FREQ_HIGH
Rename 
GPIO_SPEED_HIGH define to GPIO_SPEED_FREQ_VERY_HIGH
 HAL HASH updateRename 
HAL_HASH_STATETypeDef to HAL_HASH_StateTypeDef
Rename 
HAL_HASH_PhaseTypeDef to HAL_HASHPhaseTypeDef
 HAL RCC updateupdate values for LSE Drive capability definesupdate PLLN/PLLI2SN/PLLSAI VCO min value 100MHz instead of 192MHzadd __HAL_RCC_MCO1_CONFIG() and __HAL_RCC_MCO2_CONFIG() macros
 update HAL_RCCEx_PeriphCLKConfig() function to reset the Backup domain only if the RTC Clock source selection is modified 
 HAL TIM updateupdate the implementation of __HAL_TIM_SET_COMPARE() macroremove useless assert() in HAL_TIM_PWM_ConfigChannel(), TIM_OC2_SetConfig() and HAL_TIM_PWM_ConfigChannel() functions
 HAL CAN updateadd the clear flag ERRI bit in HAL_CAN_IRQHandler()
 HAL I2S updateupdate I2S HAL_I2S_Transmit() API to keep the check on busy flag only for the slave
 HAL QSPI updateAdd __HAL_QSPI_CLEAR_FLAG() before QSPI_Config()
 HAL UART updateRemove
enabling of ERR IT source and PE source from HAL_UART_Transmit_IT() and
remove the corresponding disabling ERR/PE IT from UART_EndTransmit_IT()
 HAL PCD update Clean status phase received interrupt when DMA mode enabled 
 HAL HCD updateUpdate to use local 
variable in USB Host channel re-activation
 ll FMC updateupdate the define FMC Write FIFO Disable/Enable: FMC_WRITE_FIFO_DISABLE and FMC_WRITE_FIFO_ENABLEremove return HAL_ERROR from FMC_SDRAM_SendCommand() function
 V1.0.1 / 25-June-2015Main
Changes General updates 
to fix known defects and enhancements implementationHAL CRC updateupdate __HAL_CRC_SET_IDR() macro implementation to use WRITE_REG() instead of MODIFY_REG()
 HAL CEC updateupdate timeout management in HAL_CEC_Transmit() and HAL_CEC_Receive() functions
 HAL Cortex updateupdate HAL_MPU_ConfigRegion() function to be misra compliant
 HAL ETH updateRemove 
duplicated IS_ETH_DUPLEX_MODE() and IS_ETH_RX_MODE() macrosRemove 
illegal space ETH_MAC_READCONTROLLER_FLUSHING macroUpdate 
ETH_MAC_READCONTROLLER_XXX defined values (XXX can be IDLE, READING_DATA and 
READING_STATUS)
 HAL FLASH updateupdate FLASH_OB_GetRDP() function to return uint8_t  instead of FlagStatusupdate OB_RDP_LEVELx definitionadd __HAL_FLASH_GET_LATENCY() macro
 HAL HASH updateupdate
HASH_DMAXferCplt() and HASHEx_DMAXferCplt() functions to properly
configure the number of valid bits in last word of the messageupdate HAL_HASH_SHA1_Accumulate() function to check on the length of the input bufferupdate
HAL_HASH_MODE_Start_IT() functions (Mode stands for MD5, SHA1, SHA224 and SHA256 ) to :Fix processing 
fail for small input buffers
to unlock 
the process and call return HAL_OK at the end of HASH processing to avoid 
incorrect repeating software
properly to manage 
the HashITCounter efficiency 
Update to call the 
HAL_HASH_InCpltCallback() at the end of the complete buffer instead 
of 
every each 512 bits 
 update HASH_IT_DINI and HASH_IT_DCI definitionupdate __HAL_HASH_GET_FLAG() macro definition
 HAL I2S updateupdate HAL_I2S_Transmit() function to ensure the waiting on Busy flag in case of slave mode selection
 HAL RTC updateupdate HAL_RTCEx_SetWakeUpTimer() and HAL_RTCEx_SetWakeUpTimer_IT() functions to properly check on WUTWF flagrename RTC_TIMESTAMPPIN_PI8 define to RTC_TIMESTAMPPIN_POS1rename RTC_TIMESTAMPPIN_PC1 define to RTC_TIMESTAMPPIN_POS2update __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG() macro definitionupdate __HAL_RTC_TAMPER_GET_IT() macro definitionupdate __HAL_RTC_TAMPER_CLEAR_FLAG() macro definitionupdate __HAL_RTC_TIMESTAMP_CLEAR_FLAG() macro definitionupdate __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG() macro definitionadd RTC_TAMPCR_TAMPXE and RTC_TAMPCR_TAMPXIE defines
 HAL SMARTCARD updateadd SMARTCARD_FLAG_IDLE, SMARTCARD_IT_IDLE and  SMARTCARD_CLEAR_IDLEF defines
 HAL UART updateupdate HAL_UART_DMAResume() function to clear overrun flag before resuming the Rx transferupdate UART_FLAG_SBKF definition
 HAL USART updateupdate HAL_USART_DMAResume() function to clear overrun flag before resuming the Rx transfer
 LL FMC updateupdate NAND timing maximum values
 LL USB update
USB_FlushTxFifo API: 
update to flush all Tx FIFO
Update to use local 
variable in USB Host channel re-activation
 V1.0.0 / 12-May-2015Main
Changes First official release for STM32F756xx/746xx/745xx 
devices
 License
Redistribution
and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
 
from this software without specific prior written permission.Redistributions
of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.Redistributions
in binary form must reproduce the above copyright notice, this list of
conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.Neither the
name of STMicroelectronics nor the names of its contributors may be
used to endorse or promote products derived 
 
 THIS
SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
 
 For
complete documentation on STM32 Microcontrollers visit www.st.com/STM32 |  | 
 |  
 |