【问题标题】:Execution time of code on microcontroller微控制器上代码的执行时间
【发布时间】:2016-09-28 16:50:47
【问题描述】:

在 32 位微控制器上,我想针对微控制器的不同工作频率测量代码的执行时间。首先我使用了周期性定时器(PIT),但它没有提供高分辨率,因为如果我以高频操作 PIT,那么它的计数器就会溢出。所以我转向系统定时器(STM),因为它可以在系统时钟下运行。但在微控制器的不同工作频率下,STM 给出的代码执行时间相同。你们中的任何人都可以在这件事上帮助我吗?谢谢

【问题讨论】:

  • “相同的执行时间”是否意味着系统计时器的计数器值计数相同的滴答数?您是否忘记将计数器值除以滴答率以转换为时间?
  • 是的,我的意思是''执行时间''系统计时器的计数器值计数相同的滴答数。在不同的工作频率下,系统定时器的计数器值是相同的。是的,我没有划分计数器值。能否请您详细说明。
  • 当你改变运行频率的时候,你是不是也改变了系统定时器的滴答率?所以 n 以原始滴答速率滴答的时间量与 n 滴答以改变的滴答速率滴答的时间量不同。您的计数器计算的滴答数相同,但时间不同,对吧?
  • 我想我明白了。我有这个场景,让微控制器的工作频率为 ''X'' ,为了执行一段代码让系统计时器的值为 ''A'' 然后我将微控制器的工作频率更改为 ''Y'' ,但是系统计时器的值再次为 ''A'' 。您的意思是我必须将“A”除以工作频率。这样执行时间会不一样吗?对吗?
  • 是的,定时器的计数器值表示滴答数(即时钟脉冲)。您需要将计数器值除以计时器的滴答率(滴答/秒),以便将滴答转换为秒。在我看来,当您更改系统的运行频率时,计时器的滴答率可能会发生变化,

标签: performance time timer microcontroller nxp-microcontroller


【解决方案1】:

我意识到这是一个老问题,但如果这不需要在系统中“实时”完成,我只需在进入和退出该功能时切换端口引脚并使用示波器测量时间.我假设您只是想为软件测试执行此操作。

如果您需要“实时”执行(在应用程序代码中),那么您需要将您的 STM 定时器值乘以微控制器时钟的周期 .无论微控制器的时钟频率如何,函数执行的定时器值都应该始终相同(有一些例外)。 (即定时器的速度会随着时钟频率的变化而变化,就像你的代码的执行速度会改变一样)

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多