新建工程模板--基于固件库
基于ST官方V3.5固件库的STM32新建工程心得
基于ST官方V3.5固件库的STM32新建工程心得之前笔记有寄存器版本的新建工程步骤,这里介绍下基于ST官方V3.5固件库的STM32新建工程,和寄存器新建工程类似,在其基础上添加库文件。
1、WINSOWS环境下新建工程文件夹test →inc 存放自己的库文件src 存放自己的.C文件out 存放自己的输出文件txt 存放技术文档Libraries 拷贝的官方库文件到自己的工程文件夹下将打包文件夹下system目录下的inc和src文件夹中的3个文件或复制inc 和src到test文件夹下2、打开keil,新建一个工程将工程保存到自己新建的工程文件夹test的根目录选择芯片型号在弹出的是否自动导入启动代码的选项卡中选择否3、点击manage project items图标进行工程组管理test →CMSIS (Cortex微控制器软件接口标准)放启动代码内核文件STD_DRIVER (驱动程序放封装好的函数)SYSTEMMAINSRC在CMSIS工程组下添加以下文件:Libraries/CMSIS/CM3/Core Support/core_cm3.cLibraries/CMSIS/CM3/Devicesupport/ST/STM32F10x/system_stm32f10x.cLibraries/CMSIS/CM3/Devicesupport/ST/STM32F10x/startu p/arm/startup_st m32f10x_hd.s(.s文件可能在目录下被过滤,选择查看.s文件才能找到)至此,管理组CMSIS目录下共有3个文件在STD_DRIVER工程组目录下添加以下文件:Libraries/STM32F10x_StdPeriph_Driver/所有.c文件(这里暂时全部添加,以后可以用到哪个添加哪个)工程组设置完毕,点击确定保存4、从标准库文件夹STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Template/stm32f10x_conf.h 拷贝到新建工程文件夹test的inc文件夹下stm32f10x_it.c 拷贝到新建工程文件夹test的src文件夹下stm32f10x_it.h 拷贝到新建工程文件夹test的inc文件夹下5、点击Opetions for Target图标进行工程配置Device选项卡是芯片,新建工程时候已经选择Target选项卡晶振8.0MHzOutput选项卡Select Folder for Objects选择输出文件路径为创建文件夹test目录下的out,勾选Create HEX File,生成HEX烧写文件Listing选项卡Select Folder for Listing选择列表文件输出路径为test的outC/C++选项卡这里要添加两个宏:STM32F10X_HD,USE_STDPERIPH_DRIVER,指定芯片为大容量产品,使用ST官方的标准固件库Include Paths添加指定所有库文件路径,这里包含了Libraries文件夹下的标准库文件和test文件夹下自己定义的库文件有4个路径:test/inctest\Libraries\CMSIS\CM3\CoreSupporttest\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10xtest\Libraries\STM32F10x_StdPeriph_Driver\incDebug选项卡选择使用Jlink仿真调试Utilities选项卡去掉Use debug Driver选项前的勾选,然后选择Jlink在setting中选择FLASH,我们的芯片是大容量512K,可以选择勾选Reset and Run,烧写玩程序自动复位并运行。
STM32F4-基于函数库创建工程模板
STM32F4-基于函数库创建⼯程模板1.创建模板主⽬录Template,在主⽬录下添加5个⼦⽂件夹(USER,CORE,FWLIB,SYSTEM,OBJ)2.创建项⽬,打开keil,菜单选择project->new uVision project项⽬保存路径为Template/USER,项⽬名称为Template选择⾃⼰开发的相应芯⽚,我是⽤的是STM32F407ZG, 点击ok 点击Cancel3..添加STM32库函数将函数库⽬录下\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver 中的src与inc复制到FWLIB⽂件夹中(src存放的是库函数,inc中存放的是对应的头⽂件h)4.启动⽂件复制到我们的⼯程⽬录 CORE 之下\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 下⾯,将⽂件 startup_stm32f40_41xxx.s 复制到 CORE ⽬录下⾯\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ ,将⾥⾯的四个头⽂件:core_cm4.h、core_cm4_simd.h、core_cmFunc.h 以及 core_cmInstr.h 同样复制到 CORE ⽬录下⾯。
现在看看我们的 CORE ⽂件夹下⾯的⽂件5.定位到⽬录:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include 将⾥⾯的 2 个头⽂件 stm32f4xx.h 和 system_stm32f4xx.h 复制到 USER ⽬录之下。
实验一基于STM32固件库的MDK工程的建立及流水灯
实验一基于STM32固件库的MDK工程的建立及流水灯一、实验类型验证性实验。
二、实验器材1、PC微机1台2、MDK开发环境三、实验目的与任务实验目的:1、熟悉Cortex-M3处理器开发平台MDK2、熟悉基于STM32固件库的MDK项目的配置3、理解STM32处理器GPIO的结构,掌握GPIO引脚的配置方法4、熟悉GPIO的配置过程5、熟悉MDK开发平台软件仿真环境及外设仿真方法实验任务:如下图,STM32F103R8T6处理器GPIOA的GPIO_Pin_6控制LED1 GPIO_Pin_7控制LED2,建立一个基于STM32固件库的MDK项目,实现对LED灯的控制,使LED1每秒闪烁1次。
LED2每秒闪烁2次。
四、参考资料1、《嵌入式系统基础及应用》第7章 GPIO部分2、参考手册:STM32F10xxx_RM0008_CH_Rev7V3.pdf3、数据手册:STM32F103CDE增强型系列数据手册(2009年3月).pdf4、固件库:STM32F101xx和STM32F103xx固件函数库.pdf五、实验基本原理1、STM32每个GPIO引脚具有工作模有:浮空输入、带上拉输入、带下拉输入、模拟输入、开漏输出、推挽输出、复用功能的推挽输出、复用功能的开漏输出等。
由上图可知,若驱动LED1、LED2,需要设置相应的IO引脚为开漏输出或推挽输出。
2、对于STM32 GPIO端口的配置,涉及的寄存器的作用。
2个32bits的配置寄存器(GPIOx_CRL,GPIOx_CRH),用于配置各IO引脚的输入输出方式和速度,各位含义如下:2个32bits的数据寄存器 (GPIOx_IDR,GPIOx_ODR),用于读取IO引脚的状态和设置IO 引脚输出电位。
1个32bits的置位/复位寄存器(GPIOx_BSRR),用于置位复位某些IO引脚的原子操作。
1个16bits的复位寄存器(GPIOx_BRR),用于复位某些引脚的原子操作1个32bits的Lock寄存器(GPIOx_LCKR)。
STM32F4(KEIL5函数版)工程模板建立方法
1.下载对应型号的STM32固件库2.建立好对应的文件夹2.1 建立文件夹工程说明主要存放stm32f429的官方固件库存放编译产生的调试信息,hex文件,预览信息,封装库扥文件主要存放内核文件和启动文件存放main函数,中断函数,配置函数,429系统函数2.2 在文件夹里放对应的固件库文件1.。
将inc,src文件夹放入。
2.找到startup_stm32f429_439xx.s?放入找到core_cm4,core_cm4_simd,core_cmFunc,core_cmInstr放入3.将里面所有的文本文件放入user文件夹。
将stm32f4xx.h和system_stm32f4xx.h放入user文件夹。
3.打开Keil建立工程模板一找到对应的STM32芯片型号二在该对话框中建立STARTUP,User,Libraries文件夹,给这三个文件夹中添加c文件,STARTUP文件夹中只添加.s启动文件三勾选Use MicroLib 为了日后编写串口驱动的时候可以使用printf函数勾选Create HEX File,在编译过程当中产生hex文件选择Select Folder for Objects 为文件夹Output选择默认的文件夹不用调整Define添加宏STM32F429_439xx,USE_STDPERIPH_DRIVER,进入Include Paths按如下添加头文件路径要进行仿真的话,选择好对应的USE仿真器型号五STM32F429比较特殊,它的用FMC代替了FSMC,所以要将stm32f4xx—_fsmc.c文件不加入编译剔除Include in Target Bulid的勾4.然后就可以在User用main.c文件进行正常的编译了。
通过STM32固件库V3.5.0来建立一个简单的工程模版
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_Stdperiph_Examples\GP IO\IOToggle 目录下 main.c,stm32f10x_conf.h,stm32f10x_it.h,stm32f10x_it.c 四 个文件复制到 User 目录下。 至此,文件的操作结束。 重新点击,现在我们要向各个文件组中添加文件。 首先是 User 文件组,点击 Add Files,然后添加 User 文件夹下的 3 个 C 文件,如下图所示。
在这里,选择否(N),等会我们会添加 STM32 固件库中的启动文件。
接下来,我们要建立几个文件组,用来存放不同的源文件,让整个工 程目录结构清晰,点击中的后如下图所示 点击中的可建立一个文件组,可以删除分组,下面我们将建立 User,StdPeriph_Drive,CMSIS,MDK-ARM 四个文件组,User 用来存放与 用户有关的文件,StdPeriph_Drive 用来存放库函数中的外设驱动文件, CMSIS 用来放于 Cortex_M3 内核有关的文件,MDK-ARM 用来存放启动文件, 文件组建立好后,如下图所示。 点击 OK,我们可看到下图所示)与 Template 文件夹 中的文件进行操作。 将固件库文件夹中的 Libraries 文件夹复制到工程目录下(即刚才建 立的 Template 文件夹下),并在 Template 下建立 User 与 Output 两个文件夹, User 用来放与用户代码有关的文件,Output 用来存放编译后产生的中间文件。
通过 STM32 固件库 V3.5.0 来建立一个简单的工程模
版
首先,打开 Keil,选择 Project-》New uVision Project,选择合适的文 件夹,输入工程名后,点击保存,建立工程。 如下图,在 Template 文件夹下建立工程名为 stm32_demo 的工程。 然后我们选择器件,以 STM32F103RB 为例(STM32 其他系列可类 推),在 STMicroelectronics 栏中选择 STM32F103RB,如下图,在图右侧我 们可看到关于芯片的描述。 点击确定后弹出如下的对话框,问需不需要添加启动文件(此启动文 件为 MDK 自带的),
STM32使用固件库建立工程
STM32学习笔记----使用固件库建立工程模块1.首先准备STM32固件库2.新建一个文件夹,命名为ucos-ii中)init---装入初始化代码,系统内核代码以及启动代码(\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport里的两个文件复制到此处新建的init文件夹中)(\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\S T\STM32F10x里的3个文件复制到此处新建的init文件夹中,三个文件分别是system_stm32f10x.c system_stm32f10x.h stm32f10x.h)(\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST \STM32F10x\startup\arm里的启动代码都复制到init文件夹中,这里主要是为了之后移植的方便)user--存放工程文件(\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Templat e中的4个文件复制到此处user文件夹中,具体是stm32f10x_it.h stm32f10x_it.c stm32f10x_conf.h main.c)6.在最开始建立的obj文件夹里新建2个文件夹list--用来存工程output里面的东西object--用来存output里面相应的东西,,下面建立工程的时候会讲到7.新建工程,选择文件夹的时候选择ucos-ii/obj选择型号后会有有个对话框问是否添加启动文件,由于库里面有启动代码,所以这里点击否。
打开option for Target1点开output设置object对应的文件夹和list对应的文件夹,这里就设置成我们上面建立的两个。
keil5建立库函数工程模板
新建基于STM32F10X系统固件库的MDK5的工程模板1.在自己电脑上合适的盘符上新建一个”库函数工程模板”文件夹, 这个根据个人习惯哈,你也可以建立你喜欢的文件夹.2.在”库函数工程模板”文件夹里面建立CORE,PROJECT,STM32_FWLIB,USER四个文件夹.如下图其中,CORE文件夹用来存放核心文件和启动文件, STM32_FWLIB文件夹用来存放ST公司官方提供的库函数源码文件,USER文件夹用来存放主函数文件main.c,以及system_stm32f10x.c,system_stm32f10x.h,stm32f10x_it.h,stm32f10x_it.c,stm32f10x.h,stm32f10x_conf.h文件,PROJECT文件夹主要是用来存放工程文件。
3.把官方固件库“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver”下面的src和inc二个文件夹复制到STM32_FWLIB文件夹下,如下图:其中,src文件夹存放的固件库的“.C”文件,而inc文件夹是存放的是对应的“.H”头文件。
4.把官方固件库相关文件与启动文件复制到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\startu p\arm”下面的startup_stm32f10x_ld.s启动文件复制到CORE文件夹下面,如下图:说明:我们用的STM32F103R6芯片,芯片的FLASH是32K,是小容量芯片,所以启动文件用”startup_stm32f10x_ld.s”若用其它容量芯片,可以用”startup_stm32f10x_md.s”或”startup_stm32f10x_hd.s”5.把官方固件库“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”文件夹下面的“stm32f10x_conf.h”,“stm32f10x_it.c”和“stm32f10x_it.h”三个文件也复制到USER文件夹下。
如何使用STM32 v3.5固件库建工程
如何使用STM32_V3.5版本固件库建立工程模板准备工作如下:1:下载STM32_V3.5的固件库去论坛上找,很多2:准备Keil uVision4 软件,并安装到电脑上。
3:不要带板凳了,带上你的脑袋就行,因为板凳不会思考。
开始:1:首先解压缩下载的固件库(保留一个备份,你懂的)里面有,_htmresc :ST的logo完全无用,不用理会,Libraries:比较重要的文件包含STM32的系统文件和大量头文件,也就是库文件了。
Project:包含大量外设的例程,和各个软件版本的评估版工程模板。
KEIL对应的就是MDK-ARM 文件下的工程模板。
你也可以利用这个工程模板来修改,得到你自己的工程模块,本文不用此法。
Utilities:就是评估版的相关文件:本文也不会用到,无视既可。
这四个文件,(先去掉文件的只读属性吧,相信你会的)2:安照一般的方法,建立工程模板先建立一些文件夹,比如工程模板要建在D盘,下面的D:\STM32\PRO1(项目名字,自己随便定)再该文件夹下面新建以下文件夹Libraries:直接复制上述的的Libraries文件夹,把其中的CMSIS剪切出来,放到PRO1目录下,直接成为另一个文件夹。
另外把STM32F10x_StdPeriph_Driver下的inc和src文件夹剪切出来,放在Libraries目录下,STM32F10x_StdPeriph_Driver文件夹就可以删除了。
会发现里面就只剩下头文件了。
CMSIS:就是从上面粘贴来的。
在CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下直接将Startup文件剪切出来,放在Libraries目录下,其他的不需要动。
里面存放的就是重要的系统文件,先不要理会是什么作用吧,慢慢就明白了。
Startup 就是从上面粘贴来的。
我们要用的比如是:STM32F103VC,只要把startup\arm目录下的startup_stm32f10x_hd.s文件剪切出来,放到Startup 下面就好。
新建基于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 端口配置, 推挽输出
基于固件库V3.5建立STM32工程
从零开始基于固件库V3.5建立STM32工程一、建立工程文件夹及其子文件夹,在文件夹内拷贝相应的文件,并整理好。
1、建立工程文件夹,将它命名为GPIO。
2、在GPIO下分别建立Lib、User、List及Obj这四个文件夹。
3、将固件库中Libraries文件夹下的"CMSIS"和"STM32F10x_StdPeriph_Driver"这两个文件夹拷贝至上一步建立的Lib文件夹下。
4、将固件库中Project-->STM32F10x_StdPeriph_Examples-->GPIO-->IOToggle内的全部文件拷贝至第2步建立的User文件夹下。
二、建立KELL工程。
1、Project-->New μVision Project...,将新建立的工程保存在步骤1时建立的GPIO文件夹下,并命名为GPIO。
2、在弹出的Select Device for 'Target1'...对话框中,选择相应的器件,我们选择 STM32F103ZE,确定完成后按"OK"。
3、在弹出的询问是否添加启动代码的对话框中,选"否"。
因为我们使用固件库中的启动代码,需要手动添加。
4、点击右键add group,在Target1下建立四个Groups: User 、Lib 、CMSIS、StartUp。
然后添加文件。
4.1在CMSIS Group下添加如下两个c文件:"\GPIO\Lib\CMSIS\CM3\CoreSupport\core_cm3.c"以及"\GPIO\lib\cmsis\cm3\devicesuport\st\stm32fl0x\system_stm32 f10x.c"。
4.2在User Group下添加c文件:将\GPIO\User目录下的所有C文件添加进来。
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的。
MDK4.54和固件库3.5建立新工程
MDK4.54和固件库3.5建立新工程以Keil uVision4软件和STM32F103芯片为例,固件库版本为3.5版,演示建立新工程的步骤。
1,在建立新工程之前需要一些准备工作,首先要新建一个文件夹存放工程文件(如GPIO)2,在此文件夹下新建两个文件夹:3,打开Project,建立如下两个文件夹:4,将下载的固件库Libraries下的两个文件夹CMSIS和STM32F10x_StdPeriph_Driver拷贝到GPIO文件夹下,如下图:5,在库文件的例程中找到以下几个文件main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h、system_stm32f10x.c等文件拷贝到工程下的User文件夹中:6,到此,准备工作完成。
7,打开Keil软件,点击快捷方式图标,打开界面如下图:部分工具栏如下图:8,单击上图箭头所指示的Project图标,弹出以下窗口9,然后点击上面红色箭头所指的New u Vision Project,弹出下面的窗口10,然后保存在工程下Project文件夹下,命名为GPIO,点击保存如下:11,点击保存后弹出如下窗口:12,然后选择所用的芯片,这里我们选择STM32F103VC,如下:13,点击OK后弹出如下对话框,选择否:14,工程建好后就是下面的样子了:15,在工程上右击,选择Mange Componts,如下:16,点击Mange Componts后添加文件组,如下:17,在User下添加工程文件夹下的C文件:18,点击Add,用同样的方法给StdPeriph_Driver添加文件,选择工程下STM32F10x_StdPeriph_Driver下面的src文件夹下的文件,如下(只需要添加自己需要的即可,这里我全部添加):19,然后在CMSIS下添加文件,选择工程下CMSIS文件下的CM3下的CoreSupport的文件里的文件,如下:20, 在Startup下添加工程下CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的文件,如下(前面添加的都是C文件,这里添加时,文件类型需要选择All file,可以选择芯片对应的文件,这里我们只选择第二个文件,否则在下面的程序编译中会出现重复错误):21,添加完文件后点击Ok,工程如下:22,现在右击工程选择Options for Target ‘GPIO’来配置工程:23,在output页面下点击Select Folder Objects…,选择我们在Project 目录下的Obj文件夹:24,选择Create HEX File选择项:25,在Listing页面下点击Select Folder Objects…,选择我们在Project 目录下的List文件夹:26,在C/C++页面下配置,这是预编译的定义;Define 中写入USE_STDPERIPH_DRIVER, STM32F10X_HD其中第一个“USE_STDPERIPH_DRIVER”定义了使用外设库,定义此项会包含*_conf.h文件,从而使用外设库;而第二个“STM32F10X_HD”从字面理解应该是定义了大等容量的STM32MCU,STM32F10X_MD 则为中等容量等。
使用STM32固件库建立keil工程详细步骤
开源电子网
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 文件夹下面的文件:
8
ALIENTEK STM32 开发板资料
开源电子网
8.下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。 打开官方固件库包,定位到我们之前准备好的固件库包的目录 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,
将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 STM32F10x_FWLib 文件夹下面。 src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件,您不妨打开这两个文件目录 过目一下里面的文件,每个外设对应一个.c 文件和一个.h 头文件。
新建基于固件库的工程模板实验流程
新建基于固件库的工程模板实验流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!构建基于固件库的工程模板实验步骤详解固件库是嵌入式系统开发中的重要工具,它提供了一系列预先编写的代码模块,可以帮助开发者快速构建和优化项目。
STM32(一)-基于固件库的工程模板
STM32(⼀)-基于固件库的⼯程模板⼀、背景知识ARM是Contex内核设计公司,设计⽅案;STM是Contex微控制器芯⽚⽣产⼚商,根据内核⽅案、添加⽚上外设资源⽣产MCU芯⽚;野⽕、正点原⼦等公司基于MCU芯⽚制作⽚外资源丰富的PCB电路板;为了解决不同芯⽚⼚商⽣产的Contex微控制器在软件上的兼容性,ARM与芯⽚⼚商建⽴了CMSIS标准。
(Cortex MicroController Software Interface Standard/Contex 微控制器软件接⼝标准)CMSIS 标准中最主要的为 CMSIS 核⼼层,它包括了:(1)内核函数层:其中包含⽤于访问内核寄存器的名称、地址定义,主要由 ARM 公司提供。
(2)设备外设访问层:提供了⽚上的核外外设的地址和中断定义,主要由芯⽚⽣产商提供。
1-汇编编写的启动⽂件startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、对⽤C库函数_main最终去到C的世界2-时钟配置⽂件system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M。
3-外设相关的stm32f10x.h:实现了内核之外的外设的寄存器映射stm32f10x_xx.c:外设的驱动函数库⽂件注:xx表⽰:GPIO、USRAT、I2C、SPI、FSMCstm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明4-内核相关的CMSIS - Cortex 微控制器软件接⼝标准core_cm3.h:实现了内核外设的寄存器映射core_cm3.c:内核外设的驱动固件库NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器)misc.hmisc.c5-头⽂件的配置⽂件stm32f10x_conf.h:头⽂件的头⽂件//stm32f10x_usart.h //stm32f10x_i2c.h //stm32f10x_spi.h //stm32f10x_adc.h //stm32f10x_fsmc.h ......6-专门存放中断服务函数的C⽂件stm32f10x_it.cstm32f10x_it.h中断服务函数你可以随意放在其他的地⽅,并不是⼀定要放在stm32f10x_it.c#include "stm32f10x.h"int main(void){// 来到这⾥的时候,系统的时钟已经被配置成72M。
第4讲 新建工程模板
硬件平台:
• • • ALIENTEK战舰STM32开发板 Mini STM32开发板 任何ALIENTEK出品的STM32开发板
Hale Waihona Puke 配套学习手册:• 《STM32开发指南》库函数版本 第三章3.3节
配套书本教程:
• 广州星翼电子 《原子教你玩STM32》库函数版本 ,2013.4北航出版 官方淘宝店: 技术支持论坛:
stm32参考资料stm32固件库使用参考资料stm32f10xstdperiphlibv350ministm32开发板stm32开发指南库函数版本第三章33节原子教你玩stm32库函数版本20134北航出版原子教你玩stm32系列视频广州星翼电子官方淘宝店
《原子教你玩STM32》系列视频
第4讲 新建基于MDK的STM32工程模板
《原子教你玩STM32》系列视频
开发环境:
• • • MDK3.8a(KEIL),视频内容也适用MDK4以上版本 光盘目录:\软件资料\软件\MDK3.80A 下载地址:/
固件库版本:V3.5.0
•
•
光盘目录:\STM32参考资料\STM32 固件库使用参考资料 \ STM32F10x_StdPeriph_Lib_V3.5.0 下载地址:/posts/list/6054.htm
广州星翼电子
官方淘宝店:
技术支持论坛:
《原子教你玩STM32》系列视频
提醒: 此视频内容适用ALIENTEK战舰STM32开 发板和MiniSTM32开发板。 mini板子用户工程建立需要注意:
① Mini板用户新建工程的时候请记得添加启动文件为 startup_stm32f10x_md.s ② 全局宏定义修改为: STM32F10X_MD,USE_STDPERIPH_DRIVER ③ SYSTEM文件夹请copy mini开发板光盘的库函数实验中的任何一个。 ④ main.c文件请区别开来。Mini板子用mini板子的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图3.2.1 MDK5组成从上图可以看出,MDK Core又分成四个部分:uVision IDE with Editor(编辑器),ARM C/C++ Compiler(编译器),Pack Installer(包安装器),uVision Debugger with Trace(调试跟踪器)。
uVision IDE从MDK4.7版本开始就加入了代码提示功能和语法动态检测等实用功能,相对于以往的IDE改进很大。
Software Packs(包安装器)又分为:Device(芯片支持),CMSIS(ARM Cortex微控制器软件接口标准)和Mdidleware(中间库)三个小部分,通过包安装器,我们可以安装最新的组件,从而支持新的器件、提供新的设备驱动库以及最新例程等,加速产品开发进度。
同以往的MDK不同,以往的MDK把所有组件到包含到了一个安装包里面,显得十分“笨重”,MDK5则不一样,MDK Core是一个独立的安装包,它并不包含器件支持和设备驱动等组件,但是一般都会包括CMSIS组件,大小350M左右,相对于MDK4.70A的500多M,瘦身不少,MDK5安装包可以在:/demo/eval/arm.htm下载到。
而器件支持、设备驱动、CMSIS等组件,则可以点击MDK5的Build Toolbar的最后一个图标调出Pack Installer,来进行各种组件的安装。
也可以在/dd2/pack这个地址下载,然后进行安装。
在MDK5安装完成后,要让MDK5支持STM32F103的开发,我们还需要安装STM32F1的器件支持包:Keil.STM32F1xx_DFP.1.0.5.pack(STM32F1的器件包)。
这个包以及MDK5.14安装软件,我们都已经在开发板光盘提供了,大家自行安装即可。
3.3新建基于固件库的MDK5工程模板在前面的章节我们介绍了STM32官方库包的一些知识,这些我们将着重讲解建立基于固件库的工程模板的详细步骤。
在此之前,首先我们要准备如下资料:a)V3.5固件库包:STM32F10x_StdPeriph_Lib_V3.5.0这是ST官网下载的固件库完整版,我们光盘目录:软件资料\STM32固件库使用参考资料\STM32F10x_StdPeriph_Lib_V3.5.0我们官方论坛下载地址:/posts/list/6054.htmb)MDK5 开发环境(我们的板子的开发环境目前是使用这个版本)。
这在我们光盘的软件目录下面有安装包:软件资料\软件\MDK5在建立工程模板之前,大家首先要安装MDK5开发环境。
对于MDK5的详细安装,请参考光盘的安装文档:“\1,ALIENTEK精英STM32开发板入门资料\MDK5.14安装手册.pdf”。
这里顺便提醒大家,本小节新建的工程模板在我们光盘目录下面有存放,路径为:“\4,程序源码\2,标准例程-V3.5库函数版本\实验0-1 Template工程模板-新建工程章节使用”。
大家在新建工程过程中有任何疑问,都可以跟这个模板进行比较,找出问题所在。
接下来我们将手把手的教您新建一个基于V3.5版本固件库的STM32F1工程模板。
步骤如下:1)在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为Template。
2)点击MDK的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹Template之下,在这个目录下面建立子文件夹USER(我们的代码工程文件都是放在USER 目录,很多人喜欢新建“Project”目录放在下面,这也是可以的,这个就看个人喜好了),然后定位到USER目录下面,我们的工程文件就都保存到USER文件夹下面。
工程命名为Template,点击保存。
图3.3.1新建工程图3.3.2定义工程名称接下来会出现一个选择CPU的界面,就是选择我们的芯片型号。
如图 3.3.3所示,因为ALIENTEK 精英STM32F103所使用的STM32型号为STM32F103ZET6,所以在这里我们选择STMicroelectronics→STM32F1 Series→STM32F103→STM32F103ZET6(如果使用的是其他系列的芯片,选择相应的型号就可以了,特别注意:一定要安装对应的器件pack才会显示这些内容哦!!,如果没得选择,请关闭MDK,然后安装光盘:6,软件资料\1,软件\MDK5\ Keil.STM32F1xx_DFP.1.0.5.pack这个安装包)。
图3.3.3选择芯片型号3)点击OK,MDK会弹出Manage Run-Time Environment对话框,如图3.3.4所示:图3.3.4 Manage Run-Time Environment界面这是MDK5新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建开发环境,不过这里我们不做介绍。
所以在图3.3.4所示界面,我们直接点击Cancel,即可,得到如图3.3.5所示界面:图3.3.5 工程初步建立到这里,我们还只是建了一个框架,还需要添加启动代码,以及.c文件等。
4)现在我们看看USER目录下面包含2个文件夹和2个文件,如下图3.3.6所示:图3.3.6工程USER目录文件这里我们说明一下,Template.uvprojx是工程文件,非常关键,不能轻易删除。
Listings和Objects 文件夹是MDK自动生成的文件夹,用于存放编译过程产生的中间文件。
这里,我们把两个文件夹删除,我们会在下一步骤中新建一个OBJ文件夹,用来存放编译中间文件。
当然,我们不删除这两个文件夹也是没有关系的,只是我们不用它而已。
5)接下来,我们在Template工程目录下面,新建3个文件夹CORE, OBJ以及STM32F10x_FWLib。
CORE用来存放核心文件和启动文件,OBJ是用来存放编译过程文件以及hex文件,STM32F10x_FWLib文件夹顾名思义用来存放ST官方提供的库函数源码文件。
已有的USER目录除了用来放工程文件外,还用来存放主函数文件main.c,以及其他包括system_stm32f10x.c 等等。
图3.3.3.5工程目录预览6)下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。
打开官方固件库包,定位到我们之前准备好的固件库包的目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹copy到我们刚才建立的STM32F10x_FWLib文件夹下面。
src存放的是固件库的.c文件,inc存放的是对应的.h文件,您不妨打开这两个文件目录过目一下里面的文件,每个外设对应一个.c文件和一个.h头文件。
图3.3.3.6官方库源码文件夹7)下面我们要将固件库包里面相关的启动文件复制到我们的工程目录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\a rm下面,将里面startup_stm32f10x_hd.s文件复制到CORE下面。
这里我们我之前已经解释了不同容量的芯片使用不同的启动文件,我们的芯片STM32F103ZET6是大容量芯片,所以选择这个启动文件。
现在看看我们的CORE文件夹下面的文件:图3.3.3.7启动文件夹8)定位到目录: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目录下面。
图3.3.3.8 USER目录文件浏览9)前面8个步骤,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入我们的工程中去。
右键点击Target1,选择Manage Components图3.3.3.9点击Management Components10)Project Targets一栏,我们将Target名字修改为Template,然后在Groups一栏删掉一个SourceGroup1,建立三个Groups:USER,CORE,FWLIB。
然后点击OK,可以看到我们的Target 名字以及Groups情况。
图3.3.3.10图3.3.3.1111)下面我们往Group里面添加我们需要的文件。
我们按照步骤10的方法,右键点击点击Tempate,选择选择Manage Components.然后选择需要添加文件的Group,这里第一步我们选择FWLIB,然后点击右边的Add Files,定位到我们刚才建立的目录STM32F10x_FWLib/src下面,将里面所有的文件选中(Ctrl+A),然后点击Add,然后Close.可以看到Files列表下面包含我们添加的文件。
这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。
例如我只用GPIO,我可以只用添加stm32f10x_gpio.c而其他的可以不用添加。
这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选择。
图3.3.3.1212)用同样的方法,将Groups定位到CORE和USER下面,添加需要的文件。
这里我们的CORE下面需要添加的文件为core_cm3.c,startup_stm32f10x_hd.s (注意,默认添加的时候文件类型为.c,也就是添加startup_stm32f10x_hd.s启动文件的时候,你需要选择文件类型为All files才能看得到这个文件),USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c.这样我们需要添加的文件已经添加到我们的工程中了,最后点击OK,回到工程主界面。