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

C 有没有办法找到关键部分功能所用的时间(在禁用和启用中断之间),c,interrupt,interrupt-handling,critical-section,powerpc,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 inter

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

在这里,我的要求是查找要执行的函数需要多少时间?

抽象地说,这就是我想要做的:

variable = time();//time before disabling

disable_interrupts();

perform_function();//business logic

enable_interrupts();

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

tot_time = variable2 - variable;

有没有办法找出所花的时间?我被卡住了,因为如果我们禁用中断,处理器将无法处理任何事情(时钟、中断、计数器)。

如果此功能占用了这么多时间,您可能应该更改设计。并在不禁用中断的情况下执行耗时的业务逻辑

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

即使中断被禁用,时钟也应继续滴答滴答地响?!时钟超限不会被捕获,因为它们也会在中断中处理。我希望您的“//业务逻辑”不会占用太多时间。因为禁用中断可能会对系统的许多部分产生不必要的影响。我的意图与时钟应该继续滴答作响完全相同,但当我们禁用中断时,是否有任何时钟将运行..因为我怀疑该功能占用了太多时间。。能帮帮我吗