# Release Notes for STM8S/A Standard Peripherals Library Drivers (StdPeriph_Driver) Copyright © 2014 STMicroelectronics
## Contents STM8S/A Standard Peripherals Library Drivers update history License ## STM8S/A Standard Peripherals Library Drivers update history ### V2.3.0 / 16-June-2017 Main Changes Peripheral drivers updated to support the STM8S001J3 8K (STM8S001) product family devices stm8s.h A dd new definition of STM8S001 product family devices Add new define UNUSED to fix compilation warning with RAISONANCE stm8s_flash.c Update FLASH_WaitForLastOperation() to use UNUSED macro to fix compilation warning with RAISONANCE ### V2.2.0 / 30-September-2014 Main Changes Peripheral drivers updated to support the STM8AF 8K (STM8AF6223 and STM8AF6226) product family devices Impacted drivers are FLASH and ITC Add a new driver stm8s_uart4.c/.h for the UART4 peripheral. Peripheral drivers updated to support the STM8AF 8K (STM8AF6223 and STM8AF6226) product family device Peripheral drivers code Formatting and Cleanup. stm8s.h A dd new definition of STM8AF622x product family devices Add UART4 defines (Struct, Registers Reset Value, Registers Bits Definition) Add a new define MemoryAddressCast to fix the memory cast issue stm8s_clk.c/.h Update the CLK automatic switch sequence stm8s_uart1.c update UART1_ITConfig() description to add as possible parameter the UART1_IT_RXNE_OR instead of UART1_IT_RXNE and UART1_IT_OR stm8s_flash.c/.h Fix memory address cast in the following functions: FALSH_ProgramBlock(), FALSH_ProgramByte(), FALSH_ProgramWord(), FALSH_EraseByte() and FALSH_ReadByte(). Update timeout variable declaration on 16 bit instead of 32 bit in the FLASH_WaitForLastOperation() function to avoid __ramfunc issue with IAR. Add this note in the FLASH Driver to clarify the execution from RAM situation with IAR Toolchain: 1- Ignore the IAR compiler warnings, these warnings don't impact the FLASH Program/Erase operations. The code performing the Flash Program/erase must be executed from RAM; the variables initializations don't necessary require the execution from RAM, only CR2 registers configuration and data programing must be executed from RAM. 2- These warnings depends on IAR compiler: as the code generation is made using many runtime library functions to keep code size to a minimum. 3- It is recommended to use High Speed Optimization with IAR (-Ohs), in order to reduce the runtime library calls in the generated code.. stm8s_rst.c/.h Update the RST_GetFlagStatus() function implementation to return the state SET/RESET. ### V2.1.0 / 18-November-2011 Main Changes Peripheral drivers updated to support the STM8S Value Line product family devices Impacted drivers are CLK, FLASH, I2C and ITC stm8s.h A dd definition of STM8S Value Line product family devices Replace #include <intrist7.h> by #include <intrins.h> in the interrupt macro for raisonance compiler Replace __wait_for_interrup() by __wait_for_interrupt() in the wfi macro definition with EWSTM8 toolchain ### V2.0.0 / 25-February-2011 Main Changes Overall peripheral drivers updated to support STM8A product family devices stm8s.h Add definition of STM8A product family devices Add "error" directive to force device family choice Updated to support IAR Embedded Workbench for STM8 (EWSTM8) toolchain specific declarations Add HSE_Value definition depending on device choice Add definition of Device on-chip RC oscillator frequencies HSI_VALUE and LSI_VALUE Add EEPROM definition in compiler defines (COSMIC, RAISONANCE, IAR) Add MEMCPY definition per devices family in RAISONANCE compiler defines Add RAM_EXECUTION define to allow handling functions execution from RAM Add IN_RAM macro to manage functions execution from RAM Remove "stm8s_type.h" inclusion and replace it by the file content Remove AWU_CSR_MR bit definition Remove CANCCR register from CLK controller registers Remove CLK_CANCCR_RESET_VALUE definition Remove CLK_CANCCR_CANDIV definition Remove SWIM_struct definition Remove CAN_BTR2_CLKS bit definition Remove SWIM_BaseAddress definition INTERRUPT_HANDLER" macro added to manage interrupt vector declarations for all supported toochains. stm8s_adc1.c/.h Add the support of analog channel 12 Update ADC1_SetHighThreshold() and ADC1_SetLowThreshold() functions stm8s_awu.c/.h Remove AWU_ReInitCounter() function Change "const" by "CONST" in the APR_Array and TBR_Array declarations Change LSI_FREQUENCY_MIN value to 110000 instead of 100000 Change LSI_FREQUENCY_MAX value to 150000 instead of 200000 stm8s_beep.c/.h Change LSI_FREQUENCY_MIN value to 110000 instead of 100000 Change LSI_FREQUENCY_MAX value to 150000 instead of 200000 stm8s_can.c/.h Remove CAN_SelectClock() function Update CAN_Init() function Update CAN_Transmit() function stm8s_clk.c/.h Replace uc8 by CONST uint8_t in HSIDivFactor and CLKPrescTable declaration Remove CLK_CANDivider_TypeDef Remove CLK_CANConfig(CLK_CANDivider_TypeDef CLK_CANDivider) function stm8s_flash.c/.h Update FLASH_Lock() function by using the new definition of FLASH_MemType_TypeDef enum variables Update FLASH_ProgramOptionByte() and FLASH_EraseOptionByte() functions to handle the case of ROP option byte and to check on EOP flag instead of HVOFF Change OPERATION_TIMEOUT value to 0xFFFFF Update FLASH_EraseBlock() function to use new definition of PointerAttr Update FLASH_ProgramBlock() function to use new definition of PointerAttr Add detailed description of execution from RAM using functions provided by this driver and with the different supported toolchains. For more information, refer to stm8s_flash.h and stm8s_flash.c files. stm8s_gpio.c/.h Update GPIO_Mode_TypeDef enum variables by hexadecimal definition stm8s_I2c.c/.h Update I2C_Flag_TypeDef definition enum variable Update IS_I2C_CLEAR_FLAG_OK macro definition Update I2C_Event_TypeDef definition and naming: I2C_EVENT_MASTER_START_SENT changed to I2C_EVENT_MASTER_MODE_SELECT I2C_EVENT_MASTER_ADDRESS_ACKED removed and replaced by I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED and I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED I2C_EVENT_MASTER_HEADER_ACKED changed to I2C_EVENT_MASTER_MODE_ADDRESS10 I2C_EVENT_SLAVE_ADDRESS_MATCHED removed and replaced by I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED and I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED and I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED I2C_EVENT_SLAVE_BYTE_TRANSMITTING event added Update I2C_ITPendingBit_TypeDef enum variabale definition Update I2C_GetITStatus() function to check on the interrupt configuration bits Add defines for REGISTER_Mask, REGISTER_SR1_Index, REGISTER_SR2_Index, FLAG_Mask and ITEN_Mask Update I2C_ClearFlag() function to clear only the flags that are cleared by writing 0 Add IS_I2C_CLEAR_ITPENDINGBIT_OK macro Update I2C_ClearITPendingBit() function to clear only the flags that are cleared by writing 0 Update I2C_GetFlagStatus() function Add new function I2C_GetLastEvent() Update I2C_CheckEvent() function Add detailed description of I2C events and how to manage them using the functions provided by this driver. For more information, refer to stm8s_i2c.h and stm8s_i2c.c files stm8s_itc.c /.h Update ITC_GetCPUCC() function to support EWSTM8 toolchain stm8s_spi.c/.h Update SPI_CalculateCRCCmd() function by removing the the disable of SPI (should be done outside the function) stm8s_uartx.c/.h Remove CLK driver inclusion ### V1.1.1 / 06-05-2009 Main Changes General Project template updated for both STVD and RIDE toolchains Almost peripheral examples reviewed and validated with both Cosmic and Raisonance compilers Library stm8s.h: __CONST definition added for Cosmic and Raisonance compilers TINY definition added for Cosmic and Raisonance compilers NEAR definition added for Raisonance compilers CAN registers declaration updated ADC1 registers declaration updated stm8s_adc1.h: IS_ADC1_BUFFER_OK macro definition updated stm8s_beep.c: BEEP_Init function updated: BEEP->CSR |= BEEP_CSR_BEEPEN; removed from init function stm8s_can.c/.h: Private variables declaration changed to volatile CAN_DeInit function updated CAN_Receive function updated CAN_FilterInit funtion updated CAN_Transmit function updated CAN_IT_TypeDef enum updated: CAN_IT_ERR and CAN_IT_LEC definition updated to avoid ANSI check error with Cosmic stm8s_clk.h: CLK_Peripheral_TypeDef enum updated: - CLK_PERIPHERAL_UART1 definition updated and conditioned by the device to use stm8s_gpio.h: The GPIO_Mode_TypeDef enum element definition updated: - GPIO_MODE_OUT_OD_LOW_FAST - GPIO_MODE_OUT_PP_LOW_FAST - GPIO_MODE_OUT_OD_LOW_SLOW - GPIO_MODE_OUT_PP_LOW_SLOW - GPIO_MODE_OUT_OD_HIZ_FAST - GPIO_MODE_OUT_PP_HIGH_FAST - GPIO_MODE_OUT_OD_HIZ_SLOW - GPIO_MODE_OUT_PP_HIGH_SLOW stm8s_tim3.h: IS_TIM3_CLEAR_FLAG_OK macro definition updated TIM3_GetITStatus and TIM3_GetFlagStatus functions updated: Local varaiables changed to volatile stm8s_usart1.h: UART1_IT_TypeDef enum description updated to give more details on the element values convention. stm8s_usart2.h: UART2_IT_TypeDef enum description updated to give more details on the element values convention. stm8s_usart3.h: UART3_IT_TypeDef enum description updated to give more details on the element values convention. stm8s_gpio.c: GPIO_ReadInputPin function updated stm8s_i2c.c: I2C_ClearFlag function description and code updated I2C_ClearITPendingBit function description and code updated stm8s_itc.c: The private function ITC_GetCPUCC definition updated for Raisonance stm8s_tim1.c: TIM1_GetITStatus and TIM1_GetFlagStatus functions updated: Local varaiables changed to volatile stm8s_tim2.c: TIM2_GetITStatus and TIM2_GetFlagStatus functions updated:Local varaiables changed to volatile stm8s_tim5.c: TIM5_GetITStatus and TIM5_GetFlagStatus functions updated:Local varaiables changed to volatile stm8s_tim6.c: TIM6_GetITStatus and TIM6_GetFlagStatus functions updated: Local varaiables changed to volatile Examples Almost examples were updated with both Cosmic and Raisonance compilers using STVD toolchain. Exception is made for the following FLASH examples: - FLASH_EraseBlockOnFlashProgramMemory - FLASH_WriteEraseBlockOnDataEepromMemory - FLASH_BlockOperationOnFlashProgramMemory --> Dependency related to linkerfile edition All examples readme.txt files were updated : @par Directory contents section updated @par Hardware and Software environment section updated @par How to use it ? section updated Mono LCD driver updated: mono_lcd.c LCD_SendByte function updated by adding a delay (LCD_Delay(80);) after sending the last byte Micro Sd driver updated : micro_sd.c MSD_WriteByte function updated to support 2G SD card (type: kingston) AWU example updated AWU_AutoLSICalibration private function removed and replaced by u32 LSIMeasurment to measure LSI w/ either TIM1 or TIM3 depending on the used device BEEP example updated BEEP_AutoLSICalibration private function removed and replaced by u32 LSIMeasurment to measure LSI w/ either TIM1 or TIM3 depending on the used device Add BEEP_Cmd function call in the example due to BEEP_Init function update. CLK example CLK_ClockSelection updated SPI example SPI_FastCommunication example renamed to SPI_FastCommunicationMicroSD Projects Project templates updated for STVD and RIDE toolchain asm_functions.asm file removed from both projects STVD with Raisonance and RIDE7 stm8s_it.c file updated to support both Cosmic and Raisonance compiler stm8_interrupt_vector.c and stm8s_it.h files were updated to use @far instead of @near Optimization option updated for STVD with Raisonance project SCINAME(STM8) linker option added for STVD with Raisonance project STM8_OB.asm file added within RIDE7 project to configure option bytes ### V1.1.0 / 02-27-2009 Main Changes General The STM8S Firmware library supports now STM8S Performance line (STM8S208 and STM8S207 sub-families), Access line (STM8S105 and STM8S103 sub-families) and STM8S903. RN0022 "STM8S firmware library Release note" document merged in "stm8s_fwlib_um.chm" user manual. "stm8s_fwlib_um.chm" user manual: structure and content enhanced to provide complete information about the library and how it can be used. List of peripheral examples reviewed: redundant examples were removed (same example provided for two or more peripherals) and others were added Library stm8_map.h renamed to stm8.h and the following modification were performed: add the library configuration section add definition of the used compiler add definition of the library supported devices add definition of the standard peripheral driver use add definition of pointer declaration for FLASH routines Update peripheral registers and bit definition to support STM8S103 & STM8S903 devices: TIM5 & TIM6 registers and structures added OPT base address updated Peripheral declaration conditioned by supported devices add macros added for interrupts and bits handling (content of legacy stm8s_macro.h file) stm8s_macro.h file removed and its content is copied to stm8s.h file stm8s_conf.h: Include stm8.h file instead of stm8s_type.h and stm8s_macro.h files #define DEBUG removed Cosmic section definition removed HSE value definition conditioned by supported devices CAN definition added TIM5 & TIM6 definition added Peripheral definition conditioned by supported devices add section for peripheral header file inclusion (content of legacy stm8s_lib.h file) stm8s_lib.h file removed and its content is copied to stm8s_conf.h file All peripheral drivers (tm8s_ppp.c) '#include "stm8s_map.h"' replaced by '#include "stm8s.h"' Cosmic sections removed, except from stm8s_falsh.c stm8s_awu.h/.c: AWU_AutoLSICalibration function removed and added in AWU example stm8s_beep.h/.c: BEEP_AutoLSICalibration function removed and added in BEEP example stm8s_can.h/.c: CAN driver added stm8s_clk.h: CLK_Peripheral_TypeDef enum updated : CLK_PERIPHERAL_USART replaced by CLK_PERIPHERAL_UART1 CLK_PERIPHERAL_LINUART replaced by CLK_PERIPHERAL_UART2 CLK_PERIPHERAL_UART3, CLK_PERIPHERAL_TIMER6 and CLK_PERIPHERAL_TIMER5 added IS_CLK_PERIPHERAL_OK macro updated stm8s_flash.h/.c: FLASH_ProgramWord function updated to write data in big endian format Only FLASH_EraseBlock() & FLASH_ProgramBlock() functions can be executed from RAM FLASH_EraseBlock()function is updated to support the lower memory size devices Add a check on the HVOFF flag in the FLASH_EraseBlock and FLASH_ProgramBlock functions before coming back to fetch from flash Parameter FLASH_STATUS_END_HIGH_VOLTAGE added in the FLASH_Status_TypeDef enumeration stm8s_i2c.h : IS_I2C_INPUT_CLOCK_FREQ_OK macro updated stm8s_itc.h/c: ITC_Irq_TypeDef updated: thefollowing parameters removed: - ITC_IRQ_USART_TX - ITC_IRQ_USART_RX - ITC_IRQ_LINUART_TX - ITC_IRQ_LINUART_RX - ITC_IRQ_ADC , and the following parameters added : - ITC_IRQ_UART2_RX - ITC_IRQ_UART2_TX - ITC_IRQ_UART3_TX - ITC_IRQ_UART3_RX - ITC_IRQ_ADC2 - ITC_IRQ_ADC1 - ITC_IRQ_TIM6_OVFTRI - ITC_IRQ_PORTF ITC_SetSoftwarePriority() function updated Examples All examples readme.txt files were updated : @par Directory contents section updated @par Hardware and Software environment section updated @par How to use it ? section updated Micro SD driver microsd.c file: MSD_WriteBlock function updated to support buffer size lower than block size for the MicroSD memory card ADC1 examples removed (equivalent examples are available for ADC2) AWU example updated AWU_AutoLSICalibration private function added to calibrate LSI w/ TIM3 BEEP example updated BEEP_AutoLSICalibration private function added to calibrate LSI w/ TIM3 CAN example added CLK examples ManualClcokSwitch example removed FLASH examples updated to support STM8S105, STM8S103 and STM8S903 Rename and update the example " FLASH_WriteErase" by "FLASH_WriteEraseBlockOnDataEepromMemory" Rename and update the example " FLASH_EraseBlock" by "FLASH_EraseBlockOnFlashProgramMemory" FLASH_BlockOperationOnFlashProgramMemory example added to show the possibility to continue execution from RAM while program operation on FLASH Program is on going I2C_EEPROMRandomRead, I2C_EEPROMReadWrite and I2C_EEPROMSequentialRead examples merged in one single example: I2C_EEPROM add driver for I2C EEPROM: i2c_ee.c/.h TIM3 examples removed (equivalent examples are available for TIM1 and TIM2) TIM5 example added UART2 & UART3 examples removed (equivalent examples are available for UART1) Projects Project templates updated for STVD and RIDE toolchain project.stw: one Workspace file including five projects related to the FW Lib STM8S supported devices - stm8s103.stp Project file for STM8S103 product - stm8s105.stp Project file for STM8S105 product - stm8s207.stp Project file for STM8S207 product - stm8s208.stp Project file for STM8S208 product - stm8s903.stp Project file for STM8S903 product (not available on RIDE) ### V1.0.1 - 09/22/2008 Main Changes I2C driver Update stm8s_i2c.c: I2C_ClearFlag, I2C_GetITStatus and I2C_ClearITPendingBit functions updated stm8s_i2c.h: I2C_IT_TypeDef enumeration updated & new I2C_ITPendingBit_TypeDef enumeration added I2C IAP, SPI IAP, UART3 Lin & TIM3 OCActiveMode examples removed from the package. TIMx_GetCapturex functions updated on TIM1, TIM2 and TIM3 CLK driver updated (CLK_AdjustHSICalibrationValue function optimized) Projects template updated stm8s_map.h file updated (CAN registers structure added) User manual updated: new section added (Usage of STM8S Firmware Library Examples) ### V1.0.0 - 08/15/2008 Main Changes Created ## License censed under MCD-ST Liberty SW License Agreement V2, (the "License"); You may not use this package except in compliance with the License. You may obtain a copy of the License at: http://www.st.com/software_license_agreement_liberty_v2 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. For complete documentation on STM8S 8-bit microcontrollers platform visit www.st.com