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

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:234
  • 最近打卡:2025-06-28 13:11:36

5

主题

37

回帖

721

积分

高级会员

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

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

111.png

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2025-06-29 12:34:20
已绑定手机

81

主题

5220

回帖

9305

积分

超级版主

DebugLab

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:508
  • 最近打卡:2025-06-28 10:05:05
已绑定手机
已实名认证

113

主题

2423

回帖

6157

积分

版主

积分
6157
发表于 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
  • 打卡总天数:234
  • 最近打卡:2025-06-28 13:11:36

5

主题

37

回帖

721

积分

高级会员

积分
721
发表于 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
  • 打卡总天数:454
  • 最近打卡:2025-06-28 21:18:20
已绑定手机

40

主题

2079

回帖

7167

积分

论坛元老

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:284
  • 最近打卡:2025-06-29 07:59:49
已绑定手机

19

主题

128

回帖

1001

积分

金牌会员

STC-镇江-老蔡

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2025-06-30 00:05:33
已绑定手机

19

主题

3233

回帖

5351

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:526
  • 最近打卡:2025-06-29 18:40:17
已绑定手机

21

主题

118

回帖

1084

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:75
  • 最近打卡:2025-05-02 21:21:00
已绑定手机

0

主题

130

回帖

178

积分

注册会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-30 04:07 , Processed in 0.134073 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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