一、写在前面
逛TI论坛的时候看到关于使用FPU算pid速度慢的问题,原题主走了不少弯路,在此记录下来免得自己也掉进坑里。
估计用到FPU也在挺后面了,随便给个编号。。。
二、问题简述
在高速运算pid时(60Khz),浮点运算速度跟不上。
三、解决方案
1.软件开启FPU
ROM_FPUEnable();
ROM_FPULazyStackingEnable(); //例程中给的是ROM_FPUStackingEnable();
2.需要在CCS中选项开启(待验证)
论坛原文:
FPU的开启,除了软件开启外,还需要在CCS中有个选项,开启才可以的。至于你说的编译器优化开到最大,出现错误,也是有可能的,这个需要你单步调试确定。
3.将变量定义为volatile float类型
例如:
volatile float value = 0.0;
4.(重要)在计算中注意常数默认应改为float
计算公式中有些 x * 0.4这种的算式,这里直接使用的0.4在编译器中是默认为double类型的,导致很多运算不能用FPU执行,改成 0.4f 之后就正常了。
四、引用地址
TIVA launchpad利用FPU进行高速双环pid运算问题
https://e2echina.ti.com/question_answer/microcontrollers/tiva_arm_cortex/f/96/t/87433