Back to Release page

# Release Notes for STM32L0xx HAL Drivers
Author: MCD Application Team

Copyright 2016 STMicroelectronics

## Update History

### V1.5.0/ 8-January-2016

Main Changes

- Updates of the HAL :
  - Compliancy with MISRA coding rules (MISRA C 2004 rule 10.5 except for hal_pcd.c file and MISRA C 2004 rule 5.3).
  - Several functions inside the HAL have been updated in order to prevent unused argument compilation warnings.
  - The startup timeout value for many clocks (as HSE, HSI, LSI, MSI, PLL) have been updated to reach a more accurate value (alignement to the Datasheet).
  - The macro __HAL_CORTEX_SYSTICKCLK_CONFIG(..) has been removed since this service is already covered by the function HAL_SYSTICK_CLKSourceConfig().
  - Several updates on dedicated HAL as specified in the list below :
  List of HAL updates or corrections provided by this release:
- HAL update

- Update the SYSCFG_BOOT_SYSTEMFLASH definition. (SYSCFG_BOOT_SYSTEMFLASH is now equal to SYSCFG_CFGR1_BOOT_MODE_0 instead of SYSCFG_CFGR1_MEM_MODE_0)
- The HSE_STARTUP_TIMEOUT is now equal to 100 instead of 5000.

- HAL I2C update

- Update the HAL_I2C_Slave_Receive function. Store last data received when requested.
- Improvement of the HAL_I2C_MasterReceive function. Error management update. (HAL_ERROR detection versus HAL_TIMEOUT)
- Improvement of the I2C_MasterTransmit_ISR function. Adding of several error checks, unlock of the process when requested.
- Improvement of the I2C_MasterReceive_DMA function. Adding of several error checks and abort DMA when requested.

- HAL UART update

- Update the check of parameters inside the function HAL_LIN_SendBreak().
- Correction of an error present on the V1.4.0 release. On the V1.4.0 release, the clock used inside the function USART_SetConfig(..) was never set.

- HAL DMA update

- Update the DMA_handler structure in order to be MISRA-C 2004 rule 5.3 compliant.

- HAL SPI update

- Update the SPI_handler structure in order to be MISRA-C 2004 rule 5.3 compliant.

- HAL RCC update

- Update support of RCC_MC03 when requested.
- Update support of dynamic HSE prescaler configuration for LCD/RTC peripherals.
- Some updates inside the HAL_RCC_ClockConfig function.
- Some updates inside the HAL_RCC_MCOConfig function. The enabling of the MCO clocks (__MC01_CLK_ENABLE() or __MCO2_CLK_ENABLE()) is done separately depending on the MCO selected.
- The function HAL_RCCEx_GetPeriphCLKFreq() has been reworked.
- The function HAL_RCCEx_PeriphCLKConfig() has been updated. A new error is now detected when trying to update the HSE divider dynamically.

- HAL TSC update

- Several updates inside the HAL_TSC_Start function and HAL_TSC_Init function. Check of input parameters

- HAL ADC update

- The channel 16 (ADC_CHANNEL_16) is not available on all devices.

- HAL CORTEX

- The macro __HAL_CORTEX_SYSTICKCLK_CONFIG(..) has been removed since this service is already covered by the function HAL_SYSTICK_CLKSourceConfig().

- HAL FLASH update

- The restriction which was present on V1.4.0 and linked to the OPTVERR bit usage on STM32L031xx and STM32L041xx has been removed. This is due to the fact that the new STM32L031xx/STM32L041xx devices supports now this feature. On the first revision of the STM32L031xx/STM32L031xx devices (RevID = 0x1000 retrieved via HAL_GetREVID()), the OPTVERR bit was not functional. The OPTVERR (Option valid error bit) is set by hardware when, during an Option byte loading, there was a mismatch for one or more configurations.

### V1.4.0/ 16-October-2015

Main Changes

