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

请教stc浮点运算应注意什么避免死机

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:280
  • 最近打卡:2025-08-23 10:25:51

5

主题

37

回帖

925

积分

高级会员

积分
925
发表于 2024-10-9 13:59:14 | 显示全部楼层 |阅读模式
用stc8g1k08a  17a ,程序需要不断计算浮点, 不过运行几分钟后就死机

请教浮点运算应注意什么避免死机, 死机是什么原因引起,如果加载mdu16会不会更好点

111.png

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:537
  • 最近打卡:2025-08-24 01:00:11
已绑定手机

86

主题

5982

回帖

1万

积分

超级版主

积分
10838
发表于 2024-10-9 14:56:42 | 显示全部楼层
我使用软件浮点没遇到过死机的情况,可以仿真看看
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:548
  • 最近打卡:2025-08-24 10:02:11
已绑定手机
已实名认证

116

主题

2716

回帖

6818

积分

版主

积分
6818
发表于 2024-10-9 15:28:24 | 显示全部楼层
检查确保没有除0错误
除0可能导致单片机重启或者卡死
回复

使用道具 举报 送花

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

8

主题

318

回帖

1837

积分

金牌会员

积分
1837
发表于 2024-10-9 15:47:17 | 显示全部楼层
curr有机会是零
82行就会出现除零
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:280
  • 最近打卡:2025-08-23 10:25:51

5

主题

37

回帖

925

积分

高级会员

积分
925
发表于 2024-10-9 21:35:31 | 显示全部楼层
本帖最后由 vip2128 于 2024-10-9 21:37 编辑
Lkck*** 发表于 2024-10-9 15:47
curr有机会是零
82行就会出现除零

搜了很多资料, 这里是浮点运算,即使被除数是0,得出值是NaN,倒没影响程序的运行,打印结果是NaN,加了判断curr==0,跳过运算,直接赋值后面结果为0去打印输出也是一样,1-2分钟后要死机,

最后就把定时器0产生方波的优先级大于定时器1串口,运行几个小时都没问题了,
本来是想串口优先,rx发送命令,tx接收数据不被中断,没想到出问题在这里。。
最先是怀疑stc的浮点运算不给力引起的,还想着引入mdu16去试试
定时器0是翻转脚位去产生方波,比pca语句简单,
主要是开机还能正常运行1-2分钟,后就死机,定时器0和串口在争夺什么出冲突了

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-08-23 08:57:24
已绑定手机

45

主题

2172

回帖

7590

积分

论坛元老

积分
7590
发表于 2024-10-10 09:36:09 | 显示全部楼层
vip2*** 发表于 2024-10-9 21:35
搜了很多资料, 这里是浮点运算,即使被除数是0,得出值是NaN,倒没影响程序的运行,打印结果是NaN,加了 ...

stc8g1k08a/17a芯片没有硬件浮点运算单元,也没有MDU硬件乘除法器。
浮点运算是使用keil编译器的软件数学库程序进行计算的,单片机只是按照编译器产生的机器码一条条指令执行而已。
运行一段时间后死机的话,还是好好查一下你的程序流程,避免循环判断的条件在其他中断里面被修改,导致判断条件无法满足而产生死循环,或者程序产生相互锁死的情况。
例如A程序需要B程序里面的参数设置后才能继续执行,B程序又要等A程序执行完成才能执行,这样程序就会相互锁死。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:317
  • 最近打卡:2025-08-23 09:52:26
已绑定手机

20

主题

131

回帖

1074

积分

金牌会员

STC-镇江-老蔡

积分
1074
发表于 2024-10-10 11:20:44 | 显示全部楼层
平安快乐
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:537
  • 最近打卡:2025-08-25 00:00:23
已绑定手机

19

主题

3257

回帖

5701

积分

论坛元老

积分
5701
发表于 2024-10-10 12:43:20 来自手机 | 显示全部楼层
浮点运算还会造成死机还真不知道。看来要好好学习了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:582
  • 最近打卡:2025-08-24 08:22:40
已绑定手机

22

主题

120

回帖

1315

积分

金牌会员

积分
1315
发表于 2024-10-10 19:27:03 | 显示全部楼层
数组越界/堆栈问题/错误的指针操作都会导致死机。
频率太高或受到干扰导致芯片内部晶体管异常导通也会死机。
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:91
  • 最近打卡:2025-08-24 12:42:59
已绑定手机

0

主题

130

回帖

252

积分

中级会员

积分
252
发表于 2024-11-11 23:12:02 来自手机 | 显示全部楼层
还是计算机组成原理的问题吗?
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-25 08:09 , Processed in 0.124042 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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