Back to Release page

# Release Notes for STM32F0xx HAL Drivers

Copyright 2014 STMicroelectronics

## Update History

### V1.2.0 / 11-December-2014

Main Changes

- HAL generic

- Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.
- HandleTypeDef.ErrorCode must be typed uint32_t
- Update HAL drivers to ensure compliancy w/ C++
- Add some generic defines (__NOINLINE) in stm32f0xx_hal_def.h
- Case mismatch between #include typo and effective file name generating compiler errors under Linux
- Correct various issues for documentation generation (group name, doxygen tags, etc..)
- Missing support of I2C_PAx_FMP of F04xx devices

- HAL ADC

- Improve HAL ADC comments
- Correct issue observed with ADC start simultaneous commands
- Remove macro __HAL_ADC_OFR_CHANNEL() since OFRx register is not available on F0 devices.

- HAL CAN

- ErrorCode field is now declared as __IO uint32 instead of enum HAL_CAN_ErrorTypeDef to fix C++ compilation issue

- HAL CEC

- change ErrorCode field declaration from uint32_t to __IO uint32_t

- correct CEC state: Ready to Receive state lost upon Transmission end

- HAL COMP

- State field is now declared as uint32_t instead of enum HAL_COMP_StateTypeDef to fix C++ compilation issue
- change HAL_COMP_GetState() type declaration from HAL_COMP_StateTypeDef to uint32_t to fix C++ compilation issue

- HAL CRC

- Wrong @ref in CRCLength field description for documentation generation

- Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.

- HAL DAC

- HAL_DAC_Stop_DMA() code clean up

- Use of internal macro MODIFY_REG() to update CR register

- HAL DMA

- Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.
- DMA channel remap register renamed for compatibility with other STM32 devices.
- Correct wrong comments in __HAL_DMA_GET_FLAG and __HAL_DMA_CLEAR_FLAG macros description

- HAL FLASH

- Fix in macro IS_OPTIONBYTE(VALUE) when all option_OB are selected
- ErrorCode field is now declared as uint32 instead of enum FLASH_ErrorTypeDef to fix C++ compilation issue
- change HAL_FLASH_GetError() type declaration from FLASH_ErrorTypeDef to uint32_t to fix C++ compilation issue
- Clean the error context to FLASH_ERROR_NONE before starting new Flash operation
- Put all the clear flags in the FLASH_SetSerrorCode()
- Stop the programming procedure in case of error detected in HAL_FLASH_Program()
- Check error before doing new procedure in HAL_FLASH_IRQhandler()

- HAL GPIO

- Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.
- correct Typo in 'How to use this driver' section & update comments
- Add assert on GPIO PIN in HAL_GPIO_DeInit()
- Add assert on GPIO AF instance to protect HAL_GPIO_Init() from impossible AF configuration
- Rename internal macro GET_GPIO_INDEX() into GPIO_GET_INDEX()
- Reset Interrupt mode registers only in HAL_GPIO_DeInit()

- HAL I2C
  - Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.
  - ErrorCode field is now declared as uint32 instead of enum HAL_I2C_ErrorTypeDef to fix C++ compilation issue

- HAL I2S

- ErrorCode field is now declared as uint32 instead of enum HAL_I2S_ErrorTypeDef to fix C++ compilation issue.
- Change HAL_I2S_GetError() type declaration from HAL_I2S_ErrorTypeDef to uint32_t to fix C++ compilation issue.
- Add use of UNUSED(tmpreg) in __HAL_I2S_CLEAR_OVRFLAG() & __HAL_I2S_CLEAR_UDRFLAG to fix Unused variable" warning w/ TrueSTUDIO.
- Typo in 'I2S HAL driver macros list' section of stm32f0xx_hal_i2s.c
- Missing doxygen tags for I2S_HandleTypeDef fields description (documentation generation)

- HAL IRDA

