欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32微控制器综合实训1 工程模板的建立

程序员文章站 2022-07-03 17:44:15
...
实验1 工程模板的建立

MDK5软件的安装与注册

(1) 打开本课程所提供的资料,进入到MDK5文件夹。选中后Keil uvision5 MDK版,右键解压到当前文件夹。

STM32微控制器综合实训1 工程模板的建立

(2) ******是注册软件,mdk518就是Keil MDK5软件了,我们通常称之为Keil5。(后面为方便统称为Keil5)

STM32微控制器综合实训1 工程模板的建立

(3) 开始安装Keil5,选mdk518,右键选择以管理员的身份运行此软件。(如果不这样做,可能相关驱动无法安装)

STM32微控制器综合实训1 工程模板的建立

(4) 点击NEXT。

STM32微控制器综合实训1 工程模板的建立

(5) 选中“I agree to…”,点击NEXT。
STM32微控制器综合实训1 工程模板的建立
(6) 选定安装的路径,路径不可含有中文,必须是全英文。
STM32微控制器综合实训1 工程模板的建立

(7) 随便填写信息,使用英文。 图2.7 填写用户基本信息
STM32微控制器综合实训1 工程模板的建立

(8) 点击NEXT安装。 图2.8 等待安装
STM32微控制器综合实训1 工程模板的建立

(9) 如果弹出是否要安装设备的界面,点击安装即可。(安装或者不安装都可以,因为到后面还要安装CH340的驱动)
STM32微控制器综合实训1 工程模板的建立

(10) 出现这个弹窗点击关闭即可。
STM32微控制器综合实训1 工程模板的建立

(11) 把MDK5弹出的所有窗口全部关闭。
STM32微控制器综合实训1 工程模板的建立

(12) 接下来,开始安装STM32F1系列的固件包。进入到此路径。第一个文件是固件库安装包,双击并根据提示进行安装。 STM32微控制器综合实训1 工程模板的建立

(13) 安装完成后,开始注册软件。回到桌面,左键选中,然后右键以管理员的身份运行。(注意win7以上的系统一定要以管理员的身份打开此软件。否则,**会失败。)点击file,然后选择“License Management…”。
STM32微控制器综合实训1 工程模板的建立

(14) 复制CID码。
STM32微控制器综合实训1 工程模板的建立

(15) 左键选中******,右键单击选择以管理员的身份运行。
STM32微控制器综合实训1 工程模板的建立
STM32微控制器综合实训1 工程模板的建立
(16) 将生成的LIC复制粘贴到下面的那个框中,点击Add LIC。 注意:如果没有***注册,软件将只能编译32KB以下的文件。STM32微控制器综合实训1 工程模板的建立

工程模板的建立

(1) 新建文件夹Template,点击MDK的菜单:Project–>New Uvision Project,然后将路径定位到Template之下,在这个文件夹下面建立子文件夹USER,将工程文件就保存在USER文件夹中。工程命名为Template,点击保存。
STM32微控制器综合实训1 工程模板的建立
STM32微控制器综合实训1 工程模板的建立

(2) 接下来会出现一个选择CPU的界面,就是选择芯片型号。如图2.19所示,实训平台所使用的芯片型号为STM32F103ZET6,所以在这里选择STMicroelectronics–>STM32F1 Series–>STM32F103–>STM32F103ZET6。
STM32微控制器综合实训1 工程模板的建立
STM32微控制器综合实训1 工程模板的建立
(3) 点击OK,MDK会弹出Manage Run-Time Environment对话框,这是MDK5 新增的一个功能,在这个界面,可以添加自己需要的组件,从而方便构建开发环境,由于本实验并没有用到,直接关闭即可。
STM32微控制器综合实训1 工程模板的建立

(4) 现在USER目录下面包含两个文件夹和两个文件。Template.uvprojx是工程文件,非常关键,不能删除。Listings和Objects文件夹是MDK自动生成的文件夹,用于存放编译过程产生的中间文件,将其删除即可。
STM32微控制器综合实训1 工程模板的建立

