STM32单片机初学2-从Keil工程创建开始

STM32开发环境有Keil,IAR,STM32CubeIDE等。本文将介绍在Keil环境下新建STM32工程,以供初学者参考学习。

一,Keil MDK安装

keil安装方法不详细介绍,按照步骤提示操作即可。目前最新版本是keil MDK5,也叫Keil uVision5。这里不建议软件汉化,因为汉化之后无法使用编码助手,非常不方便。

二,设备包的安装

不管在什么环境下开发单片机,新建工程时都会有一个选择设备的步骤,在这一步需要正确选择所使用的单片机型号,否则是无法下载程序的。由于keil还支持很多其他品牌的单片机,所以Keil软件本身是不带STM32的设备包(选择设备包时会发现没有设备可以选择,如下图),需要根据所使用的单片机型号自行安装设备包。

 所以keil MDK软件安装完成之后,首先需要安装设备库。设备库在Keil官网可下载,这里我使用的是F103型,所以下载F1xx_DFP,每个设备库都有历史版本,可根据需要选择。

下载完成之后,打开Keil软件,点击设备包安装:

 进入设备安装窗口,然后菜单栏选择File-Import,然后选择刚才下载的pack文件,点击打开,等待Pack安装。

 安装完成之后就可以看到STM32F1系列的单片机型号全在里面了(如下图)。实际上keil可以同时安装多个版本的设备包,但软件默认使用最新版本(如果想用旧版本,就点击Remove把新版本卸载)。这里我安装了2.4.0,2.3.0,2.2.0三个版本。之所以不用最新版本,是因为我的Keil版本与最新pack版本存在冲突,每次打开工程都会报错。实际情况因电脑而异,如果出现该情况,可尝试安装低版本Pack包。

安装完成之后关闭Pack Installer,会弹出窗口,提示是否需要需要重载设备,点击确定即可。

三,新建工程

新建工程步骤简单,在菜单栏选择Project -New Project,然后选择一个文件路径保存(最好不要带中文路径)。

 然后选择所使用的的单片机型号,这里我使用的是STM32F103C8T6,所以选择STM32F103C8,然后点击OK即可(若设备安装成功之后仍没有设备可以选择,则需要重启软件,再次新建工程即可选择对应的设备了。)。

 

选择设备之后,会弹出窗口,选择软件组成部分。这里的软件指的就是STM32的启动代码及标准外设库(例如ADC、GPIO、IIC等)。需要用到什么功能则将对应的库打钩添加进去。

对于初学者,建议将所有软件打勾,将所有软件添加进去,以免后期再去添加。后期需要添加的话则在该窗口选择即可。

为了方便后期的调试,在新建工程时应将各个功能的程序分类放置。例如,系统程序、外设库、个人程序分别放在单独的文件夹里。不同的功能也写在单独的.C程序中(如下可供参考)。

 项目开发时,常常需要对项目内容进行增减,就需要用到项目管理器(打开方式如下)。

 项目管理器,可以对每个文件夹里的内容及文件夹进行增删、修改、重命名等操作。不建议在电脑文件管理器里修改或者删除文件或者文件夹,这样做软件会报错。

完成上面一步后,还需要设置编译器。如下图在编译选项中点击“C/C++”,在Define中粘贴这句:USE_STDPERIPH_DRIVER,STM32F10X_MD ,然后在Include Paths中将工程中所有的文件夹路径一一添加进去。否则在头文件使用Define会报错。

 在编译选项中还需要设置一个仿真器,如下。

 使用的何种仿真器就选择什么,这里我使用的是ST-LInk。通过ST-LInk就可以通过软件直接将编译(F7)好的程序下载(F8)至单片机以及在线调试(Ctrl+F5)。

四,新建.C文件及.h头文件

工程创建之后,就可以开始写程序了。为了构建自己的工程框架,需要将不同的功能放在不同的.C程序中。在需要新建项目的文件夹上右击,选择“Add New item to Group 'xxxx'”.

 然后选择.C文件类型,命名后保存即可。

 然后项目文件夹中就出现了刚才的.c文件。Keil中程序中如果想要调用其他.c文件中的程序,还需要新建头文件。

假设我在刚才新建FirstItem的文件中写了两个函数ADD()和SUB()。

 如果我在主函数中直接调用这两个函数,会有警告,虽然可以通过编译,但是并不会把这两个子函数编译进去,所以单片机也就不会执行这个子函数。这就是因为没有头文件的原因。

 创建头文件:与.c文件相同的创建方式相同,选择.h文件类型,名称一般命名成与.c文件相同的名字。

 创建好了之后,需要在项目管理器中将刚才的.h文件添加到工程中。

在弹出的窗口中选择.h文件类型,然后选中创建的.h文件,添加即可。

 添加之后,FirstItem.h就能在工程中看到了。我们打开该文件

 

 然后在空白文件中写入程序

#ifndef _FIRSTITEM_H
#define _FIRSTITEM_H

函数1();

函数2();

#endif

里面的函数即FirstItem.c中声明的函数。如下图所示。

 这样,我想在哪个程序里调用FistItem里的函数(如ADD、SUB),只要在程序前#include <FistItem.h>即可,然后再调用ADD,SUB函数就可以了。

本文仅供参考,实际操作会有差异,如有错误,欢迎指出

猜你喜欢

转载自blog.csdn.net/qq_55203246/article/details/123514865