Update
History
V1.7.13
/ 16-July-2021
Main
Changes
-
HAL
updates
- HAL EXTI
update
- Update
HAL_EXTI_GetConfigLine()
API to set default
configuration value of
Trigger and GPIOSel
before checking each
corresponding registers.
- HAL GPIO
update
- Update
HAL_GPIO_Init() API to
avoid the configuration
of PUPDR register when
Analog mode is selected.
- HAL DMA
update
- Update
HAL_DMA_IRQHandler() API
to set the DMA state
before unlocking access
to the DMA handle.
- HAL/LL ADC
update
- Update
LL_ADC_DeInit() API to
clear missing SQR3
register.
- 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.
- HAL CAN
update
- Update
HAL_CAN_Init() API to be
aligned with referance
manual and to avoid
timeout error:
- HAL/LL
RTC_BKP 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.
- HAL RNG
update
- Update timeout
mechanism to avoid false
timeout detection in
case of preemption.
- HAL QSPI
update
- ES0305
workaround disabled for
STM32412xx devices.
- HAL I2C
update
- Update
HAL_I2C_Mem_Write_DMA()
and
HAL_I2C_Mem_Read_DMA()
APIs to initialize
Devaddress, Memaddress
and EventCount
parameters.
- Update to
prevent several calls of
Start bit:
- Update
I2C_MemoryTransmit_TXE_BTF()
API to increment
EventCount.
- Update to
avoid I2C interrupt in
endless loop:
- Update
HAL_I2C_Master_Transmit_IT(),
HAL_I2C_Master_Receive_IT(),
HAL_I2C_Master_Transmit_DMA()
and
HAL_I2C_Master_Receive_DMA()
APIs to unlock the
I2C peripheral
before generating
the start.
- Update to use
the right macro to clear
I2C ADDR flag inside
I2C_Slave_ADDR() API as
it’s indicated in the
reference manual.
- Update
I2C_IsAcknowledgeFailed()
API to avoid I2C in busy
state if NACK received
after transmitting
register address.
- Update
HAL_I2C_EV_IRQHandler()
and
I2C_MasterTransmit_BTF()
APIs to correctly manage
memory transfers:
- Add check
on memory mode
before calling
callbacks
procedures.
- LL USART
update
- Handling of
UART concurrent register
access in case of race
condition between Tx and
Rx transfers (HAL UART
and LL LPUART)
- HAL SMBUS
update
- Updated
HAL_SMBUS_ER_IRQHandler()
API to return the
correct error code
“SMBUS_FLAG_PECERR” in
case of packet error
occurs.
- HAL/LL SPI
update
- Updated to fix
MISRA-C 2012 Rule-13.2.
- Update
LL_SPI_TransmitData8()
API to avoid casting the
result to 8 bits.
- HAL UART
update
- Fix wrong
comment related to RX
pin configuration within
the description section
- 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)
- Update CAN
Initialization
sequence to set
"request
initialization" bit
before exit from
sleep mode.
- HAL USB
update
- HAL PCD: add
fix transfer complete
for IN Interrupt
transaction in single
buffer mode
- Race condition
in USB PCD control
endpoint receive ISR.
V1.7.12
/ 26-March-2021
Main
Changes
- HAL
- HAL/LL
USART update
- Fix typo in
USART_Receive_IT() and
USART_TransmitReceive_IT()
APIs to avoid possible
compilation issues if the
UART driver files are not
included.
V1.7.11
/ 12-February-2021
Main
Changes
- General
updates to fix known defects and
enhancements implementation
- Added
new HAL
FMPSMBUS extended driver
to support FMPSMBUS fast Mode
Plus.
- Removed
“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
- HAL update
- General
updates to fix known defects
and enhancements
implementation.
- Added new
defines for ARM compiler V6:
- __weak
- __packed
- __NOINLINE
- Updated HAL TimeBase
TIM, RTC alarm and RTC WakeUp
templates for more robustness
- Updated Hal_Init_Tick()
API to propoerty
store the priority when
using the non-default time
base.
- Updated
PPP_MODULE_ENABLED for
FMPSMBUS.
- HAL/LL ADC update
- Updated to
add include of the LL ADC
driver.
- Updated the
following APIs to set status
HAL_ADC_STATE_ERROR_INTERNAL
and error code
HAL_ADC_ERROR_INTERNAL when
error occurs:
- HAL_ADC_Start()
- HAL_ADC_Start_IT()
- HAL_ADC_Start_DMA()
- HAL_ADCEx_InjectedStart()
- HAL_ADCEx_InjectedStart_IT()
- HAL_ADCEx_MultiModeStart_DMA()
- Updated HAL_ADC_Stop_DMA()
API to check if DMA state is
Busy before calling HAL_DMA_Abort()
API to avoid DMA internal
error.
- Updated
IS_ADC_CHANNEL to support
temperature sensor for:
- STM32F411xE
- STM32F413xx
- STM32F423xx
- Fixed wrong
defined values for:
- LL_ADC_MULTI_REG_DMA_LIMIT_3
- LL_ADC_MULTI_REG_DMA_UNLMT_3
- Added
__LL_ADC_CALC_VREFANALOG_VOLTAGE()
macro to evaluate analog
reference voltage.
- Removed
__LL_ADC_CALC_TEMPERATURE()
macro for STM32F4x9 devices
as the TS_CAL2 is not
available.
- HAL/LL DAC update
- Added restruction
on DAC Channel 2 defines and
parametres.
- HAL_DAC_MSPINIT_CB_ID
and HAL_DAC_MSPDEINIT_CB_ID
used instead of
HAL_DAC_MSP_INIT_CB_ID and
HAL_DAC_MSP_DEINIT_CB_ID.
- Updated to
support dual mode:
- Added two
new APIs:
- HAL_DACEx_DualStart()
- HAL_DACEx_DualStop()
- Added
position bit definition to
be used instead of
__DAC_MASK_SHIFT macro
- __DAC_MASK_SHIFT
macro has been removed.
- Updated HAL_DAC_Start_DMA()
API to return HAL_ERROR when
error occurs.
- Updated HAL_DAC_Stop_DMA()
API to not return HAL_ERROR
when DAC is already
disabled.
- HAL CEC update
- Updated HAL_CEC_IRQHandler()
API to avoid appending an
extra byte to the end of a
message.
- HAL/LL GPIO update
- Updated
IS_GPIO_AF() to
add missing values for
STM32F401xC and STM32F401xE
devices:
- GPIO_AF3_TIM9
- GPIO_AF3_TIM10
- GPIO_AF3_TIM11
- Updated
LL/HAL GPIO_TogglePin()
APIs to allow multi Pin’s
toggling.
- Updated HAL_GPIO_Init()
API to avoid the
configuration of PUPDR
register when Analog mode is
selected.
- HAL/LL RCC update
- Updated HAL_RCC_OscConfig()
API to add missing checks
and to don’t return
HAL_ERROR if request repeats
the current PLL
configuration.
- Updated
IS_RCC_PLLN_VALUE(VALUE)
macro in case of STM32F411xE
device in order to
be aligned with reference
manual.
- HAL SD update
- Update
function SD_FindSCR()
to resolve issue of FIFO
blocking when reading.
- Update
read/write functions in DMA
mode in
order to
force the DMA direction,
updated functions:
- HAL_SD_ReadBlocks_DMA()
- HAL_SD_WriteBlocks_DMA()
- Add the
block size settings in the
initialization functions and
remove it from read/write
transactions to avoid
repeated and inefficient
reconfiguration, updated
functions:
- HAL_SD_InitCard()
- HAL_SD_GetCardStatus()
- HAL_SD_ConfigWideBusOperation()
- HAL_SD_ReadBlocks()
- HAL_SD_WriteBlocks()
- HAL_SD_ReadBlocks_IT()
- HAL_SD_WriteBlocks_IT()
- HAL_SD_ReadBlocks_DMA()
- HAL_SD_WriteBlocks_DMA()
- HAL MMC update
- Add the
block size settings in the
initialization function and
remove it from read/write
transactions to avoid
repeated and inefficient
reconfiguration, updated
functions:
- HAL_MMC_InitCard()
- HAL_MMC_ReadBlocks()
- HAL_MMC_WriteBlocks()
- HAL_MMC_ReadBlocks_IT()
- HAL_MMC_WriteBlocks_IT()
- HAL_MMC_ReadBlocks_DMA()
- HAL_MMC_WriteBlocks_DMA()
- Update
read/write functions in DMA
mode in
order to
force the DMA direction,
updated functions:
- HAL_MMC_ReadBlocks_DMA()
- HAL_MMC_WriteBlocks_DMA()
- Deploy new
functions MMC_ReadExtCSD()
and SDMMC_CmdSendEXTCSD
() that read and check the
sectors number of the
device in order to resolve
the issue of wrongly reading
big memory size.
- HAL NAND
update
- Update
functions
HAL_NAND_Read_SpareArea_16b()
and
HAL_NAND_Write_SpareArea_16b()
to fix column address
calculation issue.
- LL SDMMC
update
- Update the
definition of
SDMMC_DATATIMEOUT constant in
order to
allow the user to redefine
it in his proper
application.
- Remove
'register' storage class
specifier from LL SDMMC
driver.
- Deploy new
functions MMC_ReadExtCSD()
and SDMMC_CmdSendEXTCSD
() that read and check the
sectors number of the device
in order to resolve the
issue of wrongly reading big
memory size.
- HAL SMBUS update
- Support for
Fast Mode Plus to be SMBUS
rev 3 compliant.
- Added HAL_FMPSMBUSEx_EnableFastModePlus()
and HAL_FMPSMBUSEx_DisableFastModePlus()
APIs to manage Fm+.
- Updated SMBUS_MasterTransmit_BTF()
, SMBUS_MasterTransmit_TXE()
and SMBUS_MasterReceive_BTF()
APIs to allow stop
generation when CurrentXferOptions
is different from
SMBUS_FIRST_FRAME and
SMBUS_NEXT_FRAME.
- Updated SMBUS_ITError()
API to correct the twice
call of HAL_SMBUS_ErrorCallback.
- HAL SPI update
- Updated HAL_SPI_Init()
API
- To avoid
setting the BaudRatePrescaler
in case of Slave Motorola
Mode.
- Use the bit-mask
for SPI configuration.
- Updated
Transmit/Receive processes
in half-duplex mode
- Disable
the SPI instance before
setting BDIOE bit.
- Fixed wrong
timeout management
- Calculate
Timeout based on a software
loop to avoid blocking issue
if Systick
is disabled.
- HAL
SPDIFRX update
- Remove
'register' storage class
specifier from HAL SPDIFRX
driver.
- HAL I2S update
- Updated
I2SEx APIs to correctly
support circular transfers
- Updated
I2SEx_TxRxDMACplt()
API to manage DMA circular
mode.
- Updated
HAL_I2SEx_TransmitReceive_DMA()
API to set hdmatx
(transfert
callback and half) to NULL.
- HAL SAI update
- Updated to
avoid the incorrect
left/right synchronization.
- Updated HAL_SAI_Transmit_DMA()
API to follow the sequence
described in the reference
manual for slave
transmitter mode.
- Updated HAL_SAI_Init()
API to correct the formula
in case of SPDIF is wrong.
- HAL CRYP update
- Updated HAL_CRYP_SetConfig()
and HAL_CRYP_GetConfig()
APIs to set/get the
continent of KeyIVConfigSkip
correctly.
- HAL EXTI update
- __EXTI_LINE__
is now used instead of
__LINE__ which is a standard
C macro.
- HAL DCMI
- Support of
HAL callback registration
feature for DCMI extended
driver.
- HAL/LL TIM update
- Updated HAL_TIMEx_OnePulseN_Start()
and HAL_TIMEx_OnePulseN_Stop()
APIs (pooling and IT mode)
to take into consideration
all OutputChannel
parameters.
- Corrected
reversed description of
TIM_LL_EC_ONEPULSEMODE One
Pulse Mode.
- Updated LL_TIM_GetCounterMode()
API to return the correct
counter mode.
- HAL/LL
SMARTCARD update
- Fixed
invalid initialization of
SMARTCARD configuration by
removing FIFO mode
configuration as it is not
member of SMARTCARD_InitTypeDef
Structure.
- Fixed typos
in SMARTCARD State
definition description
- HAL/LL IRDA update
- Fixed typos
in IRDA State definition
description
- LL USART update
- Remove
useless check on maximum BRR
value by removing
IS_LL_USART_BRR_MAX()
macro.
- Update
USART polling and
interruption processes to
fix issues related to
accesses out of user
specified buffer.
- HAL USB update
- Enhanced
USB OTG host HAL with USB
DMA is enabled:
- fixed
ping and data toggle
issue,
- reworked
Channel error report
management
V1.7.10
/ 22-October-2020
Main Changes
- General
updates to fix known defects.
- HAL/LL
I2C update
- Update
to fix hardfault
issue with HAL_I2C_Mem_Write_DMA()
API:
-
Abort the right ongoing DMA
transfer when memory write
access request operation
failed: fix typo “hdmarx”
replaced by “hdmatx”
V1.7.9
/ 14-August-2020
Main Changes
- General
updates to fix known defects and
enhancements implementation
- 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 update
- 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.
V1.7.8
/ 12-February-2020
Main Changes
- Add
new HAL FMPSMBUS and LL
FMPI2C drivers
- General
updates to fix known defects and
enhancements implementation
- Update
HAL CRYP driver to support block
by block decryption without
reinitializes the IV and KEY for
each call.
- Improve
code quality by fixing
MisraC-2012 violations
- HAL/LL
USB update
- Add
handling USB host babble error
interrupt
- Fix
Enabling ULPI interface for
platforms that integrates USB
HS PHY
- Fix
Host data toggling for IN Iso
transfers
- Ensure
to disable USB EP during
endpoint deactivation
- HAL
CRYP update
- Update
HAL CRYP driver to support
block by block decryption
without initializing the IV
and KEY at each call.
- Add new
CRYP Handler parameters: "KeyIVConfig"
and "SizesSum"
- Add new
CRYP init
parameter: "KeyIVConfigSkip"
- HAL
I2S update
- Update
HAL_I2S_DMAStop()
API to be more safe
- Add a check
on BSY, TXE and RXNE flags
before disabling the I2S
- Update
HAL_I2S_DMAStop()
API to fix multi-call transfer
issue(to avoid re-initializing
the I2S for the next
transfer).
- Add
__HAL_I2SEXT_FLUSH_RX_DR()
and __HAL_I2S_FLUSH_RX_DR()
macros to flush the
remaining data inside DR
registers.
- Add new ErrorCode
define:
HAL_I2S_ERROR_BUSY_LINE_RX
V1.7.7
/ 06-December-2019
Main Changes
- General
updates to fix known defects and
enhancements implementation
- HAL
Generic update
- HAL_SetTickFreq(): update to
restore the previous tick
frequency when HAL_InitTick()
configuration failed.
- HAL/LL
GPIO update
- Update GPIO
initialization sequence to
avoid unwanted pulse on GPIO Pin's
- HAL
EXTI update
- General
update to enhance HAL EXTI
driver robustness
- Add
additional assert check on
EXTI config lines
- Update to
compute EXTI line mask
before read/write access
to EXTI registers
- Update EXTI
callbacks management to be
compliant with reference
manual: only one PR
register for rising and
falling interrupts.
- Update
parameters in EXTI_HandleTypeDef
structure: merge HAL
EXTI RisingCallback
and FallingCallback
in only one PendingCallback
- Remove
HAL_EXTI_RISING_CB_ID and
HAL_EXTI_FALLING_CB_ID
values from EXTI_CallbackIDTypeDef
enumeration.
- Update
HAL_EXTI_IRQHandler()
API to serve interrupts
correctly.
- Update to
compute EXTI line mask
before handle
EXTI interrupt.
- Update to
support GPIO port
interrupts:
- Add new "GPIOSel"
parameter in EXTI_ConfigTypeDef
structure
- HAL/LL
RCC update
- Update HAL_RCCEx_PeriphCLKConfig()
API to support PLLI2S
configuration for STM32F42xxx
and STM32F43xxx devices
- Update the HAL_RCC_ClockConfig()
and HAL_RCC_DeInit()
API to don't overwrite the
custom tick priority
- Fix LL_RCC_DeInit()
failure detected with gcc
compiler and high optimization
level is selected(-03)
- Update HAL_RCC_OscConfig()
API to don't return
HAL_ERROR if request repeats
the current PLL configuration
- HAL
ADC update
- Update LL_ADC_REG_Init()
to fix wrong ADC CR1 register
configuration
- The ADC
sequencer length is part
of ADC SQR1
register not of ADC CR1
register
- HAL
CRYP update
- Update HAL_CRYP_Encrypt()
and HAL_CRYP_Decrypt()
APIs to take into
consideration the datatype fed
to the DIN register (1-, 8-,
16-, or 32-bit data) when
padding the last block of the
payload, in case the size of
this last block is less than
128 bits.
- HAL
RNG update
- Update HAL_RNG_IRQHandler()
API to fix error code
management issue: error code
is assigned
"HAL_RNG_ERROR_CLOCK" in case
of clock error and
"HAL_RNG_ERROR_SEED" in case
of seed error, not the
opposite.
- HAL
DFSDM update
- Update DFSDM_GetChannelFromInstance()
API to remove unreachable
check condition
- HAL
DMA update
- Update HAL_DMA_Start_IT()
API to omit the FIFO error
- HAL
FLASH update
- Update FLASH_Program_DoubleWord()
API to fix with EWARM high
level optimization issue
- HAL
QSPI update
- Remove Lock
mechanism from HAL_QSPI_Init()
and HAL_QSPI_DeInit()
APIs
- HAL
HASH update
- Null pointer
on handler "hhash"
is now checked before
accessing structure member "hhash->Init.DataType"
in the following API:
- Following interrupt-based
APIs have been added.
Interrupt mode could allow the
MCU to enter "Sleep" mode
while a data block is being
processed. Please refer to the
"##### How to use this driver
#####" section for details
about their use.
- HAL_HASH_SHA1_Accmlt_IT()
- HAL_HASH_MD5_Accmlt_IT()
- HAL_HASHEx_SHA224_Accmlt_IT()
- HAL_HASHEx_SHA256_Accmlt_IT()
- Following aliases
have been added (just for
clarity sake) as they
shall be used at the end
of the computation of a
multi-buffers message and not
at the start:
- HAL_HASH_SHA1_Accmlt_End()
to be used instead of
HAL_HASH_SHA1_Start()
- HAL_HASH_MD5_Accmlt_End()
to be used instead of
HAL_HASH_MD5_Start()
- HAL_HASH_SHA1_Accmlt_End_IT()
to be used instead of
HAL_HASH_SHA1_Start_IT()
- HAL_HASH_MD5_Accmlt_End_IT()
to be used instead of
HAL_HASH_MD5_Start_IT()
- HAL_HASHEx_SHA224_Accmlt_End()
to be used instead of
HAL_HASHEx_SHA224_Start()
- HAL_HASHEx_SHA256_Accmlt_End()
to be used instead of
HAL_HASHEx_SHA256_Start()
- HAL_HASHEx_SHA224_Accmlt_End_IT()
to be used instead of
HAL_HASHEx_SHA224_Start_IT()
- HAL_HASHEx_SHA256_Accmlt_End_IT()
to be used instead of
HAL_HASHEx_SHA256_Start_IT()
- MISRAC-2012
rule R.5.1 (identifiers
shall be distinct in the first
31 characters) constrained the
naming of the above listed
aliases (e.g.
HAL_HASHEx_SHA256_Accmlt_End()
could not be named
HAL_HASHEx_SHA256_Accumulate_End().
Otherwise the name would have
conflicted with
HAL_HASHEx_SHA256_Accumulate_End_IT()).
In
order to
have aligned names following
APIs have been renamed:
- HAL_HASH_MD5_Accumulate()
renamed
HAL_HASH_MD5_Accmlt()
- HAL_HASH_SHA1_Accumulate()
renamed
HAL_HASH_SHA1_Accmlt()
- HAL_HASHEx_SHA224_Accumulate()
renamed
HAL_HASHEx_SHA224_Accmlt()
- HAL_HASHEx_SHA256_Accumulate()
renamed
HAL_HASHEx_SHA256_Accmlt()
- HASH handler
state is no more
reset to HAL_HASH_STATE_READY
once DMA has been started
in the following APIs:
- HAL_HASH_MD5_Start_DMA()
- HAL_HMAC_MD5_Start_DMA()
- HAL_HASH_SHA1_Start_DMA()
- HAL_HMAC_SHA1_Start_DMA()
- HASH phase
state is now set to
HAL_HASH_PHASE_READY once
the digest has been read
in the following APIs:
- HASH_IT()
- HMAC_Processing()
- HASH_Start()
- HASH_Finish()
- Case of a
large buffer scattered around
in memory each piece of which
is not necessarily a multiple
of 4 bytes in length.
- In section
"##### How to use this
driver #####", sub-section
"*** Remarks on message
length ***" added to provide
recommendations to follow in
such case.
- No
modification of the driver
as the root-cause is at
design-level.
- HAL CAN
update
- HAL_CAN_GetRxMessage() update to
get the correct value for the
RTR (type of frame for
the message that will be
transmitted) field in the CAN_RxHeaderTypeDef
structure.
- HAL
DCMI update
- Add new HAL_DCMI_ConfigSyncUnmask()
API to set embedded
synchronization delimiters
unmasks.
- HAL
RTC update
- Following IRQ
handlers' implementation has
been aligned with the
STM32Cube firmware
specification (in case of
interrupt lines shared by
multiple events, first check
the IT enable bit is set then
check the IT flag is set too):
- HAL_RTC_AlarmIRQHandler()
- HAL_RTCEx_WakeUpTimerIRQHandler()
- HAL_RTCEx_TamperTimeStampIRQHandler()
- HAL
WWDG update
- In "#####
WWDG Specific features #####"
descriptive comment section:
- Maximal prescaler
value has been corrected (8
instead of 128).
- Maximal APB
frequency has been corrected
(42MHz instead of 56MHz) and
possible timeout values
updated.
- HAL
DMA2D update
- Add the
following API's to Start DMA2D
CLUT Loading.
- HAL_DMA2D_CLUTStartLoad()
Start DMA2D CLUT Loading.
- HAL_DMA2D_CLUTStartLoad_IT()
Start DMA2D CLUT Loading
with interrupt enabled.
- The following
old wrong services will be
kept in the HAL DCMI driver
for legacy purpose and a
specific Note is added:
- HAL_DMA2D_CLUTLoad()
can be replaced with
HAL_DMA2D_CLUTStartLoad()
- HAL_DMA2D_CLUTLoad_IT() can
be replaced with
HAL_DMA2D_CLUTStartLoad_IT()
- HAL_DMA2D_ConfigCLUT()
can be omitted as the config
can be performed using
the HAL_DMA2D_CLUTStartLoad()
API.
- HAL
SDMMC update
- Fix
typo in "FileFormatGroup"
parameter in the HAL_MMC_CardCSDTypeDef
and HAL_SD_CardCSDTypeDef
structures
- Fix an
improve handle state and
error management
- Rename the
defined MMC card capacity type
to be more meaningful:
- Update MMC_HIGH_VOLTAGE_CARD to
MMC LOW_CAPACITY_CARD
- Update MMC_DUAL_VOLTAGE_CRAD
to MMC_HIGH_CAPACITY_CARD
- Fix
management of peripheral
flags depending on commands
or data transfers
- Add new
defines
"SDIO_STATIC_CMD_FLAGS"
and "SDIO_STATIC_DATA_FLAGS"
- Updates HAL
SD and HAL MMC drivers to
manage the new SDIO static
flags.
- Due to
limitation SDIO hardware flow
control indicated in Errata
Sheet:
- In 4-bits
bus wide mode, do not use
the HAL_SD_WriteBlocks_IT()
or HAL_SD_WriteBlocks()
APIs otherwise underrun will
occur and it isn't possible
to activate the flow
control.
- Use DMA
mode when using 4-bits bus
wide mode or decrease the
SDIO_CK frequency.
- HAL
UART update
- Update UART
polling processes to handle
efficiently the Lock mechanism
- Move
the process unlock at the
top of the HAL_UART_Receive()
and HAL_UART_Transmit()
API.
- Fix baudrate
calculation error for clock
higher than 172Mhz
- Add a
forced cast on
UART_DIV_SAMPLING8() and
UART_DIV_SAMPLING16()
macros.
- Remove
useless parenthesis from
UART_DIVFRAQ_SAMPLING8(),
UART_DIVFRAQ_SAMPLING16(),
UART_BRR_SAMPLING8() and
UART_BRR_SAMPLING16() macros
to solve some MISRA
warnings.
- Update UART
interruption handler to manage
correctly the overrun interrupt
- Add in
the HAL_UART_IRQHandler()
API a check on
USART_CR1_RXNEIE bit when an
overrun interrupt occurs.
- Fix baudrate
calculation error UART9
and UART10
- In UART_SetConfig()
API fix UART9 and UART10
clock source when computing
baudrate
values by adding a check on
these instances and setting
clock sourcePCLK2 instead of
PCLK1.
- Update UART_SetConfig()
API
- Split
HAL_RCC_GetPCLK1Freq()
and HAL_RCC_GetPCLK2Freq()
macros from the
UART_BRR_SAMPLING8() and
UART_BRR_SAMPLING8()
macros
- HAL
USART update
- Fix baudrate
calculation error for clock
higher than 172Mhz
- Add a
forced cast on USART_DIV()
macro.
- Remove
useless parenthesis
from USART_DIVFRAQ()
macro to solve some MISRA
warnings.
- Update USART
interruption handler to manage
correctly the overrun interrupt
- Add in
the HAL_USART_IRQHandler()
API a check on
USART_CR1_RXNEIE bit when an
overrun interrupt occurs.
- Fix baudrate
calculation error UART9
and UART10
- In USART_SetConfig()
API fix UART9 and UART10
clock source when computing
baudrate
values by adding a check on
these instances and setting
clock sourcePCLK2 instead of
PCLK1.
- Update USART_SetConfig()
API
- Split
HAL_RCC_GetPCLK1Freq()
and HAL_RCC_GetPCLK2Freq()
macros from the USART_BRR()
macro
- HAL
IRDA update
- Fix baudrate
calculation error for clock
higher than 172Mhz
- Add a
forced cast on IRDA_DIV()
macro.
- Remove
useless parenthesis
from IRDA_DIVFRAQ()
macro to solve some
MISRA warnings.
- Update IRDA
interruption handler to manage
correctly the overrun interrupt
- Add in
the HAL_IRDA_IRQHandler()
API a check on
USART_CR1_RXNEIE bit when an
overrun interrupt occurs.
- Fix baudrate
calculation error UART9
and UART10
- In IRDA_SetConfig()
API fix UART9 and UART10
clock source when computing
baudrate
values by adding a check on
these instances and setting
clock sourcePCLK2 instead of
PCLK1.
- Update IRDA_SetConfig()
API
- Split
HAL_RCC_GetPCLK1Freq()
and HAL_RCC_GetPCLK2Freq()
macros from the IRDA_BRR()
macro
- HAL
SMARTCARD update
- Fix baudrate
calculation error for clock
higher than 172Mhz
- Add a
forced cast on SMARTCARD_DIV()
macro.
- Remove useless parenthesis
from SMARTCARD_DIVFRAQ()
macro to solve some
MISRA warnings.
- Update
SMARTCARD interruption handler
to manage correctly the
overrun interrupti
- Add in
the HAL_SMARTCARD_IRQHandler()
API a check on
USART_CR1_RXNEIE bit when an
overrun interrupt occurs.
- Update SMARTCARD_SetConfig()
API
- Split
HAL_RCC_GetPCLK1Freq()
and HAL_RCC_GetPCLK2Freq()
macros from the
SMARTCARD_BRR() macro
- HAL
TIM update
- Add new
macros to enable and disable
the fast mode when using the
one pulse mode to output a
waveform with a minimum delay
- __HAL_TIM_ENABLE_OCxFAST()
and __HAL_TIM_DISABLE_OCxFAST().
- Update
Encoder interface mode to
keep TIM_CCER_CCxNP
bits low
- Add TIM_ENCODERINPUTPOLARITY_RISING
and
TIM_ENCODERINPUTPOLARITY_FALLING
definitions to determine
encoder input polarity.
- Add
IS_TIM_ENCODERINPUT_POLARITY()
macro to check the
encoder input polarity.
- Update HAL_TIM_Encoder_Init()
API
- Replace
IS_TIM_IC_POLARITY()
macro by
IS_TIM_ENCODERINPUT_POLARITY()
macro.
- Update TIM
remapping input configuration
in HAL_TIMEx_RemapConfig()
API
- Remove
redundant check on
LPTIM_OR_TIM5_ITR1_RMP bit
and replace it by check on
LPTIM_OR_TIM9_ITR1_RMP bit.
- Update HAL_TIMEx_MasterConfigSynchronization()
API to avoid functional errors
and assert fails when using
some TIM instances as input
trigger.
- Replace IS_TIM_SYNCHRO_INSTANCE()
macro by
IS_TIM_MASTER_INSTANCE()
macro.
- Add IS_TIM_SLAVE_INSTANCE()
macro to check on
TIM_SMCR_MSM bit.
- Add lacking
TIM input remapping definition
- Add
LL_TIM_TIM11_TI1_RMP_SPDIFRX
and
LL_TIM_TIM2_ITR1_RMP_ETH_PTP.
- Add lacking
definition for linked
LPTIM_TIM input trigger remapping
- Add
following definitions
:
LL_TIM_TIM9_ITR1_RMP_TIM3_TRGO,
LL_TIM_TIM9_ITR1_RMP_LPTIM,
LL_TIM_TIM5_ITR1_RMP_TIM3_TRGO,
LL_TIM_TIM5_ITR1_RMP_LPTIM,
LL_TIM_TIM1_ITR2_RMP_TIM3_TRGO
and
LL_TIM_TIM1_ITR2_RMP_LPTIM.
- Add a new
mechanism in LL_TIM_SetRemap()
API to remap TIM1, TIM9,
and TIM5 input
triggers mapped on LPTIM
register.
- HAL
LPTIM update
- Add a polling
mechanism to check
on LPTIM_FLAG_XXOK flags
in different API
- Add
LPTIM_WaitForFlag() API to
wait for flag set.
- Perform new
checks on
HAL_LPTIM_STATE_TIMEOUT.
- Add lacking
definitions of LPTIM input
trigger remapping and its
related API
- LL_LPTIM_INPUT1_SRC_PAD_AF,
LL_LPTIM_INPUT1_SRC_PAD_PA4,
LL_LPTIM_INPUT1_SRC_PAD_PB9
and
LL_LPTIM_INPUT1_SRC_TIM_DAC.
- Add a new
API LL_LPTIM_SetInput1Src()
to access to the LPTIM_OR
register and remap the
LPTIM input trigger.
- Perform a new
check on indirect EXTI23 line
associated to the LPTIM wake
up timer
- Condition
the use of the LPTIM Wake-up
Timer associated EXTI
line configuration's
macros by EXTI_IMR_MR23
bit in different API
:
- __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE/DDISABLE_FALLING_EDGE()
- __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE()
- __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()
- __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE()
- __HAL_LPTIM_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE()
- __HAL_LPTIM_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE()
- __HAL_LPTIM_WAKEUPTIMER_EXTI_GET_FLAG()
- __HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_FLAG()
- __HAL_LPTIM_WAKEUPTIMER_EXTI_GENERATE_SWIT()
- Update HAL_LPTIM_TimeOut_Start_IT(), HAL_LPTIM_TimeOut_Stop_IT(),
HAL_LPTIM_Counter_Start_IT()
and HAL_LPTIM_Counter_Stop_IT()
API by adding Enable/Disable
rising edge trigger on
the LPTIM Wake-up Timer
Exti
line.
- Add
__HAL_LPTIM_WAKEUPTIMER_EXTI_CLEAR_FLAG()
in the end of the HAL_LPTIM_IRQHandler()
API conditioned by
EXTI_IMR_MR23 bit.
- HAL
I2C update
- Update
HAL_I2C_EV_IRQHandler()
API to fix I2C send break
issue
- Add
additional check on
hi2c->hdmatx,
hdmatx->XferCpltCallback,
hi2c->hdmarx,
hdmarx->XferCpltCallback
in I2C_Master_SB()
API to avoid enabling
DMA request when IT
mode is used.
- Update
HAL_I2C_ER_IRQHandler()
API to fix acknowledge failure
issue with I2C memory IT
processes
- Add stop
condition generation when
NACK occurs.
- Update
HAL_I2C_Init()
API to force software reset
before setting new I2C
configuration
- Update HAL
I2C processes to report ErrorCode
when wrong I2C start condition
occurs
- Add
new ErrorCode
define: HAL_I2C_WRONG_START
- Set ErrorCode
parameter in I2C handle
to HAL_I2C_WRONG_START
- 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
- HAL
FMPI2C update
- Fix HAL
FMPI2C slave interrupt
handling issue with I2C
sequential transfers.
- Update
FMPI2C_Slave_ISR_IT()
and FMPI2C_Slave_ISR_DMA()
APIs to check on STOP
condition and handle it
before clearing the ADDR
flag
- HAL
NAND update
- Update
HAL_NAND_Write_Page_8b(),
HAL_NAND_Write_Page_16b()
and
HAL_NAND_Write_SpareArea_16b()
to manage correctly the time
out condition.
- HAL
SAI update
- Optimize SAI_DMATxCplt()
and SAI_DMARxCplt()
APIs to check on "Mode"
parameter instead of CIRC
bit in the CR register.
- Remove unused
SAI_FIFO_SIZE define
- Update HAL_SAI_Receive_DMA()
programming sequence to be inline
with reference manual
V1.7.6
/ 12-April-2019
Main Changes
- General
updates to fix known defects and
enhancements implementation
- HAL
I2C update
- Fix I2C send
break issue in IT processes
- Add
additional check on
hi2c->hdmatx
and hi2c->hdmarx to
avoid the DMA request
enable when IT mode is used.
- HAL
SPI update
- Update to
implement Erratasheet:
BSY bit may stay high at the
end of a data transfer in
Slave mode
- LL
LPTIM update
- Fix
compilation errors with LL_LPTIM_WriteReg()
and LL_LPTIM_ReadReg()
macros
- HAL
SDMMC update
- Fix
preprocessing compilation
issue with SDIO
STA STBITERR interrupt
- HAL/LL
USB update
- Updated USB_WritePacket(),
USB_ReadPacket()
APIs to prevent compilation
warning with GCC GNU v8.2.0
- Rework USB_EPStartXfer()
API to enable the USB endpoint
before unmasking the TX FiFo
empty interrupt in case DMA is
not used
- USB HAL_HCD_Init()
and HAL_PCD_Init()
APIs updated to avoid enabling
USB DMA feature for OTG FS
instance, USB DMA feature is
available only on OTG HS
Instance
- Remove
duplicated line in hal_hcd.c
header file comment section
- Rework USB
HAL driver to use instance PCD_SPEED_xxx,
HCD_SPEED_xx
speeds instead of OTG register
Core speed definition during
the instance initialization
- Software
Quality improvement with a fix
of CodeSonar
warning on PCD_Port_IRQHandler()
and HCD_Port_IRQHandler()
interrupt handlers
V1.7.5
/ 08-February-2019
Main Changes
- General
updates to fix known defects and
enhancements implementation
- General
updates to fix CodeSonar
compilation warnings
- General
updates to fix SW4STM32
compilation errors under Linux
- General
updates to fix the user manual
.chm files
- Add
support of HAL callback
registration feature
- Add
new HAL
EXTI driver
- Add
new HAL
SMBUS driver
- The
following changes done on the
HAL drivers require an update
on the application code based
on older HAL versions
- Rework of HAL
CRYP driver (compatibility
break)
- HAL CRYP
driver has been redesigned
with new API's, to bypass
limitations on data
Encryption/Decryption
management present with
previous HAL CRYP driver
version.
- The new HAL
CRYP driver is the
recommended version. It is
located as usual in
Drivers/STM32F4xx_HAL_Driver/Src
and
Drivers/STM32f4xx_HAL_Driver/Inc
folders. It can be enabled
through switch
HAL_CRYP_MODULE_ENABLED in
stm32f4xx_hal_conf.h
- The legacy
HAL CRYP driver is no longer
supported.
- Add new AutoReloadPreload
field in TIM_Base_InitTypeDef
structure to allow the
possibilities to enable or
disable the TIM Auto Reload
Preload.
- HAL/LL
Generic update
- Add support
of HAL callback
registration feature
- The feature
disabled by default is
available for the following
HAL drivers:
- ADC,
CAN, CEC, CRYP, DAC,
DCMI, DFSDM, DMA2D, DSI,
ETH, HASH, HCD, I2C,
FMPI2C, SMBUS,
UART, USART, IRDA,
SMARTCARD, LPTIM, LTDC,
MMC, NAND, NOR,
PCCARD, PCD, QSPI, RNG,
RTC,
SAI, SD, SDRAM, SRAM,
SPDIFRX, SPI, I2S, TIM,
and WWDG
- The feature
may be enabled individually
per HAL PPP driver
by setting the corresponding
definition USE_HAL_PPP_REGISTER_CALLBACKS
to 1U in
stm32f4xx_hal_conf.h project
configuration file (template
file
stm32f4xx_hal_conf_template.h
available from
Drivers/STM32F4xx_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().
- General
updates to fix MISRA 2012
compilation errors
- Replace HAL_GetUID()
API by HAL_GetUIDw0(),
HAL_GetUIDw1() and
HAL_GetUIDw2()
- HAL_IS_BIT_SET()/HAL_IS_BIT_CLR()
macros implementation update
- "stdio.h"
include updated with "stddef.h"
- HAL
GPIO
update
- Add missing
define for SPI3 alternate
function "GPIO_AF5_SPI3" for
STM32F401VE devices
- Remove
"GPIO_AF9_TIM14" from defined
alternate function list for
STM32F401xx devices
- HAL_GPIO_TogglePin() reentrancy
robustness improvement
- HAL_GPIO_DeInit() API update
to avoid potential pending
interrupt after call
- Update
GPIO_GET_INDEX()
API for more compliance with
STM32F412Vx/STM32F412Rx/STM32F412Cx
devices
- Update
GPIO_BRR registers with
Reference Manual regarding
registers and bit definition
values
- HAL
CRYP update
- The CRYP_InitTypeDef
is no more
supported, changed by CRYP_ConfigTypedef
to allow changing parameters
using HAL_CRYP_setConfig()
API without reinitialize the
CRYP IP using the HAL_CRYP_Init()
API
- New
parameters added in the CRYP_ConfigTypeDef
structure: B0 and DataWidthUnit
- Input data
size parameter is added in the
CRYP_HandleTypeDef
structure
- Add new APIs
to manage the CRYP
configuration:
- HAL_CRYP_SetConfig()
- HAL_CRYP_GetConfig()
- Add new APIs
to manage the Key derivation:
- HAL_CRYPEx_EnableAutoKeyDerivation()
- HAL_CRYPEx_DisableAutoKeyDerivation()
- Add new APIs
to encrypt and decrypt data:
- HAL_CRYP_Encypt()
- HAL_CRYP_Decypt()
- HAL_CRYP_Encypt_IT()
- HAL_CRYP_Decypt_IT()
- HAL_CRYP_Encypt_DMA()
- HAL_CRYP_Decypt_DMA()
- Add new APIs
to generate TAG:
- HAL_CRYPEx_AESGCM_GenerateAuthTAG()
- HAL_CRYPEx_AESCCM_Generago teAuthTAG()
- HAL
LPTIM update
- Remove
useless LPTIM Wakeup EXTI
related macros from HAL_LPTIM_TimeOut_Start_IT()
API
- HAL
I2C update
- I2C API
changes for MISRA-C 2012
compliancy:
- 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()
- SMBUS defined
flags are removed as not used
by the HAL I2C driver
- I2C_FLAG_SMBALERT
- I2C_FLAG_TIMEOUT
- I2C_FLAG_PECERR
- I2C_FLAG_SMBHOST
- I2C_FLAG_SMBDEFAULT
- Add support
of I2C repeated start feature
in DMA Mode:
- With the
following new API's
- 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_FIRST_AND_NEXT_FRAME
- I2C_LAST_FRAME_NO_STOP
- I2C_OTHER_FRAME
- I2C_OTHER_AND_LAST_FRAME
- HAL
FMPI2C update
- I2C API
changes for MISRA-C 2012
compliancy:
- Rename
HAL_FMPI2C_Master_Sequential_Transmit_IT()
to
HAL_FMPI2C_Master_Seq_Transmit_IT()
- Rename
HAL_FMPI2C_Master_Sequentiel_Receive_IT()
to
HAL_FMPI2C_Master_Seq_Receive_IT()
- Rename
HAL_FMPI2C_Master_Sequentiel_Transmit_DMA()
to
HAL_FMPI2C_Master_Seq_Transmit_DMA()
- Rename
HAL_FMPI2C_Master_Sequentiel_Receive_DMA()
to
HAL_FMPI2C_Master_Seq_Receive_DMA()
- Rename
FMPI2C_CR1_DFN to
FMPI2C_CR1_DNF for more
compliance with Reference
Manual regarding registers and
bit definition naming
- Add support
of I2C repeated start feature
in DMA Mode:
- With the
following new API's
- HAL_FMPI2C_Master_Seq_Transmit_DMA()
- HAL_FMPI2C_Master_Seq_Receive_DMA()
- HAL_FMPI2C_Slave_Seq_Transmit_DMA()
- HAL_FMPI2C_Slave_Seq_Receive_DMA()
- HAL
FLASH update
- Update the FLASH_OB_GetRDP()
API to return the correct RDP
level
- HAL
RCC
update
- Remove GPIOD
CLK macros for STM32F412Cx
devices (X = D)
- Remove GPIOE
CLK macros for
STM32F412Rx\412Cx devices: (X
= E)
- Remove
GPIOF/G CLK macros for
STM32F412Vx\412Rx\412Cx
devices (X= F or G)
- __HAL_RCC_GPIOX_CLK_ENABLE()
- __HAL_RCC_GPIOX_CLK_DISABLE()
- __HAL_RCC_GPIOX_IS_CLK_ENABLED()
- __HAL_RCC_GPIOX_IS_CLK_DISABLED()
- __HAL_RCC_GPIOX_FORCE_RESET()
- HAL
RNG update
- Update to
manage RNG error code:
- Add ErrorCode
parameter in HAL RNG Handler
structure
- LL
ADC update
- Add
__LL_ADC_CALC_TEMPERATURE()
helper macro to calculate the
temperature (unit: degree
Celsius) from ADC conversion
data of internal temperature
sensor.
- Fix ADC
channels configuration issues
on STM32F413xx/423xx devices
- To allow
possibility to switch
between VBAT and TEMPERATURE
channels configurations
- HAL_ADC_Start(), HAL_ADC_Start_IT()
and HAL_ADC_Start_DMA()
update to prevention from
starting ADC2 or ADC3 once
multimode is enabled
- HAL
DFSDM
update
- General
updates to be compliant with
DFSDM bits naming used in
CMSIS files.
- HAL
CAN
update
- Update
possible values list for FilterActivation
parameter in CAN_FilterTypeDef
structure
- CAN_FILTER_ENABLE
instead of ENABLE
- CAN_FILTER_DISABLE
instead of DISABLE
- HAL
CEC
update
- Update HAL
CEC State management method:
- Remove HAL_CEC_StateTypeDef
structure parameters
- Add new
defines for CEC states
- HAL
DMA
update
- Add clean of
callbacks in HAL_DMA_DeInit()
API
- HAL
DMA2D
update
- Remove unused
DMA2D_ColorTypeDef structure
to be compliant with MISRAC
2012 Rule 2.3
- General
update to use dedicated
defines for
DMA2D_BACKGROUND_LAYER and
DMA2D_FOREGROUND_LAYER instead
of numerical values: 0/1.
- HAL
DSI
update
- Fix read
multibyte issue: remove extra
call to __HAL_UNLOCK__ from DSI_ShortWrite()
API.
- HAL/ LL drivers
optimization
- HAL driver:
remove unused variables
- LL driver:
getter APIs optimization
- HAL
PWR update
- Remove the
followings API's as feature
not supported by
STM32F469xx/479xx devices
- HAL_PWREx_EnableWakeUpPinPolarityRisingEdge()
- HAL_PWREx_EnableWakeUpPinPolarityRisingEdge()
- HAL
SPI update
- Update HAL_SPI_StateTypeDef
structure to add new state:
HAL_SPI_STATE_ABORT
- HAL/LL
TIM update
- Add new AutoReloadPreload
field in TIM_Base_InitTypeDef
structure
- Refer to
the TIM examples to identify
the changes
- Move the
following TIM structures from
stm32f4xx_hal_tim_ex.h into
stm32f4xx_hal_tim.h
- TIM_MasterConfigTypeDef
- TIM_BreakDeadTimeConfigTypeDef
- Add new TIM
Callbacks API's:
- HAL_TIM_PeriodElapsedHalfCpltCallback()
- HAL_TIM_IC_CaptureHalfCpltCallback()
- HAL_TIM_PWM_PulseFinishedHalfCpltCallback()
- HAL_TIM_TriggerHalfCpltCallback()
- TIM API
changes for MISRA-C 2012
compliancy:
- 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
- Rename HAL_TIMEx_DMACommutationCplt
to TIMEx_DMACommutationCplt
- HAL/LL
USB update
- Rework USB
interrupt handler and improve
HS DMA support in Device mode
- Fix BCD
handling fr OTG
instance in device mode
- cleanup
reference to low speed in
device mode
- allow writing
TX FIFO in case of transfer
length is equal to available
space in the TX FIFO
- Fix Toggle
OUT interrupt channel in host
mode
- Update USB
OTG max number of endpoints (6
FS and 9 HS instead of 5 and
8)
- Update USB
OTG IP to enable internal
transceiver when starting USB
device after committee BCD negotiation
- LL
IWDG update
- Update LL
inline macros to use IWDGx
parameter instead of IWDG
instance defined in CMSIS device
V1.7.4
/ 02-February-2018
Main Changes
- General
updates to fix known defects and
enhancements implementation
- HAL update
- Update UNUSED()
macro implementation to avoid
GCC warning
- The warning
is detected when the UNUSED()
macro is called from C++
file
- Update to
make RAMFUNC define as generic
type instead of HAL_StatusTypdef
type.
- HAL
FLASH update
- Update
the prototypes of the
following APIs after change on
RAMFUNC defines
- HAL_FLASHEx_StopFlashInterfaceClk()
- HAL_FLASHEx_StartFlashInterfaceClk()
- HAL_FLASHEx_EnableFlashSleepMode()
- HAL_FLASHEx_DisableFlashSleepMode()
- HAL
SAI update
- Update HAL_SAI_DMAStop()
and HAL_SAI_Abort()
process to fix the lock/unlock
audio issue
V1.7.3
/ 22-December-2017
Main Changes
- General
updates 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/STM32F4xx_HAL_Driver/Src
and
Drivers/STM32f4xx_HAL_Driver/Inc
folders. It can be enabled
through switch
HAL_CAN_MODULE_ENABLED in
stm32f4xx_hal_conf.h
- The legacy
HAL CAN driver is also
present in the release in
Drivers/STM32F4xx_HAL_Driver/Src/Legacy
and
Drivers/STM32F4xx_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 stm32f4xx_hal_conf.h
- HAL 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).
- 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()
API's
- 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 receivecallback
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
FMPI2C update
- Add new
option
FMPI2C_LAST_FRAME_NO_STOP for
the sequential transfer management
- This option
allows to manage a restart
condition after several call
of the same master
sequential interface.
- HAL
RCC update
- Add new HAL macros
- __HAL_RCC_GET_RTC_SOURCE()
allowing to get the RTC
clock source
- __HAL_RCC_GET_RTC_HSE_PRESCALER()
allowing to get the HSE
clock divider for RTC
peripheral
- Ensure reset
of CIR and CSR registers when
issuing HAL_RCC_DeInit()/LL_RCC_DeInit
functions
- Update HAL_RCC_OscConfig() to
keep backup domain enabled
when configuring
respectively LSE and RTC
clock source
- Add new HAL
interfaces allowing to control
the activation or deactivation
of PLLI2S and PLLSAI:
- HAL_RCCEx_EnablePLLI2S()
- HAL_RCCEx_DisablePLLI2S()
- HAL_RCCEx_EnablePLLSAI()
- HAL_RCCEx_DisablePLLSAI()
- LL
RCC update
- Add new LL
RCC macro
- LL_RCC_PLL_SetMainSource() allowing
to configure PLL main clock
source
- LL
FMC / LL FSMC update
- Add clear of
the PTYP bit to select the
PCARD mode in FMC_PCCARD_Init()
/ FSMC_PCCARD_Init()
V1.7.2
/ 06-October-2017
Main Changes
- General
updates to fix known defects and
enhancements implementation
- Fix
compilation warning with
GCC compiler
- Remove
Date and version
from header files
- Update
HAL drivers to refer to the
new CMSIS bit position
defines instead of usage the
POSITION_VAL()
macro
- HAL
Generic update
- stm32f4xx_hal_def.h
file changes:
- Update
__weak and __packed defined
values for ARM compiler
- Update
__ALIGN_BEGIN and
__ALIGN_END defined values
for ARM compiler
- stm32f4xx_ll_system.h
file:
add LL_SYSCFG_REMAP_SDRAM
define
- HAL
ADC update
- Fix wrong
definition of ADC channel
temperature sensor for
STM32F413xx and STM32F423xx
devices.
- HAL
DMA update
- Update values
for the following defines:
DMA_FLAG_FEIF0_4 and
DMA_FLAG_DMEIF0_4
- HAL
DSI update
- Fix Extra
warning with SW4STM32 compiler
- Fix DSI
display issue when using EWARM
w/ high level optimization
- Fix
MISRAC errors
- HAL
FLASH update
- HAL_FLASH_Unlock() update to
return state error when the
FLASH is already unlocked
- HAL
FMPI2C update
- Update
Interface APIs headers to
remove confusing message about
device address
- Update
FMPI2C_WaitOnRXNEFlagUntilTimeout()
to resolve a race condition
between STOPF and RXNE Flags
- Update
FMPI2C_TransferConfig()
to fix wrong bit management.
- Update code
comments to use DMA stream
instead of DMA channel
- HAL
PWR update
- HAL_PWR_EnableWakeUpPin() update
description to add support of
PWR_WAKEUP_PIN2 and
PWR_WAKEUP_PIN3
- HAL
NOR update
- Add the
support of STM32F412Rx devices
- HAL
I2C update
- Update
Interface APIs headers to
remove confusing mesage
about device address
- Update
I2C_MasterReceive_RXNE()
and I2C_MasterReceive_BTF()
static APIs to fix bad
Handling of NACK in I2C master
receive process.
- HAL
RCC update
- Update HAL_RCC_GetOscConfig()
API to:
- set PLLR in
the RCC_OscInitStruct
- check on
null pointer
- Update HAL_RCC_ClockConfig()
API to:
- check on
null pointer
- optimize code
size by updating the
handling method of the SWS bits
- 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
- Be able to
return HAL/LL status
- Add checks
for HSI, PLL and PLLI2S
ready
before modifying RCC CFGR
registers
- Clear all
interrupt falgs
- Initialize
systick
interrupt period
- Update HAL_RCC_GetSysClockFreq()
to avoid risk of rounding
error which may leads to a
wrong returned value.
- HAL
RNG update
- HAL_RNG_Init() remove
Lock()/Unlock()
- HAL
MMC update
- HAL_MMC_Erase()
API: add missing () to
fix compilation warning
detected with SW4STM32 when
extra feature is enabled.
- HAL
RTC update
- HAL_RTC_Init() API: update
to force the wait for synchro
before setting TAFCR register
when BYPSHAD bit in CR
register is 0.
- HAL
SAI update
- Update HAL_SAI_DMAStop()
API to flush fifo
after disabling SAI
- HAL
I2S update
- Update I2S
DMA fullduplex process to
handle I2S Rx and Tx DMA Half
transfer complete callback
- HAL
TIM update
- Update HAL_TIMEx_OCN_xxxx()
and HAL_TIMEx_PWMN_xxx()
API description to remove
support of TIM_CHANNEL_4
- LL
DMA update
- Update to
clear DMA flags using WRITE_REG()
instead SET_REG() API to avoid
read access to the IFCR
register that is write only.
- LL
RTC update
- Fix warning
with static analyzer
- LL
USART update
- Add assert
macros to check USART BaudRate
register
- LL
I2C update
- Rename
IS_I2C_CLOCK_SPEED()
and IS_I2C_DUTY_CYCLE()
respectively to
IS_LL_I2C_CLOCK_SPEED() and
IS_LL_I2C_DUTY_CYCLE() to
avoid incompatible macros
redefinition.
- LL
TIM update
- Update LL_TIM_EnableUpdateEvent()
API to clear UDIS bit in TIM
CR1 register instead of
setting it.
- Update LL_TIM_DisableUpdateEvent()
API to set UDIS bit in TIM CR1
register instead of clearing
it.
- LL
USART update
- Fix MISRA
error w/ IS_LL_USART_BRR()
macro
- Fix wrong
check when UART10 instance is
used
V1.7.1
/ 14-April-2017
Main Changes
- Update
CHM UserManuals
to support LL drivers
- General
updates to fix known defects and
enhancements implementation
- HAL
CAN update
- Add
management of overrun
error.
- Allow
possibility to receive
messages from the 2 RX FIFOs
in parallel via interrupt.
- Fix message
lost issue with specific
sequence of transmit requests.
- Handle
transmission failure with
error callback, when NART is
enabled.
- Add
__HAL_CAN_CANCEL_TRANSMIT()
call to abort transmission
when timeout is reached
- HAL
PWR update
- HAL_PWREx_EnterUnderDriveSTOPMode() API: remove
check on UDRDY flag
- LL
ADC update
- Fix wrong ADC
group injected sequence configuration
- LL_ADC_INJ_SetSequencerRanks() and LL_ADC_INJ_GetSequencerRanks()
API's update to take in
consideration the ADC number
of conversions
- Update
the defined values for
ADC group injected seqencer
ranks
V1.7.0
/ 17-February-2017
Main Changes
- Add
Low Layer drivers allowing
performance and footprint optimization
- Low Layer drivers
APIs provide register level
programming: require deep
knowledge of peripherals
described in STM32F4xx
Reference Manuals
- Low Layer
drivers are available for:
ADC, Cortex, CRC, DAC,
DMA, DMA2D, EXTI, GPIO, I2C,
IWDG, LPTIM, PWR, RCC, RNG,
RTC, SPI, TIM, USART, WWDG
peripherals and additionnal
Low Level Bus, System and
Utilities APIs.
- Low Layer drivers
APIs are implemented as static
inline function in new Inc/stm32f4xx_ll_ppp.h files
for PPP peripherals, there is
no configuration file and each stm32f4xx_ll_ppp.h file
must be included in user code.
- General
updates to fix known defects and
enhancements implementation
- Fix extra
warnings with GCC compiler
- HAL
drivers clean up: remove
double casting 'uint32_t' and 'U'
- Add
new HAL
MMC driver
- The
following changes done on the
HAL drivers require an update
on the application code based
on older HAL versions
- HAL SD update
- Overall
rework of the driver for a
more
efficient implementation
- Modify
initialization API and structures
- Modify
Read / Write sequences:
separate transfer process
and SD Cards state management
- Adding
interrupt mode for Read /
Write operations
- Update
the HAL_SD_IRQHandler
function by optimizing the
management of interrupt errors
- Refer to
the following example to
identify the changes: BSP
example and USB_Device/MSC_Standalone
application
- HAL NAND update
- Modify NAND_AddressTypeDef,
NAND_DeviceConfigTypeDef
and NAND_HandleTypeDef
structures fields
- Add new HAL_NAND_ConfigDevice
API
- HAL DFSDM update
- Add
support of Multichannel
Delay feature
- Add HAL_DFSDM_ConfigMultiChannelDelay
API
- The
following APIs are moved
to internal static
functions: HAL_DFSDM_ClockIn_SourceSelection,
HAL_DFSDM_ClockOut_SourceSelection,
HAL_DFSDM_DataInX_SourceSelection
(X=0,2,4,6), HAL_DFSDM_BitStreamClkDistribution_Config
- HAL I2S update
- Add specific
callback API to manage I2S
full duplex end of transfer
process:
- HAL_I2S_TxCpltCallback()
and
HAL_I2S_RxCpltCallback()
API's will be replaced
with only
HAL_I2SEx_TxRxCpltCallback()
API.
- HAL
update
- Modifiy default HAL_Delay
implementation to guarantee
minimum delay
- HAL
Cortex update
- Move HAL_MPU_Disable()
and HAL_MPU_Enable()
from stm32f4xx_hal_cortex.h to
stm32f4xx_hal_cortex.c
- Clear the
whole MPU control register
in HAL_MPU_Disable()
API
- HAL
FLASH update
- IS_FLASH_ADDRESS()
macro update to support OTP
range
- FLASH_Program_DoubleWord(): Replace
64-bit accesses with 2
double-words operations
- LL
GPIO update
- Update
IS_GPIO_PIN()
macro implementation to be
more safe
- LL
RCC update
- Update
IS_RCC_PLLQ_VALUE()
macro implementation: the
minimum accepted value is
2 instead of 4
- Rename
RCC_LPTIM1CLKSOURCE_PCLK
define to
RCC_LPTIM1CLKSOURCE_PCLK1
- Fix
compilation issue w/
__HAL_RCC_USB_OTG_FS_IS_CLK_ENABLED()
and
__HAL_RCC_USB_OTG_FS_IS_CLK_DISABLED()
macros for STM32F401xx devices
- Add the
following is clock
enabled macros for STM32F401xx
devices
- __HAL_RCC_SDIO_IS_CLK_ENABLED()
- __HAL_RCC_SPI4_IS_CLK_ENABLED()
- __HAL_RCC_TIM10_IS_CLK_ENABLED()
- Add the
following is clock
enabled macros for STM32F410xx
devices
- __HAL_RCC_CRC_IS_CLK_ENABLED()
- __HAL_RCC_RNG_IS_CLK_ENABLED()
- Update HAL_RCC_DeInit()
to reset the RCC clock
configuration to the default
reset state.
- Remove macros
to configure BKPSRAM from
STM32F401xx devices
- Update to
refer to AHBPrescTable[]
and APBPrescTable[]
tables defined in
system_stm32f4xx.c file
instead of APBAHBPrescTable[]
table.
- HAL
FMPI2C update
- Add
FMPI2C_FIRST_AND_NEXT_FRAME
define in Sequential
Transfer Options
- HAL
ADC update
- HAL_ADCEx_InjectedConfigChannel(): update the
external trigger injected
condition
- HAL
DMA update
- HAL_DMA_Init(): update to
check compatibility between
FIFO threshold level and size
of the memory burst
- HAL
QSPI update
- QSPI_HandleTypeDef structure:
Update transfer parameters on
uint32_t instead of uint16_t
- HAL
UART/USART/IrDA/SMARTCARD update
- DMA Receive
process; the code has been
updated to clear the USART
OVR flag before
enabling DMA receive
request.
- UART_SetConfig() update to
manage correctly USART6
instance that is not available
on STM32F410Tx devices
- HAL
CAN update
- Remove Lock
mechanism from HAL_CAN_Transmit_IT()
and HAL_CAN_Receive_IT()
processes
- HAL
TIM update
- Add
__HAL_TIM_MOE_DISABLE_UNCONDITIONALLY()
macro to disable Master output
without check on TIM channel
state.
- Update HAL_TIMEx_ConfigBreakDeadTime()
to fix TIM BDTR register
corruption.
- HAL
I2C update
- Update
HAL_I2C_Master_Transmit()
and HAL_I2C_Slave_Transmit()
to avoid sending extra
bytes at the end of the
transmit processes
- Update
HAL_I2C_Mem_Read()
API to fix wrong check on
misused parameter “Size”
- Update
I2C_MasterReceive_RXNE()
and I2C_MasterReceive_BTF()
static APIs to enhance Master
sequential reception process.
- HAL
SPI update
- Add transfer
abort APIs and associated
callbacks in interrupt mode
- HAL_SPI_Abort()
- HAL_SPI_Abort_IT()
- HAL_SPI_AbortCpltCallback()
- HAL
I2S update
- Add specific
callback API to manage I2S
full duplex end of transfer
process:
- HAL_I2S_TxCpltCallback()
and HAL_I2S_RxCpltCallback()
API's will be replaced with
only
HAL_I2SEx_TxRxCpltCallback()
API.
- Update I2S
Transmit/Receive polling
process to manage Overrun
and Underrun errors
- Move
the I2S clock input
frequency calculation to
HAL RCC driver.
- Update the
HAL I2SEx driver to keep only
full duplex feature.
- HAL_I2S_Init()
API updated to
- Fix wrong
I2S clock calculation when
PCM mode is used.
- Return
state HAL_I2S_ERROR_PRESCALER when
the I2S clock is wrongly configured
- HAL
LTDC update
- Optimize HAL_LTDC_IRQHandler()
function by using direct
register read
- Rename the
following API's
- HAL_LTDC_Relaod() by HAL_LTDC_Reload()
- HAL_LTDC_StructInitFromVideoConfig() by HAL_LTDCEx_StructInitFromVideoConfig()
- HAL_LTDC_StructInitFromAdaptedCommandConfig() by HAL_LTDCEx_StructInitFromAdaptedCommandConfig()
- Add new
defines for LTDC layers
(LTDC_LAYER_1 / LTDC_LAYER_2)
- Remove unused
asserts
- HAL
USB PCD
update
- Flush all TX
FIFOs on USB Reset
- Remove Lock
mechanism from HAL_PCD_EP_Transmit()
and HAL_PCD_EP_Receive()
API's
- LL
USB update
- Enable DMA
Burst mode for USB OTG HS
- Fix SD card
detection issue
- LL
SDMMC update
- Add new SDMMC_CmdSDEraseStartAdd,
SDMMC_CmdSDEraseEndAdd,
SDMMC_CmdOpCondition
and SDMMC_CmdSwitch
functions
V1.6.0
/ 04-November-2016
Main Changes
- Add support of STM32F413xx
and STM32F423xx
devices
- General
updates to fix known defects and
enhancements implementation
- HAL
CAN update
- Update to add
the support of 3 CAN management
- HAL
CRYP update
- Update to add
the support of AES features
- HAL
DFSDM update
- Add
definitions for new external
trigger filters
- Add
definition for new Channels
4, 5, 6 and 7
- Add
functions and API for Filter
state configuration and management
- Add new
functions:
- HAL_DFSDM_BitstreamClock_Start()
- HAL_DFSDM_BitstreamClock_Stop()
- HAL_DFSDM_BitStreamClkDistribution_Config()
- HAL
DMA
- Add the
support of DMA Channels from
8 to 15
- Update HAL_DMA_DeInit()
function with the check on
DMA stream instance
- HAL
DSI update
- Update HAL_DSI_ConfigHostTimeouts()
and HAL_DSI_Init()
functions to avoid scratch in
DSI_CCR register
- HAL
FLASH update
- Enhance FLASH_WaitForLastOperation()
function implementation
- Update
__HAL_FLASH_GET_FLAG()
macro implementation
- HAL
GPIO update
- Add
specific alternate functions
definitions
- HAL
I2C update
- Update I2C_DMAError()
function implementation to
ignore DMA FIFO error
- HAL
I2S update
- Enhance
HAL_I2S_Init()
implementation to test on
PCM_SHORT and PCM_LONG
standards
- HAL
IRDA update
- Add new
functions and call backs for
Transfer Abort
- HAL_IRDA_Abort()
- HAL_IRDA_AbortTransmit()
- HAL_IRDA_AbortReceive()
- HAL_IRDA_Abort_IT()
- HAL_IRDA_AbortTransmit_IT()
- HAL_IRDA_AbortReceive_IT()
- HAL_IRDA_AbortCpltCallback()
- HAL_IRDA_AbortTransmitCpltCallback()
- HAL_IRDA_AbortReceiveCpltCallback()
- HAL
PCD update
- Update HAL_PCD_GetRxCount()
function implementation
- HAL
RCC update
- Update
__HAL_RCC_HSE_CONFIG()
macro implementation
- Update __HAL_RCC_LSE_CONFIG()
macro implementation
- HAL
SMARTCARD update
- Add new
functions and call backs for
Transfer Abort
- HAL_ SMARTCARD_Abort()
- HAL_ SMARTCARD_AbortTransmit()
- HAL_ SMARTCARD_AbortReceive()
- HAL_ SMARTCARD_Abort_IT()
- HAL_ SMARTCARD_AbortTransmit_IT()
- HAL_ SMARTCARD_AbortReceive_IT()
- HAL_ SMARTCARD_AbortCpltCallback()
- HAL_ SMARTCARD_AbortTransmitCpltCallback()
- HAL_ SMARTCARD_AbortReceiveCpltCallback()
- HAL
TIM update
- Update HAL_TIMEx_RemapConfig()
function to manage TIM
internal trigger remap:
LPTIM or TIM3_TRGO
- HAL
UART update
- Add
Transfer abort functions and
callbacks
- HAL
USART update
- Add
Transfer abort functions and
callbacks
V1.5.2
/ 22-September-2016
Main Changes
- HAL
I2C update
- Fix wrong
behavior in consecutive
transfers in case of single
byte transmission
(Master/Memory Receive
interfaces)
- Update
HAL_I2C_Master_Transmit_DMA()
/
HAL_I2C_Master_Receive_DMA()/
HAL_I2C_Slave_Transmit_DMA()
and
HAL_I2C_Slave_Receive_DMA() to
manage addressing phase
through interruption instead
of polling
- Add
a check on I2C handle
state at start of all I2C
API's to ensure that I2C is ready
- Update I2C
API's (Polling, IT and DMA
interfaces) to manage I2C XferSize
and XferCount
handle parameters instead of
API size parameter to help
user to get information of
counter in case of
error.
- Update Abort
functionality to manage DMA
use case
- HAL
FMPI2C update
- Update to
disable Own Address
before setting the new Own
Address
configuration:
- Update
HAL_FMPI2C_Init()
to disable FMPI2C_OARx_EN
bit before any
configuration in OARx
registers
- HAL
CAN update
- Update CAN
receive processes to set CAN
RxMsg
FIFONumber
parameter
- HAL
UART update
- Update UART
handle TxXferCount
and RxXferCount parameters
as volatile to avoid
eventual issue with High Speed
optimization
V1.5.1
/ 01-July-2016
Main Changes
- HAL
GPIO update
- HAL_GPIO_Init()/HAL_GPIO_DeInit()
API's:
update GPIO_GET_INDEX()
macro implementation to
support all GPIO's
- HAL
SPI update
- Fix
regression issue:
retore HAL_SPI_DMAPause()
and HAL_SPI_DMAResume() API's
- HAL
RCC update
- Fix FSMC
macros compilation warnings
with STM32F412Rx devices
- HAL
DMA update
- HAL_DMA_PollFortransfer() API clean
up
- HAL
PPP update(PPP refers to
IRDA, UART, USART and SMARTCARD)
- Update
HAL_PPP_IRQHandler()
to add a check on interrupt
source before managing the
error
- HAL
QSPI update
- Implement
workaround to fix the
limitation pronounced
in
the Errata
sheet 2.1.8 section:
In some specific cases,
DMA2 data corruption
occurs when managing AHB
and APB2 peripherals in a
concurrent way
V1.5.0
/ 06-May-2016
Main Changes
- Add support of STM32F412cx,
STM32F412rx, STM32F412vx and
STM32F412zx devices
- General
updates to fix known defects and
enhancements implementation
- Add
new HAL driver for DFSDM peripheral
- Enhance
HAL delay and time base
implementation:
- Add new
drivers
stm32f4xx_hal_timebase_rtc_alarm_template.c
and
stm32f4xx_hal_timebase_rtc_wakeup_template.c
which override the native HAL
time base functions (defined
as weak) to either use the RTC
as time base tick source. For
more details about the usage
of these drivers, please refer
to HAL\HAL_TimeBase_RTC
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.4
- HAL UART,
USART, IRDA, SMARTCARD, SPI,
I2C,FMPI2C,
QSPI (referenced
as PPP here
below) drivers
- Add PPP
error management during DMA
process. This requires the
following updates
on user application:
- Configure
and enable the PPP IRQ in
HAL_PPP_MspInit()
function
- In stm32f4xx_it.c
file, PPP_IRQHandler()
function: add
a call to HAL_PPP_IRQHandler()
function
- Add and
customize the Error
Callback API: HAL_PPP_ErrorCallback()
- HAL I2C, FMPI2C (referenced
as PPP here
below) drivers:
- Update to
avoid waiting on STOPF/BTF/AF
flag under DMA ISR by using
the PPP
end of transfer interrupt in
the DMA transfer process. This
requires the following
updates on user
application:
- Configure
and enable the PPP IRQ in
HAL_PPP_MspInit()
function
- In stm32f4xx_it.c
file, PPP_IRQHandler()
function: add
a call to HAL_PPP_IRQHandler()
function
- HAL I2C driver:
- I2C
transfer processes IT
update: NACK during
addressing phase is managed
through I2C Error
interrupt instead of
HAL state
- HAL IWDG driver:
rework overall driver for
better implementation
- Remove HAL_IWDG_Start(), HAL_IWDG_MspInit()
and HAL_IWDG_GetState() APIs
- HAL WWDG driver:
rework overall driver 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 QSPI
driver: Enhance
the DMA transmit process
by using PPP TC
interrupt instead of waiting
on TC flag under DMA
ISR. This requires the
following updates on user
application:
- Configure
and enable the QSPI IRQ
in HAL_QSPI_MspInit()
function
- In stm32f4xx_it.c
file, QSPI_IRQHandler()
function: add
a call to HAL_QSPI_IRQHandler()
function
- 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
RCC update
- Update HAL_RCC_ClockConfig()
function to adjust the SystemCoreClock
- Rename macros
and Literals:
- RCC_PERIPHCLK_CK48 by RCC_PERIPHCLK_CLK48
- IS_RCC_CK48CLKSOURCE by
IS_RCC_CLK48CLKSOURCE
- RCC_CK48CLKSOURCE_PLLSAIP
by RCC_CLK48CLKSOURCE_PLLSAIP
- RCC_SDIOCLKSOURCE_CK48
by RCC_SDIOCLKSOURCE_CLK48
- RCC_CK48CLKSOURCE_PLLQ
by RCC_CLK48CLKSOURCE_PLLQ
- Update HAL_RCCEx_GetPeriphCLKConfig()
and HAL_RCCEx_PeriphCLKConfig()
functions to support TIM Prescaler
for STM32F411xx devices
- HAL_RCCEx_PeriphCLKConfig() API: update
to fix the RTC clock
configuration issue
- HAL
CEC update
- Overall
driver rework with break
of compatibility with HAL
V1.4.4
- 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, SMARTCARD and
IRDA (referenced
as PPP here below) update
- Update
Polling management:
- The user
Timeout value must be
estimated for the overall
process duration: the
Timeout measurement is
cumulative
- Update DMA
process:
- Update the
management of PPP peripheral
errors during DMA process.
This requires the following
updates in user application:
- Configure
and enable the PPP IRQ in
HAL_PPP_MspInit()
function
- In
stm32f4xx_it.c file, PPP_IRQHandler()
function: add a call to HAL_PPP_IRQHandler()
function
- Add and
customize the Error
Callback API: HAL_PPP_ErrorCallback()
- HAL
FMC update
- Update FMC_NORSRAM_Init()
to remove the Burst access
mode configuration
- Update FMC_SDRAM_Timing_Init()
to fix initialization issue
when configuring 2 SDRAM banks
- HAL
HCD update
- Update HCD_Port_IRQHandler()
to unmask disconnect IT only
when the port is disabled
- HAL
I2C/FMPI2C
update
- Update Polling
management:
- The Timeout
value must be estimated for
the overall process
duration: the
Timeout measurement is
cumulative
- Add the
management of Abort
service: Abort DMA
transfer through interrupt
- In the case
of Master Abort IT transfer
usage:
- Add new
user HAL_I2C_AbortCpltCallback()
to inform user of the end
of abort process
- A new
abort state is defined in
the HAL_I2C_StateTypeDef structure
- Add the
management of I2C peripheral
errors, ACK failure and STOP
condition detection during DMA
process. This requires the
following updates on user
application:
- Configure
and enable the I2C IRQ in
HAL_I2C_MspInit()
function
- In
stm32f4xx_it.c file, I2C_IRQHandler()
function: add a call to
HAL_I2C_IRQHandler()
function
- Add and
customize the Error Callback
API: HAL_I2C_ErrorCallback()
- Refer to
the I2C_EEPROM or
I2C_TwoBoards_ComDMA project
examples usage of the API
- NACK error
during addressing phase is
returned through interrupt
instead of previously through
I2C transfer API's
- I2C
addressing phase is updated to
be managed using interrupt
instead of polling (Only
for HAL I2C driver)
- Add new
static functions to manage
I2C SB, ADDR and ADD10 flags
- HAL
SPI update
- 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
- Update DMA
process:
- Add the
management of SPI peripheral
errors during DMA process.
This requires the following
updates in the user
application:
- Configure
and enable the SPI IRQ in
HAL_SPI_MspInit()
function
- In
stm32f4xx_it.c file, SPI_IRQHandler()
function: add a call to HAL_SPI_IRQHandler()
function
- Add and
customize the Error
Callback API: HAL_SPI_ErrorCallback()
- Refer to
the following example
which describe the
changes: SPI_FullDuplex_ComDMA
- Fix
regression in polling mode:
- Add
preparing data to transmit
in case of slave mode in HAL_SPI_TransmitReceive()
and HAL_SPI_Transmit()
- Add to
manage properly the overrun
flag at the end of a HAL_SPI_TransmitReceive()
- 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()
- HAL
DMA2D update
- Update the
HAL_DMA2D_DeInit()
function to:
- Abort
transfer in case of ongoing
DMA2D transfer
- Reset DMA2D
control registers
- Update
HAL_DMA2D_Abort()
to disable DMA2D interrupts
after stopping transfer
- Optimize
HAL_DMA2D_IRQHandler()
by reading status registers
only once
- Update
HAL_DMA2D_ProgramLineEvent()
function to:
- Return HAL
error state in case of wrong
line value
- Enable line
interrupt after setting the
line watermark configuration
- Add new
HAL_DMA2D_CLUTLoad()
and HAL_DMA2D_CLUTLoad_IT() functions
to start DMA2D CLUT loading
- HAL_DMA2D_CLUTLoading_Abort()
function to abort the DMA2D
CLUT loading
- HAL_DMA2D_CLUTLoading_Suspend()
function to suspend the
DMA2D CLUT loading
- HAL_DMA2D_CLUTLoading_Resume()
function to resume the DMA2D
CLUT loading
- Add new DMA2D
dead time management:
- HAL_DMA2D_EnableDeadTime()
function to enable DMA2D
dead time feature
- HAL_DMA2D_DisableDeadTime()
function to disable DMA2D
dead time feature
- HAL_DMA2D_ConfigDeadTime()
function to configure dead
time
- Update the
name of DMA2D Input/Output
color mode defines to be more
clear for
user (DMA2D_INPUT_XXX for
input layers Colors,
DMA2D_OUTPUT_XXX for output
framebuffer Colors)
- Update HAL_LTDC_IRQHandler()
to manage the case of reload
interrupt
- Add new
callback API HAL_LTDC_ReloadEventCallback()
- Add HAL_LTDC_Reload()
to configure LTDC reload
feature
- Add new No
Reload LTDC variant APIs
- HAL_LTDC_ConfigLayer_NoReload() to
configure the LTDC Layer
according to the specified
without reloading
- HAL_LTDC_SetWindowSize_NoReload() to set
the LTDC window size without
reloading
- HAL_LTDC_SetWindowPosition_NoReload() to set
the LTDC window position
without reloading
- HAL_LTDC_SetPixelFormat_NoReload() to
reconfigure the pixel format
without reloading
- HAL_LTDC_SetAlpha_NoReload() to
reconfigure the layer alpha
value without reloading
- HAL_LTDC_SetAddress_NoReload() to
reconfigure the frame buffer
Address without reloading
- HAL_LTDC_SetPitch_NoReload() to
reconfigure the pitch for
specific cases
- HAL_LTDC_ConfigColorKeying_NoReload() to
configure the color keying
without reloading
- HAL_LTDC_EnableColorKeying_NoReload() to enable
the color keying without
reloading
- HAL_LTDC_DisableColorKeying_NoReload() to
disable the color keying
without reloading
- HAL_LTDC_EnableCLUT_NoReload() to enable
the color lookup table
without reloading
- HAL_LTDC_DisableCLUT_NoReload() to
disable the color lookup
table without reloading
- Note: Variant
functions with “_NoReload”
post fix allows to set the
LTDC configuration/settings
without immediate reload.
This is useful in case when
the program requires to
modify several LTDC settings
(on one or both layers) then
applying (reload) these
settings in one shot by
calling the function “HAL_LTDC_Reload”
- HAL
RTC update
- Add new
timeout implementation based
on cpu
cycles
for ALRAWF, ALRBWF
and WUTWF flags
- HAL
SAI update
- Update SAI
state in case of TIMEOUT error
within the HAL_SAI_Transmit()
/ HAL_SAI_Receive()
- Update HAL_SAI_IRQHandler:
- Add error
management in case DMA
errors through XferAbortCallback()
and HAL_DMA_Abort_IT()
- Add error
management in case of IT
- Move SAI_BlockSynchroConfig()
and SAI_GetInputClock()
functions to
stm32f4xx_hal_sai.c/.h files
(extension files are kept
empty for projects
compatibility reason)
- HAL
DCMI update
- Rename DCMI_DMAConvCplt
to DCMI_DMAXferCplt
- Update HAL_DCMI_Start_DMA()
function to Enable the
DCMI peripheral
- Add new
timeout implementation based
on cpu
cycles for DCMI stop
- Add HAL_DCMI_Suspend()
function to suspend DCMI
capture
- Add HAL_DCMI_Resume()
function to resume capture
after DCMI suspend
- Update lock
mechanism for DCMI process
- Update HAL_DCMI_IRQHandler()
function to:
- Add error
management in case DMA
errors through XferAbortCallback()
and HAL_DMA_Abort_IT()
- Optimize
code by using direct
register read
- HAL
DMA
update
- 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 API HAL_DMA_Abort_IT()
to abort DMA transfer under
interrupt context
- The new
registered Abort callback is
called when DMA transfer
abortion is completed
- Add the check
of compatibility between FIFO
threshold level and size of
the memory burst in the HAL_DMA_Init()
API
- Add new Error
Codes: HAL_DMA_ERROR_PARAM,
HAL_DMA_ERROR_NO_XFER and
HAL_DMA_ERROR_NOT_SUPPORTED
- Remove all
DMA states related to
MEM0/MEM1 in HAL_DMA_StateTypeDef
- HAL
IWDG
update
- Overall
rework of the driver for a
more
efficient implementation
- Remove the
following APIs:
- HAL_IWDG_Start()
- HAL_IWDG_MspInit()
- HAL_IWDG_GetState()
- Update
implementation:
- 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_Example
- HAL
LPTIM
update
- Update HAL_LPTIM_TimeOut_Start_IT()
and HAL_LPTIM_Counter_Start_IT(
) APIs to configure WakeUp
Timer EXTI interrupt to be
able to wakeup
MCU from low power mode by
pressing the EXTI line.
- Update HAL_LPTIM_TimeOut_Stop_IT()
and HAL_LPTIM_Counter_Stop_IT(
) APIs to disable WakeUp
Timer EXTI interrupt.
- HAL
NOR update
- Update
NOR_ADDR_SHIFT macro implementation
- HAL
PCD update
- Update HAL_PCD_IRQHandler()
to get HCLK frequency before
setting TRDT value
- HAL
QSPI
update
- Update to
manage QSPI error management
during DMA process
- Improve the
DMA transmit process by using
QSPI TC interrupt instead of
waiting loop on TC flag under
DMA ISR
- These two
improvements require the
following updates on user
application:
- Configure
and enable the QSPI IRQ in HAL_QSPI_MspInit()
function
- In
stm32f4xx_it.c file, QSPI_IRQHandler()
function: add a call to HAL_QSPI_IRQHandler()
function
- Add and
customize the Error Callback
API: HAL_QSPI_ErrorCallback()
- Add the
management of non-blocking
transfer abort service: HAL_QSPI_Abort_IT().
In this case the user must:
- Add new
callback HAL_QSPI_AbortCpltCallback()
to inform user at the end of
abort process
- A new value
of State in the HAL_QSPI_StateTypeDef
provides the current state
during the abort phase
- Polling
management update:
- The Timeout
value user must be estimated
for the overall process
duration: the
Timeout measurement is
cumulative.
- Refer to the
following examples, which
describe the changes:
- QSPI_ReadWrite_DMA
- QSPI_MemoryMapped
- QSPI_ExecuteInPlace
- Add two new
APIs for the QSPI fifo
threshold:
- HAL_QSPI_SetFifoThreshold():
configure the FIFO threshold
of the QSPI
- HAL_QSPI_GetFifoThreshold(): give the
current FIFO threshold
- Fix wrong
data size management in HAL_QSPI_Receive_DMA()
- HAL
ADC update
- Add new
__HAL_ADC_PATH_INTERNAL_VBAT_DISABLE()
macro for STM32F42x and
STM32F43x devices to
provide the possibility
to convert VrefInt
channel when both VrefInt
and Vbat
channels are selected.
- HAL
SPDIFRX update
- Overall driver
update for wait on flag
management optimization
- HAL
WWDG update
- Overall
rework of the driver for more
efficient implementation
- Remove the
following APIs:
- HAL_WWDG_Start()
- HAL_WWDG_Start_IT()
- HAL_WWDG_MspDeInit()
- HAL_WWDG_GetState()
- Update
implementation:
- HAL_WWDG_Init()
- A new
parameter in the Init
Structure: EWIMode
- HAL_WWDG_MspInit()
- HAL_WWDG_Refresh()
- This
function insures the
reload of the counter
- The
"counter" parameter has
been removed
- HAL_WWDG_IRQHandler()
- HAL_WWDG_EarlyWakeupCallback() is the
new prototype of HAL_WWDG_WakeUpCallback()
- Refer to the
following example to identify
the changes: WWDG_Example
V1.4.4
/ 22-January-2016
Main Changes
- HAL
Generic update
- stm32f4xx_hal_conf_template.h
- Optimize
HSE Startup Timeout value
from 5000ms to 100 ms
- Add new
define LSE_STARTUP_TIMEOUT
- Add new
define USE_SPI_CRC for code
cleanup when the CRC
calculation is disabled.
- Update HAL
drivers to support MISRA C
2004 rule 10.6
- Add new
template driver to
configure timebase
using TIMER :
- stm32f4xx_hal_timebase_tim_template.c
- HAL
CAN update
- Update HAL_CAN_Transmit()
and HAL_CAN_Transmit_IT()
functions to unlock
process when all Mailboxes are
busy
- HAL
DSI update
- Update HAL_DSI_SetPHYTimings()
functions to use the correct
mask
- HAL
UART update
- Several
update on HAL UART driver to
implement the new UART state
machine:
- Add new
field in UART_HandleTypeDef
structure: "rxState",
UART state information
related to Rx Operations
- Rename
"state" field in UART_HandleTypeDef
structure by "gstate":
UART state information
related to global Handle
management and Tx Operations
- Update UART
process to manage the new
UART states.
- Update
__HAL_UART_RESET_HANDLE_STATE()
macro to handle the new UART
state parameters (gState,
rxState)
- Update
UART_BRR_SAMPLING16() and
UART_BRR_SAMPLING8() Macros to
fix wrong baudrate
calculation.
- HAL
IRDA update
- Several
update on HAL IRDA driver to
implement the new UART state
machine:
- Add new
field in IRDA_HandleTypeDef
structure: "rxState",
IRDA state information
related to Rx Operations
- Rename
"state" field in UART_HandleTypeDef
structure by "gstate":
IRDA state information
related to global Handle
management and Tx Operations
- Update IRDA
process to manage the new
UART states.
- Update
__HAL_IRDA_RESET_HANDLE_STATE()
macro to handle the new IRDA
state parameters (gState,
rxState)
- Removal of
IRDA_TIMEOUT_VALUE define
- Update IRDA_BRR()
Macro to fix wrong baudrate
calculation
- HAL
SMARTCARD update
- Several
update on HAL SMARTCARD driver
to implement the new UART
state machine:
- Add new
field in SMARTCARD_HandleTypeDef
structure: "rxState",
SMARTCARDstate
information related to Rx Operations
- Rename
"state" field in UART_HandleTypeDef
structure by "gstate":
SMARTCARDstate
information related to
global Handle management and
Tx Operations
- Update SMARTCARD
process to manage the new
UART states.
- Update
__HAL_SMARTCARD_RESET_HANDLE_STATE()
macro to handle the
new SMARTCARD state
parameters (gState,
rxState)
- Update
SMARTCARD_BRR()
macro to fix wrong baudrate
calculation
- HAL
RCC
update
- Add new
default define value for HSI
calibration
"RCC_HSICALIBRATION_DEFAULT"
- Optimize
Internal oscillators and PLL
startup timeout
- Update to
avoid the disable for HSE/LSE
oscillators before setting the
new RCC HSE/LSE configuration
and add the following notes in
HAL_RCC_OscConfig()
API description:
*
@note Transitions LSE
Bypass to LSE On and LSE On to LSE
Bypass are not
*
supported by this
API. User should request a
transition to LSE Off
*
first and then LSE
On or LSE Bypass.
*
@note Transition HSE
Bypass to HSE On and HSE On to HSE
Bypass are not
*
supported by this
API. User should request a
transition to HSE Off
*
first and then HSE
On or HSE Bypass.
- Optimize
the HAL_RCC_ClockConfig()
API implementation.
- HAL
DMA2D update
- Update
HAL_DMA2D_Abort()
Function to end current DMA2D
transfer properly
- Update
HAL_DMA2D_PollForTransfer()
function to add poll for
background CLUT loading (layer
0 and layer 1).
- Update
HAL_DMA2D_PollForTransfer()
to set the corresponding ErrorCode
in case of error occurrence
- Update
HAL_DMA2D_ConfigCLUT()
function to fix wrong CLUT
size and color mode settings
- Removal of
useless macro __HAL_DMA2D_DISABLE()
- Update
HAL_DMA2D_Suspend()
to manage correctly the case
where no transfer is on going
- Update
HAL_DMA2D_Resume() to
manage correctly the case
where no transfer is on going
- Update
HAL_DMA2D_Start_IT()
to enable all required
interrupts before enabling the
transfer.
- Add
HAL_DMA2D_CLUTLoad_IT()
Function to allow loading a
CLUT with interruption model.
- Update
HAL_DMA2D_IRQHandler()
to manage the following
cases :
- CLUT
transfer complete
- CLUT access
error
- Transfer
watermark reached
- Add new
Callback APIs:
- HAL_DMA2D_LineEventCallback()
to signal a transfer
watermark reached event
- HAL_DMA2D_CLUTLoadingCpltCallback()
to signal a CLUT loading
complete event
- Miscellaneous
Improvement:
- Add
"HAL_DMA2D_ERROR_CAE" new
define for CLUT Access error
management.
- Add “assert_param”
used for parameters check is
now done on the top of the
exported functions : before
locking the process using
__HAL_LOCK
- HAL
I2C update
- Add support
of I2C repeated start feature:
- With the
following new API's
- HAL_I2C_Master_Sequential_Transmit_IT()
- HAL_I2C_Master_Sequential_Receive_IT()
- HAL_I2C_Master_Abort_IT()
- HAL_I2C_Slave_Sequential_Transmit_IT()
- HAL_I2C_Slave_Sequential_Receive_IT()
- HAL_I2C_EnableListen_IT()
- HAL_I2C_DisableListen_IT()
- Add new
user callbacks:
- HAL_I2C_ListenCpltCallback()
- HAL_I2C_AddrCallback()
- Update to
generate STOP condition when a
acknowledge failure error is detected
- Several
update on HAL I2C driver to
implement the new I2C state
machine:
- Add new API
to get the I2C mode:
HAL_I2C_GetMode()
- Update I2C
process to manage the new
I2C states.
- Fix wrong behaviour
in single byte transmission
- Update I2C_WaitOnFlagUntilTimeout() to
manage the NACK feature.
- Update I2C
transmission process to
support the case data size
equal 0
- HAL
FMPI2C update
- Add support
of FMPI2C repeated start
feature:
- With the
following new API's
- HAL_FMPI2C_Master_Sequential_Transmit_IT()
- HAL_FMPI2C_Master_Sequential_Receive_IT()
- HAL_FMPI2C_Master_Abort_IT()
- HAL_FMPI2C_Slave_Sequential_Transmit_IT()
- HAL_FMPI2C_Slave_Sequential_Receive_IT()
- HAL_FMPI2C_EnableListen_IT()
- HAL_FMPI2C_DisableListen_IT()
- Add new
user callbacks:
- HAL_FMPI2C_ListenCpltCallback()
- HAL_FMPI2C_AddrCallback()
- Several
update on HAL I2C driver to
implement the new I2C state
machine:
- Add new API
to get the FMPI2C mode:
HAL_FMPI2C_GetMode()
- Update
FMPI2C process to manage the
new FMPI2C states.
- HAL
SPI update
- Major Update
to improve performance in
polling/interrupt mode to
reach max frequency:
- Polling mode
:
- Replace
use of SPI_WaitOnFlagUnitTimeout()
funnction
by "if" statement to check
on RXNE/TXE flage
while transferring data.
- Use API
data pointer instead of
SPI handle data pointer.
- Use a Goto
implementation instead of
"if..else"
statements.
- Interrupt
mode
- Minimize
access on SPI registers.
- Split the
SPI modes into dedicated
static functions to
minimize checking
statements under HAL_IRQHandler():
- 1lines/2lines
modes
- 8 bit/
16 bits data formats
- CRC
calculation
enabled/disabled.
- Remove
waiting loop under ISR
when closing
the
communication.
- All
modes:
- Adding
switch USE_SPI_CRC to
minimize number of
statements when CRC
calculation is disabled.
- Update
Timeout management to
check on global process.
- Update
Error code management in
all processes.
- Add note to
the max frequencies reached in
all modes.
- Add note
about Master Receive mode restrictions :
- Master
Receive mode restriction:
(#) In Master
unidirectional receive-only
mode (MSTR =1, BIDIMODE=0,
RXONLY=0) or
bidirectional receive mode
(MSTR=1, BIDIMODE=1,
BIDIOE=0), to ensure that
the SPI
does not initiate a new
transfer the following
procedure has to be
respected:
(##) HAL_SPI_DeInit()
(##) HAL_SPI_Init()
- HAL
SAI update
- Update for
proper management of the
external synchronization input
selection
- update
of HAL_SAI_Init
() funciton
- update
definition of SAI_Block_SyncExt
and SAI_Block_Synchronization
groups
- Update
SAI_SLOTACTIVE_X
defines
values
- Update HAL_SAI_Init()
function for proper companding
mode management
- Update SAI_Transmit_ITxxBit()
functions to add the check on
transfer counter before
writing new data to SAIx_DR
registers
- Update SAI_FillFifo()
function to avoid issue when
the number of data to transmit
is smaller than the FIFO size
- Update HAL_SAI_EnableRxMuteMode()
function for proper mute
management
- Update SAI_InitPCM()
function to support 24bits
configuration
- HAL
ETH update
- Removal of
ETH MAC debug register defines
- HAL
FLASH update
- Update FLASH_MassErase()
function to apply correctly
voltage range parameter
- HAL
I2S update
- Update I2S_DMATxCplt()
and I2S_DMARxCplt() to manage
properly FullDuplex
mode without any risk of
missing data.
- LL
FMC update
- Update the FMC_NORSRAM_Init()
function to use BurstAccessMode
field properly
- LL
FSMC
update
- Update the FSMC_NORSRAM_Init()
function to use BurstAccessMode
field properly
V1.4.4
/ 11-December-2015
Main Changes
- HAL
Generic update
- Update HAL
weak empty callbacks to
prevent unused argument
compilation warnings with some
compilers by calling the
following line:
- STM32Fxxx_User_Manual.chm
files regenerated for HAL
V1.4.3
- HAL
ETH update
- Update HAL_ETH_Init()
function to add timeout on the
Software reset management
V1.4.2
/ 10-November-2015
Main Changes
- General
updates to fix known defects and
enhancements implementation
- One
change done on the HAL CRYP
requires an update on the
application code based on HAL
V1.4.1
- Update HAL_CRYP_DESECB_Decrypt()
API to invert pPlainData
and pCypherData
parameters
- HAL
generic
update
- Update HAL
weak empty callbacks to
prevent unused argument
compilation warnings with some
compilers by calling the
following line:
- HAL
CORTEX update
- Remove
duplication for
__HAL_CORTEX_SYSTICKCLK_CONFIG()
macro
- HAL
HASH update
- Rename HAL_HASH_STATETypeDef
to HAL_HASH_StateTypeDef
- Rename HAL_HASH_PhaseTypeDef
to HAL_HASH_PhaseTypeDef
- HAL
RCC update
- Add new
macros __HAL_RCC_PPP_IS_CLK_ENABLED()
to check on Clock
enable/disable status
- Update
__HAL_RCC_USB_OTG_FS_CLK_DISABLE()
macro to remove the disable
for the SYSCFG
- Update HAL_RCC_MCOConfig()
API to use new defines for the
GPIO Speed
- Generic
update to improve the
PLL VCO min
value(100MHz): PLLN, PLLI2S
and PLLSAI min value is 50
instead of 192
- HAL
FLASH update
- __HAL_FLASH_INSTRUCTION_CACHE_RESET()
macro: update to reset
ICRST bit in
the ACR register after
setting it.
- Update to
support until 15 FLASH wait
state (FLASH_LATENCY_15) for
STM32F446xx devices
§
HAL CRYP update
- Update HAL_CRYP_DESECB_Decrypt()
API to fix the inverted pPlainData
and pCypherData
parameters issue
- HAL
I2S update
- Update
HAL_I2S_Init()
API to call
__HAL_RCC_I2S_CONFIG() macro
when external I2S clock is
selected
- HAL
LTDC update
- Update HAL_LTDC_SetWindowPosition()
API to configure
Immediate reload register
instead of vertical blanking
reload register.
- HAL
TIM update
- Update HAL_TIM_ConfigClockSource()
API to check only the
required parameters
- HAL
NAND update
- Update
HAL_NAND_Read_Page()/HAL_NAND_Write_Page()/HAL_NAND_Read_SpareArea()
APIs to manage correctly the
NAND Page access
- HAL
CAN update
- Update to use
"=" instead of "|=" to clear
flags in the MSR, TSR, RF0R
and RF1R registers
- HAL
HCD update
- Fix typo in
__HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE()
macro implementation
- HAL
PCD update
- Update HAL_PCD_IRQHandler()
API to avoid issue
when DMA mode enabled for
Status Phase IN stage
- LL
FMC update
- Update the FMC_NORSRAM_Extended_Timing_Init()
API to remove the check
on CLKDIvison
and DataLatency
parameters
- Update the FMC_NORSRAM_Init()
API to add a check on the PageSize
parameter for STM32F42/43xx
devices
- LL
FSMC update
- Update the FSMC_NORSRAM_Extended_Timing_Init()
API to remove the check
on CLKDIvison
and DataLatency
parameters
V1.4.1
/ 09-October-2015
Main Changes
- HAL
DSI update
- Update TCCR
register assigned value
in HAL_DSI_ConfigHostTimeouts()
function
- Update WPCR
register assigned value
in HAL_DSI_Init(),
HAL_DSI_SetSlewRateAndDelayTuning(),
HAL_DSI_SetSlewRateAndDelayTuning(),
HAL_DSI_SetLowPowerRXFilter()
/ HAL_DSI_SetSDD(),
HAL_DSI_SetLanePinsConfiguration(),
HAL_DSI_SetPHYTimings(),
HAL_DSI_ForceTXStopMode(),
HAL_DSI_ForceRXLowPower(),
HAL_DSI_ForceDataLanesInRX(),
HAL_DSI_SetPullDown()
and HAL_DSI_SetContentionDetectionOff()
functions
- Update
DSI_HS_PM_ENABLE define value
- Implement
workaround for the hardware
limitation: “The time to
activate the clock between HS
transmissions is not
calculated correctly”
V1.4.0
/ 14-August-2015
Main Changes
- Add
support of STM32F469xx, STM32F479xx,
STM32F410Cx, STM32F410Rx
and STM32F410Tx
devices
- General
updates to fix known defects and
enhancements implementation
- Add
new HAL drivers for DSI and LPTIM
peripherals
- HAL
ADC update
- Rename
ADC_CLOCKPRESCALER_PCLK_DIV2
define to
ADC_CLOCK_SYNC_PCLK_DIV2
- Rename
ADC_CLOCKPRESCALER_PCLK_DIV4
define to
ADC_CLOCK_SYNC_PCLK_DIV4
- Rename
ADC_CLOCKPRESCALER_PCLK_DIV6
define to
ADC_CLOCK_SYNC_PCLK_DIV6
- Rename
ADC_CLOCKPRESCALER_PCLK_DIV8
define to
ADC_CLOCK_SYNC_PCLK_DIV8
- HAL
CORTEX update
- Add specific
API for MPU management
- add MPU_Region_InitTypeDef
structure
- add new
function HAL_MPU_ConfigRegion()
- HAL
DMA update
- Overall driver
update for code optimization
- add StreamBaseAddress
and StreamIndex
new fields in the DMA_HandleTypeDef
structure
- add DMA_Base_Registers
private structure
- add static
function DMA_CalcBaseAndBitshift()
- update HAL_DMA_Init()
function to use the new
added static function
- update HAL_DMA_DeInit()
function to optimize clear
flag operations
- update HAL_DMA_Start_IT()
function to optimize
interrupts enable
- update HAL_DMA_PollForTransfer()
function to optimize check
on flags
- update HAL_DMA_IRQHandler()
function to optimize
interrupt flag management
- HAL
FLASH update
- update HAL_FLASH_Program_IT()
function by removing the
pending flag clear
- update HAL_FLASH_IRQHandler()
function to improve erase
operation procedure
- update FLASH_WaitForLastOperation()
function by checking on end of
operation flag
- HAL
GPIO update
- Rename
GPIO_SPEED_LOW define to
GPIO_SPEED_FREQ_LOW
- Rename
GPIO_SPEED_MEDIUM define to
GPIO_SPEED_FREQ_MEDIUM
- Rename
GPIO_SPEED_FAST define to
GPIO_SPEED_FREQ_HIGH
- Rename
GPIO_SPEED_HIGH define to
GPIO_SPEED_FREQ_VERY_HIGH
- HAL
I2S update
- Move
I2S_Clock_Source defines to
extension file to properly add
the support of STM32F410xx devices
- HAL
LTDC update
- rename HAL_LTDC_LineEvenCallback()
function to HAL_LTDC_LineEventCallback()
- add new
function HAL_LTDC_SetPitch()
- add new
functions HAL_LTDC_StructInitFromVideoConfig()
and HAL_LTDC_StructInitFromAdaptedCommandConfig()
applicable only to STM32F469xx
and STM32F479xx devices
- HAL
PWR update
- move
__HAL_PWR_VOLTAGESCALING_CONFIG()
macro to extension file
- move
PWR_WAKEUP_PIN2 define to
extension file
- add
PWR_WAKEUP_PIN3 define,
applicable only to STM32F10xx
devices
- add new
functions HAL_PWREx_EnableWakeUpPinPolarityRisingEdge()
and HAL_PWREx_EnableWakeUpPinPolarityFallingEdge(),
applicable only to STM32F469xx
and STM32F479xx devices
- HAL
RTC update
- Update HAL_RTCEx_SetWakeUpTimer()
and HAL_RTCEx_SetWakeUpTimer_IT()
functions to properly check on
the WUTWF flag
- HAL
TIM update
- add new
defines TIM_SYSTEMBREAKINPUT_HARDFAULT,
TIM_SYSTEMBREAKINPUT_PVD
and
TIM_SYSTEMBREAKINPUT_HARDFAULT_PVD,
applicable only to STM32F410xx
devices
V1.3.2
/ 26-June-2015
Main Changes
- General
updates to fix known defects and
enhancements implementation
- One
changes
done on the HAL may require an
update on the application code
based on HAL V1.3.1
- HASH IT
process: update to call the HAL_HASH_InCpltCallback()
at the end of the complete
buffer instead of every each
512 bits
- HAL
RCC update
- HAL_RCCEx_PeriphCLKConfig() updates:
- Update the
LSE check condition after
backup domain reset:
update to check LSE
ready flag when LSE
oscillator is already
enabled instead of check on
LSE oscillator only when LSE
is used as RTC clock source
- Use the
right macro to check the
PLLI2SQ parameters
- HAL
RTC update
- __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()
macro: fix implementation
issue
- __HAL_RTC_ALARM_GET_IT(),
__HAL_RTC_ALARM_CLEAR_FLAG(),
__HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(),
__HAL_RTC_TIMESTAMP_CLEAR_FLAG()
and
__HAL_RTC_TAMPER_CLEAR_FLAG()
macros implementation changed:
remove unused cast
- IS_RTC_TAMPER()
macro: update to use literal
instead of hardcoded
value
- Add new
parameter SecondFraction
in RTC_TimeTypeDef
structure
- HAL_RTC_GetTime() API update
to support the new
parameter SecondFraction
- HAL
ADC update
- Add new
literal:
ADC_INJECTED_SOFTWARE_START to
be used as possible value for
the ExternalTrigInjecConvEdge
parameter in the ADC_InitTypeDef
structure to select the ADC
software trigger mode.
- HAL
FLASH update
- FLASH_OB_GetRDP() API update
to return uint8_t instead of FlagStatus
- __HAL_FLASH_GET_LATENCY()
new macro add to get the flash
latency
- HAL
SPI update
- Fix the wrong
definition of
HAL_SPI_ERROR_FLAG literal
- HAL
I2S update
- HAL_I2S_Transmit()
API update to check on busy
flag only for I2S slave mode
- HAL
CRC update
- __HAL_CRC_SET_IDR()
macro implementation change to
use WRITE_REG() instead of
MODIFY_REG()
- HAL
DMA2D update
- HAL_DMA2D_ConfigLayer()
API update to use "=" instead
of "|=" to erase BGCOLR and
FGCOLR registers before
setting the new configuration
- HAL
HASH update
- HAL_HASH_MODE_Start_IT() (MODE
stands for MD5, SHA1,
SHA224 and SHA36) updates:
- Fix processing
fail for small input buffers
- Update to
unlock the process and
call return
HAL_OK at the end of
HASH processing to avoid
incorrectly repeating software
- Update to
properly manage the HashITCounter
- Update to
call the HAL_HASH_InCpltCallback()
at the end of the complete
buffer instead of every each
512 bits
- __HAL_HASH_GET_FLAG()
update to check the
right register when the DINNE
flag is selected
- HAL_HASH_SHA1_Accumulate()
updates:
- Add
a call to the new
IS_HASH_SHA1_BUFFER_SIZE()
macro to check the size
parameter.
- Add the
following note in API description
*
@note
Input buffer
size in bytes must be a multiple
of 4 otherwise the digest
computation is corrupted.
- HAL
RTC update
- Update to
define hardware
independent literals names:
- Rename
RTC_TAMPERPIN_PC13 by
RTC_TAMPERPIN_DEFAULT
- Rename
RTC_TAMPERPIN_PA0 by
RTC_TAMPERPIN_POS1
- Rename
RTC_TAMPERPIN_PI8 by
RTC_TAMPERPIN_POS1
- Rename
RTC_TIMESTAMPPIN_PC13 by
RTC_TIMESTAMPPIN_DEFAULT
- Rename
RTC_TIMESTAMPPIN_PA0 by
RTC_TIMESTAMPPIN_POS1
- Rename
RTC_TIMESTAMPPIN_PI8 by
RTC_TIMESTAMPPIN_POS1
- HAL
ETH update
- Remove
duplicated IS_ETH_DUPLEX_MODE()
and IS_ETH_RX_MODE() macros
- Remove
illegal space
ETH_MAC_READCONTROLLER_FLUSHING
macro
- Update
ETH_MAC_READCONTROLLER_XXX
defined values (XXX can be
IDLE, READING_DATA and
READING_STATUS)
- HAL
PCD update
- HAL_PCD_IRQHandler API: fix the
bad Configuration of
Turnaround Time
- HAL
HCD update
- Update to use
local variable in USB
Host channel re-activation
- LL
FMC update
- FMC_SDRAM_SendCommand() API: remove
the following line: return
HAL_ERROR;
- LL
USB update
- USB_FlushTxFifo API:
update to flush all Tx FIFO
- Update to use
local variable in USB
Host channel re-activation
V1.3.1
/ 25-Mars-2015
Main Changes
- HAL
PWR update
- Fix
compilation issue with
STM32F417xx product:
update STM32F17xx
by STM32F417xx
- HAL
SPI update
- Remove unused
variable to avoid warning with
TrueSTUDIO
- HAL
I2C update
- I2C
Polling/IT/DMA processes: move
the wait loop on busy
flag at the top of the
processes, to ensure that
software not perform any write
access to I2C_CR1 register
before hardware
clearing STOP bit and to
avoid
also the
waiting loop on BUSY flag
under I2C/DMA ISR.
- Update busy
flag Timeout value
- I2C Master
Receive Processes update to
disable ACK before generate
the STOP
- HAL
DAC update
- Fix V1.3.0
regression issue with DAC
software trigger configuration
V1.3.0
/ 09-Mars-2015
Main Changes
- Add
support of STM32F446xx devices
- General
updates to fix known defects and
enhancements implementation
- Add
new HAL drivers for CEC,
QSPI, FMPI2C and SPDIFRX
peripherals
- Two
changes done on the HAL
requires an update on the
application code based on HAL
V1.2.0
- Overall SAI
driver rework to have
exhaustive support of the
peripheral features: details
are provided in HAL SAI update
section below --> Compatibility
with previous version is impacted
- CRYP driver
updated to support multi instance,so
user must ensure that the
new parameter Instance is
initalized
in his application(CRYPHandle.Instance
= CRYP)
- HAL
Generic update
- stm32f4xx_hal_def.h
- Remove NULL
definition and add
include for stdio.h
- stm32_hal_legacy.h
- Update method
to manage deference in
alias implementation between
all STM32 families
- stm32f4xx_hal_ppp.c
- HAL_PPP_Init(): update
to force the
HAL_PPP_STATE_RESET before
calling the HAL_PPP_MspInit()
- HAL
RCC update
- Add new
function HAL_RCCEx_GetPeriphCLKFreq()
- Move RCC_PLLInitTypeDef
structure to extension file
and add the new PLLR field
specific to STM32F446xx devices
- Move the
following functions to
extension file and add a
__weak attribute in generic driver
: this
update is related to new
system clock source (PLL/PLLR)
added and only available for
STM32F44xx devices
- HAL_RCC_OscConfig()
- HAL_RCC_GetSysClockFreq()
- HAL_RCC_GetOscConfig()
- Move the
following macro to extension
file as they have device
dependent implementation
- __HAL_RCC_PLL_CONFIG()
- __HAL_RCC_PLLI2S_CONFIG()
- __HAL_RCC_I2S_CONFIG()
- Add new
structure RCC_PLLI2SInitTypeDef
containing new PLLI2S
division factors used only w/
STM32F446xx devices
- Add new
structure RCC_PLLSAIInitTypeDef
containing new PLLSAI
division factors used only w/
STM32F446xx devices
- Add new RCC_PeriphCLKInitTypeDef
to support the peripheral
source clock selection for (I2S,
SAI, SDIO, FMPI2C, CEC,
SPDIFRX and CLK48)
- Update the HAL_RCCEx_PeriphCLKConfig()
and HAL_RCCEx_GetPeriphCLKConfig()
functions to support the
new peripherals Clock source
selection
- Add __HAL_RCC_PLL_CONFIG()
macro (the number of parameter
and the implementation depend
on the device part number)
- Add __HAL_RCC_PLLI2S_CONFIG()
macro(the number of parameter
and the implementation depend
on device part number)
- Update __HAL_RCC_PLLSAI_CONFIG()
macro to support new PLLSAI
factors (PLLSAIM and
PLLSAIP)
- Add new
macros for clock
enable/Disable for the
following peripherals (CEC,
SPDIFRX, SAI2, QUADSPI)
- Add the
following new macros for clock
source selection
:
- __HAL_RCC_SAI1_CONFIG()
/
__HAL_RCC_GET_SAI1_SOURCE()
- __HAL_RCC_SAI2_CONFIG()
/
__HAL_RCC_GET_SAI2_SOURCE()
- __HAL_RCC_I2S1_CONFIG()
/
__HAL_RCC_GET_I2S1_SOURCE()
- __HAL_RCC_I2S2_CONFIG()
/
__HAL_RCC_GET_I2S2_SOURCE()
- __HAL_RCC_CEC_CONFIG()
/
__HAL_RCC__GET_CEC_SOURCE()
- __HAL_RCC_FMPI2C1_CONFIG()
/
__HAL_RCC_GET_FMPI2C1_SOURCE()
- __HAL_RCC_SDIO_CONFIG()
/
__HAL_RCC_GET_SDIO_SOURCE()
- __HAL_RCC_CLK48_CONFIG()
/
__HAL_RCC_GET_CLK48_SOURCE()
- __HAL_RCC_SPDIFRXCLK_CONFIG()
/
__HAL_RCC_GET_SPDIFRX_SOURCE()
- __HAL_RCC_PPP_CLK_ENABLE():
Implement workaround to cover
RCC limitation regarding
peripheral enable delay
- HAL_RCC_OscConfig() fix
issues:
- Add a check
on LSERDY flag when
LSE_BYPASS is selected as
new state for LSE
oscillator.
- Add
new possible value RCC_PERIPHCLK_PLLI2S
to be selected as PeriphClockSelection
parameter in the
RCC_PeriphCLKInitTypeDef
structure to allow the
possibility to output the
PLLI2S on MCO without
activating the I2S or the SAI.
- __HAL_RCC_HSE_CONFIG()
macro: add
the comment below:
*
@note Transition
HSE Bypass to HSE On and HSE
On to HSE Bypass are not
supported by this macro.
*
User should request a
transition to HSE Off first
and then HSE On or HSE Bypass.
- __HAL_RCC_LSE_CONFIG() macro: add
the comment below:
*
@note Transition
LSE Bypass to LSE On and LSE
On to LSE Bypass are not
supported by this macro.
*
User should request a
transition to LSE Off first
and then LSE On or LSE Bypass.
- Add the
following new macros for
PLL source and PLLM selection
:
- __HAL_RCC_PLL_PLLSOURCE_CONFIG()
- __HAL_RCC_PLL_PLLM_CONFIG()
- Macros
rename:
- HAL_RCC_OTGHS_FORCE_RESET()
by HAL_RCC_USB_OTG_HS_FORCE_RESET()
- HAL_RCC_OTGHS_RELEASE_RESET()
by HAL_RCC_USB_OTG_HS_RELEASE_RESET()
- HAL_RCC_OTGHS_CLK_SLEEP_ENABLE()
by HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE()
- HAL_RCC_OTGHS_CLK_SLEEP_DISABLE()
by HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE()
- HAL_RCC_OTGHSULPI_CLK_SLEEP_ENABLE()
by HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE()
- HAL_RCC_OTGHSULPI_CLK_SLEEP_DISABLE()
by HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE()
- Add __HAL_RCC_SYSCLK_CONFIG()
new macro to configure the
system clock source (SYSCLK)
- __HAL_RCC_GET_SYSCLK_SOURCE()
updates:
- Add new RCC
Literals:
- RCC_SYSCLKSOURCE_STATUS_HSI
- RCC_SYSCLKSOURCE_STATUS_HSE
- RCC_SYSCLKSOURCE_STATUS_PLLCLK
- RCC_SYSCLKSOURCE_STATUS_PLLRCLK
- Update
macro description to refer
to the literals above
- HAL
PWR update
- Add new
define PWR_WAKEUP_PIN2
- Add new API
to Control/Get VOS bits
of CR register
- HAL_PWR_HAL_PWREx_ControlVoltageScaling()
- HAL_PWREx_GetVoltageRange()
- __HAL_PWR_
VOLTAGESCALING_CONFIG(): Implement
workaround to cover VOS
limitation delay when PLL is
enabled after setting the VOS
configuration
- HAL
GPIO update
- Add the new
Alternate functions literals
related to remap for SPI,
USART, I2C, SPDIFRX, CEC
and QSPI
- HAL_GPIO_DeInit():
Update to check if GPIO
Pin x is already used in EXTI
mode on another GPIO Port
before De-Initialize the EXTI
registers
- HAL
FLASH update
- __HAL_FLASH_INSTRUCTION_CACHE_RESET()
macro: update to reset
ICRST bit in
the ACR register after
setting it.
- __HAL_FLASH_DATA_CACHE_RESET() macro:
update to reset
DCRST bit in the ACR
register after setting it.
- HAL
ADC update
- Add new
literal: ADC_SOFTWARE_START to
be used as possible value for
the ExternalTrigConv
parameter in the ADC_InitTypeDef
structure to select the ADC
software trigger mode.
- IS_ADC_CHANNEL()
macro update to don't assert
stop the ADC_CHANNEL_TEMPSENSOR
value
- HAL_ADC_PollForConversion(): update to
manage particular case when
ADC configured in DMA mode and
ADC sequencer with several
ranks and polling for end of
each conversion
- HAL_ADC_Start()/HAL_ADC_Start_IT()
/HAL_ADC_Start_DMA()
update:
- unlock the
process before starting the
ADC software conversion.
- Optimize
the ADC stabilization delays
- __HAL_ADC_GET_IT_SOURCE()
update macro implementation
- Add more
details in 'How to use this
driver' section
- HAL
DAC update
- Add new macro
to check if the specified DAC
interrupt source is enabled or
disabled
- __HAL_DAC_GET_IT_SOURCE()
- HAL_DACEx_TriangleWaveGeneration() update to
use DAC CR bit mask definition
- HAL_DACEx_NoiseWaveGeneration() update to
use DAC CR bit mask definition
- HAL
CAN update
- CanTxMsgTypeDef structure:
update to use uint8_t Data[8]
instead of
uint32_t Data[8]
- CanRxMsgTypeDef structure:
update to use uint8_t Data[8]
instead of
uint32_t Data[8]
- HAL
RTC update
- Update to
use CMSIS mask definition
instead of hardcoded values (EXTI_IMR_IM17,
EXTI_IMR_IM19..)
- HAL
LTDC update
- LTDC_SetConfig() update to
allow the drawing
of partial bitmap in
active layer.
- HAL
USART update
- HAL_USART_Init() fix USART
baud rate configuration
issue: USART baud rate is
twice Higher than expected
- HAL
SMARTCARD update
- HAL_SMARTCARD_Transmit_IT() update to
force the disable for the ERR
interrupt to avoid the OVR
interrupt
- HAL_SMARTCARD_IRQHandler()
update check condition
for transmission end
- Clean up:
remove the following
literals that aren't used in
smartcard mode
- SMARTCARD_PARITY_NONE
- SMARTCARD_WORDLENGTH_8B
- SMARTCARD_STOPBITS_1
- SMARTCADR_STOPBITS_2
- HAL
SPI update
- HAL_SPI_Transmit_DMA()/HAL_SPI_Receive_DMA()/HAL_SPI_TarnsmitReceive_DMA()
update to unlock
the process before
enabling the SPI peripheral
- HAL_SPI_Transmit_DMA() update to
manage correctly the DMA RX
stream in SPI Full duplex mode
- Section
SPI_Exported_Functions_Group2 update
to remove duplication in *.chm
UM
- HAL
CRYP update
- Update to
manage multi instance:
- Add new
parameter Instance in the CRYP_HandleTypeDef
Handle structure.
- Add new
parameter in all HAL CRYP
macros
- example: __HAL_CRYP_ENABLE()
updated by
__HAL_CRYP_ENABLE(__HANDLE__)
- HAL
DCMI update
- Add an
extension
driver stm32f4xx_hal_dcmi_ex.c/h
to manage the support of new
Black and White feature
- Add __weak attribute
for HAL_DCMI_Init()
function and add a new
implementation in the
extension driver to manage the
black and white configuration
only available in the
STM32F446xx devices.
- Move DCMI_InitTypeDef
structure to extension driver
and add the
following new fields
related to black and white
feature: ByteSelectMode, ByteSelectStart, LineSelectMode
and LineSelectStart
- HAL
PCD update
- Add the
support of LPM feature
- add PCD_LPM_StateTypeDef
enum
- update PCD_HandleTypeDef
structure to support the LPM
feature
- add new
functions HAL_PCDEx_ActivateLPM(),
HAL_PCDEx_DeActivateLPM()
and HAL_PCDEx_LPM_Callback()
in the
stm32f4xx_hal_pcd_ex.h/.c
files
- HAL
TIM update
- Add
TIM_TIM11_SPDIFRX
define
- HAL
SAI update
- Add
stm32f4xx_hal_sai_ex.h/.c
files for the SAI_BlockSynchroConfig()
and the SAI_GetInputClock()
management
- Add new
defines HAL_SAI_ERROR_AFSDET,
HAL_SAI_ERROR_LFSDET,
HAL_SAI_ERROR_CNREADY,
HAL_SAI_ERROR_WCKCFG,
HAL_SAI_ERROR_TIMEOUT in the SAI_Error_Code
group
- Add new
defines SAI_SYNCEXT_DISABLE,
SAI_SYNCEXT_IN_ENABLE,
SAI_SYNCEXT_OUTBLOCKA_ENABLE,
SAI_SYNCEXT_OUTBLOCKB_ENABLE
for the SAI External
synchronization
- Add new
defines SAI_I2S_STANDARD,
SAI_I2S_MSBJUSTIFIED,
SAI_I2S_LSBJUSTIFIED,
SAI_PCM_LONG and SAI_PCM_SHORT
for the SAI Supported protocol
- Add new
defines
SAI_PROTOCOL_DATASIZE_16BIT,
SAI_PROTOCOL_DATASIZE_16BITEXTENDED,
SAI_PROTOCOL_DATASIZE_24BIT
and
SAI_PROTOCOL_DATASIZE_32BIT
for SAI protocol data size
- Add SAI
Callback prototype definition
- Update SAI_InitTypeDef
structure by adding new
fields: SynchroExt,
Mckdiv,
MonoStereoMode,
CompandingMode,
TriState
- Update SAI_HandleTypeDef
structure:
- remove
uint16_t *pTxBuffPtr,
*pRxBuffPtr,
TxXferSize,
RxXferSize,
TxXferCount
and RxXferCount
and replace them
respectively by uint8_t *pBuffPtr,
uint16_t XferSize and
uint16_t XferCount
- add mutecallback
field
- add struct
__SAI_HandleTypeDef
*hsai field
- Remove
SAI_CLKSOURCE_PLLR and
SAI_CLOCK_PLLSRC defines
- Add
SAI_CLKSOURCE_NA define
- Add
SAI_AUDIO_FREQUENCY_MCKDIV
define
- Add
SAI_SPDIF_PROTOCOL define
- Add
SAI_SYNCHRONOUS_EXT define
- Add new
functions HAL_SAI_InitProtocol(),
HAL_SAI_Abort(),
HAL_SAI_EnableTxMuteMode(),
HAL_SAI_DisableTxMuteMode(),
HAL_SAI_EnableRxMuteMode(),
HAL_SAI_DisableRxMuteMode()
- Update HAL_SAI_Transmit(),
HAL_SAI_Receive(),
HAL_SAI_Transmit_IT(),
HAL_SAI_Receive_IT(),
HAL_SAI_Transmit_DMA(),
HAL_SAI_Receive_DMA()
functions to use uint8_t *pData
instead of uint16_t *pData
--> This update is mainly
impacting the compatibility
with previous driver
version.
- HAL
I2S update
- Split the
following
functions between Generic
and Extended API based on full
duplex management and add the
attribute __weak in the
Generic API
- HAL_I2S_Init(),
HAL_I2S_DMAPause(), HAL_I2S_DMAStop(), HAL_I2S_DMAResume(), HAL_I2S_IRQHandle()
- Move the
following static functions
from generic to extension driver
- I2S_DMARxCplt()
and I2S_DMATxCplt()
- Remove static
attribute from I2S_Transmit_IT()
and I2S_Receive_IT() functions
- Move I2SxEXT()
macro to extension file
- Add
I2S_CLOCK_PLLR and
I2S_CLOCK_PLLSRC defines for
I2S clock source
- Add new
function I2S_GetInputClock()
- HAL
LL FMC update
- Add WriteFifo
and PageSize
fields in the FMC_NORSRAM_InitTypeDef
structure
- Add
FMC_PAGE_SIZE_NONE,
FMC_PAGE_SIZE_128,
FMC_PAGE_SIZE_256,
FMC_PAGE_SIZE_1024,
FMC_WRITE_FIFO_DISABLE,
FMC_WRITE_FIFO_ENABLE defines
- Update FMC_NORSRAM_Init(),
FMC_NORSRAM_DeInit()
and FMC_NORSRAM_Extended_Timing_Init() functions
- HAL
LL USB update
- Update USB_OTG_CfgTypeDef
structure to support LPM, lpm_enable
field added
- Update USB_HostInit()
and USB_DevInit()
functions to support the VBUS
Sensing B activation
V1.2.0
/ 26-December-2014
Main Changes
- Maintenance
release to fix known defects
and enhancements implementation
- Macros
and literals renaming to
ensure compatibles across
STM32 series,
backward compatibility
maintained thanks to new added
file stm32_hal_legacy.h under
/Inc/Legacy
- Add
*.chm UM for all drivers, a UM
is provided for each superset RPN
- Update
drivers to be C++ compliant
- Several
update on source code
formatting, for better UM
generation (i.e.
Doxygen
tags updated)
- Two
changes done on the HAL
requires an update on the
application code based on HAL
V1.1.0
- LSI_VALUE constant has
been corrected in
stm32f4xx_hal_conf.h file, its
value changed from 40 KHz
to 32 KHz
- UART, USART,
IRDA and SMARTCARD
(referenced as PPP
here below) drivers:
in DMA transmit process, the
code has been updated to avoid
waiting on TC flag under DMA
ISR, PPP TC interrupt
is used instead. Below the
update to be done on user
application:
- Configure
and enable the USART IRQ in
HAL_PPP_MspInit()
function
- In
stm32f4xx_it.c file, PPP_IRQHandler()
function: add a call to HAL_PPP_IRQHandler()
function
- stm32f4xx_hal_def.h
- Update NULL
definition to fix C++
compilation issue
- Add UNUSED()
macro
- Add a new
define __NOINLINE to be used
for the no inline code
independent from tool chain
- stm32f4xx_hal_conf_template.h
- LSI_VALUE constant
has been corrected,
its value changed from 40 KHz
to 32 KHz
- Update all
macros and literals naming to
be uper
case
- ErrorCode parameter in
PPP_HandleTypeDef
structure updated
to uint32_t instead
of enum HAL_PPP_ErrorTypeDef
- Remove the
unused FLAG and IT assert macros
- HAL
ADC update
- Fix temperature
sensor channel configuration
issue for STM32F427/437xx
and STM32F429/439xx
devices
- HAL
DAC update
- HAL_DAC_ConfigChannel(): update the
access to the DAC peripheral
registers via the hdac
handle instance
- HAL_DAC_IRQHandler(): update to
check on both DAC_FLAG_DMAUDR1
and DAC_FLAG_DMAUDR2
- HAL_DACEx_NoiseWaveGenerate(): update to
reset DAC CR register before
setting the new DAC
configuration
- HAL_DACEx_TriangleWaveGenerate(): update to
reset DAC CR register before
setting the new DAC
configuration
- HAL
CAN update
- Unlock the
CAN process when communication
error occurred
- HAL
CORTEX update
- Add new macro
IS_NVIC_DEVICE_IRQ()
to check on negative values of
IRQn
parameter
§
HAL CRYP update
- HAL_CRYP_DESECB_Decrypt_DMA(): fix the
inverted pPlainData
and pCypherData
parameters issue
- CRYPEx_GCMCCM_SetInitVector(): remove
the IVSize
parameter as the key length
192bits and 256bits are not
supported by this version
- Add restriction for
the CCM Encrypt/Decrypt API's
that only DataType
equal to 8bits is supported
- HAL_CRYPEx_AESGCM_Finish():
- Add restriction
that the implementation is
limited to 32bits inputs
data length (Plain/Cyphertext,
Header) compared with GCM stadards
specifications (800-38D)
- Update Size
parameter on 32bits instead
of 16bits
- Fix issue
with 16-bit Data Type:
update to use intrinsic __ROR()
instead of __REV16()
§
HAL DCMI update
- HAL_DCMI_ConfigCROP(): Invert
assert macros to check Y0 and
Ysize
parameters
§
HAL DMA update
- HAL_DMA_Init(): Update to
clear the DBM bit in the
SxCR
register before setting the
new configuration
- DMA_SetConfig():
add to clear the DBM
bit in the SxCR
register
§
HAL FLASH update
- Add "HAL_"
prefix in the defined values
for the FLASH error code
- Example: FLASH_ERROR_PGP
renamed by HAL_FLASH_ERROR_PGP
- Clear the
Flash ErrorCode
in the FLASH_WaitForLastOperation()
function
- Update FLASH_SetErrorCode()
function to use "|="
operant to update the Flash ErrorCode
parameter in the FLASH handle
- IS_FLASH_ADDRESS(): Update the
macro check using '<='
condition instead of '<'
- IS_OPTIONBYTE(): Update the
macro check using '<='
condition instead of '<'
- Add "FLASH_"
prefix in the defined values
of FLASH Type Program
parameter
- Example: TYPEPROGRAM_BYTE
renamed by FLASH_TYPEPROGRAM_BYTE
- Add "FLASH_"
prefix in the defined values
of FLASH Type Erase parameter
- Example: TYPEERASE_SECTORS
renamed by FLASH_TYPEERASE_SECTORS
- Add "FLASH_"
prefix in the defined values
of FLASH Voltage Range
parameter
- Example: VOLTAGE_RANGE_1
renamed by FLASH_VOLTAGE_RANGE_1
- Add "OB_"
prefix in the defined values
of FLASH WRP State parameter
- Example: WRPSTATE_ENABLE
renamed by OB_WRPSTATE_ENABLE
- Add "OB_"
prefix in the defined values
of the FLASH PCROP State
parameter
- PCROPSTATE_DISABLE
updated by OB_PCROP_STATE_DISABLE
- PCROPSTATE_ENABLE
updated by OB_PCROP_STATE_ENABLE
- Change
"OBEX" prefix by
"OPTIONBYTE" prefix in these
defines:
- OBEX_PCROP
by OPTIONBYTE_PCROP
- OBEX_BOOTCONFIG
by OPTIONBYTE_BOOTCONFIG
§
HAL ETH update
- Update
__HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER()
by
__HAL_ETH_EXTI_SET_RISING_EDGE_TRIGGER()
- Update
__HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER()
by __HAL_ETH_EXTI_SET_FALLING_EDGE_TRIGGER()
§
HAL PWR update
- Add new API
to manage SLEEPONEXIT and
SEVONPEND bits of SCR register
- HAL_PWR_DisableSleepOnExit()
- HAL_PWR_EnableSleepOnExit()
- HAL_PWR_EnableSEVOnPend()
- HAL_PWR_DisableSEVOnPend()
- HAL_PWR_EnterSTOPMode()
- Update to
clear the CORTEX SLEEPDEEP
bit of SCR register
before entering in sleep mode
- Update
usage of __WFE()
in low power entry function:
if there is a pending event,
calling __WFE() will not
enter the CortexM4 core to
sleep mode. The solution is
to made the call below; the
first __WFE()
is always ignored and clears
the event if one was already
pending, the second is
always applied
- Add
new PVD configuration modes
- PWR_PVD_MODE_NORMAL
- PWR_PVD_MODE_EVENT_RISING
- PWR_PVD_MODE_EVENT_FALLING
- PWR_PVD_MODE_EVENT_RISING_FALLING
- Add new
macros to manage PVD Trigger
- __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE()
- __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(
- __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE()
- __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE()
- __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE()
- __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE()
- PVD macros:
- Remove the
__EXTILINE__ parameter
- Update to
use prefix "__HAL_PWR_PVD_"
instead of prefix
"__HAL_PVD"
- Rename HAL_PWR_PVDConfig()
by HAL_PWR_ConfigPVD()
- Rename HAL_PWREx_ActivateOverDrive()
by HAL_PWREx_EnableOverDrive()
- Rename HAL_PWREx_DeactivateOverDrive()
by HAL_PWREx_DisableOverDrive()
- HAL
GPIO update
- HAL_GPIO_Init()/HAL_GPIO_DeInit(): add a call
to the CMSIS assert macro
to check GPIO instance:
IS_GPIO_ALL_INSTANCE()
- HAL_GPIO_WritePin(): update to
write in BSRR register
- Rename GPIO_GET_SOURCE()
by GET_GPIO_INDEX() and
move this later to file
stm32f4xx_hal_gpio_ex.h
- Add new
define for alternate function
GPIO_AF5_SPI3 for
STM32F429xx/439xx and
STM32F427xx/437xx devices
- HAL
HASH update
- HAL_HASH_MD5_Start_IT():
fix input
address management issue
- HAL
RCC update
- Rename the
following Macros
- __PPP_CLK_ENABLE()
by
__HAL_RCC_PPP_CLK_ENABLE()
- __PPP_CLK_DISABLE()
by
__HAL_RCC_PPP_CLK_DISABLE()
- __PPP_FORCE_RESET()
by
__HAL_RCC_PPP_FORCE_RESET()
- __PPP_RELEASE_RESET()
by
__HAL_RCC_PPP_RELEASE_RESET()
- __PPP_CLK_SLEEP_ENABLE()
by
__HAL_RCC_PPP_CLK_SLEEP_ENABLE()
- __PPP_CLK_SLEEP_DISABLE()
by
__HAL_RCC_PPP_CLK_SLEEP_DISABLE()
- IS_RCC_PLLSAIN_VALUE()
macro: update the check
condition
- Add
description of RCC known Limitations
- Rename HAL_RCC_CCSCallback()
by HAL_RCC_CSSCallback()
- HAL_RCC_OscConfig() fix
issues:
- Remove the
disable of HSE
oscillator when
HSE_BYPASS is used as
system clock source or as
PPL clock source
- Add a check
on HSERDY flag
when HSE_BYPASS is
selected as new state
for HSE oscillator.
- Rename
__HAL_RCC_I2SCLK()
by __HAL_RCC_I2S_Config()
§
HAL I2S update
- HAL_I2S_Init(): add check
on I2S instance
using CMSIS macro IS_I2S_ALL_INSTANCE()
- HAL_I2S_IRQHandler()
update for compliancy w/ C++
- Add use
of tmpreg
variable in __HAL_I2S_CLEAR_OVRFLAG()
and __HAL_I2S_CLEAR_UDRFLAG()
macro for compliancy with C++
- HAL_I2S_GetError(): update to
return uint32_t instead of
HAL_I2S_ErrorTypeDef
enumeration
§
HAL I2C update
- Update to
clear the POS bit in the
CR1 register at the end
of HAL_I2C_Master_Read_IT()
and HAL_I2C_Mem_Read_IT()
process
- Rename
HAL_I2CEx_DigitalFilter_Config()
by
HAL_I2CEx_ConfigDigitalFilter()
- Rename
HAL_I2CEx_AnalogFilter_Config()
by
HAL_I2CEx_ConfigAnalogFilter()
- Add use
of tmpreg
variable in __HAL_I2C_CLEAR_ADDRFLAG()
and __HAL_I2C_CLEAR_STOPFLAG()
macro for compliancy with
C++
- HAL
IrDA update
- DMA transmit
process; the code has been
updated to avoid waiting on TC
flag under DMA ISR, IrDA TC
interrupt is used instead.
Below the update to be done on
user application:
- Configure
and enable the USART IRQ in
HAL_IRDA_MspInit()
function
- In
stm32f4xx_it.c file, UASRTx_IRQHandler()
function: add a call to HAL_IRDA_IRQHandler()
function
- IT transmit
process; the code has been
updated to avoid waiting on TC
flag under IRDA ISR, IrDA TC
interrupt is used instead. No
impact on user application
- Rename
Macros: add prefix "__HAL"
- __IRDA_ENABLE()
by __HAL_IRDA_ENABLE()
- __IRDA_DISABLE()
by __HAL_IRDA_DISABLE()
- Add new user
macros to manage the sample
method feature
- __HAL_IRDA_ONE_BIT_SAMPLE_ENABLE()
- __HAL_IRDA_ONE_BIT_SAMPLE_DISABLE()
- HAL_IRDA_Transmit_IT(): update to
remove the enable of the
parity error interrupt
- Add use
of tmpreg
variable in __HAL_IRDA_CLEAR_PEFLAG()
macro for compliancy with
C++
- HAL_IRDA_Transmit_DMA() update to
follow the
right procedure
"Transmission using DMA"
in the reference manual
- Add clear
the TC flag in the SR
register before enabling the
DMA transmit
request
- HAL
IWDG update
- Rename the
defined IWDG keys:
- KR_KEY_RELOAD
by IWDG_KEY_RELOAD
- KR_KEY_ENABLE
by IWDG_KEY_ENABLE
- KR_KEY_EWA
by
IWDG_KEY_WRITE_ACCESS_ENABLE
- KR_KEY_DWA
by
IWDG_KEY_WRITE_ACCESS_DISABLE
- Add new
macros
__HAL_IWDG_RESET_HANDLE_STATE()
and
__HAL_IWDG_CLEAR_FLAG()
- Update
__HAL_IWDG_ENABLE_WRITE_ACCESS()
and
__HAL_IWDG_DISABLE_WRITE_ACCESS()
as private macro
§
HAL SPI update
- HAL_SPI_TransmitReceive_DMA() update to
remove the DMA Tx Error
Callback initialization when
SPI RxOnly
mode is selected
- Add use of UNUSED(tmpreg)
in __HAL_SPI_CLEAR_MODFFLAG(),
__HAL_SPI_CLEAR_OVRFLAG(),
__HAL_SPI_CLEAR_FREFLAG() to
fix "Unused variable" warning
with TrueSTUDIO.
- Rename
Literals: remove "D" from
"DISABLED" and "ENABLED"
- SPI_TIMODE_DISABLED by
SPI_TIMODE_DISABLE
- SPI_TIMODE_ENABLED by SPI_TIMODE_ENABLE
- SPI_CRCCALCULATION_DISABLED
by
SPI_CRCCALCULATION_DISABLE
- SPI_CRCCALCULATION_ENABLED
by
SPI_CRCCALCULATION_ENABLE
- Add use
of tmpreg
variable in __HAL_SPI_CLEAR_MODFFLAG(),
__HAL_SPI_CLEAR_FREFLAG() and
__HAL_SPI_CLEAR_OVRFLAG()
macros for compliancy
with C++
§
HAL SDMMC update
- IS_SDIO_ALL_INSTANCE()
macro moved to CMSIS
files
- HAL
LTDC update
- HAL_LTDC_ConfigCLUT: optimize
the function when pixel format
is LTDC_PIXEL_FORMAT_AL44
- Update the
size of color look up table
to 16 instead of 256 when
the pixel format
is LTDC_PIXEL_FORMAT_AL44
- HAL
NAND update
- Rename NAND
Address structure to NAND_AddressTypeDef
instead of NAND_AddressTypedef
- Update the
used algorithm of these functions
- HAL_NAND_Read_Page()
- HAL_NAND_Write_Page()
- HAL_NAND_Read_SpareArea()
- HAL_NAND_Write_SpareArea()
- HAL_NAND_Write_Page(): move
initialization of tickstart
before while loop
- HAL_NAND_Erase_Block(): add whait
until NAND status is ready
before exiting this function
- HAL
NOR update
- Rename NOR
Address structure to NOR_AddressTypeDef
instead of NOR_AddressTypedef
- NOR Status
literals renamed
- NOR_SUCCESS
by HAL_NOR_STATUS_SUCCESS
- NOR_ONGOING
by HAL_NOR_STATUS_ONGOING
- NOR_ERROR
by HAL_NOR_STATUS_ERROR
- NOR_TIMEOUT
by HAL_NOR_STATUS_TIMEOUT
- HAL_NOR_GetStatus() update to
fix Timeout issue
and exit from waiting
loop when timeout occurred
- HAL
PCCARD update
- Rename PCCARD
Address structure to HAL_PCCARD_StatusTypeDef
instead of CF_StatusTypedef
- PCCARD Status
literals renamed
- CF_SUCCESS
by HAL_PCCARD_STATUS_SUCCESS
- CF_ONGOING
by HAL_PCCARD_STATUS_ONGOING
- CF_ERROR
by HAL_PCCARD_STATUS_ERROR
- CF_TIMEOUT
by HAL_PCCARD_STATUS_TIMEOUT
- Update "CF"
by "PCCARD" in functions,
literals
and macros
- HAL
PCD update
- Rename functions
- HAL_PCD_ActiveRemoteWakeup() by HAL_PCD_ActivateRemoteWakeup()
- HAL_PCD_DeActiveRemoteWakeup() by HAL_PCD_DeActivateRemoteWakeup()
- Rename literals
- USB_FS_EXTI_TRIGGER_RISING_EDGE
by
USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE
- USB_FS_EXTI_TRIGGER_FALLING_EDGE
by
USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE
- USB_FS_EXTI_TRIGGER_BOTH_EDGE()
by
USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE
- USB_HS_EXTI_TRIGGER_RISING_EDGE
by
USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE
- USB_HS_EXTI_TRIGGER_FALLING_EDGE
by
USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE
- USB_HS_EXTI_TRIGGER_BOTH_EDGE
by
USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE
- USB_HS_EXTI_LINE_WAKEUP
by
USB_OTG_HS_EXTI_LINE_WAKEUP
- USB_FS_EXTI_LINE_WAKEUP
by
USB_OTG_FS_EXTI_LINE_WAKEUP
- Rename USB
EXTI macros (FS, HS
referenced as SUBBLOCK
here below)
- __HAL_USB_SUBBLOCK_EXTI_ENABLE_IT()
by
__HAL_USB_OTG_SUBBLOCK_WAKEUP_EXTI_ENABLE_IT()
- __HAL_USB_SUBBLOCK_EXTI_DISABLE_IT()
by __HAL_USB_OTG_SUBBLOCK_WAKEUP_EXTI_DISABLE_IT()
- __HAL_USB_SUBBLOCK_EXTI_GET_FLAG()
by __HAL_USB_OTG_SUBBLOCK_WAKEUP_EXTI_GET_FLAG()
- __HAL_USB_SUBBLOCK_EXTI_CLEAR_FLAG()
by __HAL_USB_OTG_SUBBLOCK_WAKEUP_EXTI_CLEAR_FLAG()
- __HAL_USB_SUBBLOCK_EXTI_SET_RISING_EGDE_TRIGGER()
by __HAL_USB_OTG_SUBBLOCK_WAKEUP_EXTI_ENABLE_RISING_EDGE()
- __HAL_USB_SUBBLOCK_EXTI_SET_FALLING_EGDE_TRIGGER()
by __HAL_USB_OTG_SUBBLOCK_WAKEUP_EXTI_ENABLE_FALLING_EDGE()
- __HAL_USB_SUBBLOCK_EXTI_SET_FALLINGRISING_TRIGGER()
by __HAL_USB_OTG_SUBBLOCK_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE()
- __HAL_USB_SUBBLOCK_EXTI_GENERATE_SWIT()
by __HAL_USB_OTG_SUBBLOCK_WAKEUP_EXTI_GENERATE_SWIT()
- HAL
RNG update
- Add new functions
- HAL_RNG_GenerateRandomNumber(): to
generate a 32-bits random
number,
return
random value in argument and
return HAL status.
- HAL_RNG_GenerateRandomNumber_IT(): to
start generation of
the 32-bits random
number, user should call
the HAL_RNG_ReadLastRandomNumber()
function under the HAL_RNG_ReadyCallback()
to get the generated random
value.
- HAL_RNG_ReadLastRandomNumber(): to
return the last random value
stored in the RNG handle
- HAL_RNG_GetRandomNumber(): return
value update (obsolete),
replaced by HAL_RNG_GenerateRandomNumber()
- HAL_RNG_GetRandomNumber_IT(): wrong
implementation (obsolete),
replaced by HAL_RNG_GenerateRandomNumber_IT()
- __HAL_RNG_CLEAR_FLAG()
macro (obsolete), replaced by
new __HAL_RNG_CLEAR_IT() macro
- Add new
define for RNG ready
interrupt: RNG_IT_DRDY
- HAL
RTC update
- HAL_RTC_GetTime() and HAL_RTC_GetDate():
add the comment below
* @note You must call HAL_RTC_GetDate()
after HAL_RTC_GetTime()
to unlock the values
* in the higher-order
calendar shadow registers to
ensure consistency between
the time and date values.
* Reading RTC current time
locks the values in calendar
shadow registers until
Current date is read.
- Rename
literals: add prefix "__HAL"
- FORMAT_BIN by HAL_FORMAT_BIN
- FORMAT_BCD
by HAL_FORMAT_BCD
- Rename macros
(ALARM, WAKEUPTIMER and
TIMESTAMP referenced
as SUBBLOCK here
below)
- __HAL_RTC_EXTI_ENABLE_IT()
by __HAL_RTC_SUBBLOCK_EXTI_ENABLE_IT()
- __HAL_RTC_EXTI_DISABLE_IT()
by __HAL_RTC_SUBBLOCK_EXTI_DISABLE_IT()
- __HAL_RTC_EXTI_CLEAR_FLAG()
by __HAL_RTC_SUBBLOCK_EXTI_CLEAR_FLAG()
- __HAL_RTC_EXTI_GENERATE_SWIT()
by __HAL_RTC_SUBBLOCK_EXTI_GENERATE_SWIT()
- Add new
macros (ALARM,
WAKEUPTIMER and TAMPER_TIMESTAMP
referenced as SUBBLOCK
here below)
- __HAL_RTC_SUBBLOCK_GET_IT_SOURCE()
- __HAL_RTC_SUBBLOCK_EXTI_ENABLE_EVENT()
- __HAL_RTC_SUBBLOCK_EXTI_DISABLE_EVENT()
- __HAL_RTC_SUBBLOCK_EXTI_ENABLE_FALLING_EDGE()
- __HAL_RTC_SUBBLOCK_EXTI_DISABLE_FALLING_EDGE()
- __HAL_RTC_SUBBLOCK_EXTI_ENABLE_RISING_EDGE()
- __HAL_RTC_SUBBLOCK_EXTI_DISABLE_RISING_EDGE()
- __HAL_RTC_SUBBLOCK_EXTI_ENABLE_RISING_FALLING_EDGE()
- __HAL_RTC_SUBBLOCK_EXTI_DISABLE_RISING_FALLING_EDGE()
- __HAL_RTC_SUBBLOCK_EXTI_GET_FLAG()
- HAL
SAI update
- Update
SAI_STREOMODE by SAI_STEREOMODE
- Update FIFO
status Level defines in upper
case
- Rename
literals: remove "D" from
"DISABLED" and "ENABLED"
- SAI_OUTPUTDRIVE_DISABLED
by
SAI_OUTPUTDRIVE_DISABLE
- SAI_OUTPUTDRIVE_ENABLED
by
SAI_OUTPUTDRIVE_ENABLE
- SAI_MASTERDIVIDER_ENABLED by
SAI_MASTERDIVIDER_ENABLE
- SAI_MASTERDIVIDER_DISABLED by
SAI_MASTERDIVIDER_DISABLE
- HAL
SD update
- Rename
SD_CMD_SD_APP_STAUS by SD_CMD_SD_APP_STATUS
- SD_PowerON() updated to
add 1ms required power up
waiting time before starting
the SD initialization sequence
- SD_DMA_RxCplt()/SD_DMA_TxCplt():
add a call to
HAL_DMA_Abort()
- HAL_SD_ReadBlocks() update to
set the defined
DATA_BLOCK_SIZE as SDIO DataBlockSize
parameter
- HAL_SD_ReadBlocks_DMA()/HAL_SD_WriteBlocks_DMA()
update to call the HAL_DMA_Start_IT()
function with DMA Datalength
set to BlockSize/4
as the DMA is
configured in word
- HAL
SMARTCARD update
- DMA transmit
process; the code has been
updated to avoid waiting on TC
flag under DMA ISR, SMARTCARD
TC interrupt is used instead.
Below the update to be done on
user application:
- Configure
and enable the USART IRQ in
HAL_SAMRTCARD_MspInit()
function
- In
stm32f4xx_it.c file, UASRTx_IRQHandler()
function: add a call to HAL_SMARTCARD_IRQHandler()
function
- IT transmit
process; the code has been
updated to avoid waiting on TC
flag under SMARTCARD
ISR, SMARTCARD TC
interrupt is used instead. No
impact on user application
- Rename
macros: add prefix "__HAL"
- __SMARTCARD_ENABLE()
by __HAL_SMARTCARD_ENABLE()
- __SMARTCARD_DISABLE()
by __HAL_SMARTCARD_DISABLE()
- __SMARTCARD_ENABLE_IT()
by
__HAL_SMARTCARD_ENABLE_IT()
- __SMARTCARD_DISABLE_IT()
by
__HAL_SMARTCARD_DISABLE_IT()
- __SMARTCARD_DMA_REQUEST_ENABLE()
by
__HAL_SMARTCARD_DMA_REQUEST_ENABLE()
- __SMARTCARD_DMA_REQUEST_DISABLE()
by
__HAL_SMARTCARD_DMA_REQUEST_DISABLE()
- Rename
literals: remove "D" from
"DISABLED" and "ENABLED"
- SMARTCARD_NACK_ENABLED by
SMARTCARD_NACK_ENABLE
- SMARTCARD_NACK_DISABLED by SMARTCARD_NACK_DISABLE
- Add new user
macros to manage the sample
method feature
- __HAL_SMARTCARD_ONE_BIT_SAMPLE_ENABLE()
- __HAL_SMARTCARD_ONE_BIT_SAMPLE_DISABLE()
- Add use
of tmpreg
variable in
__HAL_SMARTCARD_CLEAR_PEFLAG()
macro for compliancy with
C++
- HAL_SMARTCARD_Transmit_DMA() update to
follow the
right procedure
"Transmission using DMA"
in the reference manual
- Add clear
the TC flag in the SR
register before enabling the
DMA transmit
request
- HAL
TIM update
- Add
TIM_CHANNEL_ALL as possible
value for all Encoder
Start/Stop APIs Description
- HAL_TIM_OC_ConfigChannel() remove call
to IS_TIM_FAST_STATE() assert
macro
- HAL_TIM_PWM_ConfigChannel() add a call
to IS_TIM_FAST_STATE() assert
macro to check the OCFastMode
parameter
- HAL_TIM_DMADelayPulseCplt() Update to
set the TIM Channel before to
call HAL_TIM_PWM_PulseFinishedCallback()
- HAL_TIM_DMACaptureCplt() update to
set the TIM Channel before to
call HAL_TIM_IC_CaptureCallback()
- TIM_ICx_ConfigChannel() update
to fix Timer CCMR1 register
corruption when setting ICFilter
parameter
- HAL_TIM_DMABurst_WriteStop()/HAL_TIM_DMABurst_ReadStop()
update to abort the DMA
transfer for the specifc
TIM channel
- Add new
function for TIM Slave
configuration in IT mode:
HAL_TIM_SlaveConfigSynchronization_IT()
- HAL_TIMEx_ConfigBreakDeadTime() add an
assert check on Break & DeadTime
parameters values
- HAL_TIMEx_OCN_Start_IT() add the
enable of Break Interrupt for
all output modes
- Add new
macros to ENABLE/DISABLE URS
bit in TIM CR1 register:
- __HAL_TIM_URS_ENABLE()
- __HAL_TIM_URS_DISABLE()
- Add new macro
for TIM Edge modification:
__HAL_TIM_SET_CAPTUREPOLARITY()
- HAL
UART update
- Add IS_LIN_WORD_LENGTH()
and
IS_LIN_OVERSAMPLING()
macros: to check respectively
WordLength
and OverSampling
parameters in LIN mode
- DMA transmit
process; the code has been
updated to avoid waiting on TC
flag under DMA ISR, UART TC
interrupt is used instead.
Below the update to be done on
user application:
- Configure
and enable the USART IRQ in
HAL_UART_MspInit()
function
- In
stm32f4xx_it.c file, USARTx_IRQHandler()
function: add a call to HAL_UART_IRQHandler()
function
- IT transmit
process; the code has been
updated to avoid waiting on TC
flag under UART ISR, UART
TC interrupt is used instead.
No impact on user application
- Rename
macros:
- __HAL_UART_ONEBIT_ENABLE()
by
__HAL_UART_ONE_BIT_SAMPLE_ENABLE()
- __HAL_UART_ONEBIT_DISABLE()
by
__HAL_UART_ONE_BIT_SAMPLE_DISABLE()
- Rename
literals:
- UART_WAKEUPMETHODE_IDLELINE by
UART_WAKEUPMETHOD_IDLELINE
- UART_WAKEUPMETHODE_ADDRESSMARK by
UART_WAKEUPMETHOD_ADDRESSMARK
- Add use
of tmpreg
variable in __HAL_UART_CLEAR_PEFLAG()
macro for compliancy with
C++
- HAL_UART_Transmit_DMA() update to
follow the right procedure
"Transmission using DMA" in
the reference manual
- Add clear
the TC flag in the SR
register before enabling the
DMA transmit
request
- HAL
USART update
- DMA transmit
process; the code has been
updated to avoid waiting on TC
flag under DMA ISR, USART TC
interrupt is used instead.
Below the update to be done on
user application:
- Configure
and enable the USART IRQ in
HAL_USART_MspInit()
function
- In
stm32f4xx_it.c file, USARTx_IRQHandler()
function: add a call to HAL_USART_IRQHandler()
function
- IT transmit
process; the code has been
updated to avoid waiting on TC
flag under USART ISR,
USART TC interrupt is used
instead. No impact on user
application
- HAL_USART_Init() update
to enable the USART
oversampling by 8 by default
in order to reach max USART
frequencies
- USART_DMAReceiveCplt() update
to set the new USART state
after checking on the
old state
- HAL_USART_Transmit_DMA()/HAL_USART_TransmitReceive_DMA()
update to
follow the
right procedure
"Transmission using DMA"
in the reference manual
- Add clear
the TC flag in the SR
register before enabling the
DMA transmit
request
- Rename
macros:
- __USART_ENABLE()
by __HAL_USART_ENABLE()
- __USART_DISABLE()
by __HAL_USART_DISABLE()
- __USART_ENABLE_IT()
by __HAL_USART_ENABLE_IT()
- __USART_DISABLE_IT()
by __HAL_USART_DISABLE_IT()
- Rename
literals: remove "D" from
"DISABLED" and "ENABLED"
- USART_CLOCK_DISABLED by
USART_CLOCK_DISABLE
- USART_CLOCK_ENABLED by
USART_CLOCK_ENABLE
- USARTNACK_ENABLED
by USART_NACK_ENABLE
- USARTNACK_DISABLED
by USART_NACK_DISABLE
- Add new user
macros to manage the sample
method feature
- __HAL_USART_ONE_BIT_SAMPLE_ENABLE()
- __HAL_USART_ONE_BIT_SAMPLE_DISABLE()
- Add use
of tmpreg
variable in __HAL_USART_CLEAR_PEFLAG()
macro for compliancy with
C++
- HAL
WWDG update
- Add new
parameter in
__HAL_WWDG_ENABLE_IT()
macro
- Add new
macros to manage WWDG IT &
correction:
- __HAL_WWDG_DISABLE()
- __HAL_WWDG_DISABLE_IT()
- __HAL_WWDG_GET_IT()
- __HAL_WWDG_GET_IT_SOURCE()
V1.1.0
/ 19-June-2014
Main Changes
- Add
support of STM32F411xE devices
- HAL
generic
update
- Enhance HAL
delay and time base implementation
- Systick timer is
used by default as source of
time base, but user can
eventually implement his
proper time base source (a general
purpose
timer for example or other
time source)
- Functions
affecting time base
configurations are declared
as __Weak to make override
possible in case of other
implementations in user
file, for more details
please refer to HAL_TimeBase
example
- 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
- Add a new
attribute for functions
executed from internal SRAM
and depending from
Compiler implementation
- When USE_RTOS
== 1 (in
stm32l0xx_hal_conf.h), the
__HAL_LOCK()
is not defined instead of
being defined empty
- Miscellaneous
comments and formatting update
- stm32f4xx_hal_conf_template.h
- Add a new
define for LSI default value
LSI_VALUE
- Add a new
define for LSE default value
LSE_VALUE
- Add a new
define for Tick interrupt
priority TICK_INT_PRIORITY
(needed for the enhanced
time base implementation)
- Important
Note:
aliases has been added for any
API naming change, to keep
compatibility with previous version
- HAL
GPIO update
- Add a new
macro __HAL_GPIO_EXTI_GENERATE_SWIT()
to manage the generation of
software interrupt on selected
EXTI line
- HAL_GPIO_Init(): use
temporary variable when
modifying the registers, to
avoid unexpected transition in
the GPIO pin configuration
- Remove
IS_GET_GPIO_PIN macro
- Add a new
function HAL_GPIO_LockPin()
- Private Macro
__HAL_GET_GPIO_SOURCE renamed
into GET_GPIO_SOURCE
- Add the
support of STM32F411xx devices
: add the
new Alternate functions values
related to new remap added for
SPI, USART, I2C
- Update the
following HAL GPIO macros
description: rename EXTI_Linex
by GPIO_PIN_x
- __HAL_GPIO_EXTI_CLEAR_IT()
- __HAL_GPIO_EXTI_GET_IT()
- __HAL_GPIO_EXTI_CLEAR_FLAG()
- __HAL_GPIO_EXTI_GET_FLAG()
§
HAL DMA update
- Fix in HAL_DMA_PollForTransfer()
to:
- set DMA
error code in case of
HAL_ERROR status
- set HAL
Unlock before DMA state update
§
HAL DMA2D
update
- Add
configuration of source
address in case of A8 or A4
M2M_PFC DMA2D mode
- HAL
FLASH update
- Functions
reorganization update,
depending on the features
supported by each STM32F4 device
- Add new
driver
(stm32f4xx_hal_flash_ramfunc.h/.c)
to manage function executed
from RAM, these functions are
available only for STM32F411xx
Devices
- FLASH_StopFlashInterfaceClk() :
Stop the flash interface
while System Run
- FLASH_StartFlashInterfaceClk() : Stop the
flash interface while System
Run
- FLASH_EnableFlashSleepMode() : Enable
the flash sleep while System
Run
- FLASH_DisableFlashSleepMode() :
Disable the flash sleep
while System Run
- 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_PWR_EnterSLEEPMode()
- Remove
disable and enable of SysTick
Timer
- Update
usage of __WFE()
in low power entry function:
if there is a pending event,
calling __WFE() will not
enter the CortexM4 core to
sleep mode. The solution is
to made the call below; the
first __WFE()
is always ignored and clears
the event if one was already
pending, the second is
always applied
- Add new macro
for software event generation
__HAL_PVD_EXTI_GENERATE_SWIT()
- Remove the
following defines form Generic
driver and add them under
extension driver because they
are only used within extension
functions.
- CR_FPDS_BB:
used within HAL_PWREx_EnableFlashPowerDown()
function
- CSR_BRE_BB:
used within HAL_PWREx_EnableBkUpReg()
function
- Add the
support of STM32F411xx devices
add the define STM32F411xE
- For
STM32F401xC, STM32F401xE and
STM32F411xE devices add the
following functions used to
enable or disable the low
voltage mode for regulators
- HAL_PWREx_EnableMainRegulatorLowVoltage()
- HAL_PWREx_DisableMainRegulatorLowVoltage()
- HAL_PWREx_EnableLowRegulatorLowVoltage()
- HAL_PWREx_DisableLowRegulatorLowVoltage()
- For
STM32F42xxx/43xxx devices, add
a new function for Under
Driver management as the macro
already added for this mode is
not sufficient: HAL_PWREx_EnterUnderDriveSTOPMode()
- HAL
RCC update
- In HAL_RCC_ClockConfig()
function: update the AHB clock
divider before clock switch to
new source
- Allow to
calibrate the HSI when it is
used as system clock source
- Rename the
following macros
- __OTGFS_FORCE_RESET
() by
__USB_OTG_FS_FORCE_RESET()
- __OTGFS_RELEASE_RESET
() by
__USB_OTG_FS_RELEASE_RESET()
- __OTGFS_CLK_SLEEP_ENABLE
() by
__USB_OTG_FS_CLK_SLEEP_ENABLE()
- __OTGFS_CLK_SLEEP_DISABLE
() by __USB_OTG_FS_CLK_SLEEP_DISABLE()
- Add new field
PLLI2SM in
RCC_PLLI2SInitTypeDef
structure, this division
factor is added for PLLI2S VCO
input clock only STM32F411xE
devices => the FW
compatibility is broken vs.
STM32F401xx devices
- Update HAL_RCCEx_PeriphCLKConfig()
and HAL_RCCEx_GetPeriphCLKConfig()
functions to support the new
PLLI2SM
- Add new
function to manage the new LSE
mode
: HAL_RCCEx_SelectLSEMode()
- Reorganize
the macros depending from
Part number used and make them
more clear
§ HAL
UART update
- 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
RNG update
- Add a
conditional define to make
this driver visible for all
STM32F4xx devices except
STM32F401xx and STM32F411xx
Devices.
- HAL
CRC update
- These
macros are added to
read/write the CRC IDR
register: __HAL_CRC_SET_IDR()
and __HAL_CRC_GET_IDR()
- HAL
DAC update
- Enhance the
DMA channel configuration when
used with DAC
- HAL
TIM update
- HAL_TIM_IRQHandler(): update to
check the input capture
channel 3 and 4 in CCMR2
instead of CCMR1
- __HAL_TIM_PRESCALER()
updated to use '=' instead of
'|='
- Add the
following macro in TIM HAL
driver
- __HAL_TIM_GetCompare()
- __HAL_TIM_GetCounter()
- __HAL_TIM_GetAutoreload()
- __HAL_TIM_GetClockDivision()
- __HAL_TIM_GetICPrescaler()
- HAL
SDMMC update
- Use of CMSIS
constants instead of magic values
- Miscellaneous
update in functions internal
coding
- HAL
NAND update
- Fix
issue of macros returning
wrong address for NAND blocks
- Fix
issue for read/write NAND
page/spare area
- HAL
NOR update
- Add
the NOR address bank macro
used within the API
- Update
NOR API implementation to
avoid the use of NOR address
bank hard coded
- HAL
HCD update
- HCD_StateTypeDef structure
members renamed
- These macro are renamed
- __HAL_GET_FLAG(__HANDLE__,
__INTERRUPT__)
by
__HAL_HCD_GET_FLAG(__HANDLE__,
__INTERRUPT__)
- __HAL_CLEAR_FLAG(__HANDLE__,
__INTERRUPT__) by
__HAL_HCD_CLEAR_FLAG(__HANDLE__,
__INTERRUPT__)
- __HAL_IS_INVALID_INTERRUPT(__HANDLE__)
by
__HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__)
- HAL
PCD update
- HAL_PCD_SetTxFiFo() and HAL_PCD_SetRxFiFo()
renamed into HAL_PCDEx_SetTxFiFo()
and HAL_PCDEx_SetRxFiFo()
and moved to the extension
files
stm32f4xx_hal_pcd_ex.h/.c
- PCD_StateTypeDef structure
members renamed
- Fix incorrect
masking of TxFIFOEmpty
- stm32f4xx_ll_usb.c:
fix issue in HS mode
- New macros added
- __HAL_PCD_IS_PHY_SUSPENDED()
- __HAL_USB_HS_EXTI_GENERATE_SWIT()
- __HAL_USB_FS_EXTI_GENERATE_SWIT()
- These macro are renamed
- __HAL_GET_FLAG(__HANDLE__,
__INTERRUPT__)
by
__HAL_PCD_GET_FLAG(__HANDLE__,
__INTERRUPT__)
- __HAL_CLEAR_FLAG(__HANDLE__,
__INTERRUPT__) by
__HAL_PCD_CLEAR_FLAG(__HANDLE__,
__INTERRUPT__)
- __HAL_IS_INVALID_INTERRUPT(__HANDLE__)
by
__HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__)
- __HAL_PCD_UNGATE_CLOCK(__HANDLE__)
by
__HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__)
- __HAL_PCD_GATE_CLOCK(__HANDLE__)
by
__HAL_PCD_GATE_PHYCLOCK(__HANDLE__)
- HAL
ETH update
- Update HAL_ETH_GetReceivedFrame_IT()
function to return HAL_ERROR
if the received packet is not
complete
- Use HAL_Delay()
instead of counting loop
- __HAL_ETH_MAC_CLEAR_FLAG()
macro is removed: the MACSR
register is read only
- Add the
following macros used to Wake
up the device from STOP mode
by Ethernet event
:
- __HAL_ETH_EXTI_ENABLE_IT()
- __HAL_ETH_EXTI_DISABLE_IT()
- __HAL_ETH_EXTI_GET_FLAG()
- __HAL_ETH_EXTI_CLEAR_FLAG()
- __HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER()
- __HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER()
- __HAL_ETH_EXTI_SET_FALLINGRISING_TRIGGER()
- HAL
WWDG update
- Update macro
parameters to use underscore:
__XXX__
- Use of CMSIS
constants instead of magic values
- Use
MODIFY_REG macro in HAL_WWDG_Init()
- Add
IS_WWDG_ALL_INSTANCE in HAL_WWDG_Init()
and HAL_WWDG_DeInit()
- HAL
IWDG update
- Use WRITE_REG
instead of SET_BIT for all
IWDG macros
- __HAL_IWDG_CLEAR_FLAG
removed: no IWDG flag cleared
by access to SR register
- Use
MODIFY_REG macro in HAL_IWDG_Init()
- Add
IS_IWDG_ALL_INSTANCE in HAL_IWDG_Init()Add
the following macros used to
Wake
V1.0.0
/ 18-February-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
|