Loading...
 
Skip to main content

System Workbench for STM32


STM32429I_Discovery board with printf float support problem

Used cube to generate a project with default settings for STM32F429I disco board plus CMSIS V2 rtos and USART 2 half duplex transmit only .

Code
float fVal = 345.678;
printf("Hello World\r\n");
printf("fVal %f\r\n",fVal);

Output
Hello World
fVal . !

Issues
With -specs = nosys.specs -specs= nano.specs -u _printf_float printf causes a hard fault.
With specs = nosys.specs -specs -u _1st printf OK 2nd printf produces incorrect output

Project attached

Do you use RTOS? I have had the same effect. -u _printf_float seems only to work without RTOS.
The effect seems to be a faulty malloc heap overflow check in syscall.c
printf("%f") uses malloc. With RTOS, malloc does not return any memory and printf continues with a null pointer.
See this topic https://www.openstm32.org/forumthread353