极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16899|回复: 4

关于"中断函数发生时millis()的数值将不会继续变化"

[复制链接]
发表于 2016-5-28 12:02:16 | 显示全部楼层 |阅读模式
没明白是什么意思啊,难道是说,如果我使用了中断(外中断或者时间中断), millis()返回的值就不准确了么(与实际时间相比变小了?因为中断时不计时)?
回复

使用道具 举报

发表于 2016-5-29 19:52:16 | 显示全部楼层
pumpitup 发表于 2016-5-28 21:51
中断不是应该有优先级的么

如果时钟中断优先级比外中断高,那么在外中断执行的时候,也会插入时钟中断 ...

具体的优先级是:外部中断0,定时器0,外部中断1,定时器1,串口中断
当有中断触发时,优先处理先提出中断请求的函数,如果两个中断同时向cpu提出中断请求,则按照优先级顺序处理,当优先处理的中断结束之后,如果另外一个中断依旧被触发,则再执行其中断函数

主要是因为当AVR(cpu)进入中断之后,会关闭全局中断检测,不再受理其他中断函数的请求,直到当前中断执行完毕才会打开全局中断检测

你当然可以在中断函数中使用语句打开全局中断检测,但是这意味着cpu将同时处理多个中断,这是十分危险的,不建议这么干
回复 支持 1 反对 0

使用道具 举报

发表于 2016-5-28 16:35:01 | 显示全部楼层
中断指的是,当满足触发中断的条件时,无论系统正在执行何种操作,都将跳转到你所设定的部分,执行完之后返回原位置继续执行。但是如果你正在使用mills计时器,也算是正在进行的操作,同样也会被暂停
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-28 21:51:30 | 显示全部楼层
zjz5717 发表于 2016-5-28 16:35
中断指的是,当满足触发中断的条件时,无论系统正在执行何种操作,都将跳转到你所设定的部分,执行完之后返 ...

中断不是应该有优先级的么

如果时钟中断优先级比外中断高,那么在外中断执行的时候,也会插入时钟中断,不就不会被暂停了?
回复 支持 反对

使用道具 举报

发表于 2016-5-29 19:47:06 | 显示全部楼层
本帖最后由 zjz5717 于 2016-5-29 19:52 编辑
pumpitup 发表于 2016-5-28 21:51
中断不是应该有优先级的么

如果时钟中断优先级比外中断高,那么在外中断执行的时候,也会插入时钟中断 ...


有优先级的,外部高于时钟
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 22:30 , Processed in 0.035790 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表