c - IAR(对于STM8)中每100微秒调用的例程的测量时间

标签 c time embedded iar

我正在使用 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/

相关文章:

c - C程序设计

c - 错误[P​​e142] : expression must have pointer-to-object type

C程序求总位数

c - 将 "argc"拼错为 "argv"会导致比较 char ** 和 int - 为什么?

android - 如何在android中将时间转换为 "time ago "

java - 为对象创建特定的时间戳?

c++ - 没有缓冲区的 Sobel 边缘检测

c - 面临编写我自己的和 my_itoa 以及我的 atoi 的挑战,它们应该在 C 中将整数更改为 ascii,反之亦然

c - 当 IAR 配置为进行最大优化时,我的计时器代码失败

python - 等到具体时间