Release Notes for STM8S/A Standard Peripherals Library Drivers (StdPeriph_Driver)

Copyright © 2014 STMicroelectronics

 

Contents

  1. STM8S/A Standard Peripherals Library Drivers update history
  2. 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 
    • Add 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 
    • Add 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 
    • Add 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:


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