<p>The projects are a set of applicative tasks that aim to explain and provide use cases of the different products features based on the products hardware (Boards, STM32 Core(s) features, interconnections and peripherals) and built around the different firmware components. They can be directly used or adapted by the STM32CubeF2 Firmware Package users. They provide basic functionalities, show main features or demonstrate performance. They are provided with preconfigured projects for the main supported toolchains.</p>
<p>In the STM32CubeF2 Firmware Package, the projects are organized in a sequential scheme based on the following levels:</p>
<p>The Project Class refers to the main peripherals (drivers), middleware libraries or BSP classes while the projects Subclass stands for a project specific feature within a class.</p>
<p>The exhaustive list of projects is provided in this table: <ahref="STM32CubeProjectsList.html">STM32CubeProjectsList</a>.</p>
<li>Replace hard-coded page end address by a variable in EE_VerifyPageFullyErased() to consider both PAGE 0 and PAGE 1 instead of only PAGE 0 in EEPROM emulation application.</li>
<li>Add <strong>EEPROM application</strong> running on STM322xG-EVAL
<ul>
<li>This application describes the software solution for substituting standalone EEPROM by emulating the EEPROM mechanism using the on-chip Flash of STM32F2xx devices.</li>
</ul></li>
<li>Add <strong>IAP application</strong> running on STM322xG-EVAL
<ul>
<li>This application describes how to be loaded into Flash memory using In-Application Programming (IAP, through USART).</li>
</ul></li>
<li>Update MbedTLS applications to be compliant with new MbedTLS architecture</li>
<li>Update FreeRTOS applications to be compliant with new FreeRTOS architecture</li>
<li>Update STemWin applications to be compliant with new STemWin architecture</li>
<li>Update USB HOST projects to be compliant with USB Host Stack V3.3.3
<ul>
<li>Add the following USB callback in usbh_conf.c user file:
<ul>
<li>HAL_HCD_PortEnabled_Callback()</li>
<li>HAL_HCD_PortDisabled_Callback()</li>
</ul></li>
</ul></li>
<li>Update USB Device projects for <strong>207xx/217xx</strong> devices to be compliant with USB Device V2.5.3
<ul>
<li>USB HS mode isn’t supported by these STM32 devices</li>
</ul></li>
<li>Update USB device applications by adding a UNUSED() macro in the following API on file usbd_desc.c files in order to avoid compilation warnings with EWARM 8.30
<ul>
<li>USBD_DFU_DeviceDescriptor()</li>
<li>USBD_DFU_LangIDStrDescriptor()</li>
<li>USBD_DFU_ManufacturerStrDescriptor()</li>
<li>USBD_DFU_SerialStrDescriptor()</li>
</ul></li>
<li>Remove useless setting of ep0_mps in usbd_conf.c file for USB device applications</li>
</ul></li>
<li><p><strong>Examples</strong></p>
<ul>
<li>Update CAN examples to support new HAL CAN driver.</li>
<li>Update HAL CRYP examples to be aligned with new HAL CRYP drivers</li>
<li>Update HAL I2C examples to be compliant with new I2C API</li>
<li>Rework GPIO_InfiniteLedToggling_Init LL example to use GPIO initialization structure for GPIO configuration instead of LL inline macros</li>
<li>Update DMA FIFO Mode examples to use HAL DMA registers Callback API to register the different DMA transfer Callbacks</li>
<li>STemWin sample demo application on STM322xG_EVAL is not fully functional with MDK-ARM toolchain: the application doesn’t run successfully after the second hit of the Hide Button. in fact when pressing the button again while the progress bar displays the next steps, pressing Hide or Next Buttons are not working anymore</li>
</ul>
<h2id="development-toolchains-and-compilers-3">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V7.80.1</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.23</li>
<li>STemWin sample demo application on STM322xG_EVAL is not fully functional with MDK-ARM toolchain: the application doesn’t run successfully after the second hit of the Hide Button. in fact when pressing the button again while the progress bar displays the next steps, pressing Hide or Next Buttons are not working anymore.</li>
</ul>
<h2id="development-toolchains-and-compilers-4">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V7.80.1</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.23</li>
<li>Add the support System Workbench for STM32 (SW4STM32) toolchain</li>
<li>All projects updated following changes in latest version of HAL and Middlewares</li>
<li>Add 17 new applications:
<ul>
<li>FatFs_USBDisk_MultipleAccess_RTOS</li>
<li>LwIP_HTTP_Server_Socket_RTOS</li>
<li>LWIP_IAP</li>
<li>LWIP_TFTP_Server</li>
<li>LibJPEG_Decoding</li>
<li>LibJPEG_Encoding</li>
<li>PolarSSL_Client</li>
<li>PolarSSL_Server</li>
<li>USB_Device_Standalone</li>
<li>USB_Device_Standalone</li>
<li>USB_Device_Standalone</li>
<li>USB_Host_Standalone</li>
<li>USB_Host_Standalone</li>
<li>USB_Host_Standalone</li>
<li>USB_Host_RTOS</li>
<li>USB_Host_RTOS</li>
<li>USB_Host_Standalone</li>
</ul></li>
<li>Miscellaneous enhancements</li>
<li>Force initialization of all PPP Init structure’s field before calling HAL_PPP_Init() API</li>
<li>Common update for all Applications
<ul>
<li>Update EWARM startup file for all projects to cope with compiler enhancement of the V7.x version</li>
<li>Update “stm32f2xx_hal_conf.h” to be in line with HAL V1.1.0: add new defines LSI_VALUE, LSE_VALUE and TICK_INT_PRIORITY</li>
<li>Update “stm32f2xx_it.c”: add the include of “main.h” before the “stm32f2xx_it.h”, in order to provide access to CMSIS device file via “stm32f2xx_hal.h”</li>
</ul></li>
<li>All <strong>FreeRTOS</strong> based applications: update SysTick_Handler() ISR function in “stm32f2xx_it.c” and update the value of INCLUDE_xTaskGetSchedulerState to 1 in “FreeRTOSConfig.h”. This update is needed to avoid conflict between the HAL action on the SysTick when the FreeRTOS is used; we need to ensure that FreeRTOS scheduler has started before incrementing the tick. Below the updated applications:
<ul>
<li>FatFs_RAMDisk_RTOS</li>
<li>FatFs_USBDisk_RTOS</li>
<li>FatFs_uSD_RTOS</li>
<li>FreeRTOS_LowPower</li>
<li>FreeRTOS_Mutexes</li>
<li>FreeRTOS_Queues</li>
<li>FreeRTOS_Semaphore</li>
<li>FreeRTOS_SemaphoreFromISR</li>
<li>FreeRTOS_ThreadCreation</li>
<li>FreeRTOS_Timers</li>
<li>LwIP_HTTP_Server_Netconn_RTOS</li>
<li>LwIP_UDPTCP_Echo_Server_Netconn_RTOS</li>
</ul></li>
<li><strong>LwIP</strong> applications Update
<ul>
<li>Add TrueSTUDIO workspaces for the LwIP_HTTP_Server_Netconn_RTOS application</li>
<li>Remove ARP timer initialization and callback from “ethernetif.c” file for the following applications using RTOS
<ul>
<li>LwIP_HTTP_Server_Netconn_RTOS</li>
<li>LwIP_UDPTCP_Echo_Server_Netconn_RTOS</li>
</ul></li>
<li>Add the management of timeout based on systick for polling process in “ethernetif.c” file for all LwIP applications</li>
<li>Remove the MCO configuration (PA8) from HAL_ETH_MspInit() function for all LwIP applications</li>
<li>readme.txt: add reference to the SW tools needed to run each application</li>
<li>fix issue of handling Ethernet Rx DMA descriptors (the application don’t give the Rx descriptors ownership to DMA if it fails to allocate memory for a received packet)</li>
<li>LwIP applications based on FreeRTOS: fix Ethernet reception deadlock issue, it was due to unavailable RX descriptors owned by DMA caused when receiving many frames with the same interrupt</li>
<li>LWIP_TCP_Echo_Client application clean up: remove the unnecessary call of memp_free() in tcp_echoclient_connect() function of tcp_echoclient.c file</li>
</ul></li>
<li><strong>STemWin</strong> applications Update
<ul>
<li>Update all STemWin applications following the use of new version V5.28 (update path and files names and miscellaneous update in the application sources)</li>
<li>Update touch process in all applications, use different timer instead of SysTick for the BSP_Background task</li>
<li>Add “stm32f2xx_hal_flash_ex.c” file in project tree for EWARM workspace</li>
</ul></li>
<li><strong>USB_HOST</strong> applications Update
<ul>
<li>Update the value of stack and heap in all workspaces</li>
<li>Remove vbus_sensing_enable from USBH_LL_Init()</li>
<li>Following latest update in USB Host Library V3.2.2; in all RTOS based application, “usbh_conf.h” file has been added as follows: #if (USBH_USE_OS == 1) #include “cmsis_os.h” #define USBH_PROCESS_PRIO osPriorityNormal #define USBH_PROCESS_STACK_SIZE (8 * configMINIMAL_STACK_SIZE) #endif</li>
</ul></li>
<li><strong>HID_Standalone</strong> application
<ul>
<li>In “usbd_conf.c” file: add a delay in connection callback to avoid connection issue when using old mouse</li>
<li>Update the value of stack and heap in all workspaces</li>
<li>Following latest change in HAL V1.1.0, add “stm32f2xx_hal_pcd_ex.c” file in the files list of all projects</li>
<li>Update done in all applications
<ul>
<li>All the processes using PCD handle are moved to” usbd_conf.c”</li>
<li>Align with latest change in HAL Delay management: remove SysTick IT priority setting and set instead TICK_INT_PRIORITY to 0 in “stm32f2xx_hal_conf.h”</li>
<li>Use device unique number to compute the USB serial number string descriptor</li>
<li>In “main.c” file : when calling USBD_RegisterClass() function use USBD_XXX_CLASS instead &USBD_XXX (XXX refer to the name of Class)</li>
</ul></li>
</ul></li>
<li><strong>HID_Standalone</strong> application
<ul>
<li>Move EXTI callback function to “usbd_conf.c” file</li>
<li>In MspInit() function; remove wakeup line configuration, since it’s done in latest version of HAL V1.1.0 drivers</li>
</ul></li>
<li><strong>AUDIO_Standalone</strong> application
<ul>
<li>Add LED initialization after SystemClock_Config() function</li>
<li>Uses the buffer size in byte instead of half-word when calling the BSP_AUDIO_OUT_Play() function</li>
</ul></li>
</ul></li>
<li><strong>Examples</strong>
<ul>
<li>Add the support System Workbench for STM32 (SW4STM32) toolchain</li>
<li>All projects updated following changes in latest version of HAL and Middlewares</li>
<li>Add 29 new Examples:
<ul>
<li>ADC_InjectedConversion_Interrupt</li>
<li>ADC_RegularConversion_DMA</li>
<li>ADC_RegularConversion_Interrupt</li>
<li>ADC_TripleModeInterleaved</li>
<li>CAN_LoopBack</li>
<li>CRYP_AES_DMA</li>
<li>CRYP_TDES_DMA</li>
<li>DCMI_SnapshotMode</li>
<li>DMA_FIFOMode</li>
<li>HAL_TimeBase</li>
<li>HASH_HMAC_SHA1MD5</li>
<li>PWR_BOR</li>
<li>PWR_PVD</li>
<li>RTC_Alarm</li>
<li>RTC_TimeStamp</li>
<li>SMARTCARD_T0</li>
<li>TIM_6Steps</li>
<li>TIM_7PWMOutput</li>
<li>TIM_CascadeSynchro</li>
<li>TIM_ComplementarySignals</li>
<li>TIM_DMABurst</li>
<li>TIM_Encoder</li>
<li>TIM_ExtTriggerSynchro</li>
<li>TIM_InputCapture</li>
<li>TIM_OCActive</li>
<li>TIM_OCInactive</li>
<li>TIM_OCToggle</li>
<li>TIM_ParallelSynchro</li>
<li>UART_Hyperterminal_IT</li>
</ul></li>
<li>Common update for all Examples
<ul>
<li>Update EWARM startup file for all projects to cope with compiler enhancement of the V7.x version</li>
<li>Update “stm32f2xx_hal_conf.h” to be in line with HAL V1.1.0: add new defines LSI_VALUE, LSE_VALUE and TICK_INT_PRIORITY</li>
<li>Update “stm32f2xx_it.c”: add the include of “main.h” before the “stm32f2xx_it.h”, in order to provide access to CMSIS device file via “stm32f2xx_hal.h”</li>
<li>Force initialization of all PPP Init structure’s field before calling HAL_PPP_Init() API</li>
</ul></li>
<li>CRYP examples: update to initialize the new filed ‘Instance’</li>
<li>ADC_TriggerMode: update to set ADC_EOC_SEQ_CONV value instead of ENABLE as EOCSelection parameter</li>
<li>BSP Example: remove the call of BSP_EEPROM_WaitEepromStandbyState() function, it’s not useful to be called by the application code (now it’s declared as static function within the EEPROM BSP driver)</li>
<li>FLASH_EraseProgram:
<ul>
<li>Add a note about the need to flush the data and/or instruction cache after Sector Erase operation, if they was previously enabled</li>
<li>Update to reset data and instruction cash memories after flash erase</li>
</ul></li>
<li>CORTEXM_ModePrivilege: add ISB instruction to flush the pipeline after MSR instruction to modify CONTROL register</li>
<li>I2S_Audio
<ul>
<li>Retrieve audio data from a storage unit (Internal Flash for Instance) through an explicit GetData method. Can be easily adapted to use data from any storage unit (USB, uSD…)</li>
<li>Use an elastic buffer to manage double buffer mechanism using the DMA circular mode and the half and complete transfer callbacks</li>
<li>Use the buffer size in byte instead of half-word when calling the BSP_AUDIO_OUT_Play() function</li>
<li>Miscellaneous update</li>
</ul></li>
<li>UART_HyperTerminal_DMA
<ul>
<li>update following the change done in UART driver to fix the DMA transmit process (the code has been updated to avoid waiting on TC flag under DMA ISR, UART TC interrupt is used instead):</li>
<li>in stm32f2xx_hal_msp.c file, configure and enable the USART IRQ in HAL_UART_MspInit() function</li>
<li>In stm32f2xx_it.c file, USARTx_IRQHandler() function: add a call to HAL_UART_IRQHandler() function</li>
<li>Add display on the Hyperterminal of the actions that need to be done by user</li>
</ul></li>
<li>PWR_STANDBY
<ul>
<li>Update to avoid configuring the RTC each time the device resumes from Standby mode, since the RTC configuration is kept in Standby mode.</li>
<li>Add safety wake up sequence by following errata sheet recommendation</li>
<li>Add enable backup domain before clearing RTC flags</li>
</ul></li>
<li>PWR_CurrentConsumption: update following latest change in HAL V1.2.0
<ul>
<li>SleepMode_Measure(): add HAL_SuspendTick() function before entering in Sleep mode and add HAL_ResumeTick() after exit from this mode</li>
<li>StandbyMode_Measure(), StandbyRTCMode_Measure() and StandbyRTCBKPSRAMMode_Measure(): update STANDBY mode entry sequence as follows:
<ul>
<li>Disable all used wakeup sources</li>
<li>Clear all related wakeup flags</li>
<li>Re-enable all used wakeup sources</li>
<li>Enter the standby mode</li>
</ul></li>
<li>Update to call the BSP_PB_Init() function outside the waiting loop</li>
</ul></li>
<li>RCC_ClockConfig
<ul>
<li>In main.c file : add the default HSI calibration value “RCC_OscInitStruct.HSICalibrationValue = 0x10;” in function SystemClockHSI_Config()</li>
</ul></li>
<li>TIM_PWMInput: change the name of example from “TIM_PWMIntput” to “TIM_PWMInput”<br/>
</li>
<li>TIM_TimeBase:
<ul>
<li>In main.c file: initializes the LEDs before using them</li>
<li>In main.c file: remove the following duplicated line “uwPrescalerValue = (uint32_t)((SystemCoreClock /2)/10000)-1;”</li>
</ul></li>
<li>Miscellaneous update on BSP, MPU and RTC Tamper examples</li>
</ul></li>
<li><strong>Templates</strong>
<ul>
<li>Add the support System Workbench for STM32 (SW4STM32) toolchain</li>
<li>Update EWARM startup file to cope with compiler enhancement of the V7.x version</li>
<li>Update “stm32f2xx_hal_conf.h” to be in line with HAL V1.2.0: add new defines LSI_VALUE, LSE_VALUE and TICK_INT_PRIORITY</li>
<li>Update “stm32f2xx_it.c” : add the include of “main.h” before the “stm32f2xx_it.h”, in order to provide access to CMSIS device file via “stm32f2xx_hal.h”</li>
<li>TrueSTUDIO projects are not provided for a few Applications</li>
<li>The LCD ili9320 mounted on previous versions of the STM322xG_EVAL board will be supported in a future version of the STM32Cube F2 FW package (V1.1.0)</li>
</ul>
<h2id="development-toolchains-and-compilers-8">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V6.70.2 + ST-Link</li>
<li>RealView Microcontroller Development Kit (MDK-ARM toolchain v4.73)</li>
<p>For complete documentation on <mark>STM32 Microcontrollers</mark> , visit: <spanstyle="font-color: blue;"><ahref="http://www.st.com/STM32">www.st.com</a></span></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>