〇、前言
需要清楚运行相关函数所需要的时间,来决定数据更新频率。倘若函数是计算大量公式,所花的时间较长,而更新周期过短,会导致代码跑飞;而更新周期过长,会导致控制不够精确,求导、求微分精度都不够。那么设备做剧烈运动的时候(如跳跃落地控制平稳),控制就尤其困难。
方法一、利用逻辑分析仪(最精确),但需要设备;
方法二、利用debug(较精确),不需要设备;
本文采用方法二。
参考博客:
Keil调试如何测量程序运行的精准时间:
http://t.csdnimg.cn/u1fQB
#keil调试# debug 查看代码能运行到哪一部分:
http://t.csdnimg.cn/v1LYf
参考以上这两篇博客就足够了。但也有相关补充如下。
一、操作补充
1、必须选对芯片主频(至关重要!!)
STMG474的主频是170Mhz,F407是168Mhz。
如果不选对主频,代价如下:
我只想延时3000ms,但是计算结果是480s!!!!!离大谱!离谱他妈给离谱开门,离谱到家了。。。
2、操作主要步骤
不懂的话,一定要结合参考博客一起看,只讲重点,赶时间去干饭。
设置主频,确保时间准确:
计时操作:
得出结果,在确定结果之前,一定要用延时函数分析一下,看看延时运行的时间有没有大致一样:
二、结果分析
运行时间为t = 0.30914ms,与自己写的10ms,差了很多倍!!!!!
为了方便求导,因此更新周期改为1ms,需要优化后面再说。
除了更新周期需要改,求导公式也要改。