你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 无法打印%f

[复制链接]
cyang 提问时间:2018-2-27 13:23 /
阅读主题, 点击返回1楼
收藏 评论18 发布时间:2018-2-27 13:23
18个回答
cyang 回答时间:2018-2-28 09:47:35
maxtch 发表于 2018-2-27 18:34
看来 IAR 的 printf 把打印浮点给精简掉了。这块代码的确是很占地方,我平时用 GCC + newlib 一般也是用去 ...

感谢你的提示,确实是 IAR 默认的 printf 输出不支持浮点,修改选项后便可。
cyang 回答时间:2018-2-28 09:48:01
pythonworld 发表于 2018-2-27 18:37
打印浮点数比较耗费内存,有些编译器需要加option,具体看看编译器的帮助。

感谢回复,确实需要修改 IAR 设置
xmstudio 回答时间:2018-2-28 10:49:30
拆开就可以了啊,没必要这么麻烦,把一个float拆成两个int类型的整数部分和小数部分,其中ADC_Final_Result是float型,ADC_Final_Result_d和ADC_Final_Result_f是uint16_t
  1.     ADC_Final_Result = ADC_Result_Sum * 3.358 / 4095 / 8;        //基准3.358V

  2.                   /* 因为sprintf不能输出float型变量,拆成两个int输出 */
  3.                   ADC_Final_Result_d = (uint16_t)ADC_Final_Result;        //整数部分
  4.                   ADC_Final_Result -= ADC_Final_Result_d;        //减去整数
  5.                   ADC_Final_Result_f = (uint16_t)(ADC_Final_Result * 1e03);        //保留三位小数
  6.                   sprintf(cBuffer, "Voltage = %d.%03dV", ADC_Final_Result_d, ADC_Final_Result_f);
  7.                   OLED_Print(cBuffer, 4);
复制代码


cyang 回答时间:2018-2-28 14:28:00
xmstudio 发表于 2018-2-28 10:49
拆开就可以了啊,没必要这么麻烦,把一个float拆成两个int类型的整数部分和小数部分,其中ADC_Final_Result ...

拆开是可以。
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版