单片机定时中断任务

applegeeE 2012-04-19 05:12:14
一个相对复杂的定时任务函数,放在主循环和放在中断里面执行,哪个更优?
背景,一个主循环的运行时间大概是16ms,而中断也是定时的,5ms进一次中断。
现在的定时函数放在主循环里面,这样的话,它的最小精确度就是以个主循环的时间即16ms,而如果放在中断里面的话就是5ms。。
刚刚也请教了一下身边的朋友,讨论的结果大概是进中断处理复杂的函数,会因为处理哪个函数的时候,数据的保存和读取会花多余的时间。
我现在的理解大概也是这样的。如果要定时任务更精确,就可以放在中断里面,反之,放主函数。
不知道大婶们,有没有别的想法。
...全文
194 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
applegeeE 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
如果有操作系统的话就容易了,在中断中直接提升函数所在任务的优先级就行了
[/Quote]
额、、、
applegeeE 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
要看你要求定时函数的精度了。理论上是放在中断里面。
[/Quote]

OK 了解
applegeeE 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你的理解完全正确。
还可以折中考虑一下,将中断函数拆开成两个部分,一部分在中断运行,一部分放在主程序运行。
这样要求时间准确的内容确保是5毫秒;不那么精确要求的放主程序。
[/Quote]
OK,这点我确实没想到。非常感谢,不过可能之后的问题就会在于如何去拆分了。
x10101_21 2012-04-20
  • 打赏
  • 举报
回复
要看你要求定时函数的精度了。理论上是放在中断里面。
bjtea 2012-04-20
  • 打赏
  • 举报
回复
你的理解完全正确。
还可以折中考虑一下,将中断函数拆开成两个部分,一部分在中断运行,一部分放在主程序运行。
这样要求时间准确的内容确保是5毫秒;不那么精确要求的放主程序。
dceacho 2012-04-20
  • 打赏
  • 举报
回复
如果有操作系统的话就容易了,在中断中直接提升函数所在任务的优先级就行了

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