(5) 接下来,在Template工程目录下面,新建3个文件夹CORE、OBJ以及TM32F10x_FWLib。CORE用来存放核心文件和启动文件,OBJ是用来存放编译过程文件以及hex文件,STM32F10x_FWLib文件夹用来存放ST官方提供的库函数源码文件。已有的USER目录除了用来放工程文件外,还用来存放主函数文件main.c,以及其他包括system_stm32f10x.c等。
STM32微控制器综合实训1 工程模板的建立

(6) 将固件库包里面相关的启动文件复制到工程目录CORE文件夹。打开路径STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport,将文件core_cm3.c和文件core_cm3.h复制到CORE文件夹中。然后在路径STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\TM32F10x\startup\arm下面,将里面startup_stm32f10x_hd.s文件复制到CORE文件夹中。将官方的固件库包里的源码文件复制到工程目录文件夹下面。打开官方固件库包,STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 路径下,将目录下面的src和inc文件夹复制到STM32F10x_FWLib文件夹下面。src 存放的是固件库的.c文件,inc存放的是对应的.h文件,打开这两个文件目录过目一下里面的文件,每个外设对应一个.c文件和一个.h头文件。
STM32微控制器综合实训1 工程模板的建立

(7)STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x路径下,将里面的三个文件stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h,复制到USER目录下。STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template路径下的4个文件main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h复制到 USER目录下面。
STM32微控制器综合实训1 工程模板的建立

(8) 到此,需要的固件库相关文件已经复制到了工程目录下面,现在需要将这些文件加入到工程中。右键点击Template,选择Manage Components。
STM32微控制器综合实训1 工程模板的建立

(9) 下面往Group里面添加工程需要的文件。先选中FWLIB,然后点击右边的Add Files, 进入STM32F10x_FWLib/src路径下,将里面所有的文件选中(Ctrl+A),然后点击Add,然后点击Close可以看到Files列表下面已经包含添加的文件。这里需要说明一下,在平时的项目工程中,如果只用到了其中的某个外设,是不需要添加没有用到的外设库文件的。本实验中选择全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,可以根据需要自行选择。
STM32微控制器综合实训1 工程模板的建立
STM32微控制器综合实训1 工程模板的建立

(10) 用同样的方法,将Groups定位到CORE和USER下面,添加需要的文件。CORE下面需要添加的文件为core_cm3.c、core_cm3.h、startup_stm32f10x_hd.s (注意:默认添加的时候文件类型为.c, 也就是添加startup_stm32f10x_hd.s启动文件的时候,需要将选择文件类型更改为All files才能看得到这个文件),USER目录下面需要添加的文件为main.c、stm32f10x_it.c、system_stm32f10x.c。
STM32微控制器综合实训1 工程模板的建立
STM32微控制器综合实训1 工程模板的建立
(11) 在编译工程之前要先选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择Output选项下面的“Select folder for objects…”,然后选择目录为新建的OBJ目录。这里需要注意,如不设置Output路径,那么默认的编译中间文件存放目录就是Keil MDK5自动生成的Objects目录和Listings目录。
STM32微控制器综合实训1 工程模板的建立

(12) 添加头文件路径。对于任何一个工程,都需要把工程中引用到的所有头文件的路径都包含到进来。回到工程主菜单,点击魔术棒,出来一个弹窗,然后点击c/c++选项。然后点击Include Paths右边的按钮。弹出一个添加path的对话框,然后我们将如图2.33的3个目录添加进去。注意:Keil5只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级目录。然后点击OK。
STM32微控制器综合实训1 工程模板的建立

(13) 编译工程。可以看到出现很多错误。这是因为3.5版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以需要配置一个全局的宏定义变量。打开c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到Define输入框里面。(注意:实训平台使用的时STM32F103ZET6位大容量芯片,所以填写STM32F10X_HD,如果是中容量那么STM32F10X_HD修改为 STM32F10X_MD,小容量修改为STM32F10X_LD。)然后点击OK。
STM32微控制器综合实训1 工程模板的建立)

