硬汉嵌入式论坛

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

[有问必答] ARM_MATH无法正确计算三角函数值

[复制链接]

6

主题

12

回帖

30

积分

新手上路

积分
30
发表于 2024-6-6 09:32:22 | 显示全部楼层 |阅读模式
STM32G431CB,导入arm_math库、定义ARM_MATH_M4宏后:


测试代码如下:

        float32_t sinVal[10];
        float32_t cosVal[10];
        int16_t i;
       
        for(i=0;i<10;i++)
        {
                arm_sin_cos_f32(i,&sinVal[i],&cosVal[i]);
        }

附图为Debug循环结束后的变量值。


另外,arm_math中,arm_sin_f32也无法正常输出,表现为返回值等于传入参数。但math.h中的sin()函数可正常计算sin值。
感觉是自己的配置有问题,求教!


捕获1.PNG
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-6-6 10:12:38 | 显示全部楼层
参数范围是-180到179,试试我这个

278.png
回复

使用道具 举报

6

主题

12

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2024-6-6 10:39:20 来自手机 | 显示全部楼层
感谢硬汉哥,一开始就是参照您这个写的。输出与我上文上文附图类似,也不正常。
回复

使用道具 举报

6

主题

12

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2024-6-6 14:17:04 | 显示全部楼层
补充问题图片
捕获.PNG
回复

使用道具 举报

6

主题

12

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2024-6-6 16:39:58 | 显示全部楼层
同样的代码,在F103上就可以正常运行,但G431不行,好奇怪
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-6-7 09:40:57 | 显示全部楼层
pigeoncnc 发表于 2024-6-6 16:39
同样的代码,在F103上就可以正常运行,但G431不行,好奇怪

可以考虑单步调试,进入这个函数里面看下,是不是执行的这个代码。
回复

使用道具 举报

6

主题

12

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2024-6-7 11:42:49 | 显示全部楼层
已解决!感谢!
原因是开启FPU后错误的使用了arm_cortexM4l _math.lib(CubeMX默认配置为此文件)而非arm_cortexM4lf _math.lib造成的异常。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-6-8 01:11:35 | 显示全部楼层
pigeoncnc 发表于 2024-6-7 11:42
已解决!感谢!
原因是开启FPU后错误的使用了arm_cortexM4l _math.lib(CubeMX默认配置为此文件)而非arm_co ...

谢谢告知最终原因。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-9-25 16:07:19 | 显示全部楼层
太强了!!!非常感谢!!
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2024-12-18 17:03:39 | 显示全部楼层
pigeoncnc 发表于 2024-6-7 11:42
已解决!感谢!
原因是开启FPU后错误的使用了arm_cortexM4l _math.lib(CubeMX默认配置为此文件)而非arm_co ...

请问怎么修改的,我也遇到类似问题。我是stm32h750vbt
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-19 08:22:17 | 显示全部楼层
小花生 发表于 2024-12-18 17:03
请问怎么修改的,我也遇到类似问题。我是stm32h750vbt

使用源码工程即可。

我们的这个都是源码工程
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=94547
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2024-12-23 17:11:21 | 显示全部楼层
eric2013 发表于 2024-12-19 08:22
使用源码工程即可。

我们的这个都是源码工程

我的是项目已经写好的程序,用不了sin函数,sin函数算出来的值就是sin函数的参数,我们是stm32cubemx生成的基础工程,和这个源码工程是类似的吗。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-24 07:40:32 | 显示全部楼层
小花生 发表于 2024-12-23 17:11
我的是项目已经写好的程序,用不了sin函数,sin函数算出来的值就是sin函数的参数,我们是stm32cubemx生成 ...

stm32cubemx带的DSP库版本比较早。使用新版的试试,手动添加下,或者MDK RTE添加下

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 02:47 , Processed in 0.046743 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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