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

中断嵌套多了会不会有问题

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:261
  • 最近打卡:2026-05-01 07:39:25

18

主题

246

回帖

568

积分

高级会员

积分
568
发表于 2026-4-14 14:28:55 | 显示全部楼层 |阅读模式
我有个这样的应用,芯片用的8H1K08,Timer0固定为1ms中断一次,Timer1、PWMA和PWMB这三个会随着程序参数变化,定时时间在90uS-240uS之间变动,
在定时器中断服务程序中我有16位的移位运算,同时还用了串口通信,主程序中在不停的进行着32位的乘除运算,有时候会有异常,程序会跑飞,
不知道会不会是这几个中断有那么几瞬间会来回嵌套,用于保存现场的R接触器正存着主程序中32位运算的中间变量呢,然后跳到某个中断去了,保存现场,
结果那个中断没执行完呢,又跳到另一个中断去了,再次保存现场(覆盖了老现场)
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:234
  • 最近打卡:2026-04-30 01:26:24
已绑定手机

22

主题

401

回帖

1816

积分

金牌会员

DIY玩家

积分
1816
发表于 2026-4-14 15:15:25 | 显示全部楼层
中断频繁其它线程
影响工作效率
真正的学徒往往怀着大师的心
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2026-04-30 14:48:25

9

主题

95

回帖

1053

积分

金牌会员

积分
1053
发表于 2026-4-14 15:38:58 | 显示全部楼层
当然,必须考虑中断嵌套的问题,要不然可能会引发未知问题。可以置标志位,统一在主循环中处理。
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:261
  • 最近打卡:2026-05-01 07:39:25

18

主题

246

回帖

568

积分

高级会员

积分
568
发表于 2026-4-15 08:14:10 | 显示全部楼层
狂热*** 发表于 2026-4-14 15:15
中断频繁其它线程
影响工作效率

影响主程序执行效率没有关系,只要不出错就行
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:261
  • 最近打卡:2026-05-01 07:39:25

18

主题

246

回帖

568

积分

高级会员

积分
568
发表于 2026-4-15 08:18:49 | 显示全部楼层
青穗*** 发表于 2026-4-14 15:38
当然,必须考虑中断嵌套的问题,要不然可能会引发未知问题。可以置标志位,统一在主循环中处理。 ...

你意思是说,中断里不让他干活,只让他置位标志位,然后在main里循环检测标志位?
这样也行,但是中断时间只有100多uS,主程序里好几个32位乘除法很费时间,
会不会出现都中断两次了,主程序还没走完一个循环
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2026-04-30 14:48:25

9

主题

95

回帖

1053

积分

金牌会员

积分
1053
发表于 2026-4-15 08:27:58 | 显示全部楼层
猫*** 发表于 2026-4-15 08:18
你意思是说,中断里不让他干活,只让他置位标志位,然后在main里循环检测标志位?
这样也行,但是中断时 ...

需要测量下主程序循环的时间
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:722
  • 最近打卡:2026-05-01 08:05:33
已绑定手机

17

主题

773

回帖

2812

积分

金牌会员

积分
2812
发表于 2026-4-16 07:26:49 | 显示全部楼层
猫*** 发表于 2026-4-15 08:18
你意思是说,中断里不让他干活,只让他置位标志位,然后在main里循环检测标志位?
这样也行,但是中断时 ...

主要是看主程序循环的运行时间,大于100us就会,小于100us就不会
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:261
  • 最近打卡:2026-05-01 07:39:25

18

主题

246

回帖

568

积分

高级会员

积分
568
发表于 2026-4-16 08:14:24 | 显示全部楼层
青穗*** 发表于 2026-4-15 08:27
需要测量下主程序循环的时间

基本不用测了,主程序里做着好多32位的运算,很慢,绝对超过80uS了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:261
  • 最近打卡:2026-05-01 07:39:25

18

主题

246

回帖

568

积分

高级会员

积分
568
发表于 2026-4-16 08:16:05 | 显示全部楼层
小*** 发表于 2026-4-16 07:26
主要是看主程序循环的运行时间,大于100us就会,小于100us就不会

肯定大于的,8位的8H1K08,没有硬件乘除法器,干着32位乘除运算很费劲,而且我还弄了好多32位的乘除运算
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:269
  • 最近打卡:2026-04-30 08:20:54
已绑定手机

22

主题

641

回帖

2384

积分

金牌会员

积分
2384
发表于 2026-4-16 08:29:37 | 显示全部楼层
只有4个优先级,嵌套最多4层,准确应该是3层

点评

多了会怎么样  发表于 2026-4-17 08:05
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-5-1 10:31 , Processed in 0.126177 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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