- ErrorCode field is now declared as uint32 instead of enum HAL_IRDA_ErrorTypeDef to fix C++ compilation issue
- Missing doxygen tags for IRDA_HandleTypeDef fields description

- HAL PWR

- Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.
- Add new API to manage SLEEPONEXIT and SEVONPEND bits of SCR register:

- HAL_PWR_DisableSleepOnExit()
- HAL_PWR_EnableSleepOnExit()
- HAL_PWR_EnableSEVOnPend()
- HAL_PWR_DisableSEVOnPend()

- Removed useless regulator parameter setting for F0 family in core of HAL_PWR_EnterSLEEPMode()

- HAL RCC

- Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.
- Add a comment in the 'How to use this driver' section to mention the Peripheral enable delay
- Move __HAL_RCC_USART2_CONFIG() & __HAL_RCC_GET_USART2_SOURCE() from stm32f0xx_hal_rcc.h to stm32f0xx_hal_rcc_ex.h since this feature is not supported on all F0 devices
- Change HAL_RCCEx_CRSWaitSynchronization() type declaration from RCC_CRSStatusTypeDef to uint32_t to fix C++ compilation issue

- HAL RTC

- Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.
- Enhance @note describing the use of HAL RTC APIs

- HAL SMARTCARD
  - ErrorCode field is now declared as uint32 instead of enum HAL_SMARTCARD_ErrorTypeDef to fix C++ compilation issue
- HAL SMBUS
  - ErrorCode & PreviousState fields are now declared as uint32 instead of enum HAL_SMBUS_ErrorTypeDef & HAL_SMBUS_StateTypeDef to fix C++ compilation issue
  - Change HAL_SMBUS_GetState() type declaration from HAL_SMBUS_StateTypeDef to uint32_t to fix C++ compilation issue

- HAL SPI

- ErrorCode field is now declared as uint32 instead of enum HAL_SPI_ErrorTypeDef to fix C++ compilation issue
- Add use of UNUSED(tmpreg) in __HAL_SPI_CLEAR_MODFFLAG(), __HAL_SPI_CLEAR_OVRFLAG(), __HAL_SPI_CLEAR_FREFLAG() to fix "Unused variable" warning w/ TrueSTUDIO.
- Add DMA circular mode support on SPI HAL driver.
- Internal fucntion renaming: HAL_SPI_DMATransmitCplt(), HAL_SPI_DMAReceiveCplt(), HAL_SPI_DMATransmitReceiveCplt() & HAL_SPI_DMAError() renamed respectively into SPI_DMATransmitCplt(), SPI_DMAReceiveCplt(), SPI_DMATransmitReceiveCplt() & SPI_DMAError().
- Remove unused HAL_StatusTypeDef SPI_EndRxTxTransaction() prototype
- uint32_t driver alignment for compatibility with other STM32 devices
- Add new API HAL_SPI_GetError(), which was missing on STM32F0xx family

- HAL UART/USART

- Add support of new STM32F0 value line devices STM32F070xB/x6 and STM32F030xC.
- structure UART_WakeUpTypeDef moved to stm32f0xx_hal_uart_ex.h since wakeup feature is not available on all F0 devices.
- ErrorCode field is now declared as uint32 instead of enum HAL_U(S)ART_ErrorTypeDef to fix C++ compilation issue
- unused HAL_USART_SetConfig() prototype to be removed from stm32f0xx_hal_usart.h
- Add missing API HAL_StatusTypeDef HAL_LIN_SendBreak()
- correct wrong USART_IT_CM value
- correct issue with Lin mode data length
- Add new value for Stop bit definition: UART_STOPBITS_1_5

- HAL USB

- Add support of new STM32F0 value line devices STM32F070xB/x6.
- Wrong comment in HAL_PCD_Dev(Connect/Disconnect) functions description
- Correct _HAL_PCD_CLEAR_FLAG() macros definition

- HAL WWDG

