Back to Release page

Release Notes for STM32H7xx HAL Drivers

Copyright 2017 STMicroelectronics

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


License

This software component is licensed by ST under BSD 3-Clause license, the "License"; You may not use this component except in compliance with the License. You may obtain a copy of the License at:

https://opensource.org/licenses/BSD-3-Clause

Update History

V1.5.0RC1 / 12-December-2018

Main Changes

  • Add support for VOS0 power regulator voltage scaling with 480MHz over clock.
  • General updates to fix known defects and enhancements implementation.
  • Add Dual core API for system peripherals HAL and LL (COMP, CORTEX, ETH, FLASH, GPIO, HSEM, MDIOS, PWR, RCC, RTC
  • HAL ADC: 
    • Update to support STM32H7 Rev.X and above : 8bits resolution settings. (Driver remains compatible for STM32H7 Rev.Y)
  • HAL CRYP: Update to support STM32H7 devices rev.X and above.
  • HAL FLASH:
    • Update to support STM32H7 devices rev.X and above.
    • Add support for CRC calculation feature.
  • HAL PWR:
    • Update to support VOS0 power regulator voltage scaling
    • Improve implementation of HAL_PWREx_ConfigSupply function.
  • HAL RAMECC:
    • Fix typo in HAL_RAMECC_EnableNotification and HAL_RAMECC_DisableNotification APIs.
  • HAL SAI:
    • Update to support STM32H7 Rev.X and above.
  • HAL GPIO: Add definition for new AF available in STM32H7 Rev.X: GPIO_AF0_C1DSLEEP, GPIO_AF0_C1DSLEEP, GPIO_AF0_C1SLEEP, GPIO_AF0_D1PWREN, GPIO_AF0_D2PWREN, GPIO_AF0_C2DSLEEP, GPIO_AF0_C2SLEEP and GPIO_AF13_CRS_SYNC.
  • LL SYSTEM: Add new APIs to allow timers break source selection (new feature of STM32H7 devices rev.X and above)

V1.4.0 / 30-November-2018

Main Changes

  • General updates to fix known defects and implementation enhancements.
  • Add  LL drivers : LL_ADC, LL_BDMA, LL_BUS, LL_COMP, LL_CORTEX, LL_CRC, LL_DAC, LL_DMA, LL_DMA2D, LL_DMAMUX,  LL_EXTI, LL_GPIO, LL_HRTIM, LL_HSEM, LL_I2C, LL_IWDG, LL_LPTIM, LL_LPUART, LL_MDMA, LL_OPAMP,LL_PWR, LL_RCC, LL_RNG, LL_RTC, LL_SPI, LL_SWPMI, LL_SYSTEM, LL_TIM, LL_USART,  LL_UTILS, LL_WWDG
  • Introduce the register callback mechanism. It permits the user to configure dynamically the interrupt callbacks.
    • hal_conf_template.h is updated to embed the required new define to activate the feature : one define per HAL driver, example: USE_HAL_I2C_REGISTER_CALLBACKS
  • Add HAL EXTI driver
  • Add HAL RAMECC driver
  • HAL : stm32h7xx_hal.c and stm32h7xx_hal.h and stm32h7xx_hal_conf_template.h files
    • Fix register bit field "SYSCFG_PMCR_EPIS_SEL" naming in function "HAL_SYSCFG_ETHInterfaceSelect" in stm32h7xx_hal.c:
      • Alignment with the cmsis device include files.
    • Rename internal private macro "IS_EXTI_CONFIG_LINE" to IS_HAL_EXTI_CONFIG_LINE in stm32h7xx_hal.h: to avoid conflict with HAL EXTI driver.
    • Update stm32h7xx_hal_conf_template.h to add HAL EXTI and HAL RAMECC
    • Update stm32h7xx_hal_conf_template.h to to put the include of the MDMA HAL header file before the include of the JPEG and QSPI HAL header files (as JPEG and QSPI HAL drivers are using the MDMA)
    • File stm32h7xx_hal.c, update HAL_SetFMCMemorySwappingConfig and  HAL_GetFMCMemorySwappingConfig to align with Reference Manual regarding registers and bit defintion naming
    • Update stm32h7xx_hal.c with Driver version number set to V1.4.0
  • HAL ADC: 
    • Remove BoostMode from Init structure, this settings is automatically handled by HAL_ADC_Init() function depending of the ADC Clock value.
      • Caution : compatibility break with previous version regarding ADC init parameters (ADC_InitTypeDef structure) 
  • HAL_CRYP 
    • Improve error detection in function "CRYP_GCMCCM_SetPayloadPhase_IT"
    • Improve padding management in funcion "CRYP_GCMCCM_SetPayloadPhase_IT"
    • Fix data counter issue in function "CRYP_AESCCM_Process"
  • HAL_DFSDM 
    • Rename DFSDM_FILTER_EXT_TRIG_LPTIMx with DFSDM_FILTER_EXT_TRIG_LPTIMx_OUT.
  • HAL DMA: 
    • Add double buffering feature support for BDMA.
    • Fix DMA_FLAG_FEIF0_4 and DMA_FLAG_DMEIF0_4 numerical values (no impact on the functional behavior)
    • Add a Clean/Reset of callbacks in HAL_DMA_DeInit()
    • Remove FIFO error enabling in "HAL_DMA_Start_IT". when FIFO error monitoring is requested in IT model, the macro __HAL_DMA_ENABLE_IT can be used to enable the FIFO error IT at the user Msp function.
    • Remove check on busy state within "HAL_DMA_DeInit" function : to allow forcing a de-initialization even in busy state
  • HAL ETH: Add check for input buffer against NULL in function HAL_ETH_GetRxDataBuffer.
  • HAL FDCAN: 
    • Fix counter increment in API HAL_FDCAN_ConfigFilter.
    • Fix comment description of parameter "RxFDFflag" in "FDCAN_ProtocolStatusTypeDef" structure
    • Fix comment description of defines FDCAN_FRAME_FD_NO_BRS and FDCAN_FRAME_FD_BRS
    • Add a reset of FDCAN operation mode in the "HAL_FDCAN_Init" function
    • Add Error Status callback support:
      • Add parameter "ErrorStatusCallback" in FDCAN_HandleTypeDef structure in stm32h7xx_hal_fdcan.h.
      • Add typedef "pFDCAN_ErrorStatusCallbackTypeDef" in stm32h7xx_hal_fdcan.h.
      • Add APIs "HAL_FDCAN_RegisterErrorStatusCallback" and "HAL_FDCAN_UnRegisterErrorStatusCallback"
      • Add weak callback "HAL_FDCAN_ErrorStatusCallback"
      • Update "HAL_FDCAN_IRQHandler" function to call the ErrorStatusCallback in case of an error status interrupt.
    • Improve error management by adding error codes "HAL_FDCAN_ERROR_FIFO_EMPTY" and "HAL_FDCAN_ERROR_FIFO_FULL" used in case of FIFO full in "HAL_FDCAN_AddMessageToTxFifoQ" and FIFO empty in "HAL_FDCAN_GetRxMessage" functions
    • Fix implementation issue in "HAL_FDCAN_ResetTimeoutCounter" function
    • Improve behavior of "HAL_FDCAN_GetRxMessage" and "HAL_FDCAN_GetTxEvent" functions : operation not allowed in HAL_FDCAN_STATE_READY state. 
  • HAL FLASH:
    • Align driver with the Reference Manual regarding registers and bit defintion naming
  • HAL_GPIO :
    •  Add assert check of parameter GPIO_Pin in function "HAL_GPIO_DeInit"
    • Add assert check against alternate function availability for parameter "GPIOx" in function "HAL_GPIO_Init"
    • Improve "HAL_GPIO_TogglePin" function against reentrancy.
    • Move GPIO clearing to default values in "HAL_GPIO_DeInit" function after EXTI clearing to avoid unexpected pending interrupts issues.
  • HAL_HRTIM 
    • Fix "HAL_HRTIM_FaultConfig" function regarding FLTINR1 and FLTINR2 registers settings
    • Update "HAL_HRTIM_SimpleBaseStop_DMA", "HAL_HRTIM_SimpleOCStop_DMA" and "HAL_HRTIM_SimplePWMStop_DMA" functions to add a check for the DMA handle against NULL pointer.
    • Fix HAL_HRTIM_SimpleOCChannelConfig,, "HAL_HRTIM_SimpleCaptureChannelConfig", HAL_HRTIM_SimplePWMChannelConfig and  "HAL_HRTIM_SimpleOnePulseChannelConfig" functions : considering parameters "pSimpleOCChannelCfg->Polarity " , "pSimpleOCChannelCfg->IdleLevel" and "pSimpleCaptureChannelCfg->EventSensitivity"
  • HAL IRDA: compatibilty break, alignment with STM32L4 (for inter STM32 families portability)
    • Add new field "ClockPrescaler" to "IRDA_InitTypeDef" structure"
  • HAL I2C: 
    • ErrorCode is set to HAL_I2C_ERROR_INVALID_PARAM in all APIs when I2C handle is NULL
    • Add and I2C restart condition for each call of HAL_I2C_Master_Sequential_xxxx_IT
    • Rename APIs "HAL_I2C_Master_Sequential_Transmit_IT" and "HAL_I2C_Master_Seq_Receive_IT" respectively to "HAL_I2C_Master_Seq_Transmit_IT" and "HAL_I2C_Master_Seq_Receive_IT" for MISRA-C 2012 compliancy.
    • Rename APIs "HAL_I2C_Slave_Sequential_Transmit_IT" and "HAL_I2C_Slave_Sequential_Receive_IT" respectively to "HAL_I2C_Slave_Seq_Transmit_IT" and "HAL_I2C_Slave_Seq_Receive_IT" for MISRA-C 2012 compliancy.
    • Rename APIs "HAL_I2C_Master_Sequential_Transmit_DMA" and "HAL_I2C_Master_Seq_Receive_DMA" respectively to "HAL_I2C_Master_Seq_Transmit_DMA" and "HAL_I2C_Master_Seq_Receive_DMA" for MISRA-C 2012 compliancy.
    • Rename APIs "HAL_I2C_Slave_Sequential_Transmit_DMA" and "HAL_I2C_Slave_Sequential_Receive_DMA" respectivelyto "HAL_I2C_Slave_Seq_Transmit_DMA" and "HAL_I2C_Slave_Seq_Receive_DMA" for MISRA-C 2012 compliancy.
  • HAL I2S: 
    • Align driver with the Reference Manual regarding registers and bit definition naming.
    • Fix HAL_I2S_DMAPause and HAL_I2S_DMAResume management
    • HAL_I2S_DMAStop is no more supported (return HAL_I2S_ERROR_NOT_SUPPORTED when called)
    •  Fix FifoThreshold affectation into HAL_I2S_Init
    • Update several defines into stm32h7xx_hal_i2s.h
    • Add macro __HAL_I2S_CLEAR_SUSPFLAG
    • Fix compilation issue when SPI driver is not included in the project (Due to the use of some HAL SPI define, use appropriate I2S defines instead)
    • Fix Tx and RX buffers increment to avoid memory overflow (functions HAL_I2S_Transmit, HAL_I2S_Receive, I2S_RxISR_16BIT, I2S_RxISR_32BIT, I2S_TxISR_16BIT and I2S_TxISR_32BIT)
    • Known limitations :
      • Driver not fully tested, some features may not be working as expected
      • A new version of this driver will be available in next release with full features tested.
  • HAL_JPEG
    •  Remove include of MDMA HAL driver as it is already done through the stm32h7xx_hal_conf.h header file
      • Note : in the stm32h7xx_hal_conf.h the include of the MDMA HAL header file must be done before the include of the JPEG HAL header file (stm32h7xx_hal_conf_template.h updated accordingly)
  • HAL_LPTIM
    • Update "HAL_LPTIM_Init" function to add a clock polarity reset.
    • Update "__HAL_LPTIM_DISABLE" macro implementation
    • Replace usage of global variables "tmpclksource", "tmpIER", "tmpCFGR", "tmpCMP", "tmpARR" and "tmpCFGR2"  by local ones.
  • HAL_MDMA:
    • Remove check on busy state within "HAL_MDMA_DeInit" function : to allow forcing a de-initialization even in busy state
  • HAL_MMC
    • Rename "BLOCKSIZE"  define to "MMC_BLOCKSIZE" to avoid conflict with HAL SD definition.
  • HAL_PWR
    •  Update "HAL_PWR_DisableWakeUpPin" function to disable the Wakeup for the given wakeup pin only.
    • Fix "HAL_PWR_EnterSLEEPMode" and "HAL_PWR_EnterSTOPMode" using one single __WFE instruction in case low power mode with wait for event.
    • Fix "HAL_PWREx_EnterSTOPMode"  using one single using one single __WFE instruction in case low power mode with wait for event
    • Add API "HAL_PWREx_ClearPendingEvent" to clear pending events if any.
  • HAL_QSPI
    • Remove include of MDMA HAL driver as it is already done through the stm32h7xx_hal_conf.h header file
      • Note : in the stm32h7xx_hal_conf.h the include of the MDMA HAL header file must be done before the include of the QSPI HAL header file (stm32h7xx_hal_conf_template.h updated accordingly).
    • Add description of MDMA required settings in the "How to use this driver" section
    • Fix the "HAL_QSPI_Transmit_DMA" function:
      • Add check for MDMA settings : Data size and increment mode
        • Support of BYTE, HALF WORD and WORD modes
      • Enable the QSPI Transfer complete and errors interrupt before starting the MDMA transfer to avoid race condition
    • Fix  the "HAL_QSPI_Receive_DMA" function :
      •  Add check for MDMA settings : Data size and increment mode
        • Support of BYTE, HALF WORD and WORD modes
  • HAL RCC: 
    • Add management for "Frac" parameter in PLL2 and PLL3
    • Add macros __HAL_RCC_MCO1_CONFIG and __HAL_RCC_MCO2_CONFIG.
    • Rewoek HAL_RCC_DeInit function to reset RCC registers.
    • Rework HAL_RCC_ClockConfig function to use the correct divider settings order according to the Reference Manual.
    • Fix PCLK1 Configuration in HAL_RCC_ClockConfig function : use correct register RCC->D2CFGR instead of RCC->D1CFGR.
    • Add definitions of "RCC_SYSCLKSOURCE_STATUS_CSI", "RCC_SYSCLKSOURCE_STATUS_HSI", "RCC_SYSCLKSOURCE_STATUS_HSE" and "RCC_SYSCLKSOURCE_STATUS_PLLCLK". 
    • Fix "HAL_RCC_ClockConfig" implementation:
      • Null pointer check
      •  use "__HAL_FLASH_GET_LATENCY" macro instead of direct register access
      • Optimize the wait for clock source switching.
  • HAL RTC: 
    • Add new macro IS_RTC_TAMPER_FILTER_CONFIG_CORRECT() to check filter is enabled only in case of high or low level.
    • Align driver with the Reference Manual regarding registers and bit definition naming.
  • HAL SAI
    • PDM feature is avilable on SAI1 and SAI4 only
    • Improve and fix HAL_SAI_DMAStop and HAL_SAI_Abort APIs
    • Expend external synchronization feature to SAI3 and SAI4
  • HAL SD
    • Fix and improve High speed and ultra-high speed behavior
    • Add APIs "HAL_SD_ConfigSpeedBusOperation" to configure the SD card speed bus mode :
      • SDMMC_SPEED_MODE_AUTO: Max speed mode supported by the card
      • SDMMC_SPEED_MODE_DEFAULT: Default Speed/SDR12 mode
      • SDMMC_SPEED_MODE_HIGH: High Speed/SDR25 mode
      • SDMMC_SPEED_MODE_ULTRA: Ultra high speed mode
    • Remove extra function prototype "HAL_SD_SendSDStatus" from stm32h7xx_hal_sd.h
    • Fix multi-buffering feature implementation.
  • HAL_SPI
    • Update HAL_SPI_Transmit_DMA : checking hmdtx instead of hdmrx.
    • Update to add Reload Feauture and Duplex Packet DXP
      • Add APIs : "HAL_SPI_Reload_Transmit_IT", "HAL_SPI_Reload_Receive_IT" and "HAL_SPI_Reload_TransmitReceive_IT"
    • Align driver with the Reference Manual regarding registers and bit definition naming.
    • Known limitations :
      • Circular topology not supported: Daisy Chain topology.
  • HAL SMARTCARD: compatibilty break, alignment with STM32L4 (for inter STM32 families portability)
    • Remove fields "FIFOMode", "TXFIFOThreshold" and "RXFIFOThreshold" from "SMARTCARD_InitTypeDef" structure
    • Add new field "ClockPrescaler" to "SMARTCARD_InitTypeDef" structure"
    • SMARTCARD RXFIFO and TXFIFO threshold level defines moved to "stm32h7xx_hal_smartcard_ex.h"
    • Introduce new APIs to manage the Tx and Rx FIFO :
      • HAL_SMARTCARDEx_EnableFifoMode, HAL_SMARTCARDEx_DisableFifoMode, HAL_SMARTCARDEx_SetTxFifoThreshold and HAL_SMARTCARDEx_SetRxFifoThreshold
    • Introduce "HAL_SMARTCARDEx_RxFifoFullCallback" and "HAL_SMARTCARDEx_TxFifoEmptyCallback" 
    • Fix Linux compilation warning in function "HAL_SMARTCARD_Receive".
  • HAL SRAM, HAL SDRAM , HAL NOR and HAL NAND
    • Align driver with the Reference Manual regarding registers and bit definition naming
    • Fix and improve state and error management.
  • HAL_TIM
    • Add a call to HAL_DMA_Abort_IT from HAL_TIM_XXX_Stop_DMA.
    • Add APIs "HAL_TIM_DMABurst_MultiWriteStart" and "HAL_TIM_DMABurst_MultiReadStart".
  • HAL UART: compatibilty break, alignment with STM32L4 (for inter STM32 families portability)
    • Field  "Prescaler" of structure "UART_InitTypeDef" renamed to ClockPrescaler
    • remove fields "FIFOMode", "TXFIFOThreshold" and "RXFIFOThreshold" from "UART_InitTypeDef" structure
    • UART RXFIFO and TXFIFO threshold level defines moved to "stm32h7xx_hal_uart_ex.h"
    • Introduce new APIs to manage the Tx and Rx FIFO :
      • HAL_UARTEx_EnableFifoMode, HAL_UARTEx_DisableFifoMode, HAL_UARTEx_SetTxFifoThreshold and HAL_UARTEx_SetRxFifoThreshold
    • Introduce "HAL_UARTEx_RxFifoFullCallback" and "HAL_UARTEx_TxFifoEmptyCallback" 
  • HAL USART: compatibilty break, alignment with STM32L4 (for inter STM32 families portability)
    • Introduce "stm32h7xx_hal_usart_ex.c" file with new Tx/Rx FIFO management APIs
    • Field  "Prescaler" of structure "USART_InitTypeDef" renamed to ClockPrescaler
    • remove fields "NSS", "SlaveMode", "FIFOMode", "TXFIFOThreshold" and "RXFIFOThreshold" from "USART_InitTypeDef" structure
    • USART RXFIFO and TXFIFO  threshold level defines moved to "stm32h7xx_hal_usart_ex.h"
    • USART Salve Mode defines moved to "stm32h7xx_hal_usart_ex.h"
    • Introduce new APIs to manage the Tx and Rx FIFO :
      • HAL_USARTEx_EnableFifoMode, HAL_USARTEx_DisableFifoMode, HAL_USARTEx_SetTxFifoThreshold and HAL_USARTEx_SetRxFifoThreshold
    • Introduce new APIs to manage SPI slave mode :
      • HAL_USARTEx_EnableSlaveMode, HAL_USARTEx_DisableSlaveMode and HAL_USARTEx_ConfigNSS
  • HAL USB
    • Fix condition check for EmptyTX FIFO
    • Protect the hcd driver to be used only if the USB_OTG_FS, USB_OTG_HS are enabled.

V1.3.0 / 29-June-2018

Main Changes

  • Updates to fix known defects on HAL Cortex, HAL RCC and HAL SDMMC drivers.
  • HAL Cortex: Driver update to support 16 MPU regions instead of 8. User can now select an MPU regions from MPU_REGION_NUMBER0 to MPU_REGION_NUMBER15.
  • HAL RCC : Update and rework HAL_RCC_PeriphCLKConfig function in order to support consecutive configurations for several peripherals using PLL2 and PLL3. To do so first the given PLL is stopped, then the given divider is updated, the given PLL  clock output divider is enabled and finally the given PLL is enabled.

  • HAL SDMMC: Fix and enhancements to support high speed mode.

V1.2.0 / 29-December-2017

Main Changes

  • General updates to fix known defects and enhancements implementation.
  • HAL SPI: Driver reworked to fix critical issues.
  • HAL: Update HAL Tick implementation.

V1.1.0 / 31-August-2017

Main Changes

  • General updates to fix known defects and enhancements implementation.
  • HAL FLASH: Add Mass Erase for both banks.
  • HAL RCC:
    • Update RCC_PeriphCLKInitTypeDef structure for more IP clock selection flexibility.
    • Adjust PLL fractional computation.
  • HAL SPDIFRX: Add symbol clock generation.

V1.0.0 / 21-April-2017

Main Changes

  • First official release for STM32H743xx/753xx devices

For complete documentation on STM32 Microcontrollers visit www.st.com/STM32