您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 2.MDK5软件入门
嵌入式系统二.MDK5软件入门本章内容•1.MDK5简介•2.MDK下C语言基础复习•3.STM32官方固件库简介•4.新建MDK5工程模板•5.程序调试1.MDK5简介1.1MDK5简介MDK源自德国的KEIL公司,是RealViewMDK的简称。在全球MDK被超过10万的嵌入式开发工程师使用。目前最新版本为:MDK5.14,该版本使用uVision5IDE集成开发环境,是目前针对ARM处理器,尤其是CortexM内核处理器的最佳开发工具。1.2MDK5安装双击mdk514.exe,进行安装。这里我们将其安装到D盘,MDK5.14文件夹下,需要设置安装路径,设置安装路径到D:\MDK5.14文件夹下当然这里你也可以安装在其他地方,自行修改路径即可,不过要注意:安装路径一定不要包含中文名字!然后在设置一些简单的信息(名字、公司、邮箱等)就开始安装了。1.2MDK5安装等待安装完成后,点击Finish即可完成安装,随后MDK会自动弹出PackInstaller界面,从右图可以看出,安装MDK5后,CMSIS和MDK中间软件包已经安装了。另外,程序会自动去KEIL的官网下载各种支持包,不过这个过程有可能失败,遇到这种情况,我们直接确定,然后关闭这个包安装器即可。安装STM32F103的器件支持包名字是:Keil.STM32F1xx_DFP.1.0.5.pack,双击这个安装包,即可完成MDK5的安装。1.3MDK5破解双击KeiluVision5图标(注意,如果直接双击无法注册,请右键以管理员身份运行MDK5,之后再注册),然后点击:FileLicenseManagement,调出注册管理界面。可以看出,MDK此时是评估版,使用上面是有限制的,不能编译超过32K的代码,需要输入注册码以后才可以正常使用。1.3MDK5破解首先,运行keygen.exe,在keygen.exe里面,设置Target为ARM,然后拷贝MDKLicenseManagement界面里面的CID号,到keygen.exe里面CID栏,点击:Generate,即可获得注册码,获取注册码。1.3MDK5破解拷贝注册码到LicenseManagement里面,点击AddLIC即可完成注册。从图中可以看到,我们破解后MDK可以用到2020年了。2.MDK下C语言基础复习2.1位操作GPIOA-CRL&=0XFFFFFF0F;GPIOA-CRL|=0X00000040;GPIOA-ODR|=15;GPIOA-ODR&=~(15);2.2extern变量申明C语言中extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。这里面要注意,对于extern申明变量可以多次,但定义只有一次。main.c文件u8id;main(){id=1;printf(d%,id);test();printf(d%,id);}test.c文件externu8id;voidtest(void){id=2;}2.3static关键字Static申明的局部变量,存储在静态存储区。它在函数调用结束之后,不会被释放。它的值会一直保留下来。所以可以说static申明的局部变量,具有记忆功能。intgetValue(void){intflag=0;flag++;returnflag;}intgetValue(void){staticintflag=0;flag++;returnflag;}2.4define宏定义define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便。常见的格式:#define标识符字符串“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。例如:#defineSYSCLK_FREQ_72MHz72000000定义标识符SYSCLK_FREQ_72MHz的值为72000000。2.5ifdef条件编译单片机程序开发过程中,经常会遇到一种情况,当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令最常见的形式为:#ifdef标识符程序段1#else程序段2#endif2.6结构体声明结构体类型:Struct结构体名{成员列表;}变量名列表;结构体作用:同一个类型可以用数组,不同类型可以用结构体组织。结构体可扩展性强。举例说明:voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)2.7typedef类型别名定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。struct_GPIO{__IOuint32_tCRL;__IOuint32_tCRH;…};struct_GPIOGPIOA,_GPIOB;typedefstruct{__IOuint32_tCRL;__IOuint32_tCRH;…}GPIO_TypeDef;GPIO_TypeDef_GPIOA,_GPIOB;3.STM32官方固件库简介3.1固件函数库的简介固件函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API(应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。3.2STM32官方固件库目录Libraries文件夹下面有CMSIS和STM32F10x_StdPeriph_Driver两个目录,这两个目录包含固件库核心的所有子文件夹和文件。其中CMSIS目录下面是启动文件,STM32F10x_StdPeriph_Driver放的是STM32固件库源码文件。Project文件夹下面有两个文件夹。顾名思义STM32F10x_StdPeriph_Examples文件夹下面存放的ST官方提供的固件实例源码,STM32F10x_StdPeriph_Template文件夹下面存放的是工程模板。Utilities文件下就是官方评估板的一些对应源码。stm32f10x_stdperiph_lib_um.chm文件是一个固件库的帮助文档。3.3关键文件夹介绍\Libraries\CMSIS\CM3\CoreSupport目录下面存放core_cm3.c和core_cm3.h文件,这个就是CMSIS核心文件,提供进入M3内核接口,这是ARM公司提供,对所有CM3内核的芯片都一样。3.3关键文件夹介绍\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下面主要存放一些启动文件以及比较基础的寄存器定义以及中断向量定义的文件。目录下面有三个文件:system_stm32f10x.c,system_stm32f10x.h以及stm32f10x.h文件。其中system_stm32f10x.c和对应的头文件system_stm32f10x.h文件的功能是设置系统以及总线时钟,这个里面有一个非常重要的SystemInit()函数,这个函数在我们系统启动的时候都会调用,用来设置系统的整个时钟系统。stm32f10x.h这个文件是系统寄存器定义申明以及包装内存操作。3.3关键文件夹介绍\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm这里之所以有8个启动文件,是因为对于不同容量的芯片启动文件不一样。startup_stm32f10x_hd.s:适用于大容量产品容量是指FLASH的大小:大容量:256K≤FLASH4.新建MDK5工程模板4.1新建工程1)在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为Template。2)点击MDK的菜单:Project–NewUvisionProject,然后将目录定位到刚才建立的文件夹Template之下,在这个目录下面建立子文件夹USER,然后定位到USER目录下面,我们的工程文件就都保存到USER文件夹下面。工程命名为Template,点击保存。4.2选择CPU型号3)接下来会出现一个选择CPU的界面,就是选择我们的芯片型号。在这里选择STMicroelectronicsSTM32F1SeriesSTM32F103STM32F103ZET6。4.3工程初步建立4)点击OK,MDK会弹出ManageRun-TimeEnvironment对话框,直接点击Cancel,即可。4.4工程USER目录5)USER目录下面包含2个文件夹和2个文件,Template.uvprojx是工程文件,非常关键,不能轻易删除。4.5工程目录6)在Template工程目录下面,新建3个文件夹CORE,OBJ以及STM32F10x_FWLib。CORE用来存放核心文件和启动文件,OBJ是用来存放编译过程文件以及hex文件,STM32F10x_FWLib文件夹顾名思义用来存放ST官方提供的库函数源码文件。已有的USER目录除了用来放工程文件外,还用来存放主函数文件main.c,以及其他包括system_stm32f10x.c等等。4.6复制到STM32F10x_FWLib文件夹7)打开官方固件库包,定位STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹copy到刚才建立的STM32F10x_FWLib文件夹下面。src存放的是固件库的.c文件,inc存放的是对应的.h文件。4.7复制CORE文件夹8)下面我们要将固件库包里面相关的启动文件复制到我们的工程目录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\STM32F10x\startup\arm下面,将里面startup_stm32f10x_hd.s文件复制到CORE下面。芯片STM32F103ZET6是大容量芯片,所以选择这个启动文件。4.8复制到USER文件夹9)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目录下面。4.9新建Grouos10)右键点击Target1,选择ManageProjectItems。在ProjectTargets一栏,我们将Target名字修改为Template,然后在Groups一栏删掉一个SourceGroup1,建立三个Groups:USER,CORE,FWLIB。然后点击OK,可以看到我们的Target名字以及Groups情况。4.10往Group添加文件11)右键点击点击Tempat
本文标题:2.MDK5软件入门
链接地址:https://www.777doc.com/doc-5196679 .html