有没有办法找到一个功能在关键部分所花费的时间(在禁用和启用中断之间)

时间:2015-04-24 03:09:25

标签: c interrupt interrupt-handling critical-section powerpc

我有一个函数可以在执行函数之前禁用中断,并在函数完成后重新启用中断。

我的要求是找到执行该功能需要多长时间?

以抽象的方式,这就是我想要做的事情:

variable = time();//time before disabling

disable_interrupts();

perform_function();//business logic

enable_interrupts();

variable2 =time();//time after disabling the interrupt

tot_time = variable2 - variable;

有没有办法找时间?我被困了,因为如果我们禁用中断,处理器就不会接受任何事情(时钟,中断,计数器)。

1 个答案:

答案 0 :(得分:1)

如果此功能需要花费很多时间,您应该更改设计。并且在不禁用中断的情况下执行耗时的业务逻辑。

无论如何,如果你想坚持你当前的设计,我试着建议一个解决方案。 任何时钟寄存器将继续运行,您可以选择一个并在ISR的开始和结束时检查其值。如果计数器多次超限,您将无法指示。您还可以定期(如果您的业务逻辑是循环)检查时钟值并将传递的时间总和为变量。因此,时钟溢出将包含在计算中。