STM32固件库V3.4移值到Keil MDK v4.12 图文详解

合集下载

教你用STM32一步一步点亮led灯

教你用STM32一步一步点亮led灯

教你⽤STM32⼀步⼀步点亮led灯STM32之⼀步⼀步点亮led (2011-05-09 19:40)标签: stm32led v3.4MDK 4.12⼊门分类:stm32⼊⼿stm32以来,⼀直想快速上⼿,所以在各⼤论坛闲逛,各个达⼈的blog上学习,正所谓欲速则不达,⼼急是吃不了热⾖腐的!有⽊有?最终决定使⽤st官⽹的库开发,据⼤侠们写道使⽤库可以快速上⼿,貌似的确如此,⼀个个教程写的那么好,直接拿过来⽤就是了。

可是那么多个库,聪明的你请告诉到底选择哪⼀个啊?My God!实话实说,我被这些库折腾了个够!好吧,我最后还是承认最后⽤的是v3.4的库,是很⽅便!切⼊正题,点亮LED。

硬件:红⽜开发板,STM32F103ZET6(144封装).软件:RealView MDK 4.12stm32固件库:v3.4 附上⾃⼰整理后的库: V3.4_clean.rar根据官⽹库⾃⼰整理了下,新建了⼯程模板如下图:(主要参考⽂章《在Keil MDK+环境下使⽤STM32 V3.4库.pdf》)在KeilMDK+环境下使⽤STM32V3.4库.pdf⼊图所⽰:新建⼀个⽬录01_ProLed,建议放在英⽂路径下,避免不必要的⿇烦。

将上⾯的库v3.4解压到此⽬录,再新建⼀个project⽬录,存放⼯程。

说明:CMSIS:最底层接⼝。

StartUp:系统启动⽂件。

StdPeriph_Lib:stm32外围设备驱动⽂件。

Project:⼯程⽂件。

User:⽤户⽂件。

新建⼯程步骤:此处略去300字。

简单说明:1.core_cm3.c/core_cm3.h该⽂件是内核访问层的源⽂件和头⽂件,查看其中的代码多半是使⽤汇编语⾔编写的。

在线不甚了解。

--摘⾃《在Keil MDK+环境下使⽤STM32 V3.4库》2.stm32f10x.h该⽂件是外设访问层的头⽂件,该⽂件是最重要的头⽂件之⼀。

就像51⾥⾯的reg51.h⼀样。

在KeiluVision4MDK下配置开发STM32F103Z完整教程

在KeiluVision4MDK下配置开发STM32F103Z完整教程

在KeiluVision4MDK下配置开发STM32F103Z完整教程环境搭建:1、安装 Keil uVision4 MDK略2、安装 J-Link安装 Setup_JLinkARM_V4501.exe 驱动时,会弹出【SEGGER J-Link DLL Updater V4.501 】对话框,不要选择 Keil 直接点击OK即可,因为Keil对⽀持M3内核SW接⼝采⽤了JL2CM3.dll 这个⽂件,该⽂件的版本号是和该⽬录下Jlink驱动版本号配套的,不要擅⾃改变他们,否则不能使⽤。

建⽴⼯程:1、在桌⾯上建⽴⼀个⽂件夹【MyStm32】⽂件夹2、在【MyStm32】⽂件夹下建⽴【USER】、【FWlib】、【CMSIS】、【Output】、【Listing】⽂件夹。

【USER】:存放⽤户⾃定义的应⽤程序【FWlib】:存放库⽂件【CMSIS】:存放M3系列单⽚机通⽤的⽂件【Output】:存放编译器编译后输出的⽂件【Listing】:编译器编译过程中产⽣的⽂件3、将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 的【inc】跟【src】这两个⽂件夹拷贝到【FWlib】。

【inc】、【src】⽚上外设驱动的源⽂件和头⽂件。

4、\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下的main.c、stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c 、system_stm32f10x.c 拷贝到【USER】stm32f10x_conf.h:配置⽂件stm32f10x_it.h、stm32f10x_it.c:中断函数⽂件。

system_stm32f10x.c:ARM公司提供的符合CMSIS标准的库⽂件5、STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup的【arm】⽂件夹的拷贝到 MyStm32\CMSIS\startup。

固件库v3.5使用

固件库v3.5使用

固件库v3.5使用首先下载固件库STM32-v3.50移植环境:Keil uVision41.固件库目录介绍。

_htmresc:ST(意法半导体)Logo,包含两张图片。

Libraries:外围设备的驱动文件(STM32F10x_StdPeriph_Driver)和重要的系统文件(CMSIS)。

两个文件夹的内容稍后介绍。

Project:大量的外设例程和各个软件的工程模版,开发的时候可以在原来的基础上加以修改。

其中Kei 模版为MDK-ARMUtilities:评估板相关文件。

stm32f10x_stdperiph_lib_um.chm:由固件库中的注释生成的帮助文档。

2.固件库移植。

(1)建立一个工程文件夹,里面建立相应的目录用来区分文件的类别。

例如:D:\TestLibraries、User、StartUp、CMSIS、Project(2)将固件库中的文件拷贝到上面的相应目录下。

1)直接拷贝固件库中的Libraries放在Test根目录下,并且将CMSIS中剪切出来直接放在Test目录下,直接成为一个文件夹。

并将STM32F10x_StdPeriph_Driver目录下的src和inc文件夹剪切出来放到Libraries目录下。

