收藏 分享(赏)

如何使用STM32_V3.5版本固件库在Keil4下建立工程模板.doc

上传人:ysd1539 文档编号:7061912 上传时间:2019-05-04 格式:DOC 页数:8 大小:744KB
下载 相关 举报
如何使用STM32_V3.5版本固件库在Keil4下建立工程模板.doc_第1页
第1页 / 共8页
如何使用STM32_V3.5版本固件库在Keil4下建立工程模板.doc_第2页
第2页 / 共8页
如何使用STM32_V3.5版本固件库在Keil4下建立工程模板.doc_第3页
第3页 / 共8页
如何使用STM32_V3.5版本固件库在Keil4下建立工程模板.doc_第4页
第4页 / 共8页
如何使用STM32_V3.5版本固件库在Keil4下建立工程模板.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、如何使用 STM32_V3.5 版本固件库在 Keil4 下建立工程模板准备工作如下:1. 下载 STM32F10x_StdPeriph_Lib_V3.5.0 固件库。2. 下载并安装好 Keil uVision V4.10(MDK4)开始:1. 首先解压 STM32F10x_StdPeriph_Lib_V3.5.0 固件库。PS:保留一个备份,你懂的。解压得到如图 1 所示的几个文件夹。其中_htmresc 文件夹:里面是 ST 的 Logo 图片,没有多大用,可以删除。Libraries 文件夹:是比较重要的文件 包含 STM32 的系统文件和大量头文件,即库文件。Project 文件夹:

2、里面为 STM32F10x 的例程和工程模板。Keil 对应的就是 MDK-ARM 文件下的工程模板。也可以利用这个工程模板为原型建立自己的工程模板本文不用此法。Utilities 文件夹:里面有一些实用程序,也没多大用,可删除。Release_Notes.html:版本注视,可删除。stm32f10x_stdperiph_lib_um.chm:帮助文件,你懂的。2. 为了项目程序中的各部分条理清晰,我们建议工程文件夹时对其子目录子下归类建立子文件夹,例建立一个工程文件夹 My Project,在其下在创建五个子文件夹如图 2 所示:其中:CMSIS 文件夹:此文件夹从 STM32F10x_S

3、tdPeriph_Lib_V3.5.0 固件库中的 CMSIS 文件夹直接复制过来。Libraries 文件夹:此文件夹从 STM32F10x_StdPeriph_Lib_V3.5.0 固件库中的Libraries 文件夹复制过来。只保留当中的 inc 和 src 文件夹。即只包含头文件。Startup 文件夹:此文件夹从 CMSISCM3DeviceSupportSTSTM32F10xStartup 目录下直接将 Startup 文件剪切出来。其中放置的是启动代码,具体的代码根据所用芯片的容量选择,我们用的 STM32F103C8 为中等容量芯片,故选择其中的 startup_stm32f1

4、0x_md.s启动代码,其他不用的可以删除User 文件夹:User 文件夹为用户的应用程序,其中包括 main.c ,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 四个文件,这四个文件可从 V3.5.0固件库 ProjectSTM32F10x_StdPeriph_Template 目录下复制过来,当然 main.c 文件中的内容可删除。Project 文件夹 :此文件夹用来存放项目文件。比如你等下要建立的工程名字 My Program.uvproj,就放在这里。 在该文件下存放一些项目的输出信息,OUTPUT,和LISTING 信息,可以建立这

5、两个文件夹,之后就可以在 OPTIONS FOR TARGET PROJECT 里面进行路径设置。3. 打开 Keil4 软件,在 Project 菜单下选择 New uVision Project 新建新的项目,键入新的项目名称如 My Program,保存到刚才的 Project 文件夹下面。4. 选择芯片类型,根据实际情况选择芯片类型,我们在这里选择 STM32F103c8,确定后弹出一个窗口询问是否复制启动代码,选择“否”,如图所示。这时新的项目工程就建立了。5. 这时点击如图所示的图标。弹出如下窗口:可根据实际需要添加相应的文件,如图所示:添加完后 Project 区域的树形结构如图

6、所示:6. 接下来要设置设置目标选项,点 图标进入 Target Option 界面如图所示,在上面设置晶振的实际时钟频率,我们所用的时钟为 8.00MHz。选择 Output 项进行如图所示设置。点击 Listing 选项,并配置 Listing 文件的所在路径为 Projet 下的 Listing 文件夹。接下来配置编译器的路径,设置如图所示:在“ C/C+ ” 选项中我们可以加入预定义的宏, 这里请一定加入 USE_STDPERIPH_DRIVER,STM32F10X_MD 这两个宏。另外,我们在下面的“Include Paths”框中可以填入我们.h 文件所在的目录,如“.Lib;.L