- Support of STM32L011xx and STM32L021xx series
  On STM32L011xx/STM32L021xx, compared to STM32L07xxx/STM32L08xxx, some of the main differences are listed hereafter :
  - SRAM size set to 2KB (instead of 20KB)
  - Flash size set to 16KB (instead of 192KB)
  - GPIO available :A,B,C (instead of A,B,C,D,E,H)
  - Timers available : TIM2,TIM21,LPTIM1 (instead of TIM2,TIM3,TIM6,TIM7,TIM21,TIM22,LPTIM1)
- Minor updates of the HAL :
  List of HAL updates or corrections provided by this release:
- HAL COMP update

- Update of the non inverting inputs available on the whole L0 family.

- HAL RCC update

- Usage of a common PLLMulTable[] defined in system_stm32l0xx.c.
- Update in the definition of the different tampers.
- Minor renaming of several macros.

- HAL TIMER update

- Handle lock initialization in all TIM init functions.

- HAL LCD update

- Add support of new MuxSegment field inside the init structure.

- HAL DMA update

- Alignment of the different channels within the L0 family.

### V1.3.0/ 09-September-2015

Main Changes

- Major update of the HAL API :
  - all MACROs and LITERALs values have been reworked to align all STM32 Families as much as possible
  - Important information : A stm32_hal_legacy.h file has been added to the FW package in order to support the old MACROs and LITERAL values used in the previous versions of customer applications. (this file is automatically included, from HAL/Inc/Legacy)
  - In HAL MACROs definitions : do { } while(0) have been used in multi statement macros

- Support of STM32L031xx and STM32L041xx series
  On STM32L031xx/STM32L041xx, compared to STM32L07xxx/STM32L08xxx, the main differences are as follow :
  - SRAM size set to 8KB (instead of 20KB)
  - Flash size set to 32KB (instead of 192KB)
  - GPIO available :A,B,C,H (instead of A,B,C,D,E,H)
  - Timers available : TIM2,TIM21,TIM22,LPTIM1 (instead of TIM2,TIM3,TIM6,TIM7,TIM21,TIM22,LPTIM1)
  List of HAL updates or corrections provided by this release:
- HAL ADC update

- ADC assert param needs to be more specific for discontinuous mode, nb of discont conversions
- ADC external trigger definition is not complete Flag EOS should not be reset in HAL_ADC_GetValue()
- ADC poll for event must return timeout instead of error
- ADC state machine update - States with bitfields are now used for a more accurate status
- ADC run in LPrun mode needs SYSCFG buffers enabled
- ADC_CLOCK_SYNC_PCLK_DIVx was not correct
- Remove WaitLoopIndex at the beginning of the function HAL_ADC_Enable
- ADC parameter "ADC_SOFTWARE_START" for compatibility with other STM32 devices
- ADC poll for conversion must return error status in case of ADC-DMA mode
- ADC identical error code returned generates confusion
- Issue observed with ADC start simultaneous commands
- The HAl_Delay() is not required when ADVREGEN is set
- [STM32L07xxx/STM32L08xxx] ADC Interface modification : ADC_Init structure update
- [STM32L07xxx/STM32L08xxx] ADC Interface modification LowPowerAutoOff is now LowPowerAutoPowerOff
- ADC_Enable does not support the LowPowerAutoOff function

- HAL COMP update

- COMP_TRIGGERMODE_NONE missing in stm32l0xx_hal_comp.h
- COMP wrong implementation of the macro : IS_COMP_WINDOWMODE_INSTANCE
- Misplaced user callback at HAL_COMP_IRQHandler
- EXTI Usage model update - add MACROs __HAL_COMP_COMPx_EXTI_GENERATE_SWIT()
- HAL COMP update in HAL_COMP_Lock() to handle state change and prevent C++ compilation error
- Add the LPTIM Comparator connection

- HAL Cortex update

