硬汉嵌入式论坛

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

[技术讨论] 用Cortex M33遇到的奇怪问题,浮点数组转换的问题

[复制链接]

1

主题

67

回帖

70

积分

初级会员

积分
70
发表于 2022-5-14 17:02:26 | 显示全部楼层 |阅读模式
本帖最后由 JIAYU 于 2022-5-14 17:04 编辑

11111.jpg


测试代码见上图
第一条语句执行正常,data1 = 1

执行第二条后,会跳到 NMI_Handler 中断,屡试不爽
真不知道为啥

MDK 5.33 编译器 AC6.15  ,硬件浮点已开启(关闭硬件浮点就正常
2222.jpg




下面的测试代码,有M33的可以试试
float fdata[1] = {1.1f};

int main(void)
{
//    SystemInit();

    uint16_t data1 = (uint16_t)1.1f;        // 1
    uint16_t data2 = (uint16_t)fdata[0];    // 2


   while(1);
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2022-5-14 17:30:35 | 显示全部楼层
这种写法,编译无法通过。

image.png
回复

使用道具 举报

1

主题

67

回帖

70

积分

初级会员

积分
70
 楼主| 发表于 2022-5-14 17:35:26 | 显示全部楼层
本帖最后由 JIAYU 于 2022-5-14 17:49 编辑
eric2013 发表于 2022-5-14 17:30
这种写法,编译无法通过。

9999.jpg
这么神奇,我这边可以编译通过,,,,,神奇了

那要是改成下面这样呢?我测试了也还是进入中断

float fdata[1] = {1.1f};

int main(void)
{
//    SystemInit();

    uint16_t data1 = (uint16_t)1.1f;        // 1
    uint16_t data2 = 0;  
   data2 = (uint16_t)fdata[0];    // 2

   while(1);
}


回复

使用道具 举报

6

主题

89

回帖

107

积分

初级会员

积分
107
发表于 2022-5-16 17:15:03 | 显示全部楼层
这有啥神奇的,我遇到过神奇的memcpy函数,
回复

使用道具 举报

77

主题

691

回帖

922

积分

金牌会员

积分
922
发表于 2022-5-16 23:08:13 | 显示全部楼层
改成这个试试 data2 = (uint16_t)*(&fdata[0]);
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2022-5-17 00:20:40 | 显示全部楼层
JIAYU 发表于 2022-5-14 17:35
这么神奇,我这边可以编译通过,,,,,神奇了

那要是改成下面这样呢?我测试了也还是进入中断

我的是AC6.18
回复

使用道具 举报

210

主题

1045

回帖

1685

积分

至尊会员

More we do, more we can do.

积分
1685
发表于 2022-5-17 12:44:57 | 显示全部楼层
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdint.h>

float fdata[1] = {1.1f};

int main(void)
{
    uint16_t data1 = (uint16_t)1.1f;        // 1
    uint16_t data2 = (uint16_t)fdata[0];    // 2
    
    printf("%d %d", data1, data2);
}

1 1

GCC测试正常的,语法没问题。
回复

使用道具 举报

1

主题

67

回帖

70

积分

初级会员

积分
70
 楼主| 发表于 2022-5-18 10:43:52 | 显示全部楼层
庄永 发表于 2022-5-16 23:08
改成这个试试 data2 = (uint16_t)*(&fdata[0]);

感谢提供方法,这个问题莫名其妙又好了
回复

使用道具 举报

1

主题

67

回帖

70

积分

初级会员

积分
70
 楼主| 发表于 2022-5-18 10:44:43 | 显示全部楼层
mygod 发表于 2022-5-16 17:15
这有啥神奇的,我遇到过神奇的memcpy函数,

AC6好多莫名其妙的问题,这个问题莫名其妙又好了,不知道啥时候再出现
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 06:38 , Processed in 0.279923 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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