找回密码
 立即注册
查看: 268|回复: 8

AI8051U卡中断

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-04-28 14:14:49

4

主题

35

回帖

147

积分

注册会员

积分
147
发表于 2025-2-28 13:51:07 | 显示全部楼层 |阅读模式
我在使用8051u的时候遇到一个问题代码里开启全部中断,定时器0123全部启用,定时器2用于串口发送数据,定时器0,1都开10ms中断中断目前没放代码,定时器3里运行差比和计算只有+—*/运算外加PID均为整数运算和浮点数运算+ADC采集定时器间隔10ms,单片机跑着跑就会导致中断卡死,将官方数学库lib移除即可解决问题,math头文件也加了,但是后面不知道为什么移除lib也无法解决中断卡死的问题,希望各位大佬帮忙,
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:243
  • 最近打卡:2025-05-01 21:37:44
已绑定手机

3

主题

37

回帖

763

积分

高级会员

积分
763
发表于 2025-2-28 13:56:50 | 显示全部楼层
6
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-04-28 14:14:49

4

主题

35

回帖

147

积分

注册会员

积分
147
发表于 2025-2-28 14:23:52 | 显示全部楼层
附上代码

2025电磁V1.0.zip

302.85 KB, 下载次数: 8

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-04-28 14:14:49

4

主题

35

回帖

147

积分

注册会员

积分
147
发表于 2025-2-28 14:31:52 | 显示全部楼层
下载进去中断不会马上开死要运行一会之后会随机卡死
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-2-28 14:43:43 | 显示全部楼层
打开的中断必须要有中断函数
主频接近极限频率要正确配置IAP_TPS
使用数学库不要使用REMOVEUNUSED
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-04-28 14:14:49

4

主题

35

回帖

147

积分

注册会员

积分
147
发表于 2025-2-28 14:47:46 | 显示全部楼层
我三个中断都有中断函数,至于你说“主频接近极限频率要正确配置IAP_TPS”具体应该怎么操作“使用数学库不要使用REMOVEUNUSED”修改了没作用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-04-28 14:14:49

4

主题

35

回帖

147

积分

注册会员

积分
147
发表于 2025-2-28 14:49:57 | 显示全部楼层
设置了IAP_TPS=40;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:93
  • 最近打卡:2025-04-28 14:14:49

4

主题

35

回帖

147

积分

注册会员

积分
147
发表于 2025-2-28 14:53:07 | 显示全部楼层
你说的方案我都试过了并没有解决我的问题

点评

问题很简单,通过屏蔽部分代码来逐渐定位就可以定位到了 原因是串口中断函数中没有对接收标志位清零,并且初始化代码中,对RXD配置为了高阻输入状态,此时端口电平不定,极其容易受到外部干扰造成电平信号波动。 如  详情 回复 发表于 2025-2-28 17:03
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-2-28 17:03:09 | 显示全部楼层
nkgd*** 发表于 2025-2-28 14:53
你说的方案我都试过了并没有解决我的问题

问题很简单,通过屏蔽部分代码来逐渐定位就可以定位到了

原因是串口中断函数中没有对接收标志位清零,并且初始化代码中,对RXD配置为了高阻输入状态,此时端口电平不定,极其容易受到外部干扰造成电平信号波动。
如果接收到外部的低电平信号,则会导致S4RI产生一个中断标志,而在中断函数中又未对这个标志进行清零处理,所以就会导致反复的进入串口4中断
截图202502281658456748.jpg
添加这段代码后解决问题


截图202502281659123989.jpg
程序中的IO口配置
使用小程序解析后为此状态:
截图202502281659335886.jpg
截图202502281700384617.jpg


以下是修改好后验证通过的工程文件:
2025电磁V1 (修改版).zip (314.5 KB, 下载次数: 6)

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 06:35 , Processed in 0.133769 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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