4. 建立工程

本章节教大家创建一个STM32的工程。

开发环境使用MDK,也即是Keil。

本文档只做概要说明,详细操作请参考视频教程

4.1. 安装MDK

自己网上寻找安装方法。

4.2. 安装芯片支持包

在创建工程之前,需要先安装芯片支持包,否则在芯片中找不到我们需要的型号。

按照下图打开Pack安装页面

../../_images/b03_30.jpg

在左边的Devices 中找到我们要的芯片系列,左键点击选中。

../../_images/b03_31.jpg

右边就会显示对应的支持包,我们只需要安装基础包。也就是第二行的,截图是我的电脑,已经安装好了。

没安装时和其他PACK一样显示Install,点击Install按钮就可以下载安装。

../../_images/b03_32.jpg

在底部的左边有安装信息,右边有安装进度。‘

../../_images/b03_33.jpg

../../_images/b03_34.jpg

直接下载速度较慢,而且经常会断开。

我们可以直接导入下载好的pack文件, 在我们共享的资料中,ref\4 mdk目录下的Keil.STM32F1xx_DFP.2.3.0.pack文件就是F103的支持包。

点击File菜单中的Import,选择pack文件即可导入。

../../_images/b03_35.jpg

4.3. 创建工程

安装完成后,双击图标打开主界面如下。

../../_images/b03_01.png

点击菜单栏的Help->About uVision,可以查看到版本信息,我使用的是V5.24.2.0。

../../_images/b03_02.png

创建工程之前我们先配置IDE环境,

../../_images/b03_03.png

ConfigurationEditor页中,把Automatic reload of externally modified files

../../_images/b03_04.png

点击Project中的New uVision Project 创建新工程

../../_images/b03_05.png

选择芯片STM32F103VE

../../_images/b03_06.png

弹出界面让我们选择软件包,我们都不是使用这些软件库。点击OK跳过。

../../_images/b03_07.png

创建完成,现在得到一个空的工程。

../../_images/b03_08.png

查看目录,现在只有工程文件,没有代码文件。

../../_images/b03_09.png

在目录中创建一个mcu文件夹。

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries下的STM32F10x_StdPeriph_Driver文件夹拷贝到mcu目录 名字太长,改为stdlib

拷贝STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\GPIO\IOToggle 中的文件到mcu目录

拷贝STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 中的源文件 拷贝启动代码,注意选对编译工具和型号 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

待补充

../../_images/b03_10.png

回到MDK

先选中目标名,再单击,修改为stm32_tech 同样修改源文件目录名

然后右键点击mcu,将刚刚拷贝到mcu目录的文件添加到工程的mcu下。

../../_images/b03_11.png

添加文件,添加启动代码的时候要注意,文件类型要选为ALL,才能看到汇编文件

../../_images/b03_12.png

../../_images/b03_13.png

新建一个Stlib的文件夹,把库文件全部添加

../../_images/b03_14.png

点击编译,在下方框中输出编译过程的信息,编译结果显示24个错误。错误都是提示找不到.h文件。

原因是我们没有添加头文件存放的路径。

../../_images/b03_15.png

点击魔术棒进入Option,开始配置工程。

首先将晶振修改为8M

../../_images/b03_16.png

在Output页中勾选如下,选择生成hex文件。

../../_images/b03_17.png

在C/C++页中,勾选上C99,并且将头文件存在的路径添加到Include Paths中。

../../_images/b03_18.png

点击工程目录树中,找到stm32f10x.h,在65开始的地方,默认没有定义任何类型的芯片,我们要定义一个芯片。

有些库文件时只读,在图标上面有一个钥匙标志,需要先修改文件属性才能修改。

../../_images/b03_19.png

在这个文件的105行,打开这个宏,选择使用标准库。

../../_images/b03_20.png

编译,错误,原因是我们没有忘记添加启动文件了。

../../_images/b03_22.png

添加启动文件,文件类型要选择为ALL files才能选中汇编文件。

../../_images/b03_21.png

编译通过。

../../_images/b03_23.png

4.4. 下载

在工程Option中,Debug页,右上角,选择调试器,默认是ULINK2……,我们选在CMSIS-DAP。

../../_images/b03_24.png

硬件连接正确的情况下,点击Settings,可以读到芯片。

../../_images/b03_25.png

回到主界面,点击Debug,开始调试。

../../_images/b03_26.png

进入调试后界面如下。

../../_images/b03_27.png

左键点击行号旁边可以添加断点,黄色三角符号是当前执行位置。

../../_images/b03_28.png

各种调试按钮在菜单栏。

../../_images/b03_29.png


20200114

end