# Release Notes for STM32F10x Standard Peripherals Library (StdPeriph_Lib) Copyright 2011 STMicroelectronics
## Contents STM32F10x Standard Peripherals Library update History License ## STM32F10x Standard Peripherals Library update History ### V3.5.0 / 08-April-2011 Main Changes Specific system_stm32f10x.c file provided for each example HTML file containing the examples list, with main features, provided in the root folder (allow search on key word/feature) Template projects updated to save configuration time and easy the examples use Refreshed example list vs. previous version: Add two new Examples: MPU and TIM DMA Burst xWDG examples enhanced, ex. accurate IWDG timeout thanks to LSI freq measure w/ Timer NVIC and SysTick examples enhanced to provide more details how to use them w/ CMSIS layer Contents ARM CM3 CMSIS V1.30 (release notes) STM32F10x CMSIS V3.5.0 (release notes) STM32F10x_StdPeriph_Driver V3.5.0 (release notes) STM32F10x_StdPeriph_Examples V3.5.0 (release notes) STM32F10x_StdPeriph_Template V3.5.0 (release notes) STM32_EVAL V4.5.0 (release notes) Development Toolchains and Compilers IAR Embedded Workbench for ARM (EWARM) toolchain V5.50.5 Hitex IDE/Debugger (HiTOP) toolchain V5.40.0051 RealView Microcontroller Development Kit (MDK-ARM) toolchain V4.13 Raisonance IDE RIDE7 (RIDE) toolchain (RIDE7 IDE:7.30.10, RKitARM for RIDE7:1.30.10) Atollic TrueSTUDIO STM32 (TrueSTUDIO) toolchain V1.4.0 ### 3.4.0 - 10/15/2010 General Add support for STM32F10x High-density Value line devices. Add 3 examples: FSMC OneNAND, I2C TSENSOR (Temperature Sensro) and I2C IOExpander. Utilities STM32 EVAL drivers enhancements: I2C EEPROM, Temperature Sensor and IO Expander drivers updated to use the DMA for read/write transfer and add more robustness. SD Card (SDIO) driver updated to add more robustness. Libraries CMSIS See Release Notes for STM32F10x CMSIS STM32F10x_StdPeriph_Drive r See Release Notes for STM32F10x_StdPeriph_Driver Project STM32F10x_StdPeriph_Examples See Release Notes for STM32F10x_StdPeriph_Examples STM32F10x_StdPeriph_Template See Release Notes for STM32F10x_StdPeriph_Template Utilities STM32_EVAL See Release Notes_for_STM32_EVAL ### 3.3.0 - 04/16/2010 General Add support for STM32F10x XL-density devices. Add template project for TrueSTUDIO toolchain. Libraries CMSIS See Release Notes for STM32F10x CMSIS STM32F10x_StdPeriph_Drive r See Release Notes for STM32F10x_StdPeriph_Driver Project STM32F10x_StdPeriph_Examples See Release Notes for STM32F10x_StdPeriph_Examples STM32F10x_StdPeriph_Template See Release Notes for STM32F10x_StdPeriph_Template Utilities STM32_EVAL See Release Notes_for_STM32_EVAL ### 3.2.0 - 03/01/2010 General Add support for STM32 Low-density Value line (STM32F100x4/6) and Medium-density Value line (STM32F100x8/B) devices. New CMSIS V1.30 release Libraries CMSIS See Release Notes for STM32F10x CMSIS STM32F10x_StdPeriph_Drive r See Release Notes for STM32F10x_StdPeriph_Driver Project STM32F10x_StdPeriph_Examples See Release Notes for STM32F10x_StdPeriph_Examples STM32F10x_StdPeriph_Template See Release Notes for STM32F10x_StdPeriph_Template Utilities STM32_EVAL See Release Notes for STM32F10x_StdPeriph_Utilities ### V3.1.2 - 09/28/2009 General Add support for Hitex Development Tools HiTOP. Libraries CMSIS system_stm32f10x.c: SetSysClockTo56() function, change the flash latency to 2 instead of 1 STM32F10x_StdPeriph_Drive r stm32f10x_tim.c: in TIM_OCxInit() functions, add new instruction to set the CCxS bits (x= 1, 2, 3, 4) to 0, i.e. the channel CCx is configured as output. In the previous version these functions was assuming that the CCxS bits are reset; if a channel was previously configured in input, a call to this function doesn't allow using it in output mode. This is resolved with this modification. stm32f10x_spi.h: I2S_InitTypeDef structure, change the type of I2S_AudioFreq field to uint32_t instead of uint16_t. This modification is needed to support I2S 96KHz frequency (available in Connectivity Line devices). stm32f10x_flash.c: FLASH_EraseOptionBytes() function, add note to clarify this function behavior. Project STM32F10x_StdPeriph_Examples I2C\EEPROM example i2c_ee.c: I2C_EE_BufferRead() function, the following line was removed /* Clear EV6 by setting again the PE bit */ I2C_Cmd(I2C_EE, ENABLE); RCC example main.c: SetSysClockTo56() function, change the flash latency to 2 instead of 1 Template Add template projects for HiTOP toolchain to support Medium-density (Template\HiTOP\STM3210B-EVAL), High-density (Template\HiTOP\STM3210E-EVAL) and Connectivity line (Template\HiTOP\STM3210C-EVAL) devices. ### V3.1.0 - 06/19/2009 General Update to support the additional peripherals and features embedded in the STM32F10x Connectivity Line devices. Doxygen documentation enhanced to give more detail about driver function’s parameters: description, allowed values and required preconditions. This is mainly relevant for peripheral initialization structure’s members (PPP_InitTypeDef). C++ support Libraries CMSIS stm32f10x.h Add new define STM32F10X_CL to configure the library for Connectivity Line devices (default configuration) Interrupt Number Definition (IRQn) Add definition for Connectivity Line devices peripheral’s interrupts For STM32 Low Density Devices, the SPI2_IRQn was removed since there is no SPI2 in these devices. Add register's definitions, bits definitions and memory mapping for new peripherals (Ethernet and CAN2) RCC, DBGMCU, EXTI, CAN, GPIO and AFIO bits definitions updated AFIO_MAPR_SPI1 _REMAP define declaration corrected to AFIO_MAPR_SPI1_REMAP Tailor HSE_Value to the to the selected device system_stm32f10x.c Clock configuration functions updated to support Connectivity line devices Change SetSysClockTo20 function to SetSysClockTo24 startup Add new startup files startup_stm32f10x_cl.s for Connectivity Line devices For STM32 Low Density Devices, the SPI2_IRQHandler was removed since there is no SPI2 in these devices. Use CMSIS Core Peripheral Access Layer V1.20 STM32F10x_StdPeriph_Driver CAN: update to support CAN2 peripheral, with no impact on the API Add new instance CAN2 Filter number updated Add new function CAN_SlaveStartBank RCC: update to support Connectivity Line devices, with no impact on the API RCC_DeInit and RCC_GetSYSCLKSource functions updated Function’s parameters list updated Add new functions RCC_PREDIV1Config, RCC_PREDIV2Config RCC_PLL2Config, RCC_PLL2Cmd RCC_PLL3Config, RCC_PLL3Cmd RCC_OTGFSCLKConfig RCC_I2S2CLKConfig, RCC_I2S3CLKConfig RCC_AHBPeriphResetCmd RCC_APB2Periph_ALL and RCC_APB1Periph_ALL parameters removed GPIO Update GPIO_PinRemapConfig function with 4 new AF remap Add new function GPIO_ETH_MediaInterfaceConfig EXTI Add new internal EXTI Line 19 connected to ETH wakeup DBGMCU Add new define DBGMCU_CAN2_STOP DAC Add new define DAC_Trigger_T3_TRGO (to be used instead of DAC_Trigger_T8_TRGO, since TIM8 not available in Connectivity Line devices) SPI/I2S I2S_Init function updated to support new clock scheme implemented in Connectivity Line devices Update I2S_AudioFreq defines to support frequency up to 96 KHz FLASH Update FLASH_EnableWriteProtection function header and parameter list to support Connectivity Line devices Project STM32F10x_StdPeriph_Examples Almost examples updated to run on Connectivity Line devices and STMicroelectronics STM3210C-EVAL evaluation board. Refer to the readme file provided within each example for more information on how to use the example with a specific board. TIM: add new example TIM_Input_Capture I2C: M24C08_EEPROM example renamed to EEPROM Template Template projects for EWARMv5, RIDE and RVMDK updated to support Connectivity Line devices and STMicroelectronics STM3210C-EVAL evaluation board. Utilities Implement a new abstraction layer to interact with the Human Interface resources; buttons, LEDs, LCD and COM ports (USARTs) available on STMicroelectronics STM3210C-EVAL (Connectivity line), STM3210E-EVAL (High-Density) and STM3210B-EVAL (Medium-Density) evaluation boards. The stm32_eval.c driver provides a common API to interact with buttons, LEDs and COM ports, while these resources hardware definitions is made in the header file of each evaluation board (stm3210x_eval.h). A common API is provided to manage the LCD across the supported boards, with a separate driver for each board stm3210x_eval_lcd.c. ### V3.0.0 - 04/06/2009 General STM3210x FW Library renamed to STM32F10x Standard Peripherals Library (StdPeriph_Lib) STM32F10x Standard Peripherals Library is full CMSIS compliant STM32F10x Standard Peripherals Library Structure is updated. STM32F10x Standard Peripherals Package Architecture is enhanced STM32F10x Standard Peripherals Library User Manual with *.chm format library CAN driver updated CAN driver was updated to support STM32F10xxx connectivity line products. CAN peripheral was renamed as CAN1. All occurrences related to CAN were also renamed as CAN1 in the different drivers. I2C driver I2C event assert macro missing in stm32f10x_i2c.h file. DBGMCU Wrong defines in stm32f10x_dbgmcu.h: DBGMCU_TIM5_STOP, DBGMCU_TIM6_STOP, DBGMCU_TIM7_STOP and DBGMCU_TIM8_STOP defines values are wrong. FSMC Remove the FSMC AddressLowMapping configuration examples FSMC NOR driver Timings are updated. Add CAN "Normal" example TIM "6Steps" example wave forms updated NVIC "CM3_LPModes" and "System_Handlers" examples removed For more details, please refer to AN2953 "How to migrate from the STM32F10xxx firmware library V2.0.3 to the STM32F10xxx standard peripheral library V3.0.0". ### V2.0.3 - 09/22/2008 General stm32f10xfwlib_contents_html file updated: Description of firmware library package content Easy-to-use firmware library examples: add description of how to use the project template to run the selected example library stm32f10x_map.h: add all STM32 Hardware registers bits definitions stm32f10x_conf.h: add a define for HSEStartUp_TimeOut stm32f10x_fsmc.h/.c: FSMC_MemoryType_CRAM is changed to FSMC_MemoryType_PSRAM FSMC_AsyncWait member removed from FSMC_NORSRAMInitTypeDef structure FSMC_BusTurnAroundDuration parameter removed in case of write configuration stm32f10x_rcc.h/.c: RCC_FLAG_HSIRDY define value changed to 0x21. StartUpCounterand HSEStatus variables are now local for RCC_WaitForHSEStartUp function. stm32f10x_i2c.h/.c: Add new event: EV8: I2C_EVENT_MASTER_BYTE_TRANSMITTING stm32f10x_tim.c: "=" operator changed to "|=" inside TIM_SelectOCxM function stm32f10x_can.c: Definitions names changed examples I2C Interrupt example Example updated according to I2C driver update I2C M24C08_EEPROM example i2c_ee.c file: add a loop on I2C_FLAG_BUSY in I2C_EE_PageWrite and I2C_EE_BufferRead functions i2c_ee.c file: add STOP condition in I2C_EE_WaitEepromStandbyState function SDIO example Example updated to support SD Card V2.0 and SD High Capacity cards. USART Polling example USART TC flag check changed by USART TXE flag check ### V2.0.2 - 07/11/2008 library stm32f10x_spi.c /.h SPI_I2S_ClearFlag function: some flags are removed from the possible flags parameters list. This function can clear only CRCERR flag. SPI_I2S_ClearITPendingBit function: some pending bits are removed from the possible pending bits parameters list. This function can clear only CRCERR pending bit. stm32f10x_i2c.c /.h I2C_ClearFlag function: some flags are removed from the possible flags parameters list. This function can clear only SMBALER, TIMEOUT, PECERR, OVR, AF, ARLO and BERR flags. The passed parameter can be any combination of above flags. I2C_GetITStatus function checks on interrupt pending bit and the interrupt enable bit. I2C_ClearITPendingBit function: some pending bits are removed from the possible pending bits parameters list. This function can clear only SMBALER, TIMEOUT, PECERR, OVR, AF, ARLO and BERR pending bits. The passed parameter can be any combination of above pending bits. stm32f10x_usart.c /.h USART_ClearFlag function: some flags are removed from the possible flags parameters list. This function can clear only CTS, LBD, TC and RXNE flags. USART_GetITStatus function: IS_USART_IT macro is changed to IS_USART_GET_IT USART_ClearITPendingBit function: some pending bits are removed from the possible pending bits parameters list. This function can clear only CTS, LBD, TC and RXNE pending bits. stm32f10x_tim.c remove IS_TIM_PERIPH_FLAG(TIMx, TIM_FLAG) macro from TIM_ClearFlag function. stm32f10x_wwdg.c use register direct access in the WWDG_GetFlagStatus function instead of bit banding access. stm32f10x_gpio.c GPIO_Init function update. examples I2C Interrupt example The example is changed to provide a description of how to manage data transfer from master transmitter to slave receiver and from slave transmitter to master receiver using interrupts. add main.h file. I2C 10bitAddress example Updated according to the I2C driver update. I2C DualAddress example Updated according to the I2C driver update. I2C SMBus example Updated according to the I2C driver update USART DMA_Interrupt example Updated according to the USART driver update. USART Smartcard example Updated according to the USART driver update. DAC Examples GPIO_Configuration function updated: Once the DAC channel is enabled, the corresponding GPIO pin is automatically connected to the DAC converter. In order to avoid parasitic consumption, the GPIO pin should be configured in analog. RTC LSI_Calib example Example Update: add main.h file. ### V2.0.1 - 06/13/2008 Remove the Firmware License Agreement file. Update the source files's header to remove reference to the License. ### V2.0 - 05/23/2008 General The FWLib V2.0 is an update of the V1.0 to support the extra peripherals and features embedded in the STM32 High-density devices. Add Firmware License Agreement file. For more details about the Firmware Library, please refer to the User. manual "UM0427 ARM«-based 32-bit MCU STM32F101xx and STM32F103xx Firmware Library" available for download from the ST microcontrollers website: www.st.com/stm32. Glossary Medium-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 32 and 128 Kbytes. High-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 256 and 512 Kbytes. library Add driver for new peripherals: FSMC, SDIO and DAC. stm32f10x_spi.c /.h driver update to support new I2S functionality. Add driver for DBGMCU and CRC modules stm32f10x_dma.c /.h driver update to support DMA2 channels. stm32f10x_adc.c /.h driver update to support ADC3. stm32f10x_usart.c /.h driver update to support UART4 and UART5. new USART_ClockInitTypeDef structure derived from USART_InitTypeDef one (for USART synchronous parameters). Timer peripherals driver stm32f10x_tim1.c /.h and stm32f10x_tim.c /.h drivers merged in one single driver: stm32f10x_tim.c /.h update to support new timer peripherals: TIM5, TIM6, TIM7 and TIM8. add new macro for function parameters test. TIM_TimeBaseInit, TIM_PrescalerConfig and TIM_GenerateEvent functions updated. TIM_TIxExternalClockConfig, TIM_ETRClockMode1Config, TIM_ETRClockMode2Config, TIM_ETRConfig, TIM_SetIC1Prescaler, TIM_SetIC2Prescaler, TIM_SetIC3Prescaler and TIM_SetIC4Prescaler functions prototype update. stm32f10x_gpio.c /.h driver update to support GPIOF and GPIOG. stm32f10x_lib.c /.h, stm32f10x_map.h, stm32f10x_conf.h update to add new peripherals register declarations and header files inclusion. stm32f10x_nvic.c /.h stm32f10x_itc.c /.h stm32f10x_vector.c /.s update to support the new peripherals interrupt vector. stm32f10x_rcc.c /.h driver update to support new peripherals clock & reset enable/disable. HSE Oscillator start up timeout increased to 0x01FF. RCC_DeInit function update. stm32f10x_bkp.c /.h driver update to support the new 32 backup registers. stm32f10x_map.h stm32f10x_can.c CAN register numbering update stm32f10x_flash.h update macro "IS_FLASH_ADDRESS" to support memory size up to 512KB. stm32f10x_flash.c FLASH_EnableWriteProtection function: update "FLASH_Pages" paramter values description. stm32f10x_exti.c EXTI_Init function update. stm32f10x_type.h 'S32_MIN' type corrected to "#define S32_MIN ((s32)-2147483648)". stm32f10x_ppp.h in all macros, put the passed parameter between parenthesis. stm32f10x_can.c extended ID coded in 29-bit long. CAN initialization acknowledge error fixed. stm32f10x_usart.c change "&=" instead of "=" in USART_ClearITPendingBit and USART_ClearFlag functions. stm32f10x_adc.c replace "&=" by "=" in ADC_ClearITPendingBit and ADC_ClearFlag functions. stm32f10x_i2c.c replace "&=" by "=" in I2C_ClearITPendingBit and I2C_ClearFlag functions. stm32f10x_tim.c replace "&=" by "=" in TIM_ClearITPendingBit and TIM_ClearFlag functions. project stm32f10x_it.c update file description. Add template projects for EWARM v5 and HiTOP toolchains. examples FWLib V1.0 examples ported to run on STMicroelectronics STM3210E-EVAL evaluation board (in addition to STM3210B-EVAL) Add new examples for FSMC, SDIO, DAC and I2S (run only on High-density devices). Add new examples for ADC, DMA and RTC peripherals. Add new example for CRC module. Examples folder renamed, use of short name instead of examplex (x: 1 2 ...). ### V1.0 - 10/08/2007 library Add template project with RIDE toolchain. In all stm32f10x_ppp.c and stm32f10x_conf.h files: change "assert" macro name to "assert_param". Note: If you are using the FW Library V0.3 in your application and you want to migrate to V1.0, you have to update your applications ôstm32f10x_conf.h file with the latest one (provided with V1.0). stm32f10x_conf.h Remove '#undef assert' Change '#define DEBUG' by '#define DEBUG 1' stm32f10x_type.h Add new types: sc32, sc16, sc8, vsc32, vsc16 and vsc8 stm32f10x_it.c Add basic fault exception handling: in "HardFaultException", "MemManageException", "BusFaultException" and "UsageFaultException" ISR the following code was added: /* Go to infinite loop when exception occurs */ while (1) { } stm32f10x_rcc.c "RCC_WaitForHSEStartUp()" function updated to resolve issue with high GNU compiler optimization. stm32f10x_gpio.h '#define GPIO_Remap1_CAN ((u32)0x001D2000)' changed to '#define GPIO_Remap1_CAN ((u32)0x001D4000)'. stm32f10x_rtc.c/.h "RTC_GetPrescaler" function removed. stm32f10x_bkp.c/.h add "BKP_RTCOutputConfig()" function to allow to select the RTC output source(Calib clock, RTC Alarm or RTC Second) to output on Tamper pin and remove "BKP_RTCCalibrationClockOutputCmd()" function. stm32f10x_can.h CAN synchronization jump width defines updated '#define CAN_SJW_0tq' ==> '#define CAN_SJW_1tq' '#define CAN_SJW_1tq' ==> '#define CAN_SJW_2tq' '#define CAN_SJW_2tq' ==> '#define CAN_SJW_3tq' '#define CAN_SJW_3tq' ==> '#define CAN_SJW_4tq' stm32f10x_tim1.c/.h "TIM1_OCxNPolarityConfig(u16 TIM1_OCPolarity)" function: change parameter name to 'TIM1_OCNPolarity' change 'TIM1_ICSelection_TRGI' by 'TIM1_ICSelection_TRC' stm32f10x_tim.c/.h change 'TIM_ICSelection_TRGI' by 'TIM_ICSelection_TRC' examples ADC examples 3 & 4 updated DEBUG example Example modified to support RIDE specific printf function implementation I2C example5 i2c_ee.c: add the following function prototypes: "void GPIO_Configuration(void)" add "void I2C_Configuration(void)" Add GPIO pin toggle example. BKP, CAN, DMA, NVIC and I2C examples readme files updated. Use decimal (instead of hexadecimal) values constants in TIM, TIM1 and IWDG examples. USART example 12 USART3 ISR updated Timeout define "SC_Receive_Timeout" updated to 0x4000 example 7 Example modified to support RIDE specific printf function implementation RTC example Example modified to support RIDE specific printf function implementation Change "BKP_RTCCalibrationClockOutputCmd()" function by "RTC_ClockOutput()" LSI removed as RTC clock source IWDG example LSI frequency value changed from 32 KHz to 40 KHz Update the STM32F10x evaluation board name from STM32F10x-EVAL to STM3210B-EVAL ### V0.3 - 05/21/2007 Created. ## License The enclosed firmware and all the related documentation are not covered by a License Agreement, if you need such License you can contact your local STMicroelectronics office. THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. For complete documentation on STM32(CORTEX M3) 32-Bit Microcontrollers visit www.st.com/STM32