硬汉嵌入式论坛

 找回密码
 立即注册
查看: 755|回复: 5
收起左侧

[技术讨论] 关于单片机在中断到底能不能使用浮点运算(请教硬汉哥)

[复制链接]

22

主题

67

回帖

133

积分

初级会员

积分
133
发表于 2023-7-11 11:46:22 | 显示全部楼层 |阅读模式
百度说不能在中断中使用浮点运算,运算的结果可能是错误的,耗时的浮点操作导致中断函数计算不过来。
但是本人在G4系列中的单片机发现计算中断PID浮点结果是正确的,难道说是因为这款单片机支持FPU?,如果不支持的呢?请教一下硬汉哥

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2023-7-11 16:24:25 | 显示全部楼层
中断里面做浮点运行没问题,我都经常用,

有时候中断里面要做64bit运行,但是32bit芯片做64bit运算非常慢,都改成用支持硬件浮点的double计算。

另外像不支持硬件浮点的M3,M0系列也是没问题的。
回复

使用道具 举报

22

主题

67

回帖

133

积分

初级会员

积分
133
 楼主| 发表于 2023-7-11 17:26:02 | 显示全部楼层
eric2013 发表于 2023-7-11 16:24
中断里面做浮点运行没问题,我都经常用,

有时候中断里面要做64bit运行,但是32bit芯片做64bit运算非常 ...

还要一个问题请教硬汉哥,是不是支持FPU的仅仅是浮点运算有专门的硬件,而且不支持FPU的只是cpu硬算效率没有FPU的高而已呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2023-7-12 08:28:55 | 显示全部楼层
2360985396 发表于 2023-7-11 17:26
还要一个问题请教硬汉哥,是不是支持FPU的仅仅是浮点运算有专门的硬件,而且不支持FPU的只是cpu硬算效率 ...

是的,没有硬件FPU的,会软件方式计算浮点,时间比较长。
回复

使用道具 举报

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2023-7-14 13:53:24 | 显示全部楼层
无论软件/硬件浮点都能在中断中使用。如果是软件算的,设计时考虑浮点运算速度的影响就行。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2023-7-14 15:05:46 | 显示全部楼层
本帖最后由 caicaptain2 于 2023-7-14 15:11 编辑

代码中关于浮点的计算数值,一定要在浮点数后面加个f。 比如10.1f,这是单精度浮点;而不要直接用10.1,这是双精度浮点。 因为双精度浮点计算耗时很长,差10倍左右。

比如:
float r=3.0; //半径
float s;  //面积
s=r*r*3.14;  //这一句耗时较长。10倍的耗时。
可以用这个 s=r*r*3.14f。 这个就很快。和整数计算几乎一样的快。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 17:55 , Processed in 0.234076 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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