我正在使用 IAR Embedded 维护一些用于 STM8 的 C 代码。 测量代码的一部分与另一部分之间的执行时间的方法是什么? (请考虑到,如果可能的话,我不想停止代码的执行(断点)或写入控制台(因为我发现这会严重影响程序的计时)。
我发现了这样的东西 Techniques for measuring the elapsed time
但这通常适用于 ARM 处理器,因此许多方法不适用于我的设置。我认为像技术 #3 这样的东西可能适用......
具体来说,我问我是否可以做类似的技术
unsigned int cnt1 = 0;
unsigned int cnt2 = 0;
cnt1 = TIM3->CNT;
func();
cnt2 = TIM3->CNT;
printf("cnt1:%u cnt2:%u diff:%u \n",cnt1,cnt2,cnt2-cnt1);
对于这个微 Controller
非常感谢任何帮助
最佳答案
有很多解决方案,但简单的解决方案是在您想要开始/停止测量时间的地方使用硬件引脚和切换引脚,并使用示波器或一些廉价的逻辑分析仪。正如有人提到的,软件有一些变量开始和结束,将当前计时器滴答分配给它们,并在调试中读取它们。您也可以在运行时使用 uart 打印它们,但这也会减慢它们的速度。
关于c - IAR(对于STM8)中每100微秒调用的例程的测量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40965356/