多次触发中断会不会累加?

[复制链接]
1932|9
 楼主| 电信小菜 发表于 2013-7-31 17:39 | 显示全部楼层 |阅读模式
比如说,在定时器中断执行的10ms中,外部中断触发了10次(10个脉冲),等定时器执行完,轮到外部中断时,会不会累加执行10次?感觉应该只会执行一次吧
lyjian 发表于 2013-7-31 19:07 来自手机 | 显示全部楼层
xiaochun_gao 发表于 2013-7-31 22:42 | 显示全部楼层
只执行一次,前提是你的定时器中断优先级高

评分

参与人数 1威望 +1 收起 理由
电信小菜 + 1

查看全部评分

yanjiajiao 发表于 2013-8-2 11:00 | 显示全部楼层
肯定不会,所以对你运行中断程序所用的时间有要求,也就是说运行中断程序所需要的时间要小于二次中断间隔的时间,不知道我说清楚了没。嘻嘻!
diweo 发表于 2013-8-2 14:44 | 显示全部楼层
好像只有中段标志位,而没有中断计数寄存器的吧
所以最多只能执行1次
coody 发表于 2013-8-2 16:22 | 显示全部楼层
不会累加, 会丢失前面的
joyme 发表于 2013-8-2 16:46 | 显示全部楼层
如果是外部中断优先级高的,会执行10次,否则应该是执行1次
话说怎么可能那个定时中断要执行10ms那么久?10ms可以跑多少代码,不能把中断程序写的这么复杂吧
 楼主| 电信小菜 发表于 2013-8-3 08:29 | 显示全部楼层
joyme 发表于 2013-8-2 16:46
如果是外部中断优先级高的,会执行10次,否则应该是执行1次
话说怎么可能那个定时中断要执行10ms那么久?10 ...

是的,不应该这么做,坏习惯,以后尽量避免
sunhq02 发表于 2013-8-3 08:54 | 显示全部楼层
中断应该尽量短小
如果确实有很多事情要做
可以在中断中配置一个恰当的全局变量,或者发出一个消息
在中断完成后合适的时机执行剩下的内容
在linux里面这样叫做bottom half
 楼主| 电信小菜 发表于 2013-8-3 09:14 | 显示全部楼层
@ joyme@sunhq02
结构是这样的:
while(1)
{
    while()
    {
        任务1
    }
    while()
    {
        任务2
    }
    ......
}
在任务当中,需要跑到定时器中查询(10ms),之前以为将查询放主函数优先级不够高,就执行不到了,其实可以这样
while(1)
{
    while()
    {
        查询+标志位
        任务1
    }
    while()
    {
         查询+标志位
         任务2
    }
    ......
    查询
}
在任务中再查询就得了,定时器只置标志位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

236

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部