当前位置: 首页 > web >正文

关于DSP数据类型长度的思考

介绍

在dsp中写一个保留2位小数的函数

// 保留2位小数的函数
float round_to_2_decimal(float value)
{return (float)((int)(value * 100 + 0.5f)) / 100.0f;
}

dsp通过SCI串口传给上位机的浮点数据累加到一定程度莫名其妙的就不能增长了!

在这里插入图片描述

思考

上面的数据看上去只有2个字节,数据转换的中间环节肯定出了问题,要么是float要么是int,查看limits.h发现int数据大小有上限,为32767

在这里插入图片描述

另外调试也惊喜的发现各类型的数据大小:int居然为1(我觉得应该是编译器的原因,sizeof是运算符,dsp是16位的,所以int的实际大小应该是16x1,float大小为16x2)

在这里插入图片描述

解决

正确写法:包含stdint.h,使用int32_t类型,这下就能够使用32位的数据了

// 保留2位小数的函数
float round_to_2_decimal(float value)
{return (float)((int32_t)(value * 100 + 0.5f)) / 100.0f;
}

当然,也可以使用F2837xd_device.h里边的类型,这里也佐证了int是16位的!

typedef int                     int16;
typedef long                    int32;
typedef long long               int64;
typedef unsigned int            Uint16;
typedef unsigned long           Uint32;
typedef unsigned long long      Uint64;
typedef float                   float32;
typedef long double             float64;

总结

为了程序的兼容性和跨平台,建议统一使用stdint.h里边的类型

http://www.xdnf.cn/news/12599.html

相关文章:

  • openlayers实现可拖拽的节点(类似知识图谱)
  • 地震勘探——地震波速度、地震子波、合成地震记录、影响地震振幅的因素
  • 巨控GRM550系列,西门子 S7-1200 PLC 远程上下载与调试技术方案
  • SM560-S (1SAP280000R0001) AC500 CPU Firmware SM560-S-FD-4
  • python学习打卡day45
  • 深入Kubernetes源码阅读指南核心概念-代码目录-pkg/kubeapiserver
  • 信息检索与利用
  • AcWing 3417:砝码称重——位集合
  • MCV的安装和运行
  • 第4天:RNN应用(心脏病预测)
  • 前端异步编程全场景解读
  • Java多态中的类型转换详解
  • Cesium添加图片标记点、glb模型
  • 双面沉金电路板工艺全解析:关键技术要点与行业应用实践
  • 飞凌嵌入式AM62x核心板驱动微电网智能化创新
  • ABAT100蓄电池在线监测系统:准确预警,保障电池安全运行
  • 使用python把json数据追加进文件,然后每次读取时,读取第一行并删除
  • [蓝桥杯]兰顿蚂蚁
  • 2025年全国青少年信息素养大赛 scratch图形化编程挑战赛 小高组初赛 真题详细解析
  • vue3学习(toRefs和toRef,computed计算属性 ,v-model指令,箭头函数)
  • 2025/6/4知识点总结—HALCON像素坐标转物理坐标
  • chatlog:一个基于MCP实现聊天记录总结和查询的开源工具
  • WebFuture:Syncthing配置以www-data用户运行
  • LINUX 66 FTP 2 ;FTP被动模式;FTP客户服务系统
  • Python训练营---Day46
  • R²ec: 构建具有推理能力的大型推荐模型,显著提示推荐系统性能!!
  • python中的逻辑运算
  • 什么是强化学习:设置奖励函数最为loss, 监督学习:标签准确率作为loss
  • 三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
  • 【正念365】助你好“眠”