- [MISRA] bitwise operators ~ and << (MISRA C 2004 rule 10.5)
- Cortex The function HAL_NVIC_GetPriority(IRQn_Type IRQn) was missing
- Cortex HAL_NVIC_DisableIRQ()/HAL_NVIC_EnableIRQ() Add a check on negative parameter values

- HAL CRC update

- __HAL_CRC_SET_IDR macro improvement
- CRC wrong definition of __HAL_CRC_SET_IDR macro
- Uncorrect CRC functions naming, portability failing, out of topic comments
- Useless Assignment in stm32l0xx_hal_crc.c detected by CodeSonar

- HAL DAC update

- Missing define for DAC Trigger (010: Timer 3 CH3 event)
- Complete DAC update as per HAL_API_Reference
- DAC HAL_DAC_Stop_DMA() code clean up
- HAL_DAC_ConfigChannel: use "hdac->Instance->XXX" instead of "DAC->XXX"
- No reset of previous bits WAVEx / MAMPx before setting values in HAL_DACEx_NoiseWaveGenerate & HAL_DACEx_TriangleWaveGenerate

- HAL DMA update

- The description of __HAL_DMA_GET_IT_SOURCE() was incorrect

- HAL FLASH update

- FLASH Missing macro __HAL_FLASH_GET_LATENCY
- FLASH_WaitForLastOperation issue
- FLASH_Program_IT unlock() issue
- FLASH Crash during HAL_FLASHEx_HalfPageProgram and HAL_FLASHEx_ProgramParallelHalfPage
- FLASH Ramfunc error management
- FLASH IS_OPTIONBYTE(VALUE) is not correct if all options are selected
- HAL_FLASH Otpion Byte "BootConfig" and "BOOTBit1Config"
- FLASH SPRMOD option bit is impacted by FLASH_OB_RDPConfig()
- __HAL_FLASH_GET_FLAG was not functional

- HAL GPIO update

- GPIO The Clear of the External Interrupt is not properly done
- GPIO GPIO_SPEED LITERALS renaming
- GPIO_AF for LPTIM is no more compatible with HAL L0 V1.1
- GPIO AF2 defines for RTC should be aligned for all L0 devices
- GPIO AF defines for LPTIM1 should be the same for all devices.
- GPIO Bug at EXTi register GPIO config in HAL_GPIO_Init() function
- GPIO GPIO_AF5_I2S3ext Update the defined name to be more generic
- GPIO Protect init from impossible AF configuration
- GPIO interrupt mode is not reset
- GPIO Check of the Pin availability according to the GPIO in use
- GPIO rework GPIO_GET_SOURCE
- [STM32L07xxx/STM32L08xxx] GPIO updates (HAL driver and associated validation test prg)
- The GET_GPIO_SOURCE() macro is wrongly implemented
- GPIO alternate functions defined in stm32l0xx_hal_gpio_ex.h not aligned with the spec
- GPIO private Macro __HAL_GET_GPIO_SOURCE must be renamed GET_GPIO_SOURCE

- HAL I2C update

- New SYSCFG Define MACROs to manage FM+ on GPIOs
- NACK is not treated during wait on flag treatment

- HAL I2S update

- I2S HAL_I2S_Transmit() API update to keep the check on busy flag only for the slave
- I2S busy flag issue
- I2S Management of the bit ASTREN for the I2S various modes

- HAL LCD update

- LCD HD field initialization of LCD_FCR register is missing in HAL_LCD_init() function

- HAL LPUART update

- HAL _DIV_LPUART macro possible value saturation
- LPUART CR3 register bit 11 must be kept at reset value.

- HAL PWR update

- Cortex SCR SLEEPONEXIT and SEVONPEND bits management
- PWR PVD feature need falling/rising Event modes
- PWR REGLPF and VOSF polling request

- HAL RCC update

