找回密码
 立即注册
查看: 1188|回复: 11

15f60s2定时器和串口中断优先级问题

[复制链接]

3

主题

15

回帖

75

积分

注册会员

积分
75
发表于 2024-11-4 09:54:44 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-11-4 10:05 编辑

项目要求:
1:定时器每100us中断一次;外部晶振是18.432m
2:串口1(硬件上面已经落实完毕,不可能更改串口了)实时和上位机通讯,

目前遇到问题是:串口1有很大概率无法进入中断接收数据
如果把定时器更改为500us中断周期;程序正常;

请问:有啥方法调整内部定时器中断优先级低,串口可以随时打断定时器中断去执行串口程序.


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9128

积分

超级版主

DebugLab

积分
9128
发表于 2024-11-4 10:09:13 | 显示全部楼层

中断优先级设置:
截图202411041008412572.jpg

截图202411041008566449.jpg

DebugLab
回复 支持 反对

使用道具 举报 送花

3

主题

15

回帖

75

积分

注册会员

积分
75
发表于 2024-11-4 10:12:27 | 显示全部楼层
在看官方的stc资料:
注意:当定时器/计数器0工作在 模式3(不可屏蔽中断的16位自动重装载模式)时,不需要允许
EA/IE.7(总中断使能位)只需允许ET0/IE.1(定时器/计数器0中断允许位)就能打开定时
器/计数器0的中断,此模式下的定时器/计数器0中断与总中断使能位EA无关。一旦此
模式下的定时器/计数器0中断被打开后,该定时器/计数器0中断优先级就是最高的,
它不能被其它任何中断所打断(不管是比定时器/计数器0中断优先级低的中断还是比其
优先级高的中断,都不能打断此时的定时器/计数器0中断),而且该中断打开后既不受
EA/IE.7控制也不再受ET0控制了,清零EA或ET0都不能关闭此中断                                                                  


那么,现在那种定时器才能满足要求呢
回复 支持 反对

使用道具 举报 送花

3

主题

15

回帖

75

积分

注册会员

积分
75
发表于 2024-11-4 10:17:08 | 显示全部楼层
Debu*** 发表于 2024-11-4 10:09
中断优先级设置:


PS=1;当部中断0优先级控制位。优先级中断(优先级1)

PT1=0;定时器1中断为最低优先级中断(优先级0)     定时器不是: 不可屏蔽中断的16位自动重装载模式

请问这样设置可否达到项目要求;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1837

积分

金牌会员

积分
1837
发表于 2024-11-4 10:17:41 | 显示全部楼层
会不会是你的定时中断内的代码耗时有机会超出100us?
结果出不去了?

点评

我觉得也是这样  详情 回复 发表于 2024-11-4 10:19
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9128

积分

超级版主

DebugLab

积分
9128
发表于 2024-11-4 10:19:07 | 显示全部楼层
Lkck*** 发表于 2024-11-4 10:17
会不会是你的定时中断内的代码耗时有机会超出100us?
结果出不去了?

我觉得也是这样
DebugLab
回复 支持 反对

使用道具 举报 送花

3

主题

15

回帖

75

积分

注册会员

积分
75
发表于 2024-11-4 10:24:51 | 显示全部楼层
Lkck*** 发表于 2024-11-4 10:17
会不会是你的定时中断内的代码耗时有机会超出100us?
结果出不去了?

不会的   中断里面就是几个时间标记寄存器赋值; main函数中采用时间轮询状态机进行调度
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1837

积分

金牌会员

积分
1837
发表于 2024-11-4 10:26:16 | 显示全部楼层
dabin*** 发表于 2024-11-4 10:24
不会的   中断里面就是几个时间标记寄存器赋值; main函数中采用时间轮询状态机进行调度 ...

贴代码来看看
回复 支持 反对

使用道具 举报 送花

3

主题

15

回帖

75

积分

注册会员

积分
75
发表于 2024-11-4 10:40:41 | 显示全部楼层

PS=1;当部中断0优先级控制位。优先级中断(优先级1)

PT1=0;定时器1中断为最低优先级中断(优先级0)     定时器不是: 不可屏蔽中断的16位自动重装载模式

请问这样设置可否达到项目要求;

点评

这样可以的,如果你没设置过定时器的优先级,只需要给ps置1就可以了  详情 回复 发表于 2024-11-4 17:44
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1837

积分

金牌会员

积分
1837
发表于 2024-11-4 15:16:04 | 显示全部楼层
dabin*** 发表于 2024-11-4 10:40
PS=1;当部中断0优先级控制位。优先级中断(优先级1)

PT1=0;定时器1中断为最低优先级中断(优先级0)     定 ...

没图没代码
只能帮你算个卦
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 02:06 , Processed in 0.334531 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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