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:
General updates to fix known defects and enhancements implementation.
Contents
HAL GPIO driver
Update HAL_GPIO_Init() API to avoid the configuration of PUPDR register when Analog mode is selected.
HAL EXTI update
Update HAL_EXTI_GetConfigLine() API to set default configuration value of Trigger and GPIOSel before checking each corresponding registers.
LL/HAL ADC update
Update LL_ADC_DMA_GetRegAddr() API to prevent unused argument compilation warning.
Update HAL timeout mechanism to avoid false timeout detection in case of preemption.
LL/HAL DAC update
Remove ‘register’ storage class specifier from LL DAC driver.
LL/HAL TIM update
Corrected reversed description of TIM_LL_EC_ONEPULSEMODE One Pulse Mode.
Update HAL_TIMEx_OnePulseN_Start and HAL_TIMEx_OnePulseN_Stop (pooling and IT mode) to take into consideration all OutputChannel parameters.
Update input capture measurement in DMA mode to avoid zero return values at high frequencies.
HAL I2C update
Updated I2C_IsAcknowledgeFailed() API to avoid I2C in busy state if NACK received after transmitting register address.
HAL UART update
Fix erroneous UART’s handle state in case of error returned after DMA reception start within UART_Start_Receive_DMA().
Correction on UART ReceptionType management in case of ReceptionToIdle API are called from RxEvent callback
Handling of UART concurrent register access in case of race condition between Tx and Rx transfers (HAL UART and LL LPUART)
HAL CAN update
Update HAL_CAN_Init() API to be aligned with STM32F3 documentation and to avoid timeout error:
Update CAN Initialization sequence to set “request initialization” bit before exit from sleep mode.
LL FMC update
Fix compilation warning with gcc -Wpedantic compiler option.
HAL SPI update
Updated to fix MISRA-C 2012 Rule-13.2.
Updated to set the FRXTH bit for 8bit data in LL_SPI_Init() API.
Update LL_SPI_TransmitData8() API to avoid casting the result to 8 bits.
HAL I2S update
Update I2SEx APIs to correctly support circular transfers:
Update I2SEx_TxRxDMACplt() API to manage DMA circular mode.
Update HAL_I2SEx_TransmitReceive_DMA() to enhance HAL I2S driver robustness:
Remove DMA TX transfer complete and half complete callback initialization.
HAL IWDG update
Updated HAL_IWDG_Init() API in order to fix HAL_GetTick() timeout vulnerability issue.
HAL RTC update
Update __HAL_RTC_…(__HANDLE__, …) macros to access registers through (__HANDLE__)->Instance pointer and avoid “unused variable” warnings.
Correct month management in IS_LL_RTC_MONTH() macro
LL USART update
Remove useless check on maximum BRR value by removing IS_LL_USART_BRR_MAX() macro.
Handling of UART concurrent register access in case of race condition between Tx and Rx transfers (HAL UART and LL LPUART)
HAL NAND update
Update implementation of “HAL_NAND_Read_SpareArea_16b” and “HAL_NAND_Write_SpareArea_16b” to fix an issue with the spare area Column address calculation
Update implementation of “HAL_NAND_Write_Page_16b” and “HAL_NAND_Read_Page_16b” APIs implementation to fix an issue with the page calculation of 8 bits memories
HAL USB_FS update
HAL PCD: add fix transfer complete for IN Interrupt transaction in single buffer mode
Race condition in USB PCD control endpoint receive ISR.
Main Changes
Patch release to fix known defects and enhancements implementation.
Remove “register” keyword to be compliant with new C++ rules:
The register storage class specifier was deprecated in C++11 and removed in C++17
HAL driver update
Add new defines for ARM compiler V6:
__weak
__packed
__NOINLINE
Remove compile switch “USE_HAL_LEGACY” on #include “Legacy/stm32_hal_legacy.h”
Update HAL TimeBase TIM, RTC alarm and RTC WakeUp templates for more robustness
Update HAL_InitTick() API to properly store the priority when using the non-default time base.
HAL/LL ADC update
Update HAL_ADC_Stop_DMA() API to check if DMA state is Busy before calling HAL_DMA_Abort() API to avoid DMA internal error.
Update LL_ADC_REG_Init() API to avoid enabling continuous mode and discontinuous mode simultaneously.
HAL CEC update
Update HAL_CEC_IRQHandler() API to avoid appending an extra byte to the end of message.
HAL TSC update
Update the HAL_TSC_Init() API to add new check condition on “PulseGeneratorPrescaler” Parameter
HAL FLASH update
Update FLASH_OB_DisableWRP() API to remove write protection on selected sectors instead of all sectors.
HAL/LL IWDG update
Update HAL_IWDG_DEFAULT_TIMEOUT define value to consider LSI value instead of hardcoded value.
HAL RTC update
Update to support Daylight Saving Time (DST) feature:
Subtract or add one hour to the calendar can now be handled outside HAL_RTC_SetTime() thanks to new APIs.
HAL_RTC_DST_Add1Hour() API to add one hour to the calendar
HAL_RTC_DST_Sub1Hour() API to subtract one hour from the calendar
HAL_RTC_DST_SetStoreOperation() API to set the store operation bit
HAL_RTC_DST_ClearStoreOperation() API to clear the store operation bit
HAL_RTC_DST_ReadStoreOperation() API to read the store operation bit
DayLightSaving and StoreOperation interfaces from RTC_TimeTypeDef type are now deprecated.
HAL/LL SPI update
Update HAL_SPI_TransmitReceive() API to manage the case of unaligned data
Update SPI_DMAReceiveCplt() API to handle efficiently the repeated transfers.
Disable TX DMA request only in bidirectional receive mode
HAL/LL TIM update
Update Encoder input interface to don’t allow both input polarity configuration
Replace IS_TIM_IC_POLARITY() macro by IS_TIM_ENCODERINPUT_POLARITY() macro.
Update to allow multiple DMA request with different channels in parallel:
Implement DMA burst state management mechanism
Implement TIM channel state management mechanism
Correct inverted values of LL_TIM_COUNTERMODE_CENTER_DOWN and LL_TIM_COUNTERMODE_CENTER_UP
Update LL_TIM_GetCounterMode() API to return right counter mode.
HAL/LL SMARTCARD update
Update smartcard transmit processes to be able to handle data retransmission when NACK is received in smartcard T=0
HAL/LL UART update
Update to enhance reception to idle services (ReceptionToIdle):
Add a new field HAL_UART_RxTypeTypeDef structure to the UART_HandleTypeDef structure to identify the type of ongoing Reception
Add UART Reception Event Callback registration features
Add a set of APIs specific to Reception to Idle transfer in different mode
Add HAL_UARTEx_ReceiveToIdle API to receive an amount of data in blocking mode till either the expected number of data is received or an IDLE event occurs.
Add HAL_UARTEx_ReceiveToIdle_IT() API to receive an amount of data in interrupt mode till either the expected number of data is received or an IDLE event occurs.
Add HAL_UARTEx_ReceiveToIdle_DMA() API to receive an amount of data in DMA mode till either the expected number of data is received or an IDLE event occurs.
Update HAL_UART_Receive(), HAL_UART_Receive_IT() and HAL_UART_Receive_DMA() APIs to support the new enhancement of ReceptionToIdle
Update HAL_UART_IRQHandler() to handle receiver timeout interruption
Update UART receive processes (IT & DMA) to handle the UART receive timeout interruption
HAL/LL USART update
Add RTO (Receiver Time Out) support to USART HAL flags and IT management
Add HAL_USART_ERROR_RTO define of Receiver Timeout error to the USART Error Definition section
Add USART_FLAG_RTOF define of Receiver Timeout flag to the USART Flags section
Add USART_CLEAR_RTOF define of Receiver Timeout clear flag to the USART Clear Flags section
Update HAL_USART_IRQHandler to add support to the Receiver Timeout Interruption
LL UTILS update
UTILS_SetFlashLatency() API renamed to LL_SetFlashLatency() and set exportable.
Main Changes
Maintenance release to fix known defects and enhancements implementation
HAL Drivers changes
HAL/LL GPIO update
Update GPIO initialization sequence to avoid unwanted pulse on GPIO Pin’s
Update HAL_GPIO_TogglePin() API to allow the toggling of many pins
HAL/LL I2C update
Update HAL_I2C_ER_IRQHandler() API to fix acknowledge failure issue with I2C memory IT processes
Add stop condition generation when NACK occurs.
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 callbacks
Update Sequential transfer APIs to adjust xfermode condition.
Replace hi2c->XferCount < MAX_NBYTE_SIZE by hi2c->XferCount <= MAX_NBYTE_SIZE which corresponds to a case without reload
HAL/LL USB driver
Bug fix: USB_ReadPMA() and USB_WritePMA() by ensuring 16-bits access to USB PMA memory
Bug fix: correct USB RX count calculation
Fix USB Bulk transfer double buffer mode
Remove register keyword from USB defined macros as no more supported by C++ compiler
Minor rework on USBD_Start() and USBD_Stop() APIs: stopping device will be handled by HAL_PCD_DeInit() API.
Remove non used API for USB device mode.
Main Changes
General updates to fix known defects and enhancements implementation
Add support of HAL callback registration feature
Add new HAL EXTI driver
The following changes done on the HAL drivers require an update on the application code based on older HAL versions
HAL/LL Generic update
Add support of HAL callback registration feature
The feature disabled by default is available for the following HAL drivers:
The feature may be enabled individually per HAL PPP driver by setting the corresponding definition USE_HAL_PPP_REGISTER_CALLBACKS to 1U in stm32f0xx_hal_conf.h project configuration file (template file stm32f0xx_hal_conf_template.h available from Drivers/STM32F0xx_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()
HAL/LL Generic update
Update 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).
Add UNUSED() macro implementation to avoid GCC warning
The warning is detected when the UNUSED() macro is called from C++ file
General updates to fix MISRA 2012 compilation errors
Update assert_failed() API prototype to use pointer on uint8_t instead of char
HAL CRC update
Remove extended initialization HAL_CRCEx_Init() API
HAL_CRC_Init() call HAL_CRCEx_Polynomial_Set() to initialize the CRC polynomial
Remove extra call to HAL_LOCK/HAL_UNLOCK from the followings APIs:
HAL_CRC_Accumulate()
HAL_CRC_Calculate()
HAL DAC update
Update to check on DAC_CHANNEL2_SUPPORT instead of device part number
HAL DMA update
Add clean of callbacks in HAL_DMA_DeInit() API
Update HAL_DMA_Abort() API to
Be able to return HAL_ERROR when DMA is already busy
HAL/LL RTC update
HAL/LL drivers optimization
HAL driver: remove unused variables to fix CodeSonar warnings
LL driver: getter APIs optimization
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 CEC update
update CEC states definition
HAL COMP update
Add HAL_COMP_GetError() API to return the COMP error code
HAL I2C update
I2C API changes for MISRA-C 2012 compliance:
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 APIs
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_FRAME
I2C_OTHER_AND_LAST_FRAME
Fix I2C send break issue in IT processes
Add additional check on hi2c->hdmatx and hi2c->hdmarx to avoid the DMA request enable when ITmode is used.
HAL SPI update
General update to enhance robustness for HAL SPI driver
HAL I2S update
General update to enhance robustness for HAL I2S driver
HAL SMBUS update
General update to enhance robustness for HAL SMBUS driver
HAL TIM update
Move the following TIM structures from stm32f0xx_hal_tim_ex.h into stm32f0xx_hal_tim.h
TIM_MasterConfigTypeDef()
TIM_BreakDeadTimeConfigTypeDef()
TIM API changes for MISRA-C 2012 compliance:
Rename HAL_TIM_SlaveConfigSynchronization to HAL_TIM_SlaveConfigSynchro
Rename HAL_TIM_SlaveConfigSynchronization_IT to HAL_TIM_SlaveConfigSynchro_IT
Rename HAL_TIMEx_ConfigCommutationEvent to HAL_TIMEx_ConfigCommutEvent
Rename HAL_TIMEx_ConfigCommutationEvent_IT to HAL_TIMEx_ConfigCommutEvent_IT
Rename HAL_TIMEx_ConfigCommutationEvent_DMA to HAL_TIMEx_ConfigCommutEvent_DMA
Rename HAL_TIMEx_CommutationCallback to HAL_TIMEx_CommutCallback
Add a call to HAL_DMA_Abort_IT from HAL_TIM_XXX_Stop_DMA
HAL TSC update
HAL_TSC_IODischarge() API: update choice parameter to be on FunctionalState instead of uint32_t.
Add new field ErrorCode in TSC_HandleTypeDef structure
HAL_TSC_Init() API add new assert_param() on ChannelIOs, ShieldIOs and SamplingIOs fields.
HAL UART update
Update to manage UART LIN and UART wakeUp features in stm32f0xx_hal_uart.c/.h instead of stm32f0_hal_uart_ex.c/.h
General update to enhance robustness for HAL UART driver
Major Update to improve performance in polling/interrupt mode to reach max frequency:
Polling mode :
Use API data pointer instead of UART handle data pointer.
Interrupt mode
Minimize access on UART registers.
Split the UART modes into dedicated static functions to minimize checking statements under HAL_IRQHandler():
8 bit/ 16 bits data formats
All modes:
Update Timeout management to check on global process.
Update Error code management in all processes.
HAL USART update
General update to enhance robustness for HAL USART driver
Major Update to improve performance in polling/interrupt mode to reach max frequency:
Polling mode :
Use API data pointer instead of USART handle data pointer.
Update HAL USART Transmit/Receive processes to support Word Length 9 Bits with/No parity transfer
Interrupt mode
Minimize access on USART registers.
Split the USART modes into dedicated static functions to minimize checking statements under HAL_IRQHandler():
8 bit/ 16 bits data formats
All modes:
Update Timeout management to check on global process.
Update Error code management in all processes.
HAL SMARTCARD update
General update to enhance robustness for HAL SMARTCARD driver
Major Update to improve performance in polling/interrupt mode to reach max frequency:
Polling mode :
Use API data pointer instead of SMARTCARD handle data pointer.
Update HAL SMARTCARD Transmit/Receive processes to support Word Length 9 Bits with/No parity transfer
Interrupt mode
Minimize access on SMARTCARD registers.
Split the SMARTCARD modes into dedicated static functions to minimize checking statements under HAL_IRQHandler():
8 bit/ 16 bits data formats
All modes:
Update Timeout management to check on global process.
Update Error code management in all processes.
HAL IrDA update
General update to enhance robustness for HAL IrDA driver
Update HAL IrDA Transmit/Receive processes to support Word Length 9 Bits with/No parity transfer
Remove unused IRDA_ControlTypeDef() enumeration
LL/HAL RCC update
Add new LL/HAL macros
LL_RCC_PLL_SetMainSource() allowing to configure PLL main clock source
__HAL_RCC_GET_RTC_SOURCE() allowing to get the RTC clock source
Update HAL_RCC_ClockConfig() API to:
update to use __HAL_FLASH_GET_LATENCY() flash macro instead of using direct register access to LATENCY bits in FLASH ACR register.
Update HAL_RCC_DeInit() and LL_RCC_DeInit() APIs to
Add checks for HSI and PLL ready before modifying RCC CFGR registers
Clear all interrupt falgs
HAL/LL USB update
Add stm32f0xx_ll_usb.c/h driver
cleanup reference to low speed in device mode
Software Quality improvement with a fix of CodeSonar warning on PCD_Port_IRQHandler() interrupt handlers
Remove wrongly coded PCD_GET6_DB_DIR macro
Improve software quality to be MISRA-C 2012 and CodeSonar compliant
STM32F0 Fix USB Exti Wakeup signal by removing non used macro
Ensure 16bits access to USB PMA
Make sure to set correct count for receive fifo
Rework USB BCD driver and fix required timing to initiate primary and secondary detection
Prevent clearing CTR_RX and CTR_TX flags when setting the EP type
Add error check during USB init
Main Changes
Maintenance release to fix known defects and enhancements implementation
HAL Drivers changes
HAL PCD update
Update Memory-mapped peripheral registers definition to be volatile to avoid unwanted optimization with GCC compiler.
LL TIM Update
Update Memory-mapped peripheral registers definition to be volatile to avoid unwanted optimization with GCC compiler.
LL DAC Update
Update Memory-mapped peripheral registers definition to be volatile to avoid unwanted optimization with GCC compiler.
Main Changes
Maintenance release to fix known defects and enhancements implementation
The following changes done on the HAL drivers require an update on the application code based on older HAL versions
Rework 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/STM32F0xx_HAL_Driver/Src and Drivers/STM32f0xx_HAL_Driver/Inc folders. It can be enabled through switch HAL_CAN_MODULE_ENABLED in stm32f0xx_hal_conf.h
The legacy HAL CAN driver is also present in the release in Drivers/STM32F0xx_HAL_Driver/Src/Legacy and Drivers/STM32F0xx_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 stm32f0xx_hal_conf.h
HAL Drivers changes
HAL CAN update
Fields 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() APIs
HAL_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 receive callback 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 FLASH update
Update the FLASH_OB_GetRDP() API to return the correct RDP level
HAL PCD update
PCD_SET_EPTYPE() macro update to prevent clearing USB_EP_CTR_TX and USB_EP_CTR_RX flags.
Main Changes
Maintenance release to fix known defects and enhancements implementation
Generic drivers changes
MISRA C 2004 rule 11.4 (A cast should not be performed between a pointer to object type and a different pointer to object type).
MISRA C 2004 rule 12.4 (The right-hand operand of a logical or I I operator shall not contain side effects).
Minor improvement of Doxygen Tags for CHM UM generation.
HAL Drivers changes
HAL GPIO
Add definition of GPIO_AF0_TIM3 for STM32F030x6 and STM32F030x8 devices.
HAL I2C
Editorial modification : astyle clean-up
HAL PCD
Remove lock/unlock from USB receive and transmit endpoints.
LL Drivers changes
LL_TIM
Ensure write operation of BKE and BKP bits is effective by adding fake read operation to garantee 1 APB clock cycle before function exit.
Exchange behavior between LL_TIM_EnableUpdateEvent() and LL_TIM_DisableUpdateEvent().
LL_RCC
Fix issue in RCC_GetSystemClockFreq() when HSI48 oscillator is selected as system clock.
Main Changes
Maintenance release to fix known defects and enhancements implementation
HAL Drivers changes
HAL Generic
MISRA C 2004 rule 10.6 (U suffix applied to all constants of unsigned type).
Remove useless cast (uint32_t ) cast in case of U suffix.
Modify HAL_Delay to guarantee the minimum Delay provided as parameter.
Add definition of USE_SPI_CRC to activate CRC feature inside HAL SPI driver.
New API : HAL_GetUID() read the unique device identifier.
Correct RTC_ASYNCH_PREDIV and RTC_SYNCH_PREDIV definition when LSI configured as RTC clock source.
HAL CAN
Add transmission abort when timeout is reached in HAL_CAN_Transmit().
Add management of overrun error.
Store missing FIFO number in received message.
Extend SET_BIT, CLEAR_BIT macro usage.
Allow possibility to receive messages from the 2 RX FIFOs in parallel via interrupt.
Fix message lost issue with specific sequence of transmit requests.
HAL ADC
DMA transfer must be disabled during calibration to avoid ADC calibration factor insertion among ADC conversion data.
Remove unused literal ADC_EOC_SINGLE_SEQ_CONV.
HAL COMP
Rename LL_COMP_DELAY_STARTUP_US in COMP_DELAY_STARTUP_US.
HAL SPI
Replace hard coded values by CMSIS define.
Extend SET_BIT, CLEAR_BIT macro usage.
Add timeout management in HAL_SPI_Abort() and HAL_SPI_Abort_IT().
Add IS_SPI_DMA_HANDLE macro to check handle validity.
Add IS_SPI_16BIT_ALIGNED_ADDRESS macro to check if data buffer address are 16 bits aligned when transferring more than 1 byte (there is no support for unaligned accesses on the Cortex-M0 processor).
In 2 lines transmission configuration, ensure RXFIFO is empty at the end of transmission. Add SPI_WaitFifoStateUntilTimeout (SPI_FLAG_FRLVL) call.
HAL RTC
add a wait for synchronization on HAL_RTC_Init function to avoid re-entering in initialization state before previous exit of initialization state.
HAL TIM
New API to disable unconditionally the Main Output Enable of a timer instance : __HAL_TIM_MOE_DISABLE_UNCONDITIONALLY().
DMA burst mode enhancement. Add 2 new API in order to manage serape parameters for burst length and data length:
HAL_TIM_DMABurst_MultiWriteStart()
HAL_TIM_DMABurst_MultiReadStart()
HAL SMBUS
Add new feature “ZONE READ/WRITE” : The ZONE_READ and ZONE_WRITE protocols are used to simultaneously read from or write to some or all of the devices on a bus. New options defined (SMBUS_OTHER_FRAME_NO_PEC, SMBUS_OTHER_FRAME_WITH_PEC, SMBUS_OTHER_AND_LAST_FRAME_NO_PEC, SMBUS_OTHER_AND_LAST_FRAME_WITH_PEC).
New API : Digital/Analog filter configuration with HAL_SMBUS_ConfigAnalogFilter() and HAL_SMBUS_ConfigDigitalFilter().
HAL PCD
Modify PCD_ReadPMA() to avoid HardFault when buffers not aligned on 16 bits address.
LL Drivers changes
LL Generic
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).
Remove useless cast (uint32_t ) cast in case of U suffix.
Replace hard coded POSITION definition in driver by the associated PPP_xxx_pos CMSIS define (PPP could be I2C, USART …).
LL GPIO
Rename GPIO_AFRH and GPIO_AFRL bit fields for alignment with all STM32 series.
LL DMA
For better performances, use WRITE_REQ() and READ_REG() when accessing CPAR and CMAR registers.
Replace SET_BIT by WRITE_REG macro to clear flags in DMA_ICFR register (register is write only).
LL USART
Add IS_LL_USART_BRR macro : In case of oversampling by 16 and 8, Baud Rate Register content must be greater than or equal to 16.
LL I2C
OA1EN bit of OAR1 register should be set only when own address different from 0 (0 reserved for General Call address).
LL CRS
Add missing shift of HSI48CalibrationValue parameter value in LL_CRS_ConfigSynchronization().
LL RTC
For better performances, simplify implementation of LL_RTC_TIME_Get() and LL_RTC_DATE_Get().
LL USART
Add ((void)(temp)) to Prevent unused argument(s) compilation warning when USE_FULL_ASSERT not defined.
LL_TIM
New API : In order to program BDTR register in a single write operation add :
Add initialization of AutomaticOuput field in LL_TIM_BDTR_StructInit().
LL UTILS
Use current AHB prescaler valuer instead of the one selected by the user to calculate SYSCLK frequency.
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_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: remove 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
Main Changes
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
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.
Renamed RCC_CRS_SYNCWARM to RCC_CRS_SYNCWARN.
Renamed 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.
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 inversion 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.
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_DMAUDR2.
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().
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
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.
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()
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
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
Driver
Defect Correction
PWR
PVD feature need falling/rising Event modes
COMP
Missing assert param IS_COMP_TRIGGERMODE
RCC
HAL_RCC_OscConfig: HSERDY has to be checked also in by pass mode
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
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.