单片机定时中断任务
一个相对复杂的定时任务函数,放在主循环和放在中断里面执行,哪个更优?
背景,一个主循环的运行时间大概是16ms,而中断也是定时的,5ms进一次中断。
现在的定时函数放在主循环里面,这样的话,它的最小精确度就是以个主循环的时间即16ms,而如果放在中断里面的话就是5ms。。
刚刚也请教了一下身边的朋友,讨论的结果大概是进中断处理复杂的函数,会因为处理哪个函数的时候,数据的保存和读取会花多余的时间。
我现在的理解大概也是这样的。如果要定时任务更精确,就可以放在中断里面,反之,放主函数。
不知道大婶们,有没有别的想法。
[解决办法]
你的理解完全正确。
还可以折中考虑一下,将中断函数拆开成两个部分,一部分在中断运行,一部分放在主程序运行。
这样要求时间准确的内容确保是5毫秒;不那么精确要求的放主程序。
[解决办法]
要看你要求定时函数的精度了。理论上是放在中断里面。
[解决办法]
如果有操作系统的话就容易了,在中断中直接提升函数所在任务的优先级就行了