- RCC Bug in HAL_RCC_GetSysClockFreq
- Missing RCC IRQ handler for LSE CSS interrupt
- Missing external macro __HAL_RCC_MCO_CONFIG
- RCC Enable automatically backup domain
- In HAL_RCCEx_PeriphCLKConfig, Reset backup domain only if RTC clock source has been changed
- RCC update LSE_CONFIG to remove transaction LSE On to LSE Bypass
- Issue on MSI setting
- Rework __HAL_RCC_LSE_CONFIG macro to manage correctly LSE_Bypass
- Rename HSI48_TIMEOUT_VALUE into RCC_HSI_TIMEOUT_VALUE
- Add defines for RCC_System_Clock_Source_Status
- New HAL RCC macro to configure the SYSCLK clock source
- Wrong calculation of sysclk in case of PLL clocked by HSI_Div4
- RCC_CRSStatusTypeDef must be typed uint32_t
- RCC Implement workaround to cover RCC limitation regarding Peripheral enable delay
- RCC issue in HAL_RCC_OscConfig when RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS
- RCC Check if need to add interface HAL_RCCEx_GetPeriphCLKFreq
- RCC Add a comment in the How to use section to mention the Peripheral enable delay
- RCC Some values in MSIRangeTable are wrong
- RCC missing macros to easily Enable/Disable HSI48(RC) clock for RNG analog config
- RCC HSERDY must be checked even in HSE_BYPASS mode
- RCC Improve HAL_RCC_OscCOnfig() function

- HAL RNG update

- RNG Type inconsistency of value returned by HAL_RNG_GetRandomNumber() and HAL_RNG_GetRandomNumber_IT() functions.
- RNG Process lock and array of random numbers generation in interrupt mode
- RNG Incorrect DRDY flag resetting
- RNG Incorrect interrupt mode random number generation
- RNG Incorrect TimeOut handling in polling mode random number generation

- HAL RTC update

- RTC macro __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG erroneous definition
- RTC alignment of different HAL_RTC_XXIRQHandler() implementations
- RTC Bits Mask literals to be used in macro definition
- RTC macro __HAL_RTC_TAMPER_GET_IT() issue in param: __INTERRUPT__ @arg list
- RTC wrong description of the subsecond item of RTC_TimeTypeDef structure in the header file
- RTC WUTWF is not reliable
- HAL_RTC_GetTime function does not return the actual subfraction
- [STM32L031xx/STM32L041xx] RTC macros renaming for RTC_OUTPUT_REMAP_XX and RTC_TIMESTAMPPIN_XX
- Enhance @note describing the use of HAL RTC APIs

- HAL SPI update

- SPI HAL_SPI_TransmitReceive_DMA() Remove DMA Tx Callback in case of RxOnly mode
- SPI HandleTypeDef.ErrorCode must be typed uint32_t
- Warnings with True Studio IDE (tempreg variable not used)

- HAL TIM update

- TIM problem to use ETR as OCrefClear source
- TIM Wrong remaping of the TIM2_ETR
- TIM register BDTR does not exist
- The assert on trigger polarity for TI1F_ED should be removed
- TIM Add macros to ENABLE/DISABLE URS bit in TIM CR1 register
- TIM HAL_TIM_OC_ConfigChannel() / HAL_TIM_PWM_ConfigChannel() Missed/Unused assert param to be added/removed
- TIM Remove HAL_TIM_SlaveConfigSynchronization_DMA() from HAL_TIM API
- TIM Trigger DMA request should be activated when working with a slave mode
- TIM Timer Register Corruption using HAL_TIM_IC_ConfigChannel
- TIM DMA transfer should be aborted when stopping a DMA burst
- Add "TIM_CHANNEL_ALL" as an argument for all Encoder Start/Stop process in the comment section
- HAL_TIM_DMADelayPulseCplt callback missing information
- HAL_TIM_DMACaptureCplt callback missing information
- TIM Trigger DMA request should be activated when working with a slave mode
- TIM Trigger interrupt should be activated when working with a slave mode
- __HAL_TIM_PRESCALER() shall be corrected: use '=' instead of '|='

