Hi Kai,

I am currently trying to make the Nucleo-F411RE board work.
However, I am struggling with the clock configuration in the board-specific .hpp file.
If I try to compile, it tells me that the PLL factors are out of range.

using systemClock = SystemClock<Pll<ExternalCrystal<kHz32>, MHz84, MHz48> >;

32kHz?  The big black crystal on the Nucleo board is the LSE-Oscillator, which drives the RTC.
Also: it's actually 32.768kHz == 2^15Hz cos RTC ;-P

You cannot use that input to drive the CPU frequency though, you need to use the 16MHz High-Speed-Internal clock for that.
Have a look at the Reference Manual Figure 12 (page 90) [1].

The SystemClock is a computation wrapper, that computes the PLL values and connects all the right clock sources for you.
Unfortunately this PLL computation only works on the F407, F303, F100, F429 and F469 at the moment.
We need to describe the entire clock tree and we've only implemented that for those devices.

I've created a ticket to remove the usage of the SystemClock completely from the examples, as it is obviously confusing and contra-productive for porting boards:
https://github.com/roboterclubaachen/xpcc/issues/139

I don't know how to use the Clock-Module so I am struggling a bit. I tried getting some documentation on the usage, but I did not find any.
Do you have any hint to point me in the right direction?

You can still do things manually using the xpcc::stm32::ClockControl, which is the underlying HAL.

Documentation for the F407 is available here, the clock module is identical for the F411:
http://xpcc.io/api/classxpcc_1_1stm32_1_1_clock_control.html

I had a Nucleo-F411 lying around, so I ported xpcc over just now.
I cheated a little, cos I know all the Nucleo boards have the same layout, so I adapted the F103RB, which we already have ;-P
https://github.com/roboterclubaachen/xpcc/pull/138

Note that I do not enable the external LSE crystal, as xpcc has no drivers for it.
If you want to use it, you can enable it with this:

ClockControl::enableLowSpeedExternalCrystal();
ClockControl::enableRealTimeClock(ClockControl::RealTimeClockSource::LowSpeedExternalCrystal);


As a side note:
I had to upgrade the ST-Link firmware from v4 to v15, to get openocd to talk to this thing.
Maybe that's just my old board, but if `scons program` refuses to flash the chip, check out:
http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link007.html


Hope that helps,
Niklas

[1]: http://www.st.com/content/ccc/resource/technical/document/reference_manual/9b/53/39/1c/f7/01/4a/79/DM00119316.pdf/files/DM00119316.pdf/jcr:content/translations/en.DM00119316.pdf