2)在CMSIS中,将CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup中为启动文件,将其剪切出来放到Test根目录下,单独成文一个文件夹,并根据开发板的型号选择相应的启动文件,确定无误后该文件夹中的其他启动文件就可以直接删除了。

其他的文件夹的其他文件是重要的系统文件,不要进行移动和修改。

例如:本历程使用的是startup_stm32f10x_hd.sSTM32F10x_LD:STM32小容量产品STM32F10x_MD:STM32中容量产品STM32F10x_HD:STM32大容量产品3)User中放置main()函数,里面加上#include “stm32f10x.h”,另外从stm32\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template中拷贝stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h、system_stm32f10x.c四个文件。

STM32 LL 库使用指南说明书

STM32 LL 库使用指南说明书

STM32 LL库使用指南---By Fengzi熟悉STM32的都知道ST官方提供了非常方便好用的库函数供用户使用,多数人都使用过STM32标准外设库,STM32Cube库(即HAL库),这个LL库是什么鬼,却从来没听说过。

好吧,我承认这个名字是我自己XJB取的。

目录一、初识LL 库 (1)二、怎么使用LL库 (3)三、新建STM32LL库工程模板 (5)四、第一个程序——点亮LED (8)五、添加其他程序功能 (10)………………………………………………………………………………………………………………………………………………….一、初识LL 库最近论坛发的STM32L476RG Nucleo开发板到手了,准备学习玩耍,当然第一步就是下载资料,于是我下载STM32L4Cube 1.1.0版本,打开逐个查看,好像和以前一样的,没什么特别嘛,于是准备开始开发。

等等,好像还真发现了有点不一样:熟悉HAL库的都知道,该库的文件几乎都是以stm32xxx_hal_xxx.h/.c命名的,为了和以前的标准库有个区分,上图中那些是什么鬼前辈说,遇到问题赶紧查手册,于是我果断打开STM32L4Cube库的说明手册(UM1884):原来这个东西叫做Low Layer APIs,作为英文渣渣表示实在不习惯洋里洋气的高大上名字,于是擅自把他叫做【STM32LL库】了(不服的你咬我啊)。

从这里看好像是说这个东东比HAL库更接近硬件,到底什么鬼,还不清楚。

但是以前好像没见过这个东西啊,就算是STM32L4Cube的1.0.0版本中都没有。

看看Cube发行历史:原来LL库是在1.1.0版本才加上的,大概意思就是:1.LL APIs是寄存器级的编程,嗯,也就是说我们常说的直接操作寄存器吧。

2.LL APIs适用于xxx等一大堆外设3.LL APIs函数全部定义为static inline函数,放在对应的头文件中,用户使用需要包含相关头文件4.参考这两个文档看看LL库文件在Cube库中的位置,有20多个文件,全部以stm32l4xx_ll_xxx.h命名:STM32Cube_FW_L4_V1.1.0\Drivers\STM32L4xx_HAL_Driver\IncSTM32L4是面向低功耗市场的,同时不失高性能,功耗和性能往往是两个矛盾的东西,ST在硬件设计上想了各种办法来实现兼顾低功耗高性能(例如各种低功耗模式,LP外设等),而在软件层面,程序也讲求效率,LL库全是直接操作寄存器,直接操作寄存器往往效率较高,而且函数定义为内联函数,调用函数时不是堆栈调用,而是直接把函数的代码嵌入到调用的地方,利于提高代码相率,我想这也是ST在STM32L4系列中推出这个直接操作寄存器的LL库的原因之一吧。

STM32固件库使用手册

STM32固件库使用手册

STM32固件库使用手册随着嵌入式系统在各个领域的越来越广泛的应用,各种芯片和处理器的类型也逐渐增多。

在这些芯片中,ST公司的STM32系列尤其受到了大量开发者们的追捧,其功能强大、性能优越、可编程性高等优点使得其成为了嵌入式系统设计的首选。

在STM32系列芯片中,固件库是其重要的组成部分,提供了独立的硬件抽象层和应用程序接口。

这些功能丰富的API库可用于快速搭建程序架构,以及简便地实现一些常见的操作。

节省开发人员大量的开发时间。

对于初学者,欲了解STM32芯片开发的话,学习STM32固件库的使用是第一步,因此在这里我将分享一些该库的基础内容。

一、固件库的启用在使用STM32固件库之前,我们需要先了解如何启用它。

首先,在安装Keil或IAR等IDE环境后,我们需要将官方提供的固件库下载到本地,并将其解压。

解压后,将库文件夹中的 inc 和src 文件夹添加至Keil或IAR的相关项目目录中,从而ermöglichen 制定了。

接下来,在IDE环境中选择对应的芯片,我们需要设置相关的固件库路径。

具体来说,我们打开Keil或IAR的属性管理器,设置 C/C++ -> Directories 中的 Include Paths 为stm32f10x_stdPeriph_driver/inc,设置配置管理器中的包含路径为上述inc文件夹的全路径。

这样就可以启用了 STM32 固件库,开始进行我们的嵌入式系统开发。

二、基础应用程序在信息时代的今天,眼前各种各样的计算机系统和程序都涌现在眼前。

但是无论是最基础的窗口显示,还是复杂的人脸识别技术,都需要一些基本的芯片和系统支持,而 STM32 芯片就是这一系统之一。

其基础应用程序包括了:GPIO 端口配置:GPIO(PIN)模式配置、输出配置、输入配置。

其中GPIO(PIN)模式配置是对GPIO端口输出模式进行设置,包括推挽、开漏等多种模式,GPIO口的作用是用于输入/输出操作。

