CubeIDE에서의 float 실수 출력과 문제점

2019. 8. 25. 17:19임베디드/32F429IDISCOVERY

float 실수 출력을 하기 위해서는 CubeIDE에서의 프로젝트 속성 - C/C++ Build - Settings - Tool Settings - MCU GCC Linker - Miscellaneous - Other flags에 -u _printf_float 을 기입하도록 한다. 하지만 실제로 출력을 하더라도 소수점은 출력이 되지만 다른 수가 출력이 된다

 

 

[출처] https://community.st.com/s/question/0D50X0000AldaPzSQI/cubeide-sprintf-does-not-work-with-f

 

링커 스크립트 파일이 잘못되었고, "The value _estack = 0x2001ffff; should be point one byte after the stack _estack = 0x20020000;" estack의 메모리 주소가 한 바이트 밀렸다는 얘기다. 따라서 .ld 파일에서 estack의 주소를 0x20020000으로 바꾼다면 올바르게 실수 출력이 완료될 것이다

 

 

현재 CubeIDE 버전에서는 올바르게 나오는 것 같다