我有一个函数可以在执行函数之前禁用中断,并在函数完成后重新启用中断。
我的要求是找到执行该功能需要多长时间?
以抽象的方式,这就是我想要做的事情:
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 :(得分:1)
如果此功能需要花费很多时间,您应该更改设计。并且在不禁用中断的情况下执行耗时的业务逻辑。
无论如何,如果你想坚持你当前的设计,我试着建议一个解决方案。 任何时钟寄存器将继续运行,您可以选择一个并在ISR的开始和结束时检查其值。如果计数器多次超限,您将无法指示。您还可以定期(如果您的业务逻辑是循环)检查时钟值并将传递的时间总和为变量。因此,时钟溢出将包含在计算中。