Note: If you need more flexibility, see Minimal STM32 HardwareTimer PlatformIO / Arduino timer interrupt blink example where we show how to use HardwareTimer
instead of TimerInterrupt_Generic
. Note that TimerInterrupt_Generic
uses HardwareTimer
internally.
This is a minimal example of using timer interrupts on PlatformIO / Arduino using the TimerInterrupt_Generic library which runs on the Olimex E407. It will run on almost any STM32 processor but you might need to adjust PC13
to the PIN connected to the LED. The example will blink the LED once per second.
#include <Arduino.h> #include <TimerInterrupt_Generic.h> STM32Timer tim1(TIM1); bool ledOn = false; void OnTimer1Interrupt() { ledOn = !ledOn; digitalWrite(PC13, ledOn ? LOW : HIGH); } void setup() { pinMode(PC13, OUTPUT); // Enable TIM4 tim1.attachInterruptInterval(500000, OnTimer1Interrupt); } void loop() { }
Now add
lib_deps = khoih.prog/TimerInterrupt_Generic @ ^1.7.0
to your platformio.ini
. My full platformio.ini
looks like this:
[env:olimex_e407] platform = ststm32 board = olimex_e407 framework = arduino lib_deps = khoih.prog/TimerInterrupt_Generic @ ^1.7.0