Keil uVision5中建Stm32工程(教程)

Keil uVision5中建Stm32工程(教程)

Keil uVision5中建Stm32工程教程本教程中,介绍在Keil uVision5中建STM32工程的两种方法:一种是利用固件库建立工程,另一种是通过建工程时软件给的引导直接完成。

软件的安装和破解网上教程很多,这里就不赘述了,直接从建立工程开始。

首先介绍第一种:利用固件库建立STM32工程1.在你电脑中想要建立工程的地方先新建一个文件夹。

这里我在E盘下新建了一个文件夹,命名为STM32Project。

2.在新建的STM32Project文件夹下再新建一个文件夹,命名为STM32固件库,然后把事先下载的固件库放在文件夹中,方便查找进行复制。

3.打开Keil uVision5软件,在软件的菜单栏中找到Project——>New uVisionProject…,单击,找到上述新建的文件夹,对新建的工程进行命名,这里命名为test,点击保存。

4.此时软件弹出一个选择芯片的窗口:“Select Device for Target ‘Target 1’…”,在左侧的芯片库中找到你要使用的STM32系列的芯片,这里选择的是STMicroelectronics——>STM32F1 Series——>STM32F103——>STM32F103RC,单击OK。

5.此时弹出一个窗口:“Manage Run-Time Environment”,这个窗口在第二个建工程的方法中会使用到,这里先直接点击OK,跳过。

6.现在开始添加相关文件。

在STM32Project文件夹中新建以下四个文件夹:user:放置用户自己编写的相关文件CMSIS:放置与内核相关的文件startup:放置启动单片机的汇编文件driver:放置外设操作的驱动文件再向这四个文件夹中添加固件库中的相关文件:user:STM32Project\STM32固件库\STM32F10x_StdPeriph_Lib_V3.5.0 \Project\STM32F10x_StdPeriph_Template中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h一共3个文件复制粘贴到user文件夹中,同时新建一个文本文档,重命名为main.c。

介绍如何使用RVMDK——keil

介绍如何使用RVMDK——keil

介绍RVMDK开发板拿到手之后,不要浪费时间,第一步就要建立一个学习平台。

一个好学习平台很重要,在不同程度上提高了我们的学习效率。

此外,养成良好的资料整理能力,让工程构造,文档资料清晰明了。

编译软件:RealView MDK-ARM 4.12,简称MDK或KEIL相信大多数读者是从51单片机那接着学过来的,对于KEIL C51的熟悉程序就不用说了。

刚接触新的事物,找点熟悉的来增强信心很重要。

用IAR的人也不少,两者的区别不大。

在这里,我们建议你先熟悉使用MDK.调试软件:JLINK V8拥有一个调试软件来学习,效率会快很多。

除了让我们更容易地找出代码的错误之处,还能让我们越来越熟悉STM32的内部寄存器。

有ST LINK的同学用ST LINK也行。

这里我们选择SEGGER公司JLINK,理由很简单:便宜。

接着我们用MDK来构建一个工程,貌似一些新手会觉得麻烦。

在后面的程序中,我们将一直沿用这种结构的工程,但不必每次都经历繁琐的建立过程。

在你想要的位置建立以下文件夹:Code(文件夹)Libraries(文件夹)-CMSIS(文件夹)-STM32F10x_StdPeriph_Driver(文件夹)Obj(文件夹)Utilities(文件夹)-Common-STM3Fire_Bull打开MDK, New Vision Project, 选择工程模板文件夹中,输入Project,CPU的选型STMicroelectronics—>STM32F103VC(按实际芯片类型来选,你不是这个就选别的)接着会弹出如下对话框:启动代码是一段和硬件相关的汇编代码.是必不可少的!这代码具体如何工作的,这个我们不必太关心,感兴趣的朋友可以去研究下。

在弹出的选择是否添加启动代码的窗口,我们选否,因为我们在后面会选择使用ST官方提供的启动代码。

启动代码是根据芯片类型来决定的,工程里包含了两个启动代码的话,编译会出事。

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

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

如何使用STM32_V3.5版本固件库在Keil4下建立工程模板By 呼延靖国准备工作如下: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文件夹:里面为STM32F10x的例程和工程模板。

Keil对应的就是 MDK-ARM 文件下的工程模板。

也可以利用这个工程模板为原型建立自己的工程模板本文不用此法。

Utilities文件夹:里面有一些实用程序,也没多大用,可删除。

Release_Notes.html:版本注视,可删除。

stm32f10x_stdperiph_lib_um.chm:帮助文件,你懂的。

2.为了项目程序中的各部分条理清晰,我们建议工程文件夹时对其子目录子下归类建立子文件夹,例建立一个工程文件夹My Project,在其下在创建五个子文件夹如图2所示:其中:CMSIS文件夹:此文件夹从STM32F10x_StdPeriph_Lib_V3.5.0固件库中的CMSIS文件夹直接复制过来。

Libraries文件夹:此文件夹从STM32F10x_StdPeriph_Lib_V3.5.0固件库中的Libraries文件夹复制过来。

只保留当中的inc和src文件夹。

即只包含头文件。

Startup文件夹:此文件夹从CMSIS\CM3\DeviceSupport\ST\STM32F10x\Startup目录下直接将Startup文件剪切出来。

