我在一个项目中使用了两个微控制器,我想借助两个微控制器的内部定时器来测量一些代码的执行时间。但是一个微控制器的定时器计数到 32 位值,第二个微控制器的定时器可以计数到 16 位值然后重新启动。我知道代码的执行时间超过 16 位值。你能建议我解决这个问题吗?(打开和关闭 GPIO 引脚不会提供有用的结果)
1 回答
0
您应该能够使用任一类型的计时器来测量执行时间,假设执行时间少于几天或几小时。真正的问题是如何配置计时器以满足您的需求。您如何配置计时器将控制测量的精度或粒度,以及可以测量的最大间隔。
因此,一般方法是:
- 确定所需的精度并估计要测量的最长间隔
- 给定精度,确定满足您精度要求的定时器时钟预分频器或分频器。例如,如果时钟速度为 50 MHz,并且您需要微秒精度,则选择一个使 (Prescaler) / (Clock speed) ~ 1 微秒的预分频器。电子表格对此有所帮助。对于这种情况,64 的分频器值给我们大约 1.28 微秒每个定时器增量。
- 确定您的定时器寄存器是否足够大。对于 16 位定时器,您可以测量 (1.28 微秒) * (2^16 - 1) = 0.084 秒,或大约十分之一秒。如果您测量的东西比这更长,您将需要重新考虑您的精度要求。
您现在应该已经确定了配置计时器的关键参数,同时牢记这些限制。如果您使用更多细节更新您的答案,例如您计划使用的微控制器以及您尝试测量的内容,我可以更具体。
于 2016-09-27T20:07:39.113 回答