Keil MDK5认识 微控制器STM32原理与应用实验指导.docx

上传人:b****6 文档编号:8252283 上传时间:2023-01-30 格式:DOCX 页数:22 大小:1.21MB
下载 相关 举报
Keil MDK5认识 微控制器STM32原理与应用实验指导.docx_第1页
第1页 / 共22页
Keil MDK5认识 微控制器STM32原理与应用实验指导.docx_第2页
第2页 / 共22页
Keil MDK5认识 微控制器STM32原理与应用实验指导.docx_第3页
第3页 / 共22页
Keil MDK5认识 微控制器STM32原理与应用实验指导.docx_第4页
第4页 / 共22页
Keil MDK5认识 微控制器STM32原理与应用实验指导.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Keil MDK5认识 微控制器STM32原理与应用实验指导.docx

《Keil MDK5认识 微控制器STM32原理与应用实验指导.docx》由会员分享,可在线阅读,更多相关《Keil MDK5认识 微控制器STM32原理与应用实验指导.docx(22页珍藏版)》请在冰豆网上搜索。

Keil MDK5认识 微控制器STM32原理与应用实验指导.docx

KeilMDK5认识微控制器STM32原理与应用实验指导

KeilMDK5认识

1实验目的

(1)学习使用KeilMDK5建立工程;

(2)熟悉KeilMDK5编程语言;

(3)学会使用KeilMDK5的软件仿真。

2实验任务

(1)安装KeilMDK5软件,安装芯片软件包,注册软件;

(2)新建工程文件;

(3)下载程序,并进行软件仿真,观察程序运行结果。

3实验说明

STM32所有系列的微控制器都可以在KeilMDK5下进行软件开发。

KeilMDK,也称MDK-ARM,RealviewMDK、I-MDK、uVision4 等。

目前KeilMDK由三家国内代理商提供技术支持和相关服务。

MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。

MDK-ARM专为微控制器应用而设计,不仅易学易用,而且功能强大,能够满足大多数苛刻的嵌入式应用。

4实验步骤

(1)安装KeilMDK5软件,安装芯片软件包,注册软件;

(2)建立工程文件,选择芯片型号,加载系统文件、内核文件、标准外设驱动函数,添加系统启动文件;

(3)设置头文件加载路径,需要配置一个全局的宏定义变量,定位到c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到Define输入框里面;

(4)编译整个工程,根据提示修改语法错误;

(5)下载程序;

(6)选择仿真模式,利用模拟示波器观察程序运行结果。

MDK5软件的安装和注册

(1)打开本课程所提供的资料,进入到MDK5文件夹。

选中后Keiluvision5MDK版,右键解压到当前文件夹。

图2.1解压Keiluvision5MDK版

(2)keygen是注册软件,mdk518就是KeilMDK5软件了,我们通常称之为Keil5。

(后面为方便统称为Keil5)

图2.2MDK5文件夹

(3)开始安装Keil5,选mdk518,右键选择以管理员的身份运行此软件。

(如果不这样做,可能相关驱动无法安装)

图2.3开始安装

(4)点击NEXT。

图2.4点击NEXT

(5)选中“Iagreeto…”,点击NEXT。

图2.5接受服务条款

(6)选定安装的路径,路径不可含有中文,必须是全英文。

图2.6设置安装路径

(7)随便填写信息,使用英文。

图2.7填写用户基本信息

(8)点击NEXT安装。

图2.8等待安装

(9)如果弹出是否要安装设备的界面,点击安装即可。

(安装或者不安装都可以,因为到后面还要安装CH340的驱动)

图2.9安装串口驱动

(10)出现这个弹窗点击关闭即可。

图2.10关闭弹窗

(11)把MDK5弹出的所有窗口全部关闭。

图2.11关闭所有弹窗

(12)接下来,开始安装STM32F1系列的固件包。

进入到此路径。

第一个文件是固件库安装包,双击并根据提示进行安装。

图2.12安装固件包

(13)安装完成后,开始注册软件。

回到桌面,左键选中

,然后右键以管理员的身份运行。

