PWM with STM8S

PWM is a great way to control brightness of LEDs, speed of motors, etc. Most microcontrollers including STM8S has built in ability to generate PWM signals. In this article I share simple code to generate PWM signal in STM8S microcontroller. However, I don’t write anything about PWM theory other than basic calculation to get required frequency and duty cycle. Calculation In STM8S, there are total 7 CAPCOM channels. 4 of them are associated with Timer 1 and 3 with Timer 2.

STM8S: Timer 2 with Overflow Interrupt

In previous post I showed how we can use Timer 2 as simple counter. In this post I am going to show how we can program to have interrupt when its value overflow. As simple experiment we will toggle an LED in each second within the interrupt handler (also called ISR, Interrupt Service Routine). Calculation As mentioned in previous post, default system clock frequency will be 2MHz and by default Timer 2 will also run with same frequency as system.

STM8S: Use Timer 2 as Simple Counter to Blink LED (without Interrupt)

Timers inside MCUs are very useful and essential peripherals for timing applications. In this article I will show Timer 2 in an STM8S (specifically STM8S103F3) can be used to blink an LED. Calculation STM8S has an internal oscillator with 16MHz frequency. By default it will be used as system clock source with prescaler 8, which means system clock frequency will be 16MHz/8 = 2MHz. By default Timer 2 will run with same frequency as system.

Program STM8S Development Board with ST-Link v2

I successfully programmed development board having STM8S103F3P6. It is quite simple to make it blink LED. To me it was second easiest after Arduino Uno to get started. I used SDCC as the C compiler, ST-Link v2 clone as programmer, and stm8flash to flash the binary file through ST-Link. STM8S103F3P6 minimal development board Required Softwares As I already mentioned, just two softwares are required to program STM8 microcontrollers in Linux machines: SDCC and stm8flash.