- HAL UART/USART update

- UART Incorrect UART speed setting on HSI clock
- Wrong Baud Rate calculation in case of OVER8
- UART missing closing bracket in header file
- UART Circular mode when transmitting data not well supported
- UART/LPUART number of stop bits to correct
- USART Incorrect number of stop bits definition
- UART HAL_UART_IRQHandler function not clearing correctly the interrupt flags
- USART Setting of BRR register bit3:0 not inline with RM when OVER8 sampling mode is used
- UART UART_WaitOnFlagUntilTimeout should not assign UART handle state to HAL_UART_STATE_TIMEOUT
- USART Wrong values used as parameter of __HAL_USART_CLEAR_IT() in HAL_USART_IRQHandler()
- USART BRR setting is wrong compared to Baudrate value
- USART HAL_USART_Init() update to reach max frequencies (enable oversampling by 8)
- USART USART_DMAReceiveCplt() Update to set the USART state after performing the test on it
- UART The code associated to several macros need to be completed
- USART UART DMA implementation issue: missed clear the TC bit in the SR
- Wrong USART_IT_CM defined value
- Issue with Lin mode data length
- Wrong description for Interrupt mode IO operation within HAL UART driver
- Change UART_DMATransmitCplt- new implementation to remove WaitOnFlag in ISR
- Change UART TX-IT implementation to remove WaitOnFlag in ISR
- The IS_UART_OVERSAMPLING(SAMPLING) is not called in UART_SetConfig()
- HAL UART enhancement: remove the check on RXNE flag after reading the DR register
- UART/USART/IRDA/SMARTCARD transmit process enhancement to use TXE instead of TC
- Add MACRO to UART HAL to control CTS and RTS from the customer application

- HAL PCD update

- HAL_PCD_EP_Transmit() not functional
- HAL PCD clear flag macros configuration
- Bad IN/OUT EndPoint parameter array size
- HAL PCD miss #define for ep0_mps parameter
- USB HAL PCD missing #define PCD_SPEED_HIGH

### V1.2.0 / 06-Feb-2015

Main Changes

- HAL has been updated to support the STM32L071xx STM32L072xx STM32L073xx STM32L082xx STM32L083xx series
- HAL Flash update

- Flash : 192K Dual Bank

- HAL TIM update :

- Four new instances : TIM3, TIM7, TIM21, TIM22

- HAL USART update :

- Two new instances : USART 4, USART 5

- HAL I2C update :

- One new instance I2C3

- HAL GPIO update :

- GPIO Port E

- HAL DAC update :

- A second channel has been introduced

- HAL FIREWALL introduction
- All other HAL IPs have also been updated in the context of the overall HAL alignment effort of all the STM32 family
- More than 120 corrections have been implemented since the previous V1.1.0 delivery
- Known limitations :

- Introduced a FW patch to deactivate the HW SPI-V2.3 correction in case of I2S PCM Short mode usage (Please refer to the STM32L073xx Errata Sheet for more details). In this use case, we come back to the HW SPI 2.2 behavior which is correct for the I2S PCM short mode

### V1.1.0 / 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
- Common update for the following communication peripherals: SPI, UART, USART and IRDA

- Add DMA circular mode support

- Remove lock from recursive process

- Add new macro __HAL_RESET_HANDLE_STATE to reset a given handle state

- When USE_RTOS == 1 (in stm32l0xx_hal_conf.h), the __HAL_LOCK() is not defined instead of being defined empty
- Use “__IO const” instead of “__I”, to avoid any compilation issue when __cplusplus switch is defined
- Add new functions for the DBGMCU module

- HAL_EnableDBGSleepMode()
- HAL_DisableDBGSleepMode()
- HAL_EnableDBGStopMode()
- HAL_DisableDBGStopMode()
- HAL_EnableDBGStandbyMode()
- HAL_DisableDBGStandbyMode()

