STM32也是用C语言来开发,也会经过类似的编译过程,只不过我们常常用MDK或者其它IDE来编译,其编译过程如下:
例如,我们的LED程序编译过程如下:
在IDE中进行编译时,我们只需点击编译按钮即可完成这些过程,编译过程用到的工具(.exe文件)在IDE的安装目录下的某个文件夹下,比如我们这里用的MDK的编译工具路径:
一般这些IDE或者工具集的一些编译工具都放在bin
文件夹。再比如我们MinGW
工具集(里面包含gcc/g++编译器
,可以编译在电脑上运行的程序)的编译工具所在路径为:
回归正题,我们的MDK
编译时就是使用安装路径下的这些编译工具来完成我们的编译过程。
究其本质,我们在cmd
命令窗口也是可以通过命令来编译我们的STM32程序的(前提是配好环境变量,否则得到编译工具所在的路径下进行编译)。
但是我们不会这样干,因为IDE已经给我们提供了很大的便利。比如:
下面看一下我们在cmd窗口下运行armcc命令
看会发生什么:
我们看到了很多关于armcc命令
的提示说明,有些常用的编译选项已经集成在MDK里供我们选择,比如:
axf文件、hex文件与bin文件都是可以运行在我们的stm32上的,它们都存储了编译器根据源代码生成的机器码,根据应用场合的不同,它们又有所区别。
- axf文件:包含调试信息。
- hex文件:包含地址信息。
- bin文件:最直接的代码映像。
axf文件是编译默认生成的文件,不仅包含代码数据,而且还包含着调试信息,在MDK里进行debug调试用的就是这个文件。
hex文件在MDK里要勾选如下选项才可以生成:
hex 文件是一种使用十六进制符号表示的代码记录, 记录了代码应该存储到FLASH 的哪个地址,下载器可以根据这些信息辅助下载。
bin文件是根据axf文件生成的,需要在MDK下添加类似如下格式命令来生成对应的bin文件:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
ief-1726101482538)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。