Release Notes for STM32F10x Standard Peripherals Library

# Release Notes for STM32F10x Standard Peripherals Library (StdPeriph_Lib)

Copyright © 2009 STMicroelectronics

## Contents

1. STM32F10x Standard Peripherals Library update History
2. License

## STM32F10x Standard Peripherals Library update History

### V3.1.2 - 09/28/2009

1. General

- Add support for Hitex Development Tools HiTOP.

2. Libraries

- CMSIS

- system_stm32f10x.c: SetSysClockTo56() function, change the flash latency to 2 instead of 1

- STM32F10x_StdPeriph_Driver

- 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.

3. 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

1. 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

2. 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

3. 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.

4. 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

1. 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

2. 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

3. 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

1. 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

2. 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

3. 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

1. 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.

2. 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

1. 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.

2. 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.

3. project

- stm32f10x_it.c

- update file description.

- Add template projects for EWARM v5 and HiTOP toolchains.

4. 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

1. 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'

2. 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