Patch for STM8 Standard Peripherals Libraries
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Archive add with version number Jul 26, 2018
LICENSE Initial commit Jul 15, 2017 Update legal status SPL license Nov 19, 2017
STM8L10x_StdPeriph_Lib_V1.2.1_sdcc.patch added check for uint8_t etc. Feb 3, 2019
STM8S_StdPeriph_Lib_V2.3.1_sdcc.patch added check for uint8_t etc. Feb 3, 2019
STM8TL5x_StdPeriph_Lib_V1.0.1.patch added check for uint8_t etc. Feb 3, 2019
STM_support_licence.pdf STM support feedback on SPL license Aug 16, 2017 open terminal on double-click Jan 5, 2019

Patch for STM8 Standard Peripherals Library

with the great support by the SDCC community I provide here a patch for SDCC of the available Standard Peripheral Libraries from the STM homepage. For the respective device type, just search for:

  • STM8S/A: "STSW-STM8069"
  • STM8L10x: "STSW-STM8012"
  • STM8L15x-16x-05x-AL31-L: "STSW-STM8016"
  • STM8TL5x: "STSW-STM8030"

Technical status:

  • applied SDCC specific changes to headers and sources (changes marked with "SDCC patch“)
  • changed ISR headers in all examples to skip ISR declaration (see open points)
  • added read/write-routines for >64kB memory space via inline assembly (thanks Philipp!)
  • created a SDCC "template project“ (i.e. Makefile). See $(SPL)/Project/STM8*_StdPeriph_Template/
  • created Win, Linux, and MacOSX batch scripts to compile and upload via stm8gal
  • added Doxygen input for creating manual from sources, since provided UM is in Windows proprietary .chm format —> run Doxy to create HTML docu
  • all SPL examples should compile but require editing of Makefile. Functionality tested partly (see open points)

Open points / questions to you:

  • I currently only have a STM8S Discovery Board and a custom PCB, so I haven't tested all functionalies —> additional checking is required
  • since I am used to IDEs, the provided Makefile is far from perfect. For example it lacks automatic dependencies. Any help is appreciated!
  • in the same content: a template project for an IDE would be nice, but which one…?
  • acc. to UM flash block operations must be executed from RAM. How do I compile/link code for RAM execution?
  • SDCC requires the interrupt token AFTER the function name in ISR declaration. I have fixed all examples, but this requires a manual fix for other libs that rely on SPL (see STM homepage). However, according to Erik and Philipp this would require a change of the SDCC parser with associated risks —> not likely to change

Update legal status (2017-11-19):

  • ST updated the SPL license in October 2017, see here
  • while it is more liberal than the old license, it still is not open-source. For a brief discussion see here
  • please comply to the updated license in your projects, e.g. don't publish it under a license which violates the SPL license
  • to avoid legal issues, I decided to still only publish the patch, not the modified sources directly.

Update legal status (2017-08-03):

  • linked SPL license on homepage prohibits distribution of sources, both original and modified
  • however, ST support confirmed that this restrictive licence is no longer valid, and that the valid "Ultimate Liberty License" allows re-distribution of original and modified SPL sources
  • in the near future I plan to upload the modified sources directly (no need to patch). Until then...

For apply the patch:

  1. download the respective STM8 Standard Peripheral Library from the STM homepage as described above
  2. unzip compressed SPL file
  3. download respective patch file and script "" from here
  4. copy both files to same level as SPL directory
  5. set correct patchfile in ""
  6. run script ""

Please let me know if you experience problems with the patch process or the changes to the SPL.

My impression of the SPL is quite mixed. It seems much more complicated than e.g. Wiring for Arduino. However, as said before the STM8 SPL is very similar to the STM32 SPL. And for the latter with 100x registers, a standard HW-lib is almost mandatory. In addition STM provides a lot of example programs on their homepage, which are all based on the SPL. So I guess it’s worth digging into… Let me know what you think!?

Any feedback and/or support on the above open points is highly welcome!

Regards, Georg Icking-Konert