集成开发环境:stm32cubeide 1.13.0
开发板:STM32F429I-Discovery
演示例程:STM32Cube_FW_F4_V1.27.0\Projects\STM32F429I-Discovery\Applications\STemWin\STemWin_HelloWorld
出现报错:
初步解决方案:
最终可以实现:
接下来在该例程基础上计划实现显示数字。使用sprintf函数
但是此时出现报错:
对于_sbrk出现了无定义的应用。
解决方案:在编译环境中加入底层文件sbrk
再次debug,不再出现错误:
此时联系前文,可以推断出最初编译HelloWorld文件出现的是相同的问题,函数read,close,lseek,write都是底层函数,在运行HelloWorld文件时对于这些函数进行了引用,但是并没有进行定义,所以需要自行加入这些底层函数的定义。
加入这些底层函数定义之后,即使在原Linker设置并不改变的情况下
再次运行HelloWorld程序,也会得到不出错的结果。
分析原因:最初的解决方案:设置Do not use system calls from library是通过避免使用这些未被定义的函数来避免产生运行错误,而之后改进的解决方案则是通过添加对于这些函数的定义来从根本上解决运行错误。