[STM32F1] 将指针转换为双精度时,MCU卡住

[复制链接]
304|1
 楼主| 地瓜patch 发表于 2025-7-4 22:42 | 显示全部楼层 |阅读模式
我定义一个数组:
uint8_t dat[8] = {0xcd, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0x5e, 0x40};
表示内存中的一个 double 类型变量数据,其值为 123.45。
以下代码:
int main(int argc, char *argv[]){    uint8_t dat[] = {0xcd, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0x5e, 0x40};    double test = *((double*)dat);    printf("%.3f\r\n", test);    return 0;}
输出结果为:123.450
但在 STM32F103RCT6 上运行时,以下代码会卡住:
double test = *((double*)dat);
而使用 float 类型则不会卡住:
float test = *((float*)dat);
如何在 STM32F103 上正确地将内存转换为 double 类型?
用的是 STM32CubeIDE

aozima 发表于 2025-7-4 23:37 | 显示全部楼层
看看是否报非对齐错误

- uint8_t 数据添加属性,确保其地址按8字节(double)对齐。
- 可以使用联合体,这样自动升级到最大对齐要求。
- 定义新double变量,然后按字节复制过去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

1937

主题

15241

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部