您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 使用STM32固件库建立keil工程详细步骤(精)
建立基于STM32固件库的工程模版(ALIENTEK这是一个独立的建立工程的资料,如果您手头没有我们ALIENTEKSTM32开发板的源码和资料,请您到我们ALIENTEK官方技术论坛:下载,下载地址为:所有资料均免费提供。初学者搭建开发环境建立工程模版大约需要2-3个小时,请耐心按照手册的讲解来。一.需要准备的资料:1.STM32F10x_StdPeriph_Lib_V3.5.0(这是ST官网下载的固件库完整版我们官方论坛下载地址:(我们的板子的开发环境目前是使用这个版本二.安装MDK3.8a(Keil:这个在我们不完全手册中已经讲解,这里重复一次。1.找到MDK的安装文件并点击安装:文件在我们光盘的目录:ALIENTEK开发板资料\软件\MDK3.80A2.点击之后出现界面,选择Next3.选择”IAgree…Licenceagreement”同意协议:4.选择安装目录,这里用户自行选择安装的目录后,点击Next即可:4.随便输入邮箱之类的信息即可,点击Next开始安装:5.按图配置,然后点击Finish,左面会出现keil快捷图标。三.注册License(破解,如果不破解只能支持32K的代码步骤简介:在MDK针对每台机会有一个CID,copy这个CID到注册机处生成LicenseKey,然后再将这个LicenseKey添加到MDK里面去注册。1.右键点击左面的MDK快捷方式,选择“以管理员身份运行”,因为注册license需要管理员权限。然后会打开MDK,然后默认会有一个名字叫“LPC2129simulator”的Project,暂时我们可以不用理会。2.点击:File-LicenseManagement,弹出一个LicenseManagement界面,copy界面中的(CID:3.打开光盘下面的注册机,目录为:ALIENTEK开发板资料\软件\MDK3.80A\注册4.出现注册界面,黏贴刚才copy的cid到CID一栏,然后Target选择ARM5.选择好之后点击“Generate”,下面的空白栏会生成一个LicenseKey,类似:D0DY8-30KAK-0N8AM-X9Z14-A2NWP-J3LZZ,copy这个license.6.将这个LicenseKey黏贴到Keil的LicenseManagement界面的NewLicenseIdCode一栏,然后点击“AddLIC”,添加成功后会出现成功提示。然后点击Close关闭这个界面即可。三.新建工程1.回到MDK主界面,可以看到工程中有一个默认的工程,点击这个工程名字,然后选择菜单Project-CloseProject,就关闭掉这个工程了!这样整个MDK就是一个空的了,接下来我们将建立我们的工程模版。2.在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为:STM32-Projects.3.点击Keil的菜单:Project–NewUvisionProject,然后将目录定位到刚才建立的文件夹STM32-Projecst之下,在这个目录下面建立子文件夹Tempalte,然后定位到Template目录下面,我们的工程文件就都保存到Template文件夹下面。工程命名为Template,点击保存4.接下来会出现一个选择Device的界面,就是选择我们的芯片型号,这里我们定位到STMicroelectronics下面的STM32F103RB(针对我们的mini板子是这个型号,如果是其他芯片,请选择对应的型号即可。5.弹出对话框“CopySTM32StartupCodetoproject….”,询问是否添加启动代码到我们的工程中,这里我们选择“否”,因为我们使用的ST固件库文件已经包含了启动文件。6.可以看到工程建立了,我们回到Template目录下面,可以看到只有三个文件:7.接下来,我们在Template工程目录下面,新建3个文件夹CORE,USER,STM32F10x_FWLib。USER用来放我们主函数文件main.c,以及其他包括system_stm32f10x.c等等,CORE用来存放启动文件等,STM32F10x_FWLib文件夹顾名思义用来存放ST官方提供的库函数源码文件。8.下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。打开官方固件库包,定位到我们之前准备好的固件库包的目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹copy到我们刚才建立的STM32F10x_FWLib文件夹下面。src存放的是固件库的.c文件,inc存放的是对应的.h文件,您不妨打开这两个文件目录过目一下里面的文件,每个外设对应一个.c文件和一个.h头文件。9.下面我们要将固件库包里面相关的启动文件复制到我们的工程目录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下面,将里面所有的文件同样复制到CORE下面。这里我们解释一下,其实我们只用到arm目录下面的startup_stm32f10x_md.s文件,这个文件是针对中等容量芯片的启动文件。其他两个主要的为startup_stm32f10x_ld.s为小容量,startup_stm32f10x_hs.c为大容量芯片的启动文件。这里copy进来是方便其他开发者使用小容量或者大容量芯片的用户。现在看看我们的CORE文件夹下面的文件:10.定位到目录: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目录下面。11.前面10个步骤,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入我们的工程中去。右键点击Target1,选择ManageComponents12.ProjectTargets一栏,我们将Target名字修改为Template,然后在Groups一栏删掉一个,建立三个Groups:USER,CORE,FWLIB.点击OK.可以看到我们的Target名字以及Groups情况。13.下面我们往Group里面添加我们需要的文件。我们按照步骤12的方法,右键点击点击Tempate,选择选择ManageComponents.然后选择需要添加文件的Group,这里第一步我们选择FWLIB,然后点击右边的AddFiles,定位到我们刚才建立的目录STM32F10x_FWLib/src下面,将里面所有的文件选中(Ctrl+A,然后点击Add,然后Close.可以看到Files列表下面包含我们添加的文件。这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。例如我只用GPIO,我可以只用添加stm32f10x_gpio.c而其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选择。14.用同样的方法,将Groups定位到CORE和USER下面,添加需要的文件。这里我们的CORE下面需要添加的文件为core_cm3.c,startup_stm32f10x_md.s,USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c.这样我们需要添加的文件已经添加到我们的工程中去了,最后点击OK,回到工程主界面。15.下面我们点击编译按钮编译工程,可以看到很多报错,因为找不到库文件。16.下面我们要告诉MDK,在哪些路径之下搜索相应的文件。回到工程主菜单,点击魔术棒,出来一个菜单,然后点击c/c++选项.然后点击IncludePaths右边的按钮。弹出一个添加path的对话框,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级子目录。然后点击OK.ALIENTEKSTM32开发板资料接下来,我们再来编译工程,可以看到又报了很多同样的错误。为什么呢??我们可以双击错误,然后会自动定位到文件stm32f10x.h中出错的地方,可以看到代码:16ALIENTEKSTM32开发板资料开源电子网#if!defined(STM32F10X_LD&&!defined(STM32F10X_LD_VL&&!defined(STM32F10X_MD&&!defined(STM32F10X_MD_VL&&!defined(STM32F10X_HD&&!defined(STM32F10X_HD_VL&&!defined(STM32F10X_XL&&!defined(STM32F10X_CL#errorPleaseselectfirstthetargetSTM32F10xdeviceusedinyourapplication(instm32f10x.hfile#endif这是因为3.5版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。按照步骤16,定位到c/c++界面,然后copy“STM32F10X_MD,USE_STDPERIPH_DRIVER”到Define里面。这里解释一下,如果你用的是大容量那么STM32F10X_MD修改为STM32F10X_HD,小容量修改为STM32F10X_LD.然后点击OK。18.这次在编译之前,我们记得打开工程USUR下面的main.c,复制下面代码到main.c覆盖已有代码,然后进行编译。(记得在代码的最后面加上一个回车,否则会有警告)#includestm32f10x.hGPIO_InitTypeDefGPIO_InitStructure;intmain(void{SystemInit(;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;17ALIENTEKSTM32开发板资料=GPIO_Mode_Out_PP;GPIO_Init(GPIOD,&GPIO_InitStructure;while(1{/*SetPD0andPD2*/GPIOD-BSRR=0x0000
本文标题:使用STM32固件库建立keil工程详细步骤(精)
链接地址:https://www.777doc.com/doc-2861619 .html