(注意win7以上的系统一定要以管理员的身份打开此软件。

否则,激活会失败。

)点击file,然后选择“LicenseManagement…”。

图2.13注册软件

(14)复制CID码。

图2.14CID码

(15)左键选中keygen,右键单击选择以管理员的身份运行。

图2.15运行keygen

图2.16生成LIC

(16)将生成的LIC复制粘贴到下面的那个框中,点击AddLIC。

图2.17添加LIC

注意:

如果没有注册机注册,软件将只能编译32KB以下的文件。

新建工程模板

(1)新建文件夹Template,点击MDK的菜单:

Project–>NewUvisionProject,然后将路径定位到Template之下,在这个文件夹下面建立子文件夹USER,将工程文件就保存在USER文件夹中。

工程命名为Template,点击保存。

图2.18新建工程

(2)接下来会出现一个选择CPU的界面,就是选择芯片型号。

如图2.19所示,实训平台所使用的芯片型号为STM32F103ZET6,所以在这里选择STMicroelectronics–>STM32F1Series–>STM32F103–>STM32F103ZET6。

图2.19选择芯片类型

图2.20选择芯片型号

(3)点击OK,MDK会弹出ManageRun-TimeEnvironment对话框,这是MDK5新增的一个功能,在这个界面,可以添加自己需要的组件,从而方便构建开发环境,由于本实验并没有用到,直接关闭即可。

图2.21添加组件对话框

(4)现在USER目录下面包含两个文件夹和两个文件。

Template.uvprojx是工程文件,非常关键,不能删除。

Listings和Objects文件夹是MDK自动生成的文件夹,用于存放编译过程产生的中间文件,将其删除即可。

图2.22删除Listings和Objects文件夹

(5)接下来,在Template工程目录下面,新建3个文件夹CORE、OBJ以及TM32F10x_FWLib。

CORE用来存放核心文件和启动文件,OBJ是用来存放编译过程文件以及hex文件,STM32F10x_FWLib文件夹用来存放ST官方提供的库函数源码文件。

已有的USER目录除了用来放工程文件外,还用来存放主函数文件main.c,以及其他包括system_stm32f10x.c等。

图2.23新建文件夹

