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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版