STM32系列微控制器的硬件资源固定,CPU缓存和内存大小等限制了其浮点运算的性能。通常,STM32芯片中的内存大小为几十KB,在进行浮点运算时,每次操作需要占用较大的CPU缓存和内存资源,将会占用大量的计算时间。而且,这些内存空间在其他用途上也要被充分利用,所以在STM32中不支持浮点类的运算。
智能设备在设计时一般都需要考虑功耗问题,比如,一个电池供电的设备,一旦其处理电路中使用浮点型数据类型,可能导致功耗大涨。另外,在一些有低功耗要求的应用中,使用浮点型数据类型会大大浪费掉芯片处理器的能源。
因为硬件资源受限和功耗问题,对于浮点类型的支持,STM32芯片的处理方式是使用软件模拟的实现方法。然而,这种实现方法会严重影响计算速度,会导致处理速度的下降,同时也会提高代码的复杂度。因此,算法的优化和实现对开发人员来说极为挑战性。
ST公司官方提供了一些浮点运算的软件模拟库,如arm_math.h库,该库提供了众多常用的数字信号处理函数,支持定点运算和浮点运算模式,可以很好的避免使用浮点数带来的性能损耗。此外,一些专业的算法库和代码优化方案也可以提供解决方案。