Back to Release page

# Release Notes for STM32F1xx HAL Drivers

Copyright 2016 STMicroelectronics

## Update History

### V1.0.4 / 29-April-2016

Main Changes

- General updates to fix known defects and enhancements implementation.

- HAL RCC

- Add suffix U for defines equals to 0xFFFFFFFF (fix MISRA error 10.6)
- Optimization of HAL_RCC_ClockConfig().
- Replace aAPBAHBPrescTable by APBPrescTable and AHBPrescTable defined inside system_stm32f1xx.c.
- When using HAL_RCC_OscConfig to activate LSE, if LSE is already ON, it remains in its state ON. Previously, it was turned OFF then ON in all cases.
- The backup domain is no more reset when changing the RTC clock source from reset value.
- Correct strange behavior in HAL_RCCEx_PeriphCLKConfig.

- HAL UART

- Correct the macro UART_BRR_SAMPLING16

- HAL SMARTCARD

- Correct the macro SMARTCARD_BRR

- HAL IRDA

- Correct the macro IRDA_BRR
- EIE bit is no more activated in transmit (this bit only triggers errors in reception)
- EIE bit is reset at the end of the reception.

- HAL DMA

- Add macro __HAL_DMA_GET_COUNTER to get the number of remaining data units in the current channel.

- HAL FSMC

- Adapt FSMC_NAND_Init behavior to the others STM32 series by reseting the bit FSMC_PCRx_PBKEN.

### V1.0.3 / 11-January-2016

Main Changes

- Remove the #if defined(USE_HAL_LEGACY) condition to include Legacy/stm32_hal_legacy.h by default, in stm32f1xx_hal_def.h.

### V1.0.2 / 18-December-2015

Main Changes

- General updates to fix known defects and enhancements implementation.
- HAL generic

- Insure that do {} while(0) are used in in multi statement macros. (hal eth and pcd)
- Manage simultaneous errors in IRQHandler. (hal uart, smartcard, usart and uart)
- To ensure the full compatibility of the GPIO interfaces across all the STM32 families, the gpio speed definition have been renamed:

- GPIO_SPEED_LOW to GPIO_SPEED_FREQ_LOW
- GPIO_SPEED_MEDIUM to GPIO_SPEED_FREQ_MEDIUM
- GPIO_SPEED_HIGH to GPIO_SPEED_FREQ_HIGH
- aliases are created to keep backward compatibility

- Reduce the default timeout value for the startup of the HSE form 5s to 100ms.
- Update HAL weak empty callbacks to prevent unused argument compilation warnings with some compilers.

- HAL ADC

- Remove useless state HAL_ADC_STATE_REG_OVR and HAL_ADC_STATE_REG_EOSMP.
- Add an error case if init is done with both continuous and discontinuous modes.
- HAL_ADC_PollForEvent returns HAL_TIMEOUT if a timeout occurs instead of HAL_ERROR.
- Trigger the assert_param of the number of discontinuous conversion only if the discontinuous mode is enabled.
- Enhance the check for ScanConvMode in HAL_ADC_Init.

- HAL CAN

- Clear the ERRI bit in HAL_CAN_IRQHandler.

- HAL CORTEX

- Remove the macro __HAL_CORTEX_SYSTICKCLK_CONFIG as duplicated by HAL_SYSTICK_CLKSourceConfig.

- Create an alias to HAL_SYSTICK_CLKSourceConfig for backward compatibility.

- HAL FLASH

- The parameter ReturnValue of HAL_FLASH_EndOfOperationCallback, in the case of Pages Erase, now take the value of 0xFFFFFFFF if all the selected pages have been erased.
- Add a new interface HAL_FLASHEx_OBGetUserData to get the option byte user data.

- HAL GPIO

- Remove a useless assert_param on the pull mode in HAL_GPIO_Init.

- HAL I2C

- Correct issue at reception of 2 bytes using memory polling and IT interface.
- Correct a wrong management of the AF flag.

- HAL RCC

- Reduce the timeout of HSI, LSI and PLL to be closer to HW specifications:

- HSI_TIMEOUT_VALUE reduced from 100ms to 2ms
- LSI_TIMEOUT_VALUE reduced from 100ms to 2ms
- PLL_TIMEOUT_VALUE reduced from 100ms to 2ms

- HAL SD

