查看: 3274|回复: 10

[求助] K60中断问题请教!

[复制链接]

该用户从未签到

23

主题

83

帖子

0

中级会员

Rank: 3Rank: 3

积分
268
最后登录
2022-5-2
发表于 2015-3-30 14:15:23 | 显示全部楼层 |阅读模式
假设裸跑,有n个中断源。
比如时钟,串口还有IO中断等。。。
现在我假设此时时钟中断1到了,中断程序开始执行,然后时钟中断2到了,中断一产生时运行的程序还没有执行完毕,此时中断3比如串口又到了。
我想问的是这些中断会不会丢。。。
假设优先级一致,那么是不是就按照1执行完执行2,然后执行3.还是嵌套执行?
还有一个这个如果能执行,最多中断能这样嵌套多少个级别?

我知道答案 目前已有10人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-3-30 14:45:25 | 显示全部楼层
楼主你好!
K60支持16个优先级设置,所以最多是16级。
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

83

帖子

0

中级会员

Rank: 3Rank: 3

积分
268
最后登录
2022-5-2
 楼主| 发表于 2015-3-30 16:44:54 | 显示全部楼层
我的意思,不是中断优先级,我的意思同等优先级的是什么情况呢?
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-3-31 09:34:14 | 显示全部楼层
fyzhuhui 发表于 2015-3-30 16:44
我的意思,不是中断优先级,我的意思同等优先级的是什么情况呢?

你看我们的中断向量表的名字:Nested Vectored Interrupt Controller
其中nested就是嵌套的意思,所以有多少个中断优先级,就有多少层嵌套。
回复 支持 反对

使用道具 举报

该用户从未签到

23

主题

83

帖子

0

中级会员

Rank: 3Rank: 3

积分
268
最后登录
2022-5-2
 楼主| 发表于 2015-3-31 13:11:32 | 显示全部楼层
我的意思是如果中断在同一个优先级。会不会嵌套执行。如果不会,后面的中断会不会丢失?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-3-31 14:32:31 | 显示全部楼层
    这个资料不好找,要看内核资料,有的是支持中断中高优先级打断,有的是必须要本次中断执行完毕以后,再执行等待中断执行列表中最高优先级的中断。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    83

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    268
    最后登录
    2022-5-2
     楼主| 发表于 2015-3-31 22:21:42 | 显示全部楼层
    我问一个比较具体的问题,请您给我解释一下好么?
    假设我写程序是定时器中断1ms一次,假设某次进入中断以后,该次中断函数执行时间可能达到2ms,那么下一个1ms能否进入中断,是等待前一个执行完毕,还是就被处理器丢掉。还是其他的情况。
    盼望着你的回答。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
    发表于 2015-4-1 08:56:19 | 显示全部楼层
    本帖最后由 zico1998 于 2015-4-1 09:00 编辑
    fyzhuhui 发表于 2015-3-31 22:21
    我问一个比较具体的问题,请您给我解释一下好么?
    假设我写程序是定时器中断1ms一次,假设某次进入中断以后 ...


    你可以试验感受下。。。。比如你1ms中断,然后累加一个数,比如m_tcc.1ms,到1000清零。完了你在中断程序里写个延迟,比如m_tcc.1ms计数到500时候你判断进入一个延迟很长的程序,你看效果会咋样。。。。
    (不过你主程序最好安排成轮询方式的程序,就是判断事件时间是否到,不到就轮询,到就进入操作一下,如果遇到需要等待的如FLASH操作,就关总中断。。。合理安排芯片的工作)

    中断程序
    ...
    m_tcc.1ms++;
    if(1000<=m_tcc.1ms)
    {
        m_tcc.1ms=0;
    }
    else if(500==m_tcc.1ms)
    {
        m_tcc.cnt++;
        whlie(100000000>m_tcc.cnt)
        {
        }
    }
    我今天最想说
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-4-1 11:21:57 | 显示全部楼层
    fyzhuhui 发表于 2015-3-31 22:21
    我问一个比较具体的问题,请您给我解释一下好么?
    假设我写程序是定时器中断1ms一次,假设某次进入中断以后 ...

    如果是同等优先级的,也就是自身的中断频率高于了你自己中断服务程序的时间。
    那么,肯定是有下一次中断被丢掉的情况,这个肯定要等中断服务函数做完成之后,才能相应下一次的中断请求。
    如果是高优先级的,低中断函数会被打断,执行高优先级的服务函数,完成再回低中断服务函数。
    你这种情况,同等的优先级,再执行自身的服务函数时,不会被自身的下一次中断打断的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23

    主题

    83

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    268
    最后登录
    2022-5-2
     楼主| 发表于 2015-4-1 13:43:04 | 显示全部楼层
    多谢各位!
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-23 10:33 , Processed in 0.103865 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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