Update History
V1.8.2 / 25-August-2017
Main
Changes
- Maintenance release to fix known defects.
- HAL/LL generic
- Updated :
- Removed DATE and VERSION fields from header files.
- Updated CHM User Manual for Drivers/STM32L0xx_HAL_Driver.
- LL ADC
- Updated LL ADC driver to exclude __LL_ADC_CALC_TEMPERATURE macro for STM32L011xx devices.
- HAL COMP
- Updated HAL_COMP_Init manage default case as LPTIM1 for COMP1 and LPTIM2 for COMP2.
- HAL/LL I2C
- Replaced POSITION val notion by associated I2C_xxx_pos CMSIS definition.
- Updated
LL_I2C_Init() function to add condition to test the value of
OwnAddress1 before calling the inline LL function
LL_I2C_EnableOwnAddress1().
- Updated implementation of I2C_TransferConfig() function.
- HAL PCD
- Removed the lock/unlock from HAL_PCD_EP_Receive/HAL_PCD_EP_Transmit functions.
V1.8.1 / 14-April-2017
Main
Changes
- HAL LCD
- Update of stm32l0xx_hal_lcd.h to avoid C++ compilation errors.
V1.8.0 / 25-November-2016
Main
Changes
- Maintenance release to fix known defects.
- HAL generic
- Updated HAL Driver compliancy with MISRA C 2004 rules:
- MISRA C 2004 rule 2.2 (source code shall only use /* … */ style comments)
- 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.4 (value of a complex expression of floating type shall
only be cast to a floating type that is narrower or of the same size)
- MISRA C 2004 rule 10.6 ('U' suffix applied to all constants of 'unsigned' type)
- MISRA C 2004 rule 12.6 (logical operators should not be confused with bitwise operators)
- MISRA C 2004 rule 14.3 (a null statement shall only occur on a line by itself)
- MISRA C 2004 rule 14.8 (statement forming the body of a switch, while, do … while or for statement shall be a compound statement)
- MISRA C 2004 rule 14.9 ('if {expression}' / 'else' construct shall be followed by a compound statement)
- MISRA C 2004 rule 19.10 (in function-like macro definition, each instance of a parameter shall be enclosed in parenthesis)
- MISRA C 2004 rule 19.11 (all macro identifiers in preprocessor directives shall be defined before use)
- MISRA C 2004 rule 19.15 (precautions shall be taken in order to prevent the contents of a header file being included twice)
- HAL/LL ADC
- Corrected ADC_SAMPLETIME_xCYCLE_5 naming to be aligned to reference manual.
- Enabled management of low power auto-wait: flags must be cleared by user when fetching ADC conversion data.
- Disabled DMA transfer during ADC calibration.
- HAL CRC
- Updated HAL_CRC_DeInit() function (restored IDR Register to Reset value).
- HAL COMP
- Updated HAL_COMP_Init() function to clear EXTI interrupt mode in case comparator is re-configured in mode trigger none.
- Updated
HAL_COMP_IRQHandler() function in window mode, so that both EXTI flags
are cleared and HAL_COMP_TriggerCallback() function is called only
once.
- Updated
HAL COMP init() function: VrefInt startup delay is taken into account,
with delay of duration COMP_DELAY_VOLTAGE_SCALER_STAB_US.
- Updated HAL_COMPEx_EnableVREFINT() by adding Wait Time.
- HAL DMA
- Provided new function HAL_DMA_Abort_IT() to abort current DMA transfer under interrupt mode
without polling for DMA enable bit.
- HAL FLASH
- Updated HAL_FLASH_IRQHandler(), HAL_FLASHEx_Erase_IT(), HAL_FLASH_Program_IT(), and
HAL_FLASHEx_Erase_IT() functions. - Renamed HAL_FLASHRAMFUNC_GetError() sto HAL_FLASHEx_GetError().
- HAL GPIO
- Updated IS_GPIO_PIN() macro to cover full u32 bits.
- Updated HAL_GPIO_DeInit() function to configure GPIO port mode register to input state.
- HAL I2C
- Aligned HAL I2C driver with the new state machine definition.
- Added support of repeated start feature with the following new APIs
- HAL_I2C_Master_Sequential_Transmit_IT(), HAL_I2C_Master_Sequential_Receive_IT() and HAL_I2C_Master_Abort_IT(),
- HAL_I2C_Slave_Sequential_Transmit_IT() and HAL_I2C_Slave_Sequential_Receive_IT()
- HAL_I2C_EnableListen_IT() and HAL_I2C_DisableListen_IT()
- New user callbacks HAL_I2C_ListenCpltCallback() and HAL_I2C_AddrCallback()
- Reworked DMA end process and I2C error management during DMA transfer.
- Updated WaitOnFlag management (timeout measurement should be always cumulative).
- Optimized HAL_I2C_XX_IRQHandler() functions (read status registers only once).
- Added error management in case of DMA transfer through HAL_DMA_Abort_IT() and DMA XferAbortCallback().
- Updated HAL_I2CEx_EnableFastModePlus() enabling fast mode plus driving capability through CFGR2 register.
- Disabled I2C_OARx_EN bit before any configuration in OAR1 or 2 in HAL_I2C_Init().
- Add
I2C_FIRST_AND_NEXT_FRAME for I2C Sequential transfer options: allow to
manage a sequence with start condition, address and data to transfer
without a final stop condition, an then permit a call to the same
master sequential interface several times.
- Updated HAL_I2C_Master_Sequential_Transmit_IT() function (wrong state check).
- Moved I2C_NO_OPTION_FRAME to private section.
- Updated I2C driver documentation concerning I2C address management.
- Updated I2C driver to reset state to LISTEN before calling HAL_I2C_Slave_Sequential_Transmit_IT() function.
- HAL I2S
- Updated LL_I2S_Init() function to use default ou computed values for prescaler.
- HAL IWDG
- Overall driver rework for better implementation
- Removed HAL_IWDG_Start(), HAL_IWDG_MspInit() and HAL_IWDG_GetState() APIs.
- HAL PWR
- Added new HAL_PWREx_GetVoltageRange()function returning Voltage Scaling range, to be aligned with L1 serie.
- HAL RCC
- Aligned HAL RCC driver with others series.
- Renamed RCC_PLLMUL_x to RCC_PLL_MULx and RCC_PLLDIV_x to RCC_PLL_DIVx, to be aligned with L1 serie.
- Updated declaration of HAL_RCC_NMI_IRQHandler() function.
- Updated HAL IRQHandler and callbacks API for CRS management.
- HAL SMBUS
- Aligned driver with others series: fix known defects and added several enhancements implementation.
- Added support of new feature Zone Read/Write.
- HAL SPI
- Added missing __IO in SPI_HandleTypeDef definition.
- HAL TIM
- Corrected TIM22_ETR_GPIO and TIM22_ETR_LSE definitions for STM32L011xx and STM32L021xx devices.
- HAL UART-USART / IRDA / SMARTCARD
- Added missing __IO in UART/USART/IRDA/SMARTCARD_HandleTypeDef definition (for TxXferCount and RxXferCount).
- Modified UART/SMARTCARD configuration sequence order in HAL_UART/SMARTCARD_Init() function, to avoid issue on Transmit line when UART/SMARTCARD_SetConfig() is called before UART/SMARTCARD_AdvFeatureConfig().
- Removed RXNE check in UART/USART/IRDA/SMARTCARD_Receive_IT() function, as RXNE is already cleared by reading RDR, or by writing 1 to RXFRQ in the RQR register.
- Reviewed UART/IRDA/SMARTCARD state machine to avoid cases where UART/IRDA/SMARTCARD state is overwritten by UART/IRDA/SMARTCARD IRQ.
- Ensure proper alignment of data pointer in Transmit and Receive functions to avoid toolchain compilation hardfault.
- Optimized WaitOnFlag management in HAL_UART/USART/IRDA/SMARTCARD_Transmit() function.
- Optimized all HAL IRQ Handler routines.
- Implemented
new APIs for HAL UART/USART/IRDA/SMARTCARD Abort management:
HAL_PPP_Abort(), HAL_PPP_AbortTransmit(),
HAL_PPP_AbortReceive(), HAL_PPP_Abort_IT(),
HAL_PPP_AbortTransmit_IT(), HAL_PPP_AbortReceive_IT().
- Added definition of USART_STOPBITS_0_5 (in addition to 1, 1.5, 2 stop bits).
- Updated USART_GETCLOCKSOURCE() macro definition in order to reflect USART instances availability on L0 devices.
- Updated HAL_UART_Init() that can not be performed on USART4 and USART5 instances for L07x/L08x.
- HAL USB
- Added missing USB_CNTR_SOFM in the setting of wInterrupt_Mask global variable.
- Updated HAL_PCD_ActivateRemoteWakeup() and HAL_PCD_DeActivateRemoteWakeup() functions to check on LPM state before USB resume.
- HAL WWDG
- 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.
V1.7.0 / 31-May-2016
Main
Changes
- Maintenance release to fix known defects.
- HAL/LL COMP update
- Added
missing definition for COMP_INPUT_PLUS_IO6 and
LL_COMP_INPUT_PLUS_IO6, supported by STM32L0 Category1 (STM32L011xx,
STM32L021xx).
- Removed COMP_INVERTINGINPUT_IO3 definition.
- Renamed COMP_INVERTINGINPUT_IO2 to COMP_INPUT_MINUS_DAC1_CH2.
- The EXTI set-up is now managed by HAL_COMP_Init() function, using updated definitions of
COMP_TRIGGERMODE_xxx.
Therefore, the functions HAL_COMP_Start_IT() and HAH_COMP_Stop_IT() have been removed. In any mode, the application must use HAL_COMP_Start() and HAL_COMP_Stop(). - For information, this update was already available in V1.6.0.
- HAL RTC update
- Updated HAL_RTCEx_SetWakeUpTimer_IT() function by adding clear of Wake-Up flag before enabling the interrupt.
- HAL LCD update
- Corrected SYSCFG LCD External Capacitors definitions.
- Added new __HAL_SYSCFG_VLCD_CAPA_CONFIG() macro to configure the VLCD Decoupling capacitance connection.
- Added new __HAL_SYSCFG_GET_VLCD_CAPA_CONFIG() macro to return the decoupling of LCD capacitance
configured by user. - Added LCD Voltage output buffer enable macro definitions.
V1.6.0/ 15-April-2016
Main
Changes
- First official release supporting the Low Level drivers for the STM32L0xx family:
- Low
Layer drivers APIs provide register level programming: they require
deep knowledge of peripherals described in STM32L0xx Reference Manual.
- Low
Layer drivers are available for: ADC, COMP, CORTEX, CRC, CRS,DAC, DMA,
EXTI, GPIO, I2C, IWDG, LPTIM, LPUART, PWR, RCC, RNG, RTC, SPI, TIM,
USART, WWDG peripherals and additional Low Level Bus, System and
Utilities APIs.
- Low Layer drivers APIs are implemented as static inline function in new Inc/stm32l0xx_ll_ppp.h files for PPP peripherals, there is no configuration file and each stm32l0xx_ll_ppp.h file must be included in user code.
- Updates of the HAL :
- HAL_SYSCFG_EnableVREFINT() and HAL_SYSCFG_DisableVREFINT() functions and HAL_VREFINT_Cmd macro suppressed since VREFINT is managed by the system.
- Several updates on dedicated HAL as specified in the list below. The major changes concerns HAL_COMP and HAL_UART.
List of HAL updates or corrections provided by this release:- HAL update
- Change the way the APB AHB prescaler table is defined inside the HAL.
- Change the variable 'uwTick' from 'static' to 'global'.
- Compliancy with MISRA C 2004 rule 10.6 (A "U" suffix shall be applied to all constants of unsigned type)
- Compliancy
with MISRA C 2004 rule 16.4. (The identifiers used in the declaration
and definition of a function shall be identical)
- HAL COMP update
- Major rework on the lock and on the state machine associated to the COMP HAL.
- Optimization of several functions and uniformization of the driver within the whole STM32 family.
- HAL CRYPT update
- Correct the usage of several compilation switches related to STM32L081xx.
- HAL DMA update
- Add the following macro : HAL_DMA_GET_COUNTER.
- HAL FLASH update
- Update the two following macros : __HAL_FLASH_PREFETCH_BUFFER_ENABLE and __HAL_FLASH_PREFETCH_BUFFER_DISABLE.
- HAL IRDA update
- Improve management of the EIE bits for Tx and Rx transfers.
- HAL I2C update
- Allow I2C transmission with data size equal to 0.
- Add new macro IS_I2C_WAKEUP_FROMSTOP_INSTANCE.
- HAL LPTIM update
- Update of the LPTIM driver in order to support the exti line 23.
- HAL UART update
- Improve UART state machine behavior in case of interrupts.
- Update the macros
UART_DIV_SAMPLING8 and UART_DIV_SAMPLING16 to correct UART baudrate calculation
- Add an RXDATA flush request inside the UART_Receive_IT function when the RxState is not in reception state.
- HAL RCC update
- Correct the setup of the global variable 'SystemCoreClock'.
- Update of the CRS interrupt sources.
- Renamed RCC_CRS_SYNCWARM into RCC_CRS_SYNCWARN and renamed RCC_CRS_TRIMOV into RCC_CRS_TRIMOVF.
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-2015Main
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
- HAL TIM update
:
- Four
new instances : TIM3, TIM7, TIM21, TIM22
- HAL USART update :
- Two
new instances : USART 4, USART 5
- HAL I2C update :
- HAL GPIO update :
- 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
-
HAL PCD update
V1.0.0
/ 22-April-2014
Main
Changes
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
|