找回密码
 立即注册
查看: 367|回复: 10

定时器中断

[复制链接]
  • TA的每日心情
    慵懒
    2024-1-17 13:42
  • 签到天数: 1 天

    [LV.1]初来乍到

    5

    主题

    5

    回帖

    61

    积分

    注册会员

    积分
    61
    发表于 2024-1-10 19:39:35 | 显示全部楼层 |阅读模式
    明明设置了100us的定时中断,但是发现中断程序程序运行了大约130us,这正常吗?不应该是100us后再重新进入中断重新跑吗?
    回复 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
    发表于 2024-1-10 22:10:38 | 显示全部楼层
    搞不定,就用我们这个小工具来帮你
    截图202401102209589599.jpg

    http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.92K.zip





    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:37
  • 签到天数: 143 天

    [LV.7]常住居民III

    20

    主题

    1093

    回帖

    2603

    积分

    金牌会员

    积分
    2603
    发表于 2024-1-11 08:52:25 | 显示全部楼层
    中断应该不会嵌套自己。。如果你的中断服务函数运行时间超过了定时器定时长度,就会变成出了中断服务函数又进中断服务函数
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-1-17 13:42
  • 签到天数: 1 天

    [LV.1]初来乍到

    5

    主题

    5

    回帖

    61

    积分

    注册会员

    积分
    61
     楼主| 发表于 2024-1-11 09:23:48 | 显示全部楼层
    _奶咖君_ 发表于 2024-1-11 08:52
    中断应该不会嵌套自己。。如果你的中断服务函数运行时间超过了定时器定时长度,就会变成出了中断服务函数又 ...

    麻烦可以再解释一下吗?我是设置了一个100us定时中断时间,然后在中断程序里,最开始让某个端口为低电平,在中断程序最后让电平翻转,通过示波器,结果一看电平翻转的时间是130us,说明中断服务程序要运行的比我设置的定时器中断时间要长。我不太明白这应该是咋运行的,按照我的理解,不应该就是定时器中断设置100us,然后哪怕中断服务程序运行时间再长,也只运行100us后,退出中断吗,常理上不应该后面的中断服务程序运行不到吗?可现在竟然也运行完了

    点评

    你把定时器计时和进中断分成两件事来想就可以了。 就是定时器计时一直计,溢出就给TF标志置1。 中断出来以后检测到TF标志就进中断。 这样就算定时中TF被置1了,但是因为还没出中断,所以没法自己打断自己。  详情 回复 发表于 2024-1-11 10:05
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    6 天前
  • 签到天数: 59 天

    [LV.5]常住居民I

    5

    主题

    14

    回帖

    99

    积分

    注册会员

    积分
    99
    发表于 2024-1-11 09:25:05 | 显示全部楼层
    _奶咖君_ 发表于 2024-1-11 08:52
    中断应该不会嵌套自己。。如果你的中断服务函数运行时间超过了定时器定时长度,就会变成出了中断服务函数又 ...

    就是出了中断,立马进中断吗
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:05
  • 签到天数: 123 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2048

    积分

    荣誉版主

    积分
    2048
    发表于 2024-1-11 10:05:49 | 显示全部楼层
    zs666 发表于 2024-1-11 09:23
    麻烦可以再解释一下吗?我是设置了一个100us定时中断时间,然后在中断程序里,最开始让某个端口为低电平 ...

    你把定时器计时和进中断分成两件事来想就可以了。
    就是定时器计时一直计,溢出就给TF标志置1。
    中断出来以后检测到TF标志就进中断。
    这样就算定时中TF被置1了,但是因为还没出中断,所以没法自己打断自己。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-1-17 13:42
  • 签到天数: 1 天

    [LV.1]初来乍到

    5

    主题

    5

    回帖

    61

    积分

    注册会员

    积分
    61
     楼主| 发表于 2024-1-11 10:42:10 | 显示全部楼层
    王昱顺 发表于 2024-1-11 10:05
    你把定时器计时和进中断分成两件事来想就可以了。
    就是定时器计时一直计,溢出就给TF标志置1。
    中断出来 ...

    好的,太谢谢您了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:37
  • 签到天数: 143 天

    [LV.7]常住居民III

    20

    主题

    1093

    回帖

    2603

    积分

    金牌会员

    积分
    2603
    发表于 2024-1-11 10:57:43 | 显示全部楼层
    weixin 发表于 2024-1-11 09:25
    就是出了中断,立马进中断吗

    是的,,,因为定时器的标志在中断服务函数运行过程中又被置位了,,退出中断之后MCU发现标志位又被置位所以就会再次响应中断,,
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:37
  • 签到天数: 143 天

    [LV.7]常住居民III

    20

    主题

    1093

    回帖

    2603

    积分

    金牌会员

    积分
    2603
    发表于 2024-1-11 10:59:58 | 显示全部楼层
    王昱顺 发表于 2024-1-11 10:05
    你把定时器计时和进中断分成两件事来想就可以了。
    就是定时器计时一直计,溢出就给TF标志置1。
    中断出来 ...

    没法自己打断自己,可以理解为因为中断优先级相同,所以单片机无法嵌套自己的中断么?

    点评

    对的,甚至说我有一个理论上的想法。 如果优先级是立刻生效的,那么在进入中断以后将本中断的优先级调高,那么如果一个中断时间内没有执行完成的话,就会被强行打断再次进入中断。虽然好像没啥用,不过应该算理论的  详情 回复 发表于 2024-1-11 13:30
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:05
  • 签到天数: 123 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2048

    积分

    荣誉版主

    积分
    2048
    发表于 2024-1-11 13:30:06 | 显示全部楼层
    _奶咖君_ 发表于 2024-1-11 10:59
    没法自己打断自己,可以理解为因为中断优先级相同,所以单片机无法嵌套自己的中断么? ...

    对的,甚至说我有一个理论上的想法。
    如果优先级是立刻生效的,那么在进入中断以后将本中断的优先级调高,那么如果一个中断时间内没有执行完成的话,就会被强行打断再次进入中断。虽然好像没啥用,不过应该算理论的巧妙运用?
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 07:12 , Processed in 0.076268 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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