Its not actually necessary to turn on the HSE on the STM32. The chip comes up using the HSI which is already pretty accurate.
In Maple the HSE is turned on in rcc.c in rcc_clk_init() which is called from init() which is explicitly called in the test programs as in:
// Force init to be called *first*, i.e. before static object allocation.
// Otherwise, statically allocated objects that need libmaple may fail.
__attribute__((constructor)) void premain() {
init();
}
which, of course, I copied from another example without understanding it in depth...
So, you are right, the HSE is already going and I hit the on switch again. Shouldn't actually be a problem, though.
I don't see any mention of the LSE in the rest of Maple, which makes sense as there is is no 32K crystal (on the Maple Mini at least).
On the Maple Mini the pins used to connect the crystal are actually configured and used as I/O pins (PC14/PC15).
It seems quite likely that something special needs to be done via AFIO to set these pins up for the LSE.
When you say hangs polling for clock ready, you mean 'HSE ready' and 'LSE ready' as well, right?