Ok, this escalated a little. I was just looking through the code and saw that the Iwdg class was not inlined, so I quickly refactored it and then noticed that the prescaler was manually computed and then I had to program a constexpr algorithm for it.
[x] Inline IWDG functions
[x] Move into modm::platform namespace.
[x] Add prescaler + downcounter algorithm.
[x] Add unittest for prescaler + downcounter algorithm.
[x] Add Rcc::Lsi and Rcc::Hsi clock.
[x] Add modm.digsep filter for nicely formatting long integers.
[x] Add SystemClock::Iwdg to every board.
[x] Add a generic assertBaudrateInTolerance implementation.
[x] Add documentation for prescaler calculators.
[x] Simplify tolerance assertion functions.
[x] Added seconds_t, milliseconds_t, microseconds_t for template parameters.
[x] percent_t can be float since C++20.
[x] Fix minimum prescaler value for STM32 UART (8 or 16).
[x] Implement iterator correctly so that the warnings go away. Help!
Ok, this escalated a little. I was just looking through the code and saw that the Iwdg class was not inlined, so I quickly refactored it and then noticed that the prescaler was manually computed and then I had to program a constexpr algorithm for it.
modm::platform
namespace.Rcc::Lsi
andRcc::Hsi
clock.modm.digsep
filter for nicely formatting long integers.SystemClock::Iwdg
to every board.assertBaudrateInTolerance
implementation.seconds_t
,milliseconds_t
,microseconds_t
for template parameters.percent_t
can be float since C++20.