|
本帖最后由 wudecao-326254 于 2019-5-30 12:20 编辑 求助: sprintf(str,"v=%6.3f\n\r",0.3333); 或 printf("v=%6.3f\n\r",0.3333); 使用串口1发送 均得到的是v=0.000, 已按照truestudio的一些教程设置了-u_printf_float标志 这个函数的浮点功能,很重要呀,一些程序调试,打印Debug信息,液晶显示等都会用到 实在不行就只有换回Keil+stm32cubeMX了 求大神指点指点!!!
|
STM32CUBEIDE登陆报错:this session has expired! Please try to login again by going to myST-login,应如何处理?
update STM32cubeide 到2.0.0版本,找不到pinout view了!? 哪里出错了??
STM32CubeIDE release v2.0.0更新了
cubeide的代码怎么编译到内部+外部FLASH里面去
CubeIDE2.0.0更新无法打开.ioc文件
有没有大佬更新了CubeIDE2.0.0,在软件内更新后体积大了一倍
有人用过正式版的STM32CubeIDE for Visual Studio Code了吗?
STM32CUBE调试中出现没有 “uwTickPrio() at 0x20000004” 对应的源文件
在STM32CUBEIDE中配置完以后直接编译然后再运行出现《没有 “_end() at 0x20000108” 对应的源文件》
在STM32CUBEIDE中配置完以后直接编译出现《没有 “huart2() at 0x20000108” 对应的源文件》
微信公众号
手机版
要不你试试
_print_float("v=%6.3f\n\r",0.3333);
点评
评分
查看全部评分
貌似应该写成:
printf("V=%6f\n\r",0.333);才是
评分
查看全部评分
应该不是printf函数的问题,是stm32cubeIDE系统设置的问题
写6.3是保留3位小数的意思直接写printf("v=%f\n\r",0.333);
输出的是v=0.000000
目前我只能这样写了,用%d来替代%f:
char str[100];
float volt=1.23456;
sprintf(str, "volt=%d.%03d\n\r", (int) volt, (int) ((volt - (int) volt) * 1000));
str获得赋值"volt=1.234",但这样写好折腾
好像要添加头文件:#include <stdio.h>
谢谢回复,不是这个问题,没有加stdio.h编译通不过的。
是GCC编译器精简了printf/sprintf的float输出功能,本来应该在LINK时添加-u_printf_float标志,来启用float功能。
但是没有添加-u_printf_float完全没有数字输出,添加-u_printf_float数字输出为0.0000,都不对。恐怕是是stm32cubeIDE有Bug
重定向好麻煩
我是用巨集定義,沒有平台問題
int8_t u3txbuf[1000];
#define print3UART(...) sprintf(u3txbuf, __VA_ARGS__);HAL_UART_Transmit(&huart3,u3txbuf,strlen(u3txbuf),1000)
然後在project settings: C/C++ Build -> Settings -> Tool Settings -> MCU GCC Linker -> Miscellaneous -> Linker flags 中加入-u _scanf_float 就可以打印浮點
ex:
print3UART("[%d]TEST!!=%f\r\n",123,0.25f);
這個在SW4STM32中使用,同樣都是 Eclipse 基礎的IDE,設定都應該差不多。
评分
查看全部评分
问题解决了吗
谢谢,是这个问题,已经解决!!