其中放置的是启动代码,具体的代码根据所用芯片的容量选择,我们用的STM32F103C8为中等容量芯片,故选择其中的startup_stm32f10x_md.s启动代码,其他不用的可以删除User文件夹:User文件夹为用户的应用程序,其中包括main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h四个文件,这四个文件可从V3.5.0固件库Project\STM32F10x_StdPeriph_Template目录下复制过来,当然main.c文件中的内容可删除。

Keil4 建立STM32工程详解

Keil4 建立STM32工程详解

Keil4 建立STM32工程详解1:安装mdk412,用注册机注册,这个过程不详细叙述了。

2:在本地某个路径下建立STM32工程文件夹,命名:my_STM32,并在my_STM32下建立rvmdk文件夹,并在rvmdk文件夹内建立 obj,list两个文件夹。

3: 打开Keil4.4: 选择Project菜单->New uVision Project...,选择.../my_STM32/rvmdk文件夹的路径,并命名工程文件:my_STM32,回车5:选择器件名称,见图1图1单击OK。

6:如图2所示:选择否,不添加Startup.s,以后自己添加。

图27:如图3,建立几个Group:startup(即将装入启动文件等),usr(即将装入应用程序文件),FWlib(即将装入库文件的.c文件),doc(即将装入说明文档)图38:右键单击FWlib,Add Files to Group 'FWlib',选择库文件的路径下的src 文件内的所有文件,并点击Add,如图4所示:图49:将cortexm3_macro.s,stm32f10x_vector.s,stm32f10x_it.c,stm32f10x_it.h,stm32f10x_conf.h,main.c,readme.txt拷贝到my_STM32文件夹内。

10:右键单击usr,Add Files to Group 'usr',选择main.c,stm32f10x_it.c,stm32f10x_it.h,stm32f10x_conf.h,并Add,如图5所示图511:键单击startup,Add Files to Group 'startup' 选择cortexm3_macro.s,stm32f10x_vector.s,并Add,如图6示图612:将 stm32f10x_it.c,stm32f10x_it.h,stm32f10x_conf.h文件只读改为,可读写。

STM32 固件库的使用

STM32 固件库的使用

2012-03-14 10:40iar for stm32 固件库的学习笔记系统、源程序文件和头文件命名都以“stm32f10x-”作为开头寄存器作为常量处理外设函数的命名以外设的缩写加下划线开头每个单词的开头字母大写每个函数名只有一个下划线分隔外设缩写和函数名的其他部分ppp_Init :::根据PPP_InitTypeDef中指定的参数,初始化外设PPP。

PPP_DeInit::::复位外设PPP的所有寄存器至缺省值PPP_StructInit :::其功能为通过设置PPP_InitTypeDef结构中的各种参数来定义外设的功能PPP_Cmd:::使能或失能外设PPPPPP_ITConfig:::为使能或者失能来自外设PPP某中断源PPP_DMAConfig:::失能或者使能外设PPP的DMA接口用以配置外设功能的函数总是以字符串“Config”结尾PPP_GetFlagStatus:::检查外设PPP某标志位被设置与否PPP_ClearFlag:::清楚外设PPP标志位PPP_GetITStatus:::判断来自外设PPP的中断发生与否PPP_ClearITPendingBit:::清除外设PPP中断待处理标志位typedef signed long s32;typedef signed short s16;typedef signed char s8;typedef signed long const sc32; /* Read Only */typedef signed short const sc16; /* Read Only */typedef signed char const sc8; /* Read Only */typedef volatile signed long vs32;typedef volatile signed short vs16;typedef volatile signed char vs8;typedef volatile signed long const vsc32; /* Read Only */ typedef volatile signed short const vsc16; /* Read Only */ typedef volatile signed char const vsc8; /* Read Only */ typedef unsigned long u32;typedef unsigned short u16;typedef unsigned char u8;typedef unsigned long const uc32; /* Read Only */typedef unsigned short const uc16; /* Read Only */typedef unsigned char const uc8; /* Read Only */typedef volatile unsigned long vu32;typedef volatile unsigned short vu16;typedef volatile unsigned char vu8;typedef volatile unsigned long const vuc32; /* Read Only */ typedef volatile unsigned short const vuc16; /* Read Only */ typedef volatile unsigned char const vuc8; /* Read Only */stm32f10x_type.h文件中布尔型变量typedef enum{FALSE = 0,TRUE = !FALSE} bool;标志位状态类型 SET & RESETtypedef enum{RESET = 0,SET = !RESET} FlagStatus;功能状态类型 ENABLE&DISABLEtypedef enum{DISABLE = 0,ENABLE = !DISABLE} FunctionalState;错误状态类型 SUCCESS or ERRORtypedef enum{ERROR = 0,SUCCESS = !ERROR} ErrorStatus;stm32f10x_map.h文件包含了所有外设控制寄存器的结构,下例为SPI寄存器结构的声明:/*------------------ Serial Peripheral Interface ----------------*/ typedef struct{vu16 CR1;u16 RESERVED0;vu16 CR2;u16 RESERVED1;vu16 SR;u16 RESERVED2;vu16 DR;u16 RESERVED3;vu16 CRCPR;u16 RESERVED4;vu16 RXCRCR;u16 RESERVED5;vu16 TXCRCR;u16 RESERVED6;} SPI_TypeDef;RESERVEDi(i为一个整数索引值)表示被保留区域stm32f10x_map.h函数包含了所有的外设声明,下例为spi外设的声明:#ifndef EXT#Define EXT extern#endif...#define PERIPH_BASE ((u32)0x40000000)#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000).../* SPI2 Base Address definition*/#define SPI2_BASE (APB1PERIPH_BASE + 0x3800).../* SPI2 peripheral declaration*/#ifndef DEBUG...#ifdef _SPI2#define SPI2 ((SPI_TypeDef *) SPI2_BASE)#endif /*_SPI2 */...#else /* DEBUG */...#ifdef _SPI2EXT SPI_TypeDef *SPI2;#endif /*_SPI2 */...#endif /* DEBUG */如果用户希望使用外设SPI,那么必须在文件STM32f10x_conf.h中定义_SPI标签例如:#define _SPI#define _SPI1#define _SPI2每个外设都有若干寄存器专门分配给标志位。