- Miscellaneous comments update

- HAL FLASH update

  - Add new functions: HAL_FLASHEx_OB_SelectPCROP() and HAL_FLASHEx_OB_DeSelectPCROP()
  - Some functions was renamed and moved to the extension files (stm32l0xx_hal_flash_ex.h/.c)
  - Rename FLASH_HalfPageProgram() into HAL_FLASHEx_HalfPageProgram()
  - Rename FLASH_EnableRunPowerDown() into HAL_FLASHEx_EnableRunPowerDown()
  - Rename FLASH_DisableRunPowerDown() into HAL_FLASHEx_DisableRunPowerDown()
  - Rename all HAL_DATA_EEPROMEx_xxx() functions into HAL_FLASHEx_DATAEEPROM_xxx()
  - Note: aliases has been added to keep compatibility with previous version
- HAL GPIO update

- Remove IS_GET_GPIO_PIN macro
- Add a new function HAL_GPIO_LockPin()
- Private Macro __HAL_GET_GPIO_SOURCE renamed into GET_GPIO_SOURCE

- HAL DMA update

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

- HAL PWR update

- HAL_PWR_PVDConfig(): add clear of the EXTI trigger before new configuration
- 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

- Allow to calibrate the HSI when it is used as system clock source
- Fix implementation of IS_RCC_OSCILLATORTYPE() macro

- HAL ADC update

- Update ADC internal channels mapping: TEMPSENSOR connected to ADC_CHANNEL_18 and VLCD mapped to ADC_CHANNEL_16
- Skip polling for ADRDY flag when Low Power Auto Off mode is enabled

- HAL COMP update

  - Add LPTIMConnection field in the COMP_InitTypeDef structure.
  - Add new defines: COMP_LPTIMCONNECTION_DISABLED, COMP_LPTIMCONNECTION_ENABLED
  - Add new macro IS_COMP_LPTIMCONNECTION

- HAL LPTIM update

- Add CKPOL configuration for encoder mode

- HAL WWDG update

- Miscellaneous minor update on the source code

- HAL IWDG update

- Miscellaneous minor update on the source code

- HAL CRC update

  - Some functions was renamed and moved to the extension files (stm32l0xx_hal_crc_ex.h/.c)
  - HAL_CRC_Input_Data_Reverse() renamed into HAL_CRCEx_Input_Data_Reverse()
  - HAL_CRC_Output_Data_Reverse() renamed into HAL_CRCEx_Output_Data_Reverse()
  - Note: aliases has been added to keep compatibility with previous version

- HAL CRYP update

  - HAL_CRYP_ComputationCpltCallback() renamed into HAL_CRYPEx_ComputationCpltCallback() and moved to the extension files (stm32l0xx_hal_cryp_ex.h/.c)
  - Note: alias has been added to keep compatibility with previous version

- 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 SMBUS update

- Add a new function: HAL_SMBUS_DisableListen_IT()
- Add aliases for the following functions

- #define HAL_SMBUS_Slave_Listen_IT HAL_SMBUS_EnableListen_IT
- #define HAL_SMBUS_SlaveAddrCallback HAL_SMBUS_AddrCallback
- #define HAL_SMBUS_SlaveListenCpltCallback HAL_SMBUS_ListenCpltCallback

- Add alias HAL_SMBUS_STATE_SLAVE_LISTEN for the constant HAL_SMBUS_STATE_LISTEN

