Back to Release page
# Release Notes for STM32F0xx HAL Drivers Copyright 2016 STMicroelectronics
## Update History ### V1.5.0 / 04-November-2016 Main Changes Maintenance release to fix known defects and enhancements implementation HAL Drivers changes Enhance HAL delay and time base implementation: Add new templates stm32f0xx_hal_timebase_rtc_alarm_template.c, stm32f0xx_hal_timebase_rtc_wakeup_template.c and stm32f0xx_hal_timebase_tim_template.c which can be used to override the native HAL time base functions (defined as weak) to use either RTC or Timer 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.4.0 HAL IWDG driver: Overall driver rework for better implementation Remove HAL_IWDG_Start(), HAL_IWDG_MspInit() and HAL_IWDG_GetState() APIs HAL WWDG driver: Overall driver rework 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 CEC driver: Overall driver rework with compatibility break versus previous HAL version Remove 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 TIM driver : add one field (AutoReloadPreload) in TIM_Base_InitTypeDef structure HAL Generic Update HAL Driver compliancy with: MISRA C 2004 rule 10.6 ('U' suffix applied to all constants of 'unsigned' type) MISRA C 2004 rule 14.8 (the statement forming the body of a 'switch', 'while', 'do ... while', or 'for' statement shall be a compound statement) HAL IWDG New simplified HAL IWDG driver: r emove HAL_IWDG_Start(), HAL_IWDG_MspInit() and HAL_IWDG_GetState() APIs API functions are: HAL_IWDG_Init(): this function insures the configuration and the start of the IWDG counter HAL_IWDG_Refresh(): this function insures the reload of the IWDG counter Refer to the following example to identify the changes : IWDG_Reset, IWDG_WidowMode HAL WWDG New simplified HAL WWDG driver: remove HAL_WWDG_Start(), HAL_WWDG_Start_IT(), HAL_WWDG_MspDeInit() and HAL_WWDG_GetState() APIs Update HAL_WWDG_Refresh() API to remove counter parameter New field EWIMode in WWDG_InitTypeDef to specify need for Early Wakeup Interrupt API functions are: HAL_WWDG_Init(), HAL_WWDG_MspInit(), HAL_WWDG_Refresh(), HAL_WWDG_IRQHandler() and HAL_WWDG_EarlyWakeupCallback() Refer to the following example to identify the changes: WWDG_Example HAL CEC Overall driver rework with break of compatibility with HAL V1.4.0 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 UART/USART/IRDA/SMARTCARD IRQ Handler global optimization New abort API: HAL_PPP_Abort(), HAL_PPP_Abort_IT() Add error management in case of DMA transfer through HAL_DMA_Abort_IT() and DMA XferAbortCallback() Polling management update: The user Timeout value must be estimated for the overall process duration HAL SPI Overall driver optimization to improve performance in polling/interrupt mode to reach maximum peripheral frequency Polling 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 disabled Update timeout management to check on global processes Update error code management in all processes Fix regression in polling mode: Add preparing data to transmit in case of slave mode in HAL_SPI_TransmitReceive() and HAL_SPI_Transmit() Fix regression in interrupt mode: Add a wait on TXE flag in SPI_CloseTx_ISR() and in SPI_CloseTxRx_ISR() Add to manage properly the overrun flag in SPI_CloseRxTx_ISR() and SPI_CloseRx_ISR() Prevent data packing mode in reception for STM32F030x6, STM32F030x8, STM32F031x6, STM32F038xx, STM32F051x8 and STM32F058xx HAL DMA Global driver code optimization to reduce memory footprint Add new APIs HAL_DMA_RegisterCallback() and HAL_DMA_UnRegisterCallback to register/unregister the different callbacks identified by the enum typedef HAL_DMA_CallbackIDTypeDef Add new Error Code HAL_DMA_ERROR_NOT_SUPPORTED Remove DMA HAL_DMA_STATE_READY_HALF & HAL_DMA_STATE_ERROR states in HAL_DMA_StateTypeDef HAL RTC Interrupt flag cleared before enabling the interrupt in HAL_RTCEx_SetWakeUpTimer_IT() HAL I2C Disable I2C_OARx_EN bit before any configuration in OAR1 or 2 in HAL_I2C_Init() Move I2C_NO_OPTION_FRAME in private section Use CMSIS bit for compilation switch instead of product switch Update HAL_I2C_Master_Sequential_Transmit_IT() function (wrong state check) Add I2C_FIRST_AND_NEXT_FRAME option for I2C Sequential Transfer On slave, reset LISTEN_TX state in case of direction change Remove GCC warnings HAL TIM API update : add one field (AutoReloadPreload) in TIM_Base_InitTypeDef structure in order to set ARPE bit from TIMx_CR1 register New API : add 2 macros (__HAL_TIM_ENABLE_OCxPRELOAD() and __HAL_TIM_DISABLE_OCxPRELOAD()) in order to set OCxPE bit from TIMx_CCMR1, TIMx_CCMR2 and TIMx_CCMR3 registers Update TIM_SET_CAPTUREPOLARITY and TIM_RESET_CAPTUREPOLARITY definition to take into account CC4NP bit Use MODIFY_REG macro to avoid wrong initialisation in ConfigBreakDeadTime() HAL SMBUS Update SMBUS_Master_ISR() and SMBUS_Slave_ISR() to ensure storage of last receive data HAL PCD Update HAL_PCD_ActivateRemoteWakeup() and HAL_PCD_DeActivateRemoteWakeup() APIs to add condition if LPM activated. LL Drivers changes LL GPIO Remove LL_GPIO_SPEED_FREQ_VERY_HIGH (GPIO_SPEED_FREQ_VERY_HIGH does not exist for STM32F0xx serie) LL_TIM Remove TIM_SMCR_OCCS compilation switch (useless for STM32F0xx serie) LL_CRS Update CRS_POSITION_XXX definitions to use CMSIS definition instead of hardcoded values ### V1.4.0 / 27-May-2016 First official release supporting the Low Level drivers for the STM32F0xx family: Low Layer drivers APIs provide register level programming: they require deep knowledge of peripherals described in STM32F0xx Reference Manual. Low Layer drivers are available for ADC, COMP, Cortex, CRC, CRS, DAC, DMA, EXTI, GPIO, I2C, IWDG, PWR, RCC, RTC, SPI, TIM, USART and WWDG peripherals and additional Low Level Bus, System and Utilities APIs. Low Layer drivers APIs are implemented as static inline function in new Inc/stm32f0xx_ll_ppp.h files for PPP peripherals, there is no configuration file and each stm32f0xx_ll_ppp.h file must be included in user code. Maintenance release to fix known defects and enhancements implementation. HAL generic Updated HAL Driver compliancy with MISRA C 2004 rules: MISRA C 2004 rule 5.2 (tmpreg" variable shall not be used inside MACRO) MISRA C 2004 rule 10.3 (illegal explicit conversion from type "unsigned int" to "uint16_t *). MISRA C 2004 rule 10.5 (bitwise operators ~ and <<). MISRA C 2004 rule 10.6 ('U' suffix applied to all constants of 'unsigned' type). MISRA C 2004 rule 11.5 (no cast that removes any const or volatile qualification from the type addressed by a pointer). MISRA C 2004 rule 12.6 (logical operators should not be confused with bitwise operators). MISRA C 2004 rule 12.7 (bitwise operations not performed on signed integer types). MISRA C 2004 rule 14.3 (a null statement shall only occur on a line by itself). MISRA C 2004 rule 14.9 ('if {expression}' / 'else' construct shall be followed by a compound statement). MISRA C 2004 rule 15.3 (all switch statements shall contain a final default clause). MISRA C 2004 rule 16.3 (identifiers shall be given for all of the parameters in a function prototype declaration). MISRA C 2004 rule 16.4 (identifiers used in the declaration and definition shall be identical). MISRA C 2004 rule 19.10 (in function-like macro definition, each instance of a parameter shall be enclosed in parenthesis). HAL Changed uwTick to global to allow overwrite of HAL_IncTick(). HAL COMP Added delay in COMP startup time required to reach propagation delay specification. HAL CRC Updated devices supporting Programmable Polynomial features: defines and functions prototypes are available only for STM32F071xB, STM32F072xB, STM32F078xx, STM32F091xC, STM32F098x devices. Updated HAL_CRC_DeInit() function (restored IDR Register to Reset value). HAL DMA Added __HAL_DMA_GET_COUNTER() macro returning the number of remaining data units in the current DMA Channel transfer. Provided new function HAL_DMA_Abort_IT() to abort current DMA transfer under interrupt mode without polling for DMA enable bit. HAL GPIO Updated IS_GPIO_PIN() macro to cover full u32 bits. HAL I2C Used macro definition for I2C instances supporting Wakeup from Stop mode. Updated polling flags management within I2C slave DMA drivers. Added support of repeated start feature in case of multimaster mode (allow master to keep I2C communication with slave). Updated WaitOnFlag management (timeout measurement should be always cumulative). Optimized HAL_I2C_XX_IRQHandler() functions (read status registers only once). Reworked DMA end process and I2C error management during DMA transfer. HAL PWR Aligned EWUPx pins and PWR functions with CMSIS definitions. HAL IRDA Modified IRDA_Receive_IT() to execute the RX flush request only in case no data is read from RDR. Modified EIE bit setting in Tx and Rx transfers (Interrupt mode). Updated IRDA_SetConfig() function following UART Baudrate calculation update. Reviewed IRDA state machine to avoid cases where IRDA state is overwritten by IRDA IRQ. Ensure proper alignment of data pointer in Transmit and Receive functions to avoid toolchain compilation hardfault. HAL RCC Performed optimizations for HAL_RCC_ClockConfig(), HAL_RCCEx_PeriphCLKConfig functions. Updated HAL_RCC_OscConfig() function (Reset HSEON/LSEON and HSEBYP/LSEBYP bits before configuring the HSE/LSE). Updated HAL_RCC_OscConfig() function to enable PWR only if necessary for LSE configuration. Corrected CRS interrupt sources. Modified reset of Backup domain only if the RTC Clock source selection is modified from reset value. Added missing HAL IRQHandler and callbacks API for CRS management. Added missing RCC_CFGR_PLLNODIV definition for STM32F030x4/6 devices. Removed HSI48State from structure RCC_OscInitTypeDef when device does not support HSI48. Removed RCC_HSI48_OFF. Removed flag RCC_FLAG_RMV which is write only. Modified AHBPrescTable and APBPrescTable in HAL. R enamed RCC_CRS_SYNCWARM to RCC_CRS_SYNCWARN. R enamed RCC_CRS_TRIMOV to RCC_CRS_TRIMOVF. HAL SPI Updated HAL_SPI_TransmitReceive() function in slave mode to receive correctly the CRC when NSS pulse activated. Added missing __IO in SPI_HandleTypeDef definition. Updated IS_SPI_CRC_POLYNOMIAL macro definition as polynomial value should be odd only. Updated SPI_2linesTxISR_8BIT() and SPI_2linesTxISR_16BIT() functions: added return so that SPI_2linesTxISR_8BITCRC() or SPI_2linesTxISR_16BITCRC() function is called from HAL_SPI_TransmitReceive_IT() when CRC is activated. HAL TIM Used IS_TIM_HALL_INTERFACE_INSTANCE macro instead of IS_TIM_XOR_INSTANCE macro in HAL_TIMEx_HallSensor_xxx() functions. Updated HAL_TIM_ConfigOCrefClear() function to allow TIM_CLEARINPUTSOURCE_OCREFCLR as new ClearInputSource. HAL UART-USART Updated UART Baudrate calculation (UART_DIV_SAMPLING8() and UART_DIV_SAMPLING16() macros). Updated USART_SetConfig() function following UART Baudrate calculation update. Aligned UART-USART Stop Bits with others STM32 series. Renamed IS_UART_WAKEUP_INSTANCE to IS_UART_WAKEUP_FROMSTOP_INSTANCE. Modified UART_Receive_IT() to execute the RX flush request only in case no data is read from RDR. Reviewed UART state machine to avoid cases where UART state is overwritten by UART IRQ. Ensure proper alignment of data pointer in Transmit and Receive functions to avoid toolchain compilation hardfault. HAL USB Corrected double buffer implementation in PCD_SET_EP_DBUF1_CNT() macro. Added missing USB_CNTR_SOFM when setting wInterrupt_Mask global variable used in HAL_PCD_Init. HAL SMARTCARD Aligned SMARTCARD Stop Bits with others STM32 series. Modified SMARTCARD_Receive_IT() to execute the RX flush request only in case no data is read from RDR. Updated SMARTCARD_SetConfig() function following UART Baudrate calculation update. Reviewed SMARTCARD state machine to avoid cases where SMARTCARD state is overwritten by SMARTCARD IRQ. ### V1.3.1 / 29-January-2016 Main Changes Maintenance release to fix known defects and enhancements implementation HAL Generic Updated HAL Driver compliancy with: MISRA C 2004 rule 10.6 ('U' suffix applied to all constants of 'unsigned' type). MISRA C 2004 rule 10.5 (bitwise operators ~ and <<). MISRA C 2004 rule 12.7 (bitwise operations not performed on signed integer types). Updated HAL weak empty callbacks to prevent unused argument compilation warnings. Updated stm32f3xx_hal_msp.c files: Removed reference to MicroXplorer. Updated stm32f3xx_hal_conf.h files: Set HSE_STARTUP_TIMEOUT value to 100ms instead of 5000ms HAL ADC Corrected ADC_CHANNEL_VREFINT enabling in the CCR register. Corrected assert param of nb of discontinuous conversions when discontinuous mode is enabled. Removed Flag EOS in HAL_ADC_GetValue(). HAL CAN Corrected missing __HAL_UNLOCK when all Mailboxes are busy. Added ERRI bit clear besides to clearing LEC bits in CAN_ESR register, in case of Error interrupt. HAL CORTEX Removed __HAL_CORTEX_SYSTICKCLK_CONFIG macro, replaced by HAL_SYSTICK_CLKSourceConfig() function. HAL CRC Updated CRC HAL_CRC_Calculate() and HAL_CRC_Accumulate() comments, handling input data pointers that are not * uint32_t. HAL FLASH Added FLASH API HAL_FLASHEx_OBGetUserData() to get the value saved in User data option byte. Aligned Return value of HAL_FLASH_EndOfOperationCallback function (0xFFFFFFF) when process is finished. HAL GPIO Updated GPIO Output Speed literals naming to ensure HAL full compatibility. Added GPIOD support for STM32070x6 devices. Modified ADC poll for event to return timeout instead of error. HAL I2C Corrected wrong management of AF after NACK. Aligned I2C driver with new state machine definition. Corrected interrupt disabling in I2C_SlaveReceive_ISR() function. Modified HAL_I2C_Master_Transmit to handle sending data of size 0. Renamed I2C_CR1_DFN to I2C_CR1_DNF. HAL PCD Updated call to Double Buffering Counter Function. HAL PWR Added do { } while(0) in __HAL_PWR_VDDIO2_EXTI_DISABLE_FALLING_EDGE() multi statement macro. HAL RCC Performed optimizations for HAL_RCC_ClockConfig() function. Corrected invertion in LSE drive capability Bit definition. Performed optimizations for internal oscillators and PLL startup time. Added GPIOD support for STM32070x6 devices. Removed GPIOE support for STM32F030xC devices. Add RCC_USBCLKSOURCE_NONE when HSI48 is not present. Corrected definition for flag RCC_FLAG_V18PWRRST. Added missing macro __HAL_RCC_LSEDRIVE_CONFIG. Aligned naming of macros related to CRS_CFGR register. Corrected __HAL_RCC_CRS_CLEAR_IT()/__HAL_RCC_CRS_CLEAR_FLAG() macros. Removed Bit PLLNODIV for STM32F030x6 devices. Review implementation to automatically enable backup domain. Added RCC_IT_HSI48RDY definition. Renamed __HAL_RCC_MCO_CONFIG() to __HAL_RCC_MCO1_CONFIG(). HAL RTC Aligned different HAL_RTC_XXIRQHandler() implementations. Check the behavior of flag WUTWF and corrected update of wakeup counter registers. Added subsecond fration formula in HAL_RTC_GetTime() function. Updated Bits mask literals used in macros definition. HAL TIM Corrected __HAL_TIM_SET_PRESCALER timer prescaler definition. Protected SMCR register of possible overwrite in HAL_TIM_ConfigOCrefClear(). Corrected assert checks in HAL_TIM_ConfigClockSource(). HAL TSC Updated IO default state management. HAL UART-USART Corrected behavior of HAL_UART_IRQ_Handler() (removed enabling/disabling of ERR IT source). Corrected UART_FLAG_SBKF definition. Corrected values used for max allowed baudrates constant definitions. Removed USART_CR2_LINEN/USART_CR3_IREN/USART_CR3_SCEN/USART_CR1_UESM bits definitions for STM32F030x6, STM32F030x8, STM32F070xB, STM32F070x6, STM32F030xC. HAL WWDG Aligned WWDG registers Bits naming between all families. ### V1.3.0 / 26-June-2015 Main Changes Maintenance release to fix known defects and enhancements implementation Complete HAL API alignment (macro/function renaming) HAL Generic Update HAL drivers to be MISRA/C++ compliant. Initialized handle lock in HAL_PPP_Init(). Add SYSCFG define macros to manage FM+ on GPIOs. Use uint32_t instead of uint8_t/uint_16. HAL ADC Update ADC state machine. Missing state in function "HAL_ADCEx_Calibration_Start(). Align ADC_SOFTWARE_START literal on STM32L0xx. HAL_ADC_PollForConversion(): update to return error status in case of ADC-DMA mode. HAL_ADC_Init(): ADC resolution must be changed only when ADC is disabled. ADC_ConversionStop(): correct wrong timeout value. HAL_ADC_AnalogWDGConfig(): Add missing assert param. Remove channel for monitoring VBAT power supply pin on F0 Value line devices. Move sampling time setting into ADC init stucture (keep setting into ADC channel init stucture with comments of obsolete setting). Move __HAL_UNLOCK() before peripheral activation because if an interruption occurs between ADC enable & __HAL_UNLOCK(), IRQ handler will be executed while HAL still locked. ADC_DMAConvCplt(): Add call to ADC error callback in case of error. Rename local variables for compliancy with coding rules (tmpHALstatus ==> tmp_hal_status). Simplify __HAL_ADC_GET_IT_SOURCE(). Add use of POSITION_VAL. Add optimization of ADC stabilization delays. HAL CAN Add management of CAN Slave start bank in HAL_CAN_ConfigFilter(). Unlock the CAN process when communication error occurred. Replace “uint32_t Data[8]” by “uint8_t Data[8]” in structures CanTxMsgTypeDef and CanRxMsgTypeDef. HAL CEC Add new API HAL_CEC_GetReceivedFrameSize() to get size of received frame HAL CORTEX Add new macro IS_NVIC_DEVICE_IRQ() to check on negative values of IRQn parameter HAL CRC Add new macros __HAL_CRC_GET_IDR() and __HAL_CRC_SET_IDR(). Update __HAL_CRC_SET_IDR macro in resorting to WRITE_REG instead of MODIFY_REG (cycles gain at execution). HAL DAC HAL_DAC_IRQHandler(): update to check on both DAC_FLAG_DMAUDR1 and DAC_FLAG_DMAUDR 2. HAL DMA Correct __HAL_DMA_GET_IT_SOURCE brief comments. HAL FLASH FLASH_OB_GetRDP(): update function to return the FLASH Read Protection level (OB_RDP_LEVEL_x). FLASH_OB_RDP_LevelConfig(): update function to set the FLASH Read Protection level (OB_RDP_LEVEL_x). Add missing macro __HAL_FLASH_GET_LATENCY. Disable WRP not compliant with other family. Add FLASH_BANK1_END defines. Remove WRP defines for few defines under devices swicthes. Add switch to handle option bits BOOT_SEL & nBOOT1 not present on STM32F030xC & STM32F070x6. HAL GPIO stm32f0xx_hal_gpio_ex.h: add IR as possible GPIO alternate function 1 for STM32F030x6. HAL I2C HAL_I2C_ER_IRQHandler(): handle NACK test during wait on flag treatment. HAL I2S HAL_I2S_DMAStop(): Correctt DMA Stop function which stops both Rx and Tx channels regardless which one was set-up. HAL IRDA HAL_IRDA_DMAStop(): update comments regarding deletion of LOCK/UNLOCK mechanism. HAL PWR Add macros __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE() and __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE. Update HAL_PWR_EnableBkUpAccess() and HAL_PWR_DisableBkUpAccess() comments. HAL RCC Implement workaround to cover RCC limitation regarding Peripheral enable delay. HAL_RCC_OscConfig(): correct test on LSEState. Rework __HAL_RCC_LSE_CONFIG macro to manage correctly LSE_Bypass. Add defines for RCC_System_Clock_Source_Status. Follow specific procedure to enable HSE. Add macros to get the enable or disable status of peripheral clock. HAL_RCCEx_PeriphCLKConfig(): reset backup domain only if RTC clock source has been changed. Add interface HAL_RCCEx_GetPeriphCLKFreq. HAL RTC Add missing RTC_FLAG_INIT in flag list. HAL_RTC_DeInit(): add switch products condition around WakeUp timer registers (WUTWF,WUTR). Remove RTC_FLAG_INIT as currently unused. HAL SMARTCARD Add missing IDLE flag management. Align SMARTCARD_Last_Bit defines. HAL SPI Fix issue related to missing reset of the Dma Tx callback inside the function HAL_SPI_TransmitReceive_DMA(). In that case only RX callback are used and the call of TX callback can close the communication before the end of the RX processing. SPI_2linesRxISR_8BIT(): correct issue on RX 2lines with DataSize8bit, even buffer size and CRC 8bit (SPI_RXFIFO_THRESHOLD is not set). Fit bit update add BSY flag check for all the process. Add __IO (volatile) to the "State" member of the SPI_HandleTypeDef struct. to missing reset of the Dma Tx callback inside the function HAL_SPI_TransmitReceive_DMA(). HAL TIM Add __HAL_TIM_SET_CAPTUREPOLARITY, TIM_SET_CAPTUREPOLARITY, TIM_RESET_CAPTUREPOLARITY macros. HAL UART Add macro to control CTS and RTS from the customer applications. UART_DMATransmitCplt(): change implementation to remove WaitOnFlag in ISR. Change DMA TX management to remove WaitOnFlag in ISR. Add DMA circular mode support for the communication peripherals. Add UART NVIC configuration in the HAL_UART_MspInit(). Add the UARTx_IRQHandler() in the stm32fxxx_it.c and the prototype in the stm32fxxx_it.h. Modify UART DMA implementation issue (missed clear the TC bit in the SR). Add a OVR flag clear prior resuming DMA RX transfer. HAL_UART_DMAResume(): Remove UART_CheckIdleState() call and replace it by unlock + return(HAL_OK). HAL_UART_DMAStop(): remove LOCK/UNLOCK calls. HAL_UART_DMAStop(): update comments regarding deletion of LOCK/UNLOCK mechanism. HAL USART HAL_USART_IRQHandler(): Correct parameters values of __HAL_USART_CLEAR_IT(). Replace xxxITxxx defines by xxxCLEARxxxF defines in __HAL_USART_CLEAR_IT calls. HAL_USART_Init(): update to reach max frequencies (enable oversampling by 8). HAL_USART_DMAPause()/HAL_USART_DMAResume(): add of a OVR flag clear prior resuming DMA RX transfer. HAL_USART_DMAResume(): Remove UART_CheckIdleState() call and replace it by just an Unlock + ret(HAL_OK). HAL_USART_DMAStop(): update comments regarding deletion of LOCK/UNLOCK mechanism. ### V1.2.1 / 09-January-2015 HAL stm32f0xx_hal.h: add missing define for USART3_RX/TX DMA remap on channel3 & channel2 for STM32F070xB only HAL GPIO stm32f0xx_hal_gpio_ex.h: add I2C1 as possible GPIO alternate function 3 for STM32F070xB HAL RCC stm32f0xx_hal_rcc_ex.h: add missing USART2_CLK_ENABLE/DISABLE() macros for STM32F070x6 HAL RTC stm32f0xx_hal_rtc_ex.h/.c: Enable RTC periodic Wakeup timer feature on STM32F070xB & STM32F030xC stm32f0xx_hal_rtc_ex.c: remove HAL_RTCEx_Tamper3EventCallback() API for STM32F070xB & STM32F030xC, since there is no TAMPER3 on those products. HAL UART stm32f0xx_hal_uart_ex.c/.h: add HAL_RS485Ex_Init() API for STM32F0xx Value Line devices ### V1.2.0 / 05-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 A dd new macro IS_HAL_SYSCFG_IRDA_ENV_SEL() Add new defines for ISR Wrapper (HAL_SYSCFG_ITLINE0, etc..) A dd new macro __HAL_GET_PENDING_IT() A dd new macro __HAL_SYSCFG_IRDA_ENV_SELECTION() A dd 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 A dd new macro: __HAL_DMA_GET_HT_FLAG_INDEX(), that returns specified half transfer complete flag index A dd new macro: __HAL_DMA_GET_TE_FLAG_INDEX(), that returns specified transfer error flag index A dd new macro: __HAL_DMA_GET_FLAG() A dd new macro: __HAL_DMA_CLEAR_FLAG() A dd 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: 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 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