STM32固件库详解

STM32固件库详解

STM32固件库详解1.1 基于标准外设库的软件开发1.1.2 使用标准外设库开发的优势简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。

标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC等等的所有标准外设。

对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。

1.1.3 STM32F10XXX标准外设库结构与文件描述1. 标准外设库的文件结构在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉程度直接影响到程序的编写,下面让我们来认识一下STM32F10XXX的标准外设库。

STM32F10XXX的标准外设库经历众多的更新目前已经更新到最新的3.5版本,开发环境中自带的标准外设库为2.0.3版本,本书中以比较稳定而且较新的V3.4版本为基础介绍标准外设库的结构。

可以从ST的官方网站下载到各种版本的标准外设库,首先看一下3.4版本标准外设库的文件结构,如图5-3所示。

3.0以上版本的文件结构大致相同,每个版本可能略有调整。

标准外设库的第一部分是CMSIS 和STM32F10x_StdPeriph_Driver,CMSIS 是独立于供应商的Cortex-M 处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M 上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。

STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使用。

Project文件夹中则包括了ST官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用STM32的重要参考。

stm32配置keil

stm32配置keil

1.处理器选择2.文件夹结构3.加载文件预定义STM32F40_41xxx,USE_STDPERIPH_DRIVER仿真器选择F:\Upan\单片机软件\STM32课程SDK\ST官方固件\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Sou rce\Templates\arm\startup_stm32f40_41xxx.sF:\Upan\单片机软件\STM32课程SDK\ST官方固件\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Incl ude\里面两个文件通用启动文件汇编写的放到cmsis里F:\Upan\单片机软件\STM32课程SDK\ST官方固件\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver\inc 和src系统库文件,放到fwlib里F:\Upan\单片机软件\STM32课程SDK\ST官方固件\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates\所有点c和点h文件模板放到user里F:\Upan\单片机软件\STM32课程SDK\ST官方固件\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Include\后六个,删最后两个加载到cmsis模块化编程可以用.c包含函数和函数的声明或者用.h声明,.c写函数伪指令:写给编译器的#ifndef __名称_H__#define __名称_H__extern int max();//extern外部函数标准写法,声明和函数在两个地方#endif //不能加.//0左移25位,0乘以任何数都为0,所以不能移动0,应移动1在取反两位取反要加括号3种方法,第二种繁衍定律,与变或或变于取反&num是num的地址num,&a是a的地址a,*num是a的值基地址a座,偏移地址701将数转换为指针(地址),再讲指针里的数取出来1指针定义2运算符,将指针里的数取出来3乘定义相应的操作地址volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。

新建基于STM32固件库V3.5的Keil工程

新建基于STM32固件库V3.5的Keil工程

