LPC55 sprintf 浮点数值 大家好, ,我正试图设置 sprintf 将浮点数打印为字符串。 我尝试了我找到的所有方法,更换了图书馆,但都没有成功。 在尝试打印负浮点数值时,要么结果不正确,要么出现故障。 实际处理器 LPC5506 浮点单元 fpv5-SP-D16 Hard ABI 设置 当前库设置 Redlib semihost 我正在使用 UART0 打印 预处理器设置 CPU _LPC5506JBD64 CPU_lpc5506jbd64_cm33 SDK_OS_BAREMETAL SDK_DEBUGCONSOLE=2 SERIAL_PORT_TYPE_UART=1 PRINTF_FLOAT_ENABLE=1 SCANTF_FLOAT_ENABLE=1 SCANTF_FLOAT_ENABLE=1 SCANF_OS_BAREMETAL SDK_DEBUGCONSOLE=2 F_FLOAT_ENABLE=1 PRINTF_ADVANCED_ENABLE=1 SCANF_ADVANCED_EN ABLE=1 __MCUXPRESSO __ USE_CMSIS 调试 DISABLEFLOAT16 __REDLIB__ 试用以下代码 浮点数P_Value = 3.123456f; 浮点数I_Value = 123.4567f; 浮点数D_Value = 0.654321f; sprintf(g_txBuffer,"rpm=%d, P_Value =%f, I_Value =%f, D_Value =%f \r",rpm_ist, P_Value, I_Value, D_Value); 没有警告或错误 而结果是 rpm = 206, P_Value = -0.000000、I_Value = -0.000000、D_Value = -0.000000 有没有办法让sprintf打印正确的值,包括负值,还是我必须自己编写变流器? 我看不到什么? 预先致谢 概述 LPC55xx Re: LPC55 sprintf float values 你好@SvenAsbach
请确保项目定义的符号和浮空点设置如下:
希望这能帮到您,
张俊
Re: LPC55 sprintf float values 包含并使用 Stdio.h。 在哪里可以检查现有项目是否使用了正确的 printf 版本? 我的预处理器设置已经发给你了。 版本中未使用 CR_INTEGER_PRINTF 使用完成版本 arm-none-eabi-gcc-DCPU_LPC5506JBD64-dcpu_lpc5506jbd64_cm33-DSDK_OS_BAREMETAL-DSDK_DEBUGCONSOLE=2-DSERIAL_PORT_TYPE_UART=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT__ADVANCED_ENABLE=1-DSCANF_ADVANCED_ENABLE=1-D __MCUXPRESSO -D__ USE_CMSIS-DDEBUG-DDISABLEFLOAT16-D __REDLIB__ xxxx-O0-fno-common-gdwarf-4-Wall-c-c-function-sections-fno-fdata-sections-fno-builtin-fmerge-constants-fmacro-prefix-map= ".../cmsis/dsp/source/BayesFunctions/ " =-mcpu=cortex-m33-mfpu=fpv5-sp-d16-mfloat-abi=hard-mthumb-D __REDLIB__-fstack-usage-specs=redlib.specs-M MD-MP Re: LPC55 sprintf float values 你好@SvenAsbach
您是否将"stdio.h" 包括在内?我们需要确保包含这个头文件。
我刚刚用你的代码测试了 sprintf,我这边没有问题。参见所附视频。
还请确保使用浮空点版本的 printf。
能否请您参照我的截图和测试视频检查一下您的问题?
顺祝商祺!
张俊
Re: LPC55 sprintf float values 感谢您的快速回复,但这无济于事。 您提出的所有建议都已设定并尝试过,但没有成功。 编译器使用 arm-none-eabi-gcc-DCPU_LPC5506JBD64-dcpu_lpc5506jbd64_cm33-DSDK_OS_BAREMETAL-DSDK_DEBUGCONSOLE=2-DSERIAL_PORT_TYPE_UART=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT_ENABLE=1-DPRINTF_FLOAT__ADVANCED_ENABLE=1-DSCANF_ADVANCED_ENABLE=1-D __MCUXPRESSO -D__ USE_CMSIS-DDEBUG-DDISABLEFLOAT16-D __REDLIB__-I " D:\Software\FC5706P_workspace\FC5706P101B001\drivers "-I " D:\Software\FC5706P_workspace\FC5706P101B001\device"-I " D:\Software\FC5706P_workspace\FC5706P101B001\component\serial_manager "-I " D:\Software\FC5706P_workspace\FC5706P101B001\utilities "-I " "-I " D:\Software\FC5706P_workspace\FC5706P101B001\component\uart D:\Software\FC5706P_workspace\FC5706P101B001\CMSIS"-I " D:\Software\FC5706P_workspace\FC5706P101B001\component\lists "-I " D:\Software\FC5706P_workspace\FC5706P101B001\CMSIS_driver\Include "-I " "-I " D:\Software\FC5706P_workspace\FC5706P101B001\CMSIS\DSP\Include D:\Software\FC5706P_workspace\FC5706P101B001\CMSIS\DSP\PrivateInclude"-I " D:\Software\FC5706P_workspace\FC5706P101B001\CMSIS\DSP\Source\DistanceFunctions "-I " D:\Software\FC5706P_workspace\FC5706P101B001\CMSIS\NN\Include "-I " "-I "\ D:\Software\FC5706P_workspace\FC5706P101B001\board D:\Software\FC5706P_workspace\FC5706P101B001来源 "-O0-fno-common-g3-gdwarf-4-Wall-c-function-sections-function-sections-fdata-sections-fno-builtin-fmerge-constants-fmacro-prefix-map= ".../cmsis/dsp/source/basicMathFunctions/ " =-mcpu=cortex-m33-mfpu=fpv5-sp-d16-mfloat-abi=hard-mthumb-D __REDLIB__-fstack-usage-specs=redlib.specs-mmd-MP " cmsis/dsp/Source/basicMathFunctions/basicMathFunctions/basicMathfunctions/basicMathFunctionsF16.D "-MT"CMSIS/DSP/Source/BasicMathFunctions/BasicMathFunctionsF16.o"-MT"CMSIS/DSP/Source/BasicMathFunctions/BasicMathFunctionsF16.d"-o"CMSIS/DSP/Source/BasicMathFunctions/BasicMathFunctionsF16.o""./CMSIS/DSP/Source/BasicMathFunctions/BasicMathFunctionsF16.c" Re: LPC55 sprintf float values 你好@SvenAsbach
如果你使用 SDK 演示,请尝试启用浮空支持
确保已定义的符号 printf float 已启用。
这对你有用吗?
顺祝商祺!
张俊
Re: LPC55 sprintf float values 通常,问题在于 CR_INTEGER_PRINTF 仍定义在 -D 选项列表中。 请务必完全 “清理” 版本,然后重试。 这是我的定义和链接器设置(工作状态): __REDLIB__ CPU_LPC55S69JBD100 CPU_LPC55S69JBD100_cm33 CPU_LPC55S69JBD100_cm33_core0 SDK_DEBUGCONSOLE=1 PRINTF_FLOAT_ENABLE=1 SERIAL_PORT_TYPE_UART=1 __MCUXPRESSO __ USE_CMSIS DEBUG 希望这能帮到您, 埃里希
View full article