
Details: Below the list of the different fixes and enhancements. Please refer to the https://github.com/STMicroelectronics/stm32f4xx_hal_driver repository to view the changes introduced by each fix or enhancement in a separate commit. - [HAL][LL][ADC] Apply artistic style fixes - [HAL][LL][LPTIM] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][LL][TIM] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][LL][USART] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][CAN] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][CEC] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][CEC] Remove multiple volatile reads or writes in interrupt handler for better performance - [HAL][CRYP] Apply MCUAstyle fixes and update Crypt/Decrypt IT processes to avoid Computation Completed IRQ fires before the DINR pointer increment - [HAL][DFSDM] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][DSI] Update to align DSI ULPS entry and exit sequences with reference manual - [HAL][EXTI] Fix computation of pExtiConfig->GPIOSel in HAL_EXTI_GetConfigLine() - [HAL][GENERIC] Allow redefinition of macro UNUSED(x) - [HAL][I2C] Clear ACK bit once 3 bytes to read remain to be able to send the NACK once the transfer ends - [HAL][I2C] Clear the ADDRF flag only when direction is confirmed as changed, to prevent that the ADDRF flag is cleared too early when the restart is received - [HAL][I2C] Duplicate the test condition after timeout detection to avoid false timeout detection - [HAL][I2C] Move polling code of HAL memory interface through interrupt management to prevent timeout issue using HAL MEM interface through FreeRTOS - [HAL][I2C] Update HAL I2C driver to prefetch data before starting the transmission (implementation of errata sheet workaround I2C2-190208: Transmission stalled after first byte) - [HAL][I2C] Update HAL_I2C_Master_Transmit_IT to return HAL_BUSY instead of HAL_ERROR when timeout occur and I2C_FLAG_BUSY is SET - [HAL][I2C] Update I2C_IsErrorOccurred to return error if timeout is detected - [HAL][I2C] Update I2C_MemoryTransmit_TXE_BTF process to disable TXE and BTF interrupts if nothing to do and clear TXE Flag at the end of transfer - [HAL][IRDA] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][RCC] Correct the configuration macro of I2S clock source and the value of I2S external clock source - [HAL][RCC] Set the minimum value of PLLM - [HAL][RCC] Update comment in HAL_RCC_OscConfig() - [HAL][RTC] Check if the RTC calendar has been previously initialized before entering initialization mode - [HAL][SAI] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][SAI] Improve audio quality (avoid potential glitch) - [HAL][SMARTCARD] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][SMBUS] Change previous state from HAL_SMBUS_STATE_READY to HAL_SMBUS_STATE_NONE at the end of transfer - [HAL][SMBUS] Update HAL SMBUS driver to prefetch data before starting the transmission (implementation of errata sheet workaround I2C2-190208: Transmission stalled after first byte) - [HAL][SMBUS] Update to fix issue of mismatched data received by master in case of data size to be transmitted by the slave is greater than the data size to be received by the master and add flush on TX register - [HAL][SPI] Fix driver to don't update state in case of error (HAL_SPI_STATE_READY will be set only in case of HAL_TIMEOUT) - [HAL][SPI] Update IT API to enable interrupts after process unlock - [HAL][TIM] Align TIM_TIM2_ETH_PTP definition with the reference manual specification - [HAL][UART] Add 'const' qualifier to comply to MISRA-C rule 8.13 - [HAL][UART] Add a new API HAL_UARTEx_GetRxEventType that could be used to retrieve the type of event that has led the RxEventCallback execution - [HAL][UART] Remove __HAL_LOCK() and __HAL_UNLOCK() invocation from Tx and Rx APIs - [LL][ADC] Cast both LL_ADC_REG_ReadConversionData6() and LL_ADC_REG_ReadConversionData8() returned values from uint16_t to uint8_t to be consistent with prototypes - [LL][ADC] Update LL_ADC_DMA_GetRegAddr() API to prevent compilation warning due to unused 'Register' parameter - [LL][RTC] Correct misleading note about shadow registers - [LL][USB] Remove useless software setting to setup the frame interval at 80% - [LL][USB] Update USB_ClearInterrupts() to not clear all interrupts
STM32CubeF4 MCU Firmware Package
STM32Cube is an STMicroelectronics original initiative to ease developers' life by reducing efforts, time and cost.
STM32Cube covers the overall STM32 products portfolio. It includes a comprehensive embedded software platform delivered for each STM32 series.
- The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product.
- The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio.
- The BSP drivers of each evaluation, demonstration or nucleo board provided for this STM32 series.
- A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library...
- A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series.
The STM32CubeF4 MCU Package projects are directly running on the STM32F4 series boards. You can find in each Projects/Board name directories a set of software projects (Applications/Demonstration/Examples).
Some middleware libraries are unavailable in this repository
In this repository, the middleware libraries listed below along with the projects (demos, applications, and examples) using them, are not available as they (the middleware libraries) are subject to some restrictive license terms requiring the user's approval via a "click thru" procedure.
./Middlewares/ST/STM32_Audio
./Middlewares/ST/STemWin
./Middlewares/ST/TouchGFX
If needed, they can be found inside the full firmware package available on our website st.com
and downloadable from here. You will be prompted to login or to register in case you have no account.
Release note
Details about the content of this release are available in the release note here.
Boards available
- STM32F4
- STM32F4-Discovery
- STM32F401-Discovery
- STM32F401RE-Nucleo
- STM32F410xx-Nucleo
- STM32F411E-Discovery
- STM32F411RE-Nucleo
- STM32F412G-Discovery
- STM32F412ZG-Nucleo
- STM32F413H-Discovery
- STM32F413ZH-Nucleo
- STM32F429I-Discovery
- STM32F429ZI-Nucleo
- STM32F446ZE-Nucleo
- STM32429I_EVAL
- STM32439I_EVAL
- STM3240G_EVAL
- STM3241G_EVAL
- STM32446E_EVAL
- STM32446E-Nucleo
- STM32469I_EVAL
- STM32469I-Discovery
Troubleshooting
Please refer to the CONTRIBUTING.md guide.