* @retval None
布谷鸟@UCORTEX
CORTEX 技术之家:
第 6 页,共 7 页
新建基于
STM32 固件库 V3.5 的 Keil 工程
* @param led:指示灯编号 * * */ void LED_Off(uint8_t led) { if(led==0) else{} } /** * @brief 毫秒延时函数 * @param ms: 延时的毫秒数 * @retval None */ void Delay_ms(uint32_t ms) { ms*=12000; while(ms--); } int main(void) { LED_Init(); while (1) { //跑马灯程序 LED_On(0); LED_Off(1); Delay_ms(250); LED_Off(0); LED_On(1); Delay_ms(250); } } 好了,到这里,一个基于 STM32 固件库,实现跑跑马灯功能的工程就完成了,以后所有的项目都可以在这 个工程模版的基础上,进行修改得到。 GPIO_SetBits(GPIOB,GPIO_Pin_5);//点亮 LED0 else if(led==1) GPIO_SetBits(GPIOE,GPIO_Pin_5);//点亮 LED1 @arg 0:LED0 @arg 1:LED1
* @retval None
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO 口速度为 50MHz //根据设定参数初始化 GPIOB.5 //PB.5 输出高 //开漏输出,IO 口速度为 50MHz //PE.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置, 推挽输出

STM32固件库使用手册【中文】

STM32固件库使用手册【中文】
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用 API (application programming interface 应用编程界面)驱动,API 对该驱动程序的结构,函数和参数名称都进行 了标准化。
所有的驱动源代码都符合“Strict ANSI-C”标准(项目于范例文件符合扩充 ANSI-C 标准)。我们已经把驱动 源代码文档化,他们同时兼容 MISRA-C 2004 标准(根据需要,我们可以提供兼容矩阵)。由于整个固态 函数库按照“Strict ANSI-C”标准编写,它不受不同开发环境的影响。仅对话启动文件取决于开发环境。
1.3.1 变量 ................................................................................................................................................ 28 1.3.2 布尔型 ............................................................................................................................................ 28 1.3.3 标志位状态类型 ........................................................................................................................... 29 1.3.4 功能状态类型 ...............................................

mdk配置方法1

mdk配置方法1

STM32固件库加载方法一、前提:1安装好mdk4.14版本和j-link软件将j-link安装目录下SEGGER\JLinkARM_V412里面的JLinkARM.dll和JLinkRDI.dll复制到Keil\ARM\Segger下替换原来的文件。

再将JLTAgdi.dll加到keil安装目录下SEGGER\JLinkARM_V412文件夹里二、建立目录1新建工程目录:“leddrv”,可以根据自己的需要命名;2在目录“leddrv”下新建“ARM MDK”目录,表示采用ARM MDK开发环境;在“ARM MDK”目录下新建目录下新建“Libraries”目录;新建“Project”目录。

在“Project”目录下新建“OBJ”、“LIST”、“Pro”3个目录。

在“ARM MDK”目录下新建“USER”目录。

在“USER”目录下新建“INC”、“SRC”2个目录。

三、拷贝文件1 将固件库目录“Libraries”下的所有目录拷贝到工程目录“leddrv”→“ARM MDK”→“Libraries”目录下。

2将固件库目录USER →SRC 目录下的“stm32f10x_it.c”、“system_stm32f10x.c”拷贝到工程目录“leddrv”→“ARM MDK”→“USER”→“SRC”目录下,在此“SRC”目录下新建“main.c”文件,“main.c”先不写内容。

3 将固件库目录USER →INC目录下的“stm32f10x_conf.h”、“stm32f10x_it.h”这2个文件拷贝到工程目录“leddrv”→“ARM MDK”→“USER”→“INC”四、建立工程:1运行“Keil uVision4”;2点击主菜单栏“Project”→“New uVision Project”,选择在工程目录的“Project”→“Pro”目录下命名新建工程为自己要的名字;3接下来出现CPU选择窗口,选择CPU4提示时选择“否”,完成工程建立。

keil mdk5.12利用固件库为stm32f10x新建工程模板

keil mdk5.12利用固件库为stm32f10x新建工程模板

keil mdk5.12利用固件库为stm32f10x新建工程模板By smile跃日少年看了好多keil mdk利用stm32固件库为stm32f10x新建工程的文章,终于弄了一个自己喜欢的工程模板。

最终的样子是这样的Project一栏:Template是工程名字,模板的意思。

工程下添加四个组groups,分别为:USER,用于存放主函数和自己定义的函数;Startup Code,用于存放启动文件,hd表示高密度产品;CMSIS,用于存放配置系统时钟文件;FWLIB,firmware libraries(固件库)的缩写,用于存放官方标准外设源文件。

工程中的groups的文件是后添加进去的,它与电脑中实际存储的位置没有关系,添加的时候能找到即可。

实际新建工程:打开keil5,默认是空白,菜单栏中选择Project中的New uVision Project。

选择工程路径,命名工程名。

单击保存,选择器件device。

单击ok,弹出用于配置device的窗口,包括启动文件,外设等等。

这里利用固件库来新建工程模板,单击取消即可。

得到:这时,再看工程保存的位置,keil5默认建立下图的文件夹。

其中:Lstings用于保存链接时产生的中间文件;Objects用于保存编译后产生的下载到单片机的Hex文件。

我们再新建两个文件夹,为FWLIB和USER,分别用于保存固件库文件和用户文件。

再看V3.5的固件库,将Libraries中的两个文件夹拷入FWLIB。

再将“模板\FWLIB\CMSIS\CM3\”路径下的两个文件夹拷到CMSIS文件夹下,其余无用的删除。

再将“模板\FWLIB\CMSIS\DeviceSupport\ST\STM32F10x\”路径下的所有文件拷入“模板\FWLIB\CMSIS\DeviceSupport\”,其余删除。

打开startup文件夹,里面有四个编译器的启动文件,我们需要arm的。

Keil4下使用STM32库V3.5

Keil4下使用STM32库V3.5

Keil4下使用固件库V3.5关联到建立自己工程第一步:下载一个固件库V3.5第二步:提取压缩包中的Librarie s放到你需要经常存放Keil4工程的地方,方便关联。

例如放在F盘,新建的STM32文件夹下。

第三步:打开Keil4,开始新建工程吧。

1.新建一个存放工程的文件夹,再将新建的工程放到此文件夹下。

2.输入文件名后“保存”3.选取您使用的芯片型号点“OK”,进入下一环节4.接着会出现这样的一个提示框,此处是选择是启动文件,但要使用库V3.5,此处点“否”5.此时Project中出现的是这样6.重点来了:选择工具条上的Manage Components, 下图圈中7.接着我们会在此完成文件添加在”Groups”中新建3个文件夹1.StartUp2.Libraryer用于分类存放相关文件8.选中“Groups”中的“StartUp”文件,然后再在Files框下,点击“Add File”找到目录下刚才存放的Libraries文件并打开,找到路径如下,并选中startup_stm32f10x_md.s"F:\STM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\start up\arm\startup_stm32f10x_md.s"同理,我们添加Library文件夹添加:stm32f10x_GPIO.c stm32f10x_rcc.c stm32f10x_tim.c"F:\STM32\Libraries\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c"最后添加我们的“User”文件夹此处需要添加一个系统文件system_stm32f10x.c 路径如下:"F:\STM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c"添加完成这个文件后,可以点“OK”结束了现在我们的Project中有如图文件:9.新建我们的main.c点红框处新建一个Txet1文件,保存为“main.c”记得加“.c”后缀10.右击Project中的“User”出现有图菜单点击“Add Files to Group ‘User’…”将保存的main.c 文件添加到“User”中至此文件添加完成,如果还需要添加文件,可重复步骤8.911.将我们添加的文件与固件库关联起来点击工具条的“Target Options”弹出右图框12.按蓝色标记步骤,一步一步设置第一步:点击“Include Parts”的浏览按钮出现“Folder Setup ”新建链接如右图步骤一直浏览到右图文件夹,并选中“确定”:第二步:重复第一步骤新建找到路径,选中“inc”文件夹至此,关联固件库完成:如果需要添加自己的库可以采用此类方式,将“.h头文件”关联进来13.接下来是让自己的文件夹更合理,分类更细致的步骤第一步:点击“Output”下“SelectFolder Objects”,并新建一个“Output”文件夹双击打开点“OK”完成第二步:点击“Listing”下“Select Folderfor Listing..”后新建一个listing文件夹,双击打开,点“OK”完成14.选择适合自己开发板的下载器第一步:点击“Debug”,出现如右图选择自己的调试器。

在KeilMDK环境下使用STM32固件库

在KeilMDK环境下使用STM32固件库

在Keil MDK环境下使用STM32固件库简介写这篇教程主要是和大家分享使用STM32的基本方法,也是给自己学习过程的总结、记录和备忘,避免重复学习之前明白但又忘记的知识和操作。

我现在也是刚开始接触学习STM32,我是在STM32的固件库V3基础上进行学习。

在这里我和大家分享一下使用V3.x库的方法,希望大家喜欢,如有错误请指出。

这篇教程分以下几个方面,一:建立工程,设置工程属性。

二:建立条理清晰的GROUP;三:使用JLINK仿真调试。

下面就分别逐个说明。

一、新建MDK工程1、首先,打开MDK软件,再点击Project->New uVision Project…,如下图所示:弹出如下对话框:新建一个文件夹MDK工程,然后把工程名字设为test,点击保存。

弹出选择器件的对话框,我们使用的是stm32单片机,所以选择STMicroelectronics下面的器件,如STM32F107VCT6,如图所示:点击OK,MDK会弹出一个对话框,如图所示:问是否加载启动代码到当前工程下面,如果选择是,则这个启动代码是旧版本库的启动代码,新版本的启动代码和这个不同,需要自己添加。

在这里我们使用的是新版本的库,所以点击否,自己添加启动代码。

启动代码是一段和硬件相关的汇编代码,是必不可少的!这个代码具体如何工作,感兴趣可以研究一下,现在可以不必关心它。

2、接下来我们需要对工程进行一些设置。

在工程区,右键点击Target1,选择Options for Target‘Target1’ 如图所示:弹出如下窗口,选择Output标签,设置目标文件的生成路径及其他相关参数。

如图点击Select Folder for Objects 在弹出的窗口中点空白处新建“Obj”文件夹,然后双击“Obj”文件夹,如图中所示的Path后,点击OK.点击Listing标签,新建“list”文件夹,设置链接文件的生成路径,及相关参数。

STM32V3.4固件库使用方法(网上实例)

STM32V3.4固件库使用方法(网上实例)

图 10
图 11
6.2 选择顶层的“Output ” ,进入“Output”设置页,点击下面的“Select Folder for Objects…”按钮,选择目录“V1” 选中“Create HEX File” (见图 12) 。
“Project” “OBJ”为目标文件目录,
件生成目录(见图 13) ,所有的目标文件和烧写到芯片中的文件都在这里。选择 “Create HEX File”前面的方框,用来生成目标文件。
以后添加了,自己的代码放在工程目录“RS422” “RVMDK” “V1” “USER”下的“INC”或“SRC”目录下, “INC”下放你的“.h”文件, “SRC”目 录下放你的“.C”文件 。 以上是本人对 STM32 工程框架的实例实现,如果路过的有更好的,希望可 以交流。
图 14
图 15
6.5 引用固件库文件所在的目录也在顶层的“C/C++”页中进行设置,上面写的 啰里啰唆的,已经太多了,所以写在这里吧。如果现在编译程序,会报错的, 看看出错提示,有一些库文件跑到开发工具 Keil 的安装目录下链接去了,这是 因为没有设置 STM32 固件库的目录,编译器就默认到“Keil”根目录下的某某目 录找去了。我们工程用到的 STM32 3.4.0 固件库的相关文件在上面第 3 节中已经 直接拷贝到工程里了,这个是因为 STM32 库升级到 3.4 已经经历了好多个版本 了,而安装完 KEIL 后并不是最新的 3.4 库,不能说哪天系统 OVER 了,装一次 KEIL 就升级一次库吧,干脆就把库文件直接放在工程中,即使将工程拷贝到其 他机器上也可以编译,不会因为没有库文件而报错,唉!又啰嗦了这么多。在 窗口的“Include Paths”旁边的文本框后有一个按钮,点击调出“Folder Setup” 窗口。这里要添加 4 个目录(见图 16) ,因为这 4 个目录里都有“.h ”文件: “ RS422\RVMDK\V1\Libraries\STM32F10x_StdPeriph_Driver\inc” ; “ RS422\RVMDK\V1\Libraries\CMSIS\CM3\CoreSupport ” ; “ RS422\RVMDK\V1\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x ” ; “ RS422\RVMDK\V1\USER\inc ” ;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32固件库V3.4移值到Keil MDK v4.12 图文详解
1、本例所用到的MCU是STM32F103VET6,已经过测试,如果是其它MCU
的话,只需作小许修改即可
2、首先按下图所示建立相应用的文件夹,注意层次关系:
3、下图是工程文件夹里相应的文件:
接照上图所示,在相应的文件夹里放放相关的“.C”文件,在startup里放入相应的".s文件",对于Keil 其文件在“\Libraries\startup\arm”里面可找到。

4、接着就打开Keil MDK V4.12,新建一个工程并选择好器件:
点击“品”字形的图标,建好组:
5、下图是建好组后的图并在CoreSupport组里“Add Files”了一个文件:
6、下图是startup组里“Add Files”后的图:
7、下图是StdPeriph_Driver组里“Add Files”后的图,由于文件比较多一张
图并不能完全显示出来,我是将所有在“\Libraries\StdPeriph_Driver\src”所有的文件都添了进去,在实际应用时要按实际情况添加:
8、下图是STMF10x组里“Add Files”后的图:
9、下图是User组里“Add Files”后的图:
10、单击“OK”,终于添加文件完毕,之后就到设置了,单击右图所示的图标:
,按下图所示设置好,点"Output"标签页:
11、“Output”文件夹用以存放你所勾选项目产生的“Debug Information”、"Create
HEX File"和“Brower library”信息或文件。

接着就是点"Listing"标签
页,设置方法和上图相同
12、点标签页“C/C++”,这页的设置很重要,首先加入这个宏:
13、接着,点击如图所示有黑色圈的按钮
接着按下图所示设置,也就是所用到固件库头文件的路径:
好了。

编译一次吧,看是否有错?
14、这时在“Output”和“Listing”文件夹里就有了许多文件:
如果不要这些信息或为为发加快编译速度,可以去掉在第十步所示的“Debug Information”和“Brower library”前面的钩即可。

15、最后到了J-LINK仿真下载器相关项的设置。

下图主要是右半部分的设置:
紧接着就是点上图蓝色背景右边的"Settings"按钮,不要忘了接上STM32开发板的电源和J-LINK,还要装好J-LINK的驱动,按下图设置好:
先点击“Scan”按钮,接着就是"Auto Clk"按钮,哈,我板子的JTAG时钟能达到10MHZ!
16、接着上图所示点“Flash Download”标签页并按实际况设置好:
17、还有最后一步,看下图:
全部完成了,设置了那么久为的就是能看到下图:
18、给大家一点设置的参考吧:
需在工程项目C/C++里面Define 添加:USE_STDPERIPH_DRIVER,STM32F10X_HD
STM32F10X_LD---STM32小容量芯片
STM32F10X_MD---STM32中容量芯片
STM32F10X_MD---STM32中容量芯片
STM32F10X_CL---STM32互联网型芯片105/107等
USE_STDPERIPH_DRIVER---使用库里面的API函数
在工程里面添加相应芯片的启动文件:
STM32F10X_LD.S
STM32F10X_MD.S
STM32F10X_HD.S
STM32F10X_CL.S
在system_stm32f10x.c修改工作频率,默认为72MHz,在外部晶振为8MHz的情况下。

STM32 Keil-MDK工程模板V3.5 固件库
创建一个工程模板:
1. 解压STM32库文件然后拷贝
2. 目录结构:
Main
-> stm32f10x_it.c 此三个文件在同一个目录,用户编写。

-> stm32f10x_conf.h
-> main.c
_CMSIS
-> core_cm2.c 汇编接口
-> system_stm32f10x.c
_DeviceSupport
-> 所有的s文件启动代码
Select the corresponding startup file depending of the used device:
- startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices
- startup_stm32f10x_ld.s: for STM32 Low density devices
- startup_stm32f10x_md_vl.s: for STM32 Medium density Value line devices
- startup_stm32f10x_md.s: for STM32 Medium density devices
- startup_stm32f10x_hd.s: for STM32 High density devices
- startup_stm32f10x_xl.s: for STM32 XL density devices
- startup_stm32f10x_cl.s: for STM32 Connectivity line devices
_STM32F10x_StdPeriph_Driver
-> 所有的c文件V3.5.0的官方固件
-------------->
注意事项:
1. Main.c应该放在_CMSIS的前面。

且必须有文件stm32f10x_conf.h ,否则就默认include了keil 的stm32f10x_conf.h文件
2. 注意inlcude path的顺序.
3. 在Preprocessor Symbols中定义USE_STDPERIPH_DRIVER[使用标准外设库驱动], 否则编译出现assert_param 未找到的错误:
4. 优化等级00 表示不优化
5. One elf per function. 只编译用到的函数.
拷贝STM32F10x_StdPeriph_Examples 下每个目录的main.c stm32f10x_conf.h stm32f10x_it.c 到src 目录即是一个范例
-------------->
Copy Keil 范例的stm32_Init.c 到项目中,编译。

发现一个定义的错误。

是因为keil的头文件和st库的3.50的头文件中定义不一样
keil -> st
USART1_IRQChannel 改为USART1_IRQn
USART2_IRQChannel 改为USART2_IRQn
USART3_IRQChannel 改为USART3_IRQn
编译通过!
--------------->
Copy Keil 范例的RTX_Conf_CM.c 到项目中, 设置options中Operation system 为RTX-Kernel 可以开始使用Keil的RTOS.
用这个模板轻松实现图形化配置懒人有福了,不过stm32_Init.c 现在一直保持1.3 的状态使用的局限性还是比较多的,目前我基本不用。

相关文档
最新文档