一、这篇文章想向大家说明一个问题,我们开发单片机的本质是什么?
在最早的开发中,我们没有Keil、IAR等等一系列好用的单片机集成开发环境,注意这里的“集成”,是指将多个软件其中有
①编辑器:记事本、NotePad++、vim(Linux中的)这些都是编辑器,可以给我提供关键词高亮、代码补全等等操作。
②编译器:gcc工具链,我们用的是arm-none-eabi-gcc工具链,注意这里有个“链”,链子???将一系列的工具串在了一块,可以分别使用也可以单独 使用,我们在Linux下输入了gcc -o hello hello.c,就生成了一个hello可执行文件./hello就打印一句hello world!给我们,或者这样说,我们在Keil中编写好了一个输出hello world!的程序,点下“编译”再点下“下载”,单片机的串口就会输出hello world!。
但是大家有没有思考过进行了这么一步,编译器到底做了什么?
相信大家已经知道了最终给机器运行的是0和1组成的二进制文件,但是我们C语言是如何转变为二进制文件的呢?
其中一个hello.c文件经历了“预处理”、“编译”、“汇编”、“链接”、生成hex/bin等可执行文件,其中每一步都是一个不同的软件来操作的。这些软件都被集成在了工具链之中,这里就不继续说下去了,如果大家感兴趣,可以给我留言,后面给大家详细科普。
③下载器:下载器是我们的ST-Link/JLink仿真器的驱动程序,通过这个下载器将程序烧写到我们的单片机中。
相信用过Keil的同学一定遇到过“找不到头文件这种错误吧”,在下图中红框的位置添加上该头文件的所在路径即可找到
我们在最早的单片机开发中没有怎么好用的开发环境时,都是通过一个叫Makefile的文件和make软件来帮助我们简化上面的各种操作,这是最本质的操作,我们现在使用的IoTStudio软件也是通过Makefile来进行控制编译。
二、开发环境的对比
1.Keil/IAR
相信各位单片机开发爱好者大都使用Keil/IAR这类开发软件,这类软件特别好用,因为他集成管理编译工具链、管理编译方式、提供代码补全、提供ST-Link/JLink仿真集成等,我们在使用时,只需要关心代码的逻辑问题,完全可以忽略其他的问题。
我们的开发步骤:
使用STM32CubeMX软件创建一个工程->选择芯片型号->配置时钟和各类需要用到的外设(GPIO,串口,定时器,中断控制器等)->选择生成工程(IAR/Keil/Makefile)->直接使用Keil/IAR打开创建好的工程即可开始编程。
2.IoTStudio
IoTStudio软件是使用Makefile来控制编译的,但是大家不用担心,Makefile不需要我们自己写,只要能看懂,会修改即可。编译、下载等按钮华为的工程师小哥哥们已经帮我们做好啦,都是只要点一下就可以。
本期为大家介绍关于单片机开发的系列知识,下期我会直接带大家从STM32CubeMX创建一个工程开始,直到能运行IoTStudio中的Demo程序!