2015-04-24 14 views
1

我有一个功能,在执行功能之前禁用中断,在功能完成之后重新启用中断。有没有什么方法可以在关键部分找到某个功能所花费的时间(在禁用和启用中断之间)

这里我的要求是找到函数需要多少时间才能执行?

在这种抽象的方式就是我想做的事:

variable = time();//time before disabling 

disable_interrupts(); 

perform_function();//business logic 

enable_interrupts(); 

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

tot_time = variable2 - variable; 

有没有办法找到所需要的时间?我被卡住了,因为如果我们禁止中断处理器不会招待任何东西(时钟,中断,计数器)。

+0

即使中断被禁用,时钟应该继续打勾吗?时钟超限将不会被捕获,因为这些也在中断中处理。我希望你的“商业逻辑”不需要太多时间。由于禁用中断可能会对系统的许多部分产生不良影响。 – RaphMclee

+0

我的意图是完全像时钟应该继续打勾,但当我们禁用中断时,是否有任何时钟将运行..因为我怀疑该功能需要这么多时间..可以请帮助我 –

回答

1

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

反正,如果你想坚持你目前的设计,我尝试建议一个解决方案。 任何时钟寄存器都将继续运行,您可以选择一个并在ISR的开始和结束时检查其值。如果计数器将多次超出,您将不会有任何迹象。您也可以定期(如果您的业务逻辑是一个循环)检查时钟值并将传递的时间总和为一个变量。所以时钟超限将被包含在计算中。

相关问题