7、ibinc;.User”,方便编译器搜索头文件定义。如果现在编译,还是有错误的。可以先编译下,因为 main.c 中有头文件#include “stm32f10x.h“这句,在这个重要的头文件里,并没有定义好一些东西,分别在 stm32f10x.h 文件中取消对 #define STM32F10X_MD 和#define USE_STDPERIPH_DRIVER 的屏蔽,这两个定义好,才能正常工作,第一个是选择存储容量的型号,每种芯片都不太一样,所以让你选择,第二个是使用标准库文件,因为我们是要用库的,所以必须选择,默认是不用库的,直接进行寄存器的操作。也可以直接如下图操作。在 Define

8、中添加 USE_STDPERIPH_DRIVER,STM32F10X_MD作用是一样的。选择好后,直接编译,恭喜你,成功了。最后要说明的就是:图 4这个库文件,是必须选择 misc.c 和 stm32f10x_rcc.c 的。另外就是你选择用什么功能,就把什么功能的 c 文件加进去,我这里已经加了一个对 IO 口的应用的一个 c 文件。5:一些重要文件的说明吧core_cm3.c/core_cm3.h 该文件是内核访问层的源文件和头文件,查看其中的代码多半是使用汇编语言编写的。stm32f10x.h 该文件是外设访问层的头文件,该文件是最重要的头文件之一。例如向量等等。除了这些该头文件还定义了

9、和外设寄存器相关的结构体,如:typedef struct _IO uint32_t CRL; _IO uint32_t CRH; _IO uint32_t IDR; _IO uint32_t ODR; _IO uint32_t BSRR; _IO uint32_t BRR; _IO uint32_t LCKR; GPIO_TypeDef; 包含了那么多寄存器的定义,那么在应用文件中(例如自己编写的 main 源文件)只需要包含stm32f10x.h 即可。在 stm32f10x.h 8296 行#ifdef USE_STDPERIPH_DRIVERi nclude “stm32f10x_co

10、nf.h“#endif这里定义了 i nclude “stm32f10x_conf.h“system_stm32f10x.c/h 该头文件也可以称为外设访问层的头文件和源文件。在该文件中可以定义系统的时钟频率,定义低速时钟总线和高速时钟总线的频率,其中最关键的函数就是 SystemInit()了,这个后面会详细介绍。总之这两个文件是新固件库 V3.5 的重点,有了它粮也大大简化了使用 stm32 的初始化工作。 stm32f10x_conf.h 这个文件和 V2 版本的库的内容是一样的,需要使用哪些外设就取消哪些外设的注释。stm32f10x_it.c/h 这两个文件包含了 stm32 中断函

11、数,在源文件和头文件中并没有把所有的中断入口函数都写出来,而只写了 ARM 内核的几个异常中断,其他的中断函数需要用户自己编写。stm32f10x_it.c 的最后给了这样一个模板。/*/ /* STM32F10x Peripherals Interrupt Handlers */ /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ /* available peripheral interrupt handlers name please refer to the startup */

12、/* file (startup_stm32f10x_xx.s). */ /* * brief This handles PPP interrupt request. * param None * retval None */ /*void PPP_IRQHandler(void) */ 从注释中的英文提示可以看出,中断向量的名称可以从相应的启动代码中找出,例如可以startup_stm32f10x_md.s 中找到 USART1 中断函数的名称 USART1_IRQHandler。其他的中断函名可以以此类推,一一获得,在这里我就不一一复述了。 Libraries 文件夹 该文件夹有包含两个文件夹,一个是 src 文件夹,另一个是 inc 文件夹,顾名思义,一个里面放的是元件一个里面放的是头文件。这两个文件夹包含了所有的 STM32 的外设驱动函数,其实和 V2 版本也没有太大的变化。简单来说,外设的驱动相当于 windows 的驱动函数 API,这些驱动函数看到函数名基本就可以明白这个函数的作用,例如:GPIO_SetBits 可以置位某个 IO 口,相反 GPIO_ResetBits 则可以复位某个 IO 口。我个人认为熟练使用库可以大大提高编程的效率,同时规范使用库函数也可以提高程序的可读性,让团队中的其他程序员可以快速的明白代码的作用。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报