(14) 这次在编译之前,打开工程USER下面的main.c,复制下面一段代码到main.c覆盖已有代码,然后进行编译。(记得在代码的最后面加上一个回车,否则会有警告,这是软件本身的bug,与代码无关)可以看到,这次编译已经成功了。

STM32微控制器综合实训1 工程模板的建立
到了这里建立工程文件结束,可以明显感受到建立工程模版的步骤十分复杂。所以在以后实验里,可以直接拿本实验中建好的工程模版使用。

编译仿真

(1) 单击魔术棒,单击Target,将晶振改为8MHZ。

(2) 单击Debug选项,选择:Use Simulator,使用软件仿真。选择:Run to main(),即跳过汇编代码,直接跳转到main函数开始仿真。设置下方的:Dialog DLL分别为:DARMSTM.DLL和TARMSTM.DLL,Parameter均为:-pSTM32F103ZE,用于设置支持STM32F103ZE的软硬件仿真(即可以通过Peripherals选择对应外设的对话框观察仿真结果)。最后点击OK,完成设置。
STM32微控制器综合实训1 工程模板的建立
(3) 配置完成后点击OK。打开软件仿真。
STM32微控制器综合实训1 工程模板的建立
(4) 调用示波器。
STM32微控制器综合实训1 工程模板的建立
(5) 先点击红框内的小方框,然后点击Setup输入PORTB.5点击回车:
STM32微控制器综合实训1 工程模板的建立

出现下图所示,点击Close。
STM32微控制器综合实训1 工程模板的建立
(6) 点击运行。
STM32微控制器综合实训1 工程模板的建立
(7) 运行十秒钟左右点击停止。
STM32微控制器综合实训1 工程模板的建立

(8) 观察波形,测量高电平和低电平的时间间隔。如果观察不到波形。可以在上面找到Auto,点击就会自动调整。(上方红色小框)
STM32微控制器综合实训1 工程模板的建立

建立.c和.h文件

(1)在菜单栏中点击“File”,再点击“New”。保存File,路径选择USER,文件命名为Mzz.c

1. #include "stm32f10x.h"  
2.    
3. void Delay(u32 count){  
4.  u32 i=0;  
5.  for(;i<count;i++);  
6. } 
7.   
8.void Mzz(void){  
8.      GPIO_ResetBits(GPIOB,GPIO_Pin_5);  
9.      GPIO_SetBits(GPIOE,GPIO_Pin_5);  
10.     Delay(3000000);  
11.     GPIO_SetBits(GPIOB,GPIO_Pin_5);  
12.     GPIO_ResetBits(GPIOE,GPIO_Pin_5);  
13.     Delay(3000000);  
14.}  

(2)在菜单栏中点击“File”,再点击“New”,保存File,路径选择USER,文件命名为Mzz.h

1. extern void Mzz(void);

STM32微控制器综合实训1 工程模板的建立STM32微控制器综合实训1 工程模板的建立

(3)由于我们在USER下建立了Mzz.c和Mzz.h文件,而USER已经被添加到了工程中,所以Mzz.h也自动添加进本工程中。
STM32微控制器综合实训1 工程模板的建立

编译仿真

(4)打开仿真
STM32微控制器综合实训1 工程模板的建立
(5)设置断点
STM32微控制器综合实训1 工程模板的建立
(6)点击运行
STM32微控制器综合实训1 工程模板的建立
程序断在了第一个Delay,PE5被置1。
STM32微控制器综合实训1 工程模板的建立
(7)再点击运行
STM32微控制器综合实训1 工程模板的建立
程序断在了第二个Delay,PE5被清0。
STM32微控制器综合实训1 工程模板的建立

总结重点

1、添加.c和.h文件到工程中
STM32微控制器综合实训1 工程模板的建立

2、仿真设置

STM32微控制器综合实训1 工程模板的建立