- Correct wrong calculation of the capacity for High Capacity cards.

- HAL SPI

- Remove incorrect reset of DMA parameter in HAL_SPI_Receive_DMA and HAL_SPI_Transmit_DMA.

- HAL TIM

- Remove useless assert_param.
- Rewrite the assert_param when setting clock source.

- HAL UART

- Manage the case of reception of a character while the driver is not expecting one. This was causing a crash of the driver.

- LL USB

- Remove the NoVbusSensing feature from driver. (feature not present on STM32F1xx)

### V1.0.1 / 31-July-2015

Main Changes

- General updates to fix known defects and enhancements implementation.
- HAL generic

- stm32f1xx_hal_def.h

- Update NULL definition to fix C++ compilation issue.

- HAL ADC

- Optimization of macro __HAL_ADC_CLEAR_FLAG.
- ADC poll for conversion now return error status in case of ADC-DMA mode.
- ADC polling functions now return HAL_TIMEOUT (or HAL_ERROR in case of configuration error).
- Removing field NbrOfConversionRank of ADC_HandleTypeDef. This field was useless on STM32F1xx.
- Improving the ADC state machine.

- HAL CAN

- Field Data of CanRxMsgTypeDef and CanTxMsgTypeDef is changed from uint32_t to uint8_t.

- HAL Cortex

- Add MPU APIs in Cortex HAL driver.

- HAL CRC

- Correcting a wrong definition of __HAL_CRC_SET_IDR macro.

- HAL DAC

- HAL_IS_BIT_SET is nowused properly in HAL_DAC_Start.
- Add 2 defines: DAC_WAVEGENERATION_NOISE and DAC_WAVEGENERATION_TRIANGLE.
- HAL_DAC_Stop now disable DAC software conversion.

- HAL DMA

- Minor typographic updates.

- HAL ETH

- ETH_MAC_READCONTROLLER_FLUSHING: Removing a space in the middle of the name.
- Removing some duplicated macros.

- HAL FLASH

- FLASH_OB_GetRDP returns uint32_t instead of FlagStatus. (internal function). This permit a more coherent use for HAL_FLASHEx_OBGetConfig and HAL_FLASHEx_OBProgram.
- Correct an issue making impossible to set Flash read protection level1 and level2.
- The activation of backup domain in RCC is systematic.

- HAL I2C

- Correct an issue depending of APB/I2C frequency which was preventing the STOP bit to be cleared.

- The POS bit is now cleared at the beginning of each I2C API.
- The POS bit is no more cleared near STOP generation.

- HAL I2S

- HAL_I2S_Transmit() API is updated to keep the check on busy flag only for the slave.

- HAL NAND

- Review __ARRAY_ADDRESS macro and adapt tests to detect bad blocks

- HAL RCC

- In HAL_RCCEx_PeriphCLKConfig, Reset backup domain only if RTC clock source has been changed.
- Update of HAL_RCC_OscConfig functionto correctly check LSEState.
- Rework __HAL_RCC_LSE_CONFIG macro to manage correctly LSE_Bypass.
- New HAL RCC macro to configure the SYSCLK clock source: __HAL_RCC_SYSCLK_CONFIG(__RCC_SYSCLKSOURCE__).
- Adding macro: __HAL_RCC_MCO_CONFIG.
- For some RPN, the prediv source management in HAL_RCC_OscConfig function was not used.

- HAL RTC

- CMSIS mask definition used instead of hardcoded values.

- HAL SMARTCARD

- Improve documentation

- HAL TIM

- All STM32F101xx and STM32F102xx defines were missing in the file stm32f1xx_hal_tim_ex.h.
- The assert on trigger polarity for TI1F_ED is removed.

- HAL USB

- Correct issue preventing USB Device double-buffering mode for IN endpoints to correctly behave.
- Correct a bad configuration of Turnaround Time.
- Correct USB_FlushTxFifo function which was leading to a GRSTCTL register corruption.
- Replaced the access to USB_OTG_HCCHAR_CHDIS and USB_OTG_HCCHAR_CHENA from a sequencial access to a simultaneous access.

### V1.0.0 / 15-December-2014

Main Changes

- First Official release of STM32F1xx HAL Drivers for all STM32F1 devices.
- This release is in line with STM32Cube Firmware specification Rev1.0 document

## 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