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 버전에서는 올바르게 나오는 것 같다
'임베디드 > 32F429IDISCOVERY' 카테고리의 다른 글
U-blox M8N GPS NMEA 데이터 수신하기 (0) | 2019.09.27 |
---|---|
32F429IDISCOVERY CubeIDE에서 LL 드라이버로 BNO080 제어 -1 (0) | 2019.08.26 |
ST-Link V2 핀맵 (0) | 2019.08.23 |
32F429IDISCOVERY CubeIDE에서 LL 드라이버로 LED 제어 (0) | 2019.08.17 |
MII와 RMII 인터페이스 차이점 (0) | 2019.08.15 |