(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头文件。

图2.24src文件夹

(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目录下面。

图2.25USER文件夹

(8)到此,需要的固件库相关文件已经复制到了工程目录下面,现在需要将这些文件加入到工程中。

右键点击Template,选择ManageComponents。

图2.26ManageComponents

(9)下面往Group里面添加工程需要的文件。

先选中FWLIB,然后点击右边的AddFiles,进入STM32F10x_FWLib/src路径下,将里面所有的文件选中(Ctrl+A),然后点击Add,然后点击Close可以看到Files列表下面已经包含添加的文件。

这里需要说明一下,在平时的项目工程中,如果只用到了其中的某个外设,是不需要添加没有用到的外设库文件的。

本实验中选择全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,可以根据需要自行选择。

图2.27添加src文件

图2.28添加过后的FWLIB

(10)用同样的方法,将Groups定位到CORE和USER下面,添加需要的文件。

CORE下面需要添加的文件为core_cm3.c、core_cm3.h、startup_stm32f10x_hd.s(注意:

默认添加的时候文件类型为.c,也就是添加startup_stm32f10x_hd.s启动文件的时候,需要将选择文件类型更改为Allfiles才能看得到这个文件),USER目录下面需要添加的文件为main.c、stm32f10x_it.c、system_stm32f10x.c。

图2.29添加过后的CORE

图2.30添加过后的USER

(11)在编译工程之前要先选择编译中间文件编译后存放目录。

方法是点击魔术棒,然后选择Output选项下面的“Selectfolderforobjects…”,然后选择目录为新建的OBJ目录。

这里需要注意,如不设置Output路径,那么默认的编译中间文件存放目录就是KeilMDK5自动生成的Objects目录和Listings目录。

图2.31更改Output路径

(12)添加头文件路径。

对于任何一个工程,都需要把工程中引用到的所有头文件的路径都包含到进来。

回到工程主菜单,点击魔术棒,出来一个弹窗,然后点击c/c++选项。

然后点击IncludePaths右边的按钮。

弹出一个添加path的对话框,然后我们将如图2.33的3个目录添加进去。

注意:

Keil5只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级目录。

然后点击OK。

图2.32添加头文件路径

(13)编译工程。

可以看到出现很多错误。

这是因为3.5版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以需要配置一个全局的宏定义变量。

打开c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到Define输入框里面。

(注意:

实训平台使用的时STM32F103ZET6位大容量芯片,所以填写STM32F10X_HD,如果是中容量那么STM32F10X_HD修改为STM32F10X_MD,小容量修改为STM32F10X_LD。

)然后点击OK。

图2.33通过宏定义选择外设

(14)这次在编译之前,打开工程USER下面的main.c,复制下面一段代码到main.c覆盖已有代码,然后进行编译。

(记得在代码的最后面加上一个回车,否则会有警告,这是软件本身的bug,与代码无关)可以看到,这次编译已经成功了。

#include"stm32f10x.h"

voidDelay(u32count)//延迟函数

{

u32i=0;

for(;i

}

intmain(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);//使能PB端口时钟

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//LED0-->PB.5端口配GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度为50MH

GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化GPIOB.5

GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB.5输出高

GPIO_Init(GPIOE,&GPIO_InitStructure);//初始化GPIOE.5

GPIO_SetBits(GPIOE,GPIO_Pin_5);//PE.5输出高

while

(1)

{

GPIO_ResetBits(GPIOB,GPIO_Pin_5);//PB.5输出低

Delay(3000000);//延迟

GPIO_SetBits(GPIOB,GPIO_Pin_5);

Delay(3000000);

}

}

图2.34编译工程

可以看到0个错误,0个警告。

到此工程就建立完成了。

图2.35编译结果

到了这里建立工程文件结束,可以明显感受到建立工程模版的步骤十分复杂。

所以在以后实验里,可以直接拿本实验中建好的工程模版使用。

软件仿真

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

图2.36设置晶振

(2)单击Debug选项,选择:

UseSimulator,使用软件仿真。

选择:

Runtomain(),即跳过汇编代码,直接跳转到main函数开始仿真。

设置下方的:

DialogDLL分别为:

DARMSTM.DLL和TARMSTM.DLL,Parameter均为:

-pSTM32F103ZE,用于设置支持STM32F103ZE的软硬件仿真(即可以通过Peripherals选择对应外设的对话框观察仿真结果)。

最后点击OK,完成设置。

图2.37软件仿真配置

(3)配置完成后点击OK。

打开软件仿真。

图2.38开始仿真

(4)调用示波器。

图2.39打开示波器

(5)先点击红框内的小方框,然后点击Setup输入PORTB.5点击回车:

图2.40添加监控GPIOB.5

出现下图所示,点击Close。

图2.41添加成功

(6)点击运行。

图2.42开始运行

(7)运行十秒钟左右点击停止。

图2.43仿真结束

(8)观察波形,测量高电平和低电平的时间间隔。

如果观察不到波形。

可以在上面找到Auto,点击就会自动调整。

(上方红色小框)

图2.44观察示波器

(9)比较测量的时间与设定的时间的误差并分析其原因。

下载程序到实训平台

(1)接上J-LinkV8,并把Jlink插到实训平台上,打开OptionsforTarget选项卡,在Debug栏选择使用J-LINK/J-TRACECortex,如下图。

图2.45选择JLINK下载

(2)点击Settings,进入下图所示界面。

图2.46选择下载模式

(3)如果提示keilcannotloaddriverJL2CM3.dll,需要配置系统环境。

自行XX进入设置系统环境变量的方法。

(出现这种情况大部分是由于在电脑的用户名为中文用户名)

图2.47更改环境变量

(4)填写完后,点击确定即可进入下一步。

然后:

点击FlashDownload,进行如下设置

图2.48下载配置

(5)点击确定,返回之前那个界面然后,点击Utilities按钮,在设置完之后,点击OK,回到IDE界面。

图2.49选择UseDebugDriver

(6)为了能直观的观察效果,我们为PB5接一个灯,这样就可以控制LED灯的闪烁。

也可使用示波器观察实际输出波形。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1