- Add new macro to manage WWDG IT & correction:

- __HAL_WWDG_DISABLE_IT()
- __HAL_WWDG_GET_IT()
- __HAL_WWDG_GET_IT_SOURCE()

### V1.1.0 / 03-October-2014

Main Changes

- HAL generic

- general improvement of Doxygen Tags for CHM UM generation
- Add support of new devices STM32F091xC, STM32F098xx in STM32F0xx HAL drivers
- minor corrections for Pdf/Chm UM generation
- Correction for MISRA
- [F098xx] Remove PVD IT line wrapper
- FLAG&IT assert macros to be removed
- Bad macro name in stm32F0xx_hal.c/.h files
- uint32_t Alignement in HAL driver

- HAL update (for STM32F091xC/STM32F098xx)

- Add new define for HAL IRDA Enveloppe source Selection
- Add new macro IS_HAL_SYSCFG_IRDA_ENV_SEL()
- Add new defines for ISR Wrapper (HAL_SYSCFG_ITLINE0, etc..)
- Add new macro __HAL_GET_PENDING_IT()
- Add new macro __HAL_SYSCFG_IRDA_ENV_SELECTION()
- Add new macro __HAL_SYSCFG_GET_IRDA_ENV_SELECTION()

- HAL COMP

- Missing assert param IS_COMP_TRIGGERMODE

- HAL Cortex

- remove Macro not supported by cortex-M0 in stm32f0xx.h

- HAL DMA

- Add new defines for DMAx Channel remapping (DMAx_CHANNELx_RMP)
- Add new defines for DMAx channels remap bit field definition
- Add new macros: IS_HAL_DMA1_REMAP(), IS_HAL_DMA2_REMAP()
- Add new macro: __HAL_DMA_GET_TC_FLAG_INDEX(), that returns specified transfer complete flag index
- Add new macro: __HAL_DMA_GET_HT_FLAG_INDEX(), that returns specified half transfer complete flag index
- Add new macro: __HAL_DMA_GET_TE_FLAG_INDEX(), that returns specified transfer error flag index
- Add new macro: __HAL_DMA_GET_FLAG()
- Add new macro: __HAL_DMA_CLEAR_FLAG()
- Add new macro: __HAL_DMA1_REMAP(), __HAL_DMA2_REMAP()
- Bit definition name error for HAL_DMA1_CH2 remap on STM32F091xC
- HAL_DMA_PollForTransfer updated

- HAL GPIO

- BSRR regsiter should not be split in BSRRH/BSRRL
- rework GPIO_GET_SOURCE
- Add new defines for AF functions selection

- HAL I2S

- Supp ClockSource in Init

- HAL IRDA

- Incorrect definition for IS_IRDA_REQUEST_PARAMETER macro

- HAL IWDG

- Use WRITE_REG instead of SET_BIT

- HAL PWR

- Functions for VDDIO2 management missing in all F09xx, F07xx, F04xx

- PVD feature need falling/rising Event modes

- Update defines name PWR_MODE_EVT/PWR_MODE_IT_RISING/PWR_MODE_IT_FALLING/PWR_MODE_IT_RISING_FALLING to PWR_PVD_MODE_NORMAL/PWR_PVD_MODE_IT_RISING/PWR_PVD_MODE_IT_FALLING/PWR_PVD_MODE_IT_RISING_FALLING
- Add new defines PWR_PVD_MODE_EVENT_RISING, PWR_PVD_MODE_EVENT_FALLING, PWR_PVD_MODE_EVENT_RISING_FALLING
- Update macro IS_PWR_PVD_MODE()
- change macro name: __HAL_PWR_PVD_EXTI_ENABLE_IT(), __HAL_PWR_PVD_EXTI_DISABLE_IT(), __HAL_PWR_PVD_EXTI_GENERATE_SWIT(), __HAL_PWR_PVD_EXTI_GET_FLAG(), __HAL_PWR_PVD_EXTI_CLEAR_FLAG()
- Add new macro __HAL_PWR_PVD_EXTI_ENABLE_EVENT(), __HAL_PWR_PVD_EXTI_DISABLE_EVENT(), __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER(), __HAL_PWR_PVD_EXTI_SET_FALLING_EGDE_TRIGGER()

