Device Control

This library enables you to use Hardware Timers on an STM32H7-based Portenta_H7 board to create and output PWM to pins.
These PWM channels, using Portenta_H7 Hardware Timers, still work even if other functions are blocking. Moreover, they are much more precise (certainly depending on clock frequency accuracy) than other software PWM using millis() or micros(). That's mandatory if you need to use in applications requiring better accuracy. It now supports 16 ISR-based PWM-channels, while consuming only 1 Hardware Timer. PWM-channel interval can very long (ulong millisecs). The most important feature is they're ISR-based PWM-channels. Therefore, their executions are not blocked by bad-behaving functions or tasks. This important feature is absolutely necessary for mission-critical tasks. These hardware PWM channels, using interrupt, still work even if other functions are blocking. Max PWM frequency is limited at 1000Hz. Now you can change the PWM settings on-the-fly

Author: Khoi Hoang

Maintainer: Khoi Hoang

Read the documentation


This library is compatible with the mbed, mbed_portenta, ArduinoCore-mbed architectures so you should be able to use it on the following Arduino boards:


To use this library, open the Library Manager in the Arduino IDE and install it from there.