- HAL UART update

  - HAL_UART_WakeupCallback() renamed into HAL_UART_WakeupCallback() and moved to the extension files (stm32l0xx_hal_cryp_ex.h/.c)
  - Add new macros to control CTS and RTS
  - Add specific macros to manage the flags cleared only by a software sequence
  - __HAL_UART_CLEAR_PEFLAG()
  - __HAL_UART_CLEAR_FEFLAG()
  - __HAL_UART_CLEAR_NEFLAG()
  - __HAL_UART_CLEAR_OREFLAG()
  - __HAL_UART_CLEAR_IDLEFLAG()
  - Add several enhancements without affecting the driver functionalities
  - Remove the check on RXNE set after reading the Data in the DR register
  - Update the transmit processes to use TXE instead of TC
  - Update HAL_UART_Transmit_IT() to enable UART_IT_TXE instead of UART_IT_TC

- HAL USART update

- Add specific macros to manage the flags cleared only by a software sequence

- __HAL_USART_CLEAR_PEFLAG()

- __HAL_USART_CLEAR_FEFLAG()

- __HAL_USART_CLEAR_NEFLAG()

- __HAL_USART_CLEAR_OREFLAG()

- __HAL_USART_CLEAR_IDLEFLAG()

- Update HAL_USART_Transmit_IT() to enable USART_IT_TXE instead of USART_IT_TC

- HAL IRDA update

  - Add specific macros to manage the flags cleared only by a software sequence
  - __HAL_IRDA_CLEAR_PEFLAG()
  - __HAL_ IRDA _CLEAR_FEFLAG()
  - __HAL_ IRDA _CLEAR_NEFLAG()
  - __HAL_ IRDA _CLEAR_OREFLAG()
  - __HAL_ IRDA _CLEAR_IDLEFLAG()
  - Add several enhancements without affecting the driver functionalities
  - Remove the check on RXNE set after reading the Data in the DR register
  - Update HAL_IRDA_Transmit_IT() to enable IRDA_IT_TXE instead of IRDA_IT_TC
  - Add the following APIs used within DMA process
  - HAL_StatusTypeDef HAL_IRDA_DMAPause(IRDA_HandleTypeDef *hirda);
  - HAL_StatusTypeDef HAL_IRDA_DMAResume(IRDA_HandleTypeDef *hirda);
  - HAL_StatusTypeDef HAL_IRDA_DMAStop(IRDA_HandleTypeDef *hirda);
  - void HAL_IRDA_TxHalfCpltCallback(IRDA_HandleTypeDef *hirda);
  - void HAL_IRDA_RxHalfCpltCallback(IRDA_HandleTypeDef *hirda);

- HAL SMARTCARD update

- Add specific macros to manage the flags cleared only by a software sequence

- __HAL_SMARTCARD_CLEAR_PEFLAG()

- __HAL_SMARTCARD_CLEAR_FEFLAG()

- __HAL_SMARTCARD_CLEAR_NEFLAG()

- __HAL_SMARTCARD_CLEAR_OREFLAG()

- __HAL_SMARTCARD_CLEAR_IDLEFLAG()

- Add several enhancements without affecting the driver functionalities

- Add a new state HAL_SMARTCARD_STATE_BUSY_TX_RX and all processes has been updated accordingly

- Update HAL_SMARTCARD_Transmit_IT() to enable SMARTCARD_IT_TXE instead of SMARTCARD_IT_TC

- HAL SPI update

- Bugs fix

- SPI interface is used in synchronous polling mode: at high clock rates like SPI prescaler 2 and 4, calling
  HAL_SPI_TransmitReceive() returns with error HAL_TIMEOUT
- HAL_SPI_TransmitReceive_DMA() does not clean up the TX DMA, so any subsequent SPI calls return the DMA error
- HAL_SPI_Transmit_DMA() is failing when data size is equal to 1 byte

- Add the following APIs used within the DMA process

- HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi);

- HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi);

- HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi);

- void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi);

- void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi);

- void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi);

- HAL TSC update

- Fix value of the constant TSC_ACQ_MODE_SYNCHRO

- HAL PCD update

- Add new macro __HAL_USB_EXTI_GENERATE_SWIT()

### V1.0.0 / 22-April-2014

Main Changes

First official release.

## License

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

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

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

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