blob: 7e99de42caf795ddb0d09efbd43a5c20f940346c [file] [log] [blame]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Release Notes for STM32G0xx HAL Drivers Package</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
</style>
<link rel="stylesheet" href="_htmresc/mini-st_2020.css" />
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
<link rel="icon" type="image/x-icon" href="_htmresc/favicon.png" />
</head>
<body>
<div class="row">
<div class="col-sm-12 col-lg-4">
<center>
<h1 id="release-notes-forstm32g0xx-hal-drivers"><small>Release Notes for</small><mark>STM32G0xx HAL Drivers</mark></h1>
<p>Copyright © 2018 STMicroelectronics</p>
<a href="https://www.st.com" class="logo"><img src="_htmresc/st_logo_2020.png" alt="ST logo" /></a>
</center>
<h1 id="license">License</h1>
<p>This software component is licensed by ST under BSD 3-Clause license, the “License”; You may not use this component except in compliance with the License. You may obtain a copy of the License at:</p>
<p><a href="https://opensource.org/licenses/BSD-3-Clause">https://opensource.org/licenses/BSD-3-Clause</a></p>
<h1 id="purpose">Purpose</h1>
<p>The STM32Cube HAL and LL, an STM32 abstraction layer embedded software, ensure maximized portability across STM32 portfolio.</p>
<p>The Portable APIs layer provides a generic, multi instanced and simple set of APIs to interact with the upper layer (application, libraries and stacks). It is composed of native and extended APIs set. It is directly built around a generic architecture and allows the build-upon layers, like the middleware layer, to implement its functions without knowing in-depth the used STM32 device. This improves the library code re-usability and guarantees an easy portability on other devices and STM32 families.</p>
<p>The Low Layer (LL) drivers are part of the STM32Cube firmware HAL that provide basic set of optimized and one shot services. The Low layer drivers, contrary to the HAL ones are not Fully Portable across the STM32 families; the availability of some functions depend on the physical availability of the relative features on the product. The Low Layer (LL) drivers are designed to offer the following features:</p>
<ul>
<li>New set of inline function for direct and atomic register access</li>
<li>One-shot operations that can be used by the HAL drivers or from application level.</li>
<li>Fully Independent from HAL and can be used in standalone usage (without HAL drivers)</li>
<li>Full features coverage of the all the supported peripherals.</li>
</ul>
</div>
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
<input type="checkbox" id="collapse-section6" checked aria-hidden="true"> <label for="collapse-section6" aria-hidden="true">V1.4.1 / 25-February-2021</label>
<div>
<h2 id="main-changes">Main Changes</h2>
<h3 id="patch-release">Patch release</h3>
<p>Patch release of <strong>HAL and Low Layer</strong> drivers</p>
<p><strong>Additional features</strong></p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><strong>HAL FLASH</strong> driver update to support all STM32G0C1xx devices (with 128K dual bank and mono bank)</td>
</tr>
</tbody>
</table>
<h2 id="known-limitations">Known limitations</h2>
<ul>
<li>USB HAL limitation: Double buffer mode is not functional with isochronous data transfers in host mode.</li>
</ul>
<h2 id="development-toolchains-and-compilers">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.30.1</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.29</li>
<li>STM32CubeIDE toolchain v1.5.0</li>
</ul>
<h2 id="supported-devices-and-boards">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G0C1xx, STM32G0B1xx, STM32G0B0xx</li>
<li>STM32G061xx, STM32G051xx, STM32G050xx</li>
<li>STM32G081xx, STM32G071xx, STM32G070xx</li>
<li>STM32G041xx, STM32G031xx, STM32G030xx</li>
</ul>
<h2 id="backward-compatibility">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
<h2 id="dependencies">Dependencies</h2>
<p><br />
</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true">V1.4.0 / 29-October-2020</label>
<div>
<h2 id="main-changes-1">Main Changes</h2>
<h3 id="maintenance-release-and-product-update">Maintenance release and Product Update</h3>
<p><strong>Official release</strong> of HAL and Low layers drivers introducing <strong>STM32G0C1xx/STM32G0B1xx/STM32G0B0xx</strong> devices and <strong>STM32G061xx/STM32G051xx/STM32G050xx</strong> devices.</p>
<p>Maintenance release of HAL and Low layers drivers supporting STM32G041xx/STM32G031xx/STM32G030xx and STM32G081xx/STM32G071xx/STM32G070xx devices.</p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">New supported IP on STM32G0C1xx/B1xx/B0xx devices</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">CRS</td>
</tr>
<tr class="even">
<td style="text-align: left;">DMA2</td>
</tr>
<tr class="odd">
<td style="text-align: left;">FDCAN</td>
</tr>
<tr class="even">
<td style="text-align: left;">FLASH DUAL BANK</td>
</tr>
<tr class="odd">
<td style="text-align: left;">USB</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr class="header">
<th>New instances/features on STM32G0C1xx/B1xx/B0xx devices (not exhaustive)</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>I2C3, SPI3, LPUART2, USART5, USART6, COMP3, TIM4, TAMPER3, WAKEUP_PIN5, MCO2, PVM/VDDIO2, HSI48</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">New supported IP on STM32G061xx/G051xx/50xx devices</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">COMP1, COMP2</td>
</tr>
<tr class="even">
<td style="text-align: left;">DAC</td>
</tr>
<tr class="odd">
<td style="text-align: left;">TIM6, TIM7, TIM15</td>
</tr>
</tbody>
</table>
<p><strong>Fixed bug list</strong></p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">[Codespell] Correct misspelled words in HAL/LL drivers</td>
</tr>
<tr class="even">
<td style="text-align: left;">[ADC] Typo correction in comments</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[ADC] HAL ADC value from channel TempSensor wrong at 1st read</td>
</tr>
<tr class="even">
<td style="text-align: left;">[ADC] LL [GithHub][HAL_LL] Issue with ‘register’ storage class specifier, should be removed</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[ADC] ADC must manage CCRDY flag during configuration</td>
</tr>
<tr class="even">
<td style="text-align: left;">[ADC] Robustness improvement - Parameter SequencerLength can be discarded depending on sequencer config</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[ADC] Create two functions to ease configuration of internal channels</td>
</tr>
<tr class="even">
<td style="text-align: left;">[ADC] ADC AUTDLY and DMA</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[COMP] LL [GithHub][HAL_LL] Issue with ‘register’ storage class specifier, should be removed</td>
</tr>
<tr class="even">
<td style="text-align: left;">[COMP] Improve PDF document generation</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[COMP] HAL wrong PINS described in comment for COMPx_INM</td>
</tr>
<tr class="even">
<td style="text-align: left;">[COMP] Fix MISRA C 2012 issues : MISRAC2012-Rule-10.4</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[CRYP] Correction for Official NIST CCM test pattern enciphering failing when header length is null</td>
</tr>
<tr class="even">
<td style="text-align: left;">[CRYP] GCM/GMAC/CCM data header feed in DMA mode</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[CRYP] Fix CRYP HAL driver to manage GCM header lengths not multiple of 4 bytes in 8-bit, 16-bit and 32-bit data types.</td>
</tr>
<tr class="even">
<td style="text-align: left;">[CRYP] GCM: handling of AUD with size not multiple of 4 bytes not properly handle in CRYP_AESGCM_Process_IT</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[CRYP] Misleading API comments related to data length</td>
</tr>
<tr class="even">
<td style="text-align: left;">[CRYP] Restriction regarding size field on HAL_CRYP_Encrypt_DMA, HAL_CRYP_Decrypt_DMA API</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[CRYP][Doc] Move ASCII table outside the files header</td>
</tr>
<tr class="even">
<td style="text-align: left;">[CRYP] Code Sonar issue detected in HAL_CRYP_Resume</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[CRYP] Resumption issue when an authentication algorithm suspends another authentication algorithm</td>
</tr>
<tr class="even">
<td style="text-align: left;">[CRYP] Payloads sum not saved in case of suspend / resume of GCM ciphering - <strong>API update</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[CRYP] AES GCM: Need to support data encrypt/decrypt with length not multiple of 16 bytes - <strong>API update</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">[CRYP] AES GCM: handling of ADD with size not multiple of 4 bytes - <strong>API update</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[CRYP][MISRA C:2012] Fix warnings affecting rules 2.2_c, 10.1_R6, 10.3, 10.4_a, 10.6, 12.1, 13.5 15.7 - <strong>API update</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">[CRS] Wrong value for CRS_HSI48CALIBRATION_DEFAULT</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[DMA] LOCK UNLOCK process to modify, as LOCK is done at Start and UNLOCK is done at Completion processus</td>
</tr>
<tr class="even">
<td style="text-align: left;">[DMA] Exti interrupt doesn’t need to be enabled when it used as the DMAMUX synchronization</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[DMAMUX] correct warning during chm generation</td>
</tr>
<tr class="even">
<td style="text-align: left;">[DMA] LL_DMA_ClearFlag_GIx : add text informing user not to clear GIx when channel on</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[DMA] two requests are missing for TIM16 and TIM17 (i.e. renaming according to RM)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[EXTI] Use of <strong>LINE</strong> as a macro parameter conflicts with standard C usage</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[FLASH] Correction in macro __HAL_FLASH_GET_FLAG</td>
</tr>
<tr class="even">
<td style="text-align: left;">[FLASH] Use CMSIS feature switches instead of devices switches to define OPTIONBYTE_ALL &amp; OB_USER_ALL</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[FLASH] Wrong ECC management in HAL FLASH driver</td>
</tr>
<tr class="even">
<td style="text-align: left;">[FLASH] Move FLASH_SIZE define from hal flash.h to cmsis device file</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[G0 512K][FLASH] Remove <strong>FLASH_FLAG_ALL_ERRORS</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">[G0 512K][FLASH] <strong>Add new API for dual bank, new option bytes</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[G0 512K][FLASH] <strong>Update to handle swap bank in pcrop config and implement sticky2 area</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL] Replace devices switches by CMSIS feature switch when possible</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL] Add FDCAN &amp; USB (HCD/PCD) inclusion in hal_conf_template.h</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL] HAL - Tick priority handling in HAL_Init_Tick() is TIM/RTC time base template</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL] [McuAStyle] - HAL and LL code update for obvious rules violation</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL GENERIC] Support of new ARM compiler Keil V6 (AC5-like warnings mode)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL GENERIC] Use all G0 Family common Timer in stm32g0xx_hal_timebase_tim_template.h</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL GENERIC] Correct regression on HAL_SetTickFreq</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL GENERIC][MISRA C 2012] uwTickFreq cast in (uint32_t) in HAL_InitTick() to avoid MISRA issue</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL GENERIC] <strong>Add new API HAL_GET_PENDING_IT() to determine interrupt source per line</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[GPIO] HAL - Update initialization sequence in HAL_GPIO_Init to avoid a glitch (Sw workaround)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[GPIO] LL - LL_GPIO_Init() generate undesired pulse</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[GPIO] HAL - bug on HAL_GPIO_TogglePin: doesn’t allow toggle multiple pin</td>
</tr>
<tr class="even">
<td style="text-align: left;">[GPIO-LL] Correct issue with LL_GPIO_TogglePin function</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[GPIO] HAL_GPIO_DeInit() bug on EXTI management</td>
</tr>
<tr class="even">
<td style="text-align: left;">[I2C] LL - [GithHub][HAL_LL] Issue with ‘register’ storage class specifier, should be removed</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[I2C] I2C slave interrupt handling issue</td>
</tr>
<tr class="even">
<td style="text-align: left;">[I2C][MISRAC2012-Rule-2.2_c] Value assigned to variable `tmpITFlags’ is never used</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[I2C] Incorrectly enable interrupts in I2C_Enable_IRQ routine when InterruptRequest = I2C_XFER_CPLT_IT</td>
</tr>
<tr class="even">
<td style="text-align: left;">[I2C] HardFault in I2C_DMAXferCplt</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[I2C] Sequential transfer MAX_NBYTE_SIZE correspond to no reload</td>
</tr>
<tr class="even">
<td style="text-align: left;">[I2C] Correct compilation Warning: variable "tmp" was set but never used</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[I2C][CHM generation] <span class="citation" data-cites="ref">@ref</span> IS_xxx macro can’t be resolved since CMSIS file is not included</td>
</tr>
<tr class="even">
<td style="text-align: left;">[IWDG] LL - IWDG start-up timeout insufficiently low</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LPTIM] Digital filter for external clock should be configured also when LPTIM is clocked by an internal clock source</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LPTIM] <strong>LPTIM related EXTI interrupts should be handled from within the driver</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[PWR] <strong>HAL PVD API should me moved to extension file</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">[PWR] PWR_WAKEUP_PIN5 should be defined only if PWR_CR3_EWUP5 is defined</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RCC] RCC_CCIPR2_USBFSSEL renaming in RCC_CCIPR2_USBSEL</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RCC] Improve CHM/PDF Document generation</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RCC] LL - <strong>Add API LL_RCC_PLL_ConfigDomain_FDCAN(), LL_RCC_PLL_EnableDomain_FDCAN(), LL_RCC_PLL_DisableDomain_FDCAN()</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">[RCC] LL - STM32G0xx_ll_rcc.h bug with ADC clock selection</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RCC] LL - <strong>FW is missing some RCC LL defines for due to addition of RCC_CFGR_MCOPRE_3 &amp; RCC_CFGR_MCOSEL_3 bits</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">[RCC] HAL - stm32g0xx_hal_rcc_ex.h #if (macro) -&gt; #if defined(macro)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RCC] HAL [MISRA C 2012] Correction for new warning MISRAC2012-Rule-15.7</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RCC] <strong>RCC_CCIPR2_CK48MSEL renaming in RCC_CCIPR2_USBFSSEL</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RCC] [McuAStyle] - HAL and LL code update for obvious rules violation</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RTC] LL/HAL - Issue with ‘register’ storage class specifier, should be removed</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RCC] Constants <strong>RCC_CFGR_</strong> shall be removed from CMSIS</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RTC] wrong reference to RTC, use RTCx instead</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RTC] Correct RTC_HOURFORMAT12_PM definition</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RTC] Correction in HAL_RTC_GetAlarm() - wrong shift mask used to get TimeFormat</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RTC] Correction in HAL_RTCEx_TimeStampIRQHandler()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[SMARTCARD] HAL - No repetition after NACK is received in smartcard T=0</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SMARTCARD] remove SMARTCARD default PCLK1 clock source on USART2, since USART2 is a basic instance with no SMARTCARD.</td>
</tr>
<tr class="even">
<td style="text-align: left;">[SMBUS] Implement SMBus "wrong PEC" fix in driver</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SMBUS] [MISRAC2012] struct __SMBUS_HandleTypeDef is wrongly used in all static functions</td>
</tr>
<tr class="even">
<td style="text-align: left;">[SPI] Problematic timeout management inside SPI DMA xfer complete handler (interrupt context)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SPI] Correct problematic timeout management inside SPI DMA xfer complete handler (interrupt context)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[SPI] HAL - Issue in 3wires communication (Need Disable / Enable SPI</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SPI] HAL - BaudRatePrescaler: Assert must not be call in Slave Motorola mode + Add Mask</td>
</tr>
<tr class="even">
<td style="text-align: left;">[SPI] HAL - SPI Tx DMA request is disabled in Rx DMA transfer complete callback function</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SPI] HAL - [I2S] HAL_I2S_DMAStop doesn’t check the BSY flag as described in RM0390</td>
</tr>
<tr class="even">
<td style="text-align: left;">[SPI] HAL - MISRA C 2012 - regression on I2S</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SPI] HAL - HAL_SPI_Receive doesn’t work after HAL_SPI_Transmit in half-duplex mode</td>
</tr>
<tr class="even">
<td style="text-align: left;">[SPI] LL/HAL Issue with ‘register’ storage class specifier, should be removed</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SPI] SPI Tx DMA request is disabled in Rx DMA transfer complete callback function</td>
</tr>
<tr class="even">
<td style="text-align: left;">[SPI] SPI driver unaligned data</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SYSCFG-HAL]The function LL_SYSCFG_EnableDBATT() shall be removed</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM] All HAL_TIM_xxx_Start functions systematically access the TIMx_SMCR register even though the TIMx instance cannot be used as slave timer</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM] TIM DMA burst mode should be enhanced</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM] Wrong references to TIM_DMABASE_AF1 and TIM_DMABASE_AF2</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM] HAL_TIM_DMABurst_(Read/Write)Stop returns HAL_ERROR when called while DMA transfer is completed</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM] LL/HAL Issue with ‘register’ storage class specifier, should be removed</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM] LL - COUNTERMODE defines are inverted for TIM_CR1_CMS in ll_tim.h</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM] HAL - Order of disabling in <code>HAL_TIM_IC_Stop_DMA</code> function</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM] Wrong instance parameter check in encoder mode - Replace IS_TIM_CC2_INSTANCE by IS_TIM_ENCODER_INTERFACE_INSTANCE</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM] Correct RepetitionCounter value</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM] <strong>Provide API to set and clear UIFREMAP</strong></td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM] Remove <strong>Useless define in ll_tim.h</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM] Bug in HAL libraries when using multiple DMA request to different channels of same timer</td>
</tr>
<tr class="even">
<td style="text-align: left;">[UART] Implementation of HAL UART enhanced reception services (ReceptionToIdle) <strong>API update</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[UART] LL/HAL Issue with ‘register’ storage class specifier, should be removed</td>
</tr>
<tr class="even">
<td style="text-align: left;">[UART] HAL MISRA C 2012 - regression on UART</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[UART] HAL Rework BRR register value computation in HAL_UART_Init() for ROM size gain</td>
</tr>
<tr class="even">
<td style="text-align: left;">[UART] <strong>Add Receiver Timeout to UART HAL flags and IRQ macros</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;"><strong>New functions added</strong>:</td>
</tr>
<tr class="even">
<td style="text-align: left;">void HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">HAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart)</td>
</tr>
<tr class="even">
<td style="text-align: left;">HAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">New definition HAL_UART_ERROR_RTO, UART_FLAG_RTOF, UART_IT_RTO, UART_CLEAR_RTOF</td>
</tr>
<tr class="even">
<td style="text-align: left;">New macro IS_UART_RECEIVER_TIMEOUT_VALUE()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[UART] Deadlock scenario while mixing polling Transmit and IT Receive requests</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART] Fix typos introduced in some APIs descriptions</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[USART] [CHM documentation] <span class="citation" data-cites="ref">@ref</span> IS_xxx macro can’t be resolved since CMSIS file is not included</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART] LL/HAL Issue with ‘register’ storage class specifier, should be removed</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[USART][CHM documentation] <span class="citation" data-cites="ref">@ref</span> IS_xxx macro can’t be resolved since CMSIS file is not included</td>
</tr>
<tr class="even">
<td style="text-align: left;">[VREFBUF] G0 Family has only one VREBUF calibration point, Range 1</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[WWDG] HAL Correct header to improve PDF generation</td>
</tr>
<tr class="even">
<td style="text-align: left;">[UCPD] LL Allow UCPD HBIT Clock divider and prescaler configuration</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[UCPD] Change default values for CFGR1 registers</td>
</tr>
<tr class="even">
<td style="text-align: left;">[UCPD] Missing defines for UCPD in UM2570</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[UCPD] LL_UCPD_IMR_RXERR should be removed</td>
</tr>
<tr class="even">
<td style="text-align: left;">[UTILS] Turn <strong>UTILS_SetFlashLatency() into public function</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[UTILS] <strong>Rename UTILS_SetFlashLatency() into LL_SetFlashLatency()</strong></td>
</tr>
</tbody>
</table>
<h2 id="known-limitations-1">Known limitations</h2>
<ul>
<li>USB HAL limitation: Double buffer mode is not functional with isochronous data transfers in host mode.</li>
</ul>
<h2 id="development-toolchains-and-compilers-1">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.30.1</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.29</li>
<li>STM32CubeIDE toolchain v1.5.0</li>
</ul>
<h2 id="supported-devices-and-boards-1">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li><strong>STM32G0C1xx, STM32G0B1xx, STM32G0B0xx</strong></li>
<li><strong>STM32G061xx, STM32G051xx, STM32G050xx</strong></li>
<li>STM32G081xx, STM32G071xx, STM32G070xx</li>
<li>STM32G041xx, STM32G031xx, STM32G030xx</li>
</ul>
<h2 id="backward-compatibility-1">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
<h2 id="dependencies-1">Dependencies</h2>
<p><br />
</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true">V1.3.0 / 25-June-2019</label>
<div>
<h2 id="main-changes-2">Main Changes</h2>
<h3 id="maintenance-release">Maintenance release</h3>
<p>Maintenance release of HAL and Low layers drivers supporting STM32G041xx/STM32G031xx/STM32G030xx and STM32G081xx/STM32G071xx/STM32G070xx devices.</p>
<p><strong>Fixed bugs list</strong></p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">[FLASH HAL] Add Missing clear of End Of Operation flag in HAL FLASH_WaitForLastOperation() function</td>
</tr>
<tr class="even">
<td style="text-align: left;">[GPIO HAL] Correct issue on EXTI management in HAL_GPIO_DeInit()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[IWDG] Update comments ti improve document generation</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RNG HAL] Correct wrong bits used for Seed and Clock errors detection (CEI and SEI)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[RNG] Add new definition for RNG error type : HAL_RNG_ERROR_BUSY, HAL_RNG_ERROR_SEED, HAL_RNG_ERROR_CLOCK</td>
</tr>
<tr class="even">
<td style="text-align: left;">[RNG] Update comments area to reflect Data Ready status behavior</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SYSCFG LL] Correct wrong bit definition used for LL_SYSCFG_UCPD2_STROBE</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM HAL] Master Slave Mode (MSM) configurable: add <span class="citation" data-cites="note">@note</span> in TIM_MasterConfigTypeDef</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM HAL] Configure fast mode for One pulse mode: add new __HAL_TIM_DISABLE_OCxFAST() &amp; __HAL_TIM_ENABLE_OCxFAST() macros</td>
</tr>
<tr class="even">
<td style="text-align: left;">[TIM HAL] Configure IT for break and dead-time API: add <span class="citation" data-cites="note">@note</span> HAL_TIMEx_ConfigBreakDeadTime()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[TIM HAL] Remove useless uint16_t cast when clearing bit</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART/UART/IRDA/SMARTCARD HAL] Correction to avoid using macros with function calls as argument in PPP_SetConfig()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[USART/UART/IRDA/SMARTCARD HAL] Fix minor doxygen issues to improve CHM document generation</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART/UART/IRDA HAL] Improve API description in HAL_PPP_Transmit/Receive() and HAL_PPP_Transmit/Receive()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[IRDA/SMARTCARD HAL] In PPP_HandleTypeDef, ErrorCode field is now declared in volatile (__IO added)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART LL] Update Macros __LL_USART_DIV_SAMPLING8() and __LL_USART_DIV_SAMPLING16 to use uint32_t</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[USART LL] Change USART_PRESCALER_TAB[] table definition from uint16_t to uint32_t</td>
</tr>
<tr class="even">
<td style="text-align: left;">[USART LL] [MISRAC2012-Rule-18.1_b/d] array out of bounds in LL_USART_SetBaudRate()</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[SMARTCARD HAL] [MISRAC2012-Rule-13.5] The right-hand operand of a logical &amp;&amp; or || operator shall not contain side effects</td>
</tr>
</tbody>
</table>
<h2 id="development-toolchains-and-compilers-2">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25</li>
<li>System Workbench STM32 (SW4STM32) toolchain V2.7.2</li>
</ul>
<h2 id="supported-devices-and-boards-2">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G081xx, STM32G071xx, STM32G070xx</li>
<li>STM32G041xx, STM32G031xx, STM32G030xx</li>
</ul>
<h2 id="backward-compatibility-2">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
<h2 id="dependencies-2">Dependencies</h2>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true">V1.2.0 / 05-April-2019</label>
<div>
<h2 id="main-changes-3">Main Changes</h2>
<h3 id="maintenance-release-and-product-update-1">Maintenance release and product update</h3>
<p>First release of HAL and Low layers drivers to introduce support of <strong>STM32G041xx/STM32G031xx/STM32G030xx devices</strong>.</p>
<p>Maintenance release of HAL and Low layers drivers supporting STM32G081xx/STM32G071xx/STM32G070xx devices.</p>
<p><strong>Additional features</strong></p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">HAL, LL Drivers update to support STM32G041xx, STM32G031xx, STM32G030xx</td>
</tr>
</tbody>
</table>
<p><strong>Fixed bugs list</strong></p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">[HAL] Correct possible issue within HAL_SetTickFreq()function</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RCC] Use variable uwTickPrio instead TICK_INT_PRIORITY to not overwrite Tick priority</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL RCC] Use LL macro __LL_RCC_CALC_PCLK1_FREQ() in HAL_RCC_GetPCLK1Freq() to solve misra c 2012 issues</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL ADC] LL function LL_ADC_SetCommonFrequencyMode() is useless in STM32G0, kept for legacy purpose.</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL DAC] Rename HAL_DAC_MSP_INIT_CB_ID/HAL_DAC_MSP_DEINIT_CB_ID in HAL_DAC_MSPINIT_CB_ID/HAL_DAC_MSPDEINIT_CB_ID</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL DAC] Internal function DAC_DMAConvCpltCh1(), DAC_DMAErrorCh1(), DAC_DMAHalfConvCpltCh1() moved to hal_dac_ex.c</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL DAC] Use DAC driver define instead of CMSIS bit to check if software trigger enabled in HAL_DAC_Start()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL FLASH] HAL flash driver improvement : typo, comments correction, add U suffix, used CMSIS define instead of hard coded value, use HAL macro instead of direct register access</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL FLASH] Clear FLASH_IT_ECCC flag when disabling End of Operation and Error interrupts in HAL_FLASH_IRQHandler()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL GPIO] Correct compilation warning with new IAR 8.30.1 in IS_GPIO_PIN() macro</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL GPIO] Enhance re-entrance robustness for HAL_GPIO_TogglePin() API</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL PWR] Correct definition of LL_PWR_MODE_STOP0 and LL_PWR_MODE_STOP1</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL PWR] Correct definition of registers address-based accesses, which MUST be volatile</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RTC] Add management of INITF flag rising occurrence too early when entering init mode</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL RTC] Correct WUTWF flag management in HAL_RTCEx_SetWakeUpTimer() API</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RTC] Rename RTC_IT_MASK into RTC_FLAG_MASK</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL RTC] Replace hard coded values by CMSIS _Pos definition</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL TIM] Align DMA Burst defines with the reference manual: Add TIM_DMABASE_TISEL definition</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL TIM] Remove parenthesis on REG parameter in LL_LPTIM_WriteReg() and LL_LPTIM_ReadReg() to avoid compilation failure after MISRA correction</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL DMA] Add clean of Callbacks in HAL_DMA_DeInit() and remove it from HAL_DMA_Init()</td>
</tr>
</tbody>
</table>
<h2 id="development-toolchains-and-compilers-3">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.20.2</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.25</li>
<li>System Workbench STM32 (SW4STM32) toolchain V2.7.2</li>
</ul>
<h2 id="supported-devices-and-boards-3">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G081xx, STM32G071xx, STM32G070xx</li>
<li><strong>STM32G041xx, STM32G031xx, STM32G030xx</strong></li>
</ul>
<h2 id="backward-compatibility-3">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
<h2 id="dependencies-3">Dependencies</h2>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true">V1.1.0 / 06-February-2019</label>
<div>
<h2 id="main-changes-4">Main Changes</h2>
<h3 id="maintenance-release-and-product-update-2">Maintenance release and product update</h3>
<p>Maintenance release of HAL and Low layers drivers to support STM32G071xx/STM32G081xx/STM32G070xx devices.</p>
<p><strong>Additional features</strong></p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">MISRAC2012 implementation in CEC/CRYP/WWDG/RNG/I2S/SPI/UTILS/IWDG/USART/UART/I2C</td>
</tr>
</tbody>
</table>
<p><strong>Fixed bugs list</strong></p>
<table>
<thead>
<tr class="header">
<th style="text-align: left;">Headline</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">[LL ADC] compilation warning in stm32g0xx_ll_adc.h with MDK-ARM</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL ADC] Wrong commentary in stm32g0xx_ll_adc.h</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL ADC] missing to fill ADC_CFGR2_CKMODE in LL_ADC_Init ()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL ADC] redefinition of registers address MUST be volatile (_IO)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL ADC] Potential infinite wait in while loop of LL_ADC_DeInit()</td>
</tr>
<tr class="even">
<td style="text-align: left;">[ADC] Embedded SW code comments or document must use ‘’Peripheral’’ rather than ‘’IP’’</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL COMP] redefinition of registers address MUST be volatile (_IO)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL CYRP] Support several call to decrypt API without initialize Key and IVR - <strong>API update</strong></td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL CRYP] Add possibility to not set key in HAL CRYP interface</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL DMA] IS_LL_DMA_PERIPHREQUEST macro is not aligned with the max number of request</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[FLASH][MISRAC2012-Rule-8.5_b] Multiple declarations of externally-linked object</td>
</tr>
<tr class="even">
<td style="text-align: left;">[FLASH]Program DoubleWord fails (PGAERR) when using STRD assembly instruction</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[I2C][MISRAC2012] MISRAC2012-Rule-2.2c and 17.8 when ITFlags is modified</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL I2C] Issue using HAL_I2C_Slave_Sequential_Receive_DMA, STOPF arrives too early versus DMA cplt message</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL RCC] Correct EXTERNAL_CLOCK_VALUE</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RCC][CodeSonar] HAL_RCCEx_GetPeriphCLKFreq - Useless Assignment</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[HAL RCC] MCU hangs after some stop/wakeup cycles</td>
</tr>
<tr class="even">
<td style="text-align: left;">[HAL RCC] __HAL_RCC_PLLxx_CONFIG() macros shall preserve output clock(s) enable state</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL UART][CodeSonar] Cast alter value (LL_LPUART_ReceiveData8)</td>
</tr>
<tr class="even">
<td style="text-align: left;">[LL UART][CodeSonar] Uninitialized Variable (LL_LPUART_GetBaudRate)</td>
</tr>
<tr class="odd">
<td style="text-align: left;">[LL USART][CodeSonar] Cast alter value (LL_USART_ReceiveData8)</td>
</tr>
</tbody>
</table>
<h2 id="supported-devices-and-boards-4">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G0<strong>81</strong>xx</li>
<li>STM32G0<strong>71</strong>xx</li>
<li>STM32G0<strong>70</strong>xx</li>
</ul>
<h2 id="backward-compatibility-4">Backward Compatibility</h2>
<p>This release is compatible with the previous versions.</p>
<h2 id="dependencies-4">Dependencies</h2>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true">V1.0.0 / 26-October-2018</label>
<div>
<h2 id="main-changes-5">Main Changes</h2>
<h3 id="first-release">First release</h3>
<p>First official release of HAL and Low layers drivers to support STM32G071xx/STM32G081xx/STM32G070xx</p>
<h2 id="supported-devices-and-boards-5">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32G0<strong>81</strong>xx</li>
<li>STM32G0<strong>71</strong>xx</li>
<li>STM32G0<strong>70</strong>xx</li>
</ul>
<h2 id="dependencies-5">Dependencies</h2>
</div>
</div>
</div>
</div>
<footer class="sticky">
<p>For complete documentation on <strong>STM32 Microcontrollers</strong>, visit: <a href="http://www.st.com/STM32">http://www.st.com/STM32</a></p>
<p>This release note uses up to date web standards and, for this reason, should not be opened with Internet Explorer but preferably with popular browsers such as Google Chrome, Mozilla Firefox, Opera or Microsoft Edge.</p>
</footer>
</body>
</html>