STM32F4 : Floating point instructions too slow
In your disassembly we see calls to 64 bit (double precision) math functions:- 

08001956:   bl 0x80004bc &lt;__extendsfdf2&gt;
...
0800195e:   bl 0x8000564 &lt;__muldf3&gt;
08001962:   bl 0x8000988 &lt;__fixdfsi&gt;


The STM32F4 only supports 32 bit floating point in hardware, so these functions must be done in software and will take many cycles to execute. To ensure that all calculations are done in 32 bit you should define all your floating point numbers (including constants) as type float.