- HAL RCC
  - Defect correction:
  - HAL_RCC_OscConfig: HSERDY has to be checked also in by pass mode
  - STM32F091xC/STM32F098xx
  - New structure RCC_PeriphCLKInitTypeDef
  - Add defines for RCC new peripheral clock selection: RCC_PERIPHCLK_USART1, RCC_PERIPHCLK_USART2, RCC_PERIPHCLK_I2C1, RCC_PERIPHCLK_CEC, RCC_PERIPHCLK_RTC, RCC_PERIPHCLK_USART3
  - Add macro IS_RCC_PERIPHCLK()
  - Add defines for USART3 clock source selection (RCC_USART3CLKSOURCE_PCLK1, RCC_USART3CLKSOURCE_SYSCLK, CC_USART3CLKSOURCE_LSE, CC_USART3CLKSOURCE_HSI
  - Add macro IS_RCC_USART3CLKSOURCE()
  - Add macro __HAL_RCC_GET_USART3_SOURCE()
  - Add macro __HAL_RCC_USART3_CONFIG()
  - add clock enable macros for new UART: __USART5_CLK_ENABLE, __USART6_CLK_ENABLE, __USART7_CLK_ENABLE, __USART8_CLK_ENABLE
  - add clock disable macros for new UART: __USART5_CLK_DISABLE, __USART6_CLK_DISABLE, __USART7_CLK_DISABLE, __USART8_CLK_DISABLE
  - add Force reset macros for new UART: __USART5_FORCE_RESET, __USART6_FORCE_RESET, __USART7_FORCE_RESET, __USART8_FORCE_RESET
  - add Release reset macros for new UART: __USART5_RELEASE_RESET, __USART6_RELEASE_RESET, __USART7_RELEASE_RESET, __USART8_RELEASE_RESET

- HAL SMARTCARD

- change SMARTCARD_AdvFeatureConfig() from exported to static private function
- STM32F091xC/STM32F098xx:

- Add new macro __HAL_SMARTCARD_GETCLOCKSOURCE() for USART1, USART2, USART3, USAR

- HAL SMBUS

- change SMARTCARD_AdvFeatureConfig() from exported to static private function

- HAL SPI

- Function HAL_SPI_TransmitReceive muse use SPI_FLAG_RXNE to read CRC

- Function HAL_SPI_IRQHandler, in case of error the state must be reset to ready

- HAL TIM

- Missed/Unused assert param to be added/removed
- Trigger interrupt should be activated when working with a slave mode
- Break interrupt should be activated in HAL_TIMEx_OCN_Start_IT
- Wrong CCMR register cleared in HAL_TIM_IRQHandler for Input Capture event Channel 3 and 4
- missing assert in HAL_TIMEx_ConfigBreakDeadTime
- Add URS_ENABLE/ URS_DISABLE macros

- HAL UART/USART

- Change UART TX-IT implementation to remove WaitOnFlag in ISR
- STM32F091xC/STM32F098xx:

- Add new macro __HAL_UART_GETCLOCKSOURCE() for USART1, USART2, USART3, USART4
- Add new macro __HAL_USART_GETCLOCKSOURCE() for USART1, USART2, USART3, USART4

- HAL USB

- Bad IN/OUT EndPoint parameter array size

- HAL WWDG

- improvements from other families

Defect Correction

STM32F0xx_HAL_Driver | Defect | PWR | PVD feature need falling/rising Event modes
STM32F0xx_HAL_Driver | Defect | COMP | Missing assert param IS_COMP_TRIGGERMODE
STM32F0xx_HAL_Driver | Defect | RCC | HAL_RCC_OscConfig: HSERDY has to be checked also in by pass mode

### V1.0.1 / 18-June-2014

Main Changes

- HAL generic update

  - Fix flag clear procedure: use atomic write operation "=" instead of ready-modify-write operation "|=" or "&="
  - Fix on Timeout management, Timeout value set to 0 passed to API automatically exits the function after checking the flag without any wait.
  - Add new macro __HAL_RESET_HANDLE_STATE to reset a given handle state.

- HAL CEC update

- Process no more locked during the transmission in interrupt mode.

- HAL COMP update

- Add NonInvertingInput field in the COMP_InitTypeDef structure.
- Add new defines COMP_NONINVERTINGINPUT_IO1 and COMP_NONINVERTINGINPUT_DAC1SWITCHCLOSED

- HAL DMA update

- Fix in HAL_DMA_PollForTransfer() to set error code HAL_DMA_ERROR_TE in case of HAL_ERROR status

- HAL I2C update

- Add management of NACK event in Master transmitter mode and Slave transmitter/receiver modes (only in polling mode), in that case the current transfer is stopped.

- HAL I2S update

- I2S clock source change: new define I2S_CLOCK_SYSCLK, remove I2S_CLOCK_PLL
- Improvement done in I2S transfer/receive processes

- HAL IRDA update

  - Add new enum typedef IRDA_ClockSourceTypeDef
  - Add new macro __HAL_IRDA_GETCLOCKSOURCE
  - Change in HAL_IRDA_Transmit_IT() to enable IRDA_IT_TXE instead of IRDA_IT_TC.
  - Process no more locked during the transmission in interrupt mode.

- HAL PCD update

- Add new macro __HAL_USB_EXTI_GENERATE_SWIT

- HAL PWR update

- Fix in HAL_PWR_EnterSTANDBYMode() to not clear Wakeup flag (WUF), which need to be cleared at application level before to call this function

- HAL RCC update

- Add USB peripheral and clocking macros for STM32F078xx device.
- Fix HSI Calibration issue when selected as SYSCLK

- HAL SMARTCARD update

- Change in HAL_SMARTCARD_Transmit_IT() to enable SMARTCARD_IT_TXE instead of SMARTCARD_IT_TC.
- Process no more locked during the transmission in interrupt mode.

- HAL SMBUS update

- Fix Slave acknowledge issue: Slave should ack each bit and so stretch the line till the bit is not ack

- HAL TIM update

- Fix macro __HAL_TIM_PRESCALER

- HAL TSC update

- Fix define TSC_ACQ_MODE_SYNCHRO

- HAL UART update

- Change in HAL_LIN_Init() parameter BreakDetectLength to uint32_t
- Change in HAL_UART_Transmit_IT() to enable UART_IT_TXE instead of UART_IT_TC.
- Process no more locked during the transmission in interrupt mode.

- HAL USART update

- Change USART_InitTypeDef fields to uint32_t type
- Rename __USART_ENABLE and __USART_DISABLE macros to respectively __HAL_USART_ENABLE and __HAL_USART_DISABLE
- Change in HAL_USART_Transmit_IT() to enable USART_IT_TXE instead of USART_IT_TC.
- Process no more locked during the transmission in interrupt mode.
- Change in HAL_USART_TransmitReceive_DMA() to manage DMA half transfer mode

### V1.0.0 / 20-May-2014

Main Changes

- First official release of STM32F0xx HAL drivers for STM32F030x4/x6, STM32F030x8, STM32F031x4/x6, STM32F051x4/x6/x8, STM32F071x8/xB, STM32F042x4/x6, STM32F072x8/xB, STM32F038xx, STM32F048xx, STM32F058xx and STM32F078xx devices.

## License

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of STMicroelectronics nor the names of its contributors may be used to endorse or promote products derived

from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

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