STM32自学笔记之教程一:如何建立一个工程

合集下载

教你从零建一个STM32工程

教你从零建一个STM32工程

1:本例所用到的MCU是STM32F103VET6,已经过测试,如果是其它MCU的话,选你自己的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”后的图:在user里你还可以加stm32f10x_it.c中断函数文件。

10:单击“OK”,终于添加文件完毕,之后就到设置了,单击右图所示的图标:,按下图所示设置好,点"Output"标签页:再点下图select Folder for Object选项,选择输出文件路径。

在之前你已建好,如果没有,也可以这是在你的工程路径下建。

11:“Output”文件夹用以存放你所勾选项目产生的“Debug Information”、"Create HEX File"和“Brower library”信息或文件。

接着就是点"Listing"标签页,设置方法和上图相同。

STM32开发板新建工程步骤

STM32开发板新建工程步骤

新建工程步骤1.文件夹的新建:按照上述步骤新建好文件夹之后,就可以新建工程。

2.新建工程①打开软件Keil uVision4②点击project→new uVision4 project,然后出现下图所示的方框。

③新建的工程放在如下图所示文件夹:名字随便取,直接输入名字后点击保存,不用加后缀。

④接下来会有如下图所示的方框,按照下图选择:点击否。

3.添加group到project.①Add group并重命名,如下图所示:②共五个组,每一族都双击、添加文件:在此之前要将刚才新建好的Template文件夹里面装好文件(从库3.5里面Copy):库里面的Inc、Src两个文件夹复制到Libraries中,并在文件夹Libraries 中新建文件夹CMSIS,其中Copy进去下图所示五个文件,并新建文件夹startup,并将库里面的文件夹arm全部拷贝进startup:在USER文件夹中拷贝进去如下四个文件(从库到新建的若干文件夹,如下图所示):至此,文件夹里的文件添加完毕;然后往各个Group中添加文件:(※注意:所选文件均应直接来自新建的若干文件夹,不能再从库里面选!!!)(注意显示文件类型:All File:)双击Startup,添加图示文件:双击CMSIS,选择下图所示文件:(有锁文件是只读的,不能修改。

)双击FWLIB,选中SRC中的所有文件:USER里面: USER文件夹里面的文件全部放进去:DOC里面:添加readme③配置target option:点击,出现下图所示方框:※点击target选项卡,设置成下图所示:※点击Output选项卡,设置成下图所示:并点击,选择新建的若干文件夹里的Output文件夹。

※点击Listing选项卡,设置成下图所示:并点击,选择新建的若干文件夹里的Listing文件夹。

※点击C/C++选项卡,Define处选择宏,Include Path选择编译路径(点击,选择所有直接包含.c文件的文件夹,同时,inc文件夹也要包含进去)。

stm32自学笔记共20页

stm32自学笔记共20页


LED0=1;

LED1=0;

delay_ms(300);

}
•}
第二章 跑马灯实验
• Led.c函数
• void LED_Init(void)
•{

RCC->APB2ENR|=1<<2; //使能PORTA时钟

GPIOA->CRH|=0XFFFFFFFF3;//PA8 推挽输出

GPIOA->ODR|=1<<8; //PA8 输出高
• JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD,在原理图上可以看 到PA13和PA15为键盘和JTAG与SWD所共用,而这两种方针接口,他们 和普通的IO口公用,当想使用普通IO口时,必须先把他们关闭。在这 个函数里面设置参数,如果为二进制数00,则代表全部使能,如果是 二进制数01,则是能SWD,如果是10,则表示全部关闭。JTAG是一种 国际标准测试协议,主要用于芯片内部的测试。
• }要想实现一个点亮led小灯的功能,最少只需对3个寄存器进行设 置,第一步是设置外设时钟使能先把PORTA时钟使能,接下来把IO
口设置为输出,在接下来设置输出为高电平还是低电平,这里使用 推挽输出(3.3v),推挽输出主要是增强驱动能力,为外部提供大电 流。
第二章 跑马灯实验
• #ifndef __LED_H • #define __LED_H • #include "sys.h" • #define LED0 PAout(8)// PA8 • #define LED1 PDout(2)// PD2 • void LED_Init(void);//初始化

stm32F407 keil 项目工程的建立,整理笔记

stm32F407 keil 项目工程的建立,整理笔记

第一:软件的安装:第二:阅读《STM32F4开发指南-寄存器版本_V1.1》的第三章主要是MDK的使用技巧。

第三:新建项目工程和下载:寄存器的就先参考我提供的例程,后面讲述库函数的时候咱们再从官方提供的库文件里面去拷贝。

1.新建文件夹STM32_Demo,在这个文件夹里面新建3个文件夹:USER,SYSTEM,HARDWAR。

USER:用来保存工程文件;SYSTEM:用来存放一些官方提供的一些内核文件,以及一些常用的模块文件;HARDWARE:存放和硬件相关的模块文件;2.从我提供的程序代码里面拷贝文件到上面新建的文件夹里面;从1.STM32F4_LED工程文件里面拷贝资料文件到上面新建的文件夹里面:把1.STM32F4_LED--->SYSTEM拷贝到STM32_Demo---->SYSTEM;把1.STM32F4_LED--->HARDWAR拷贝到STM32_Demo---->HARDWARE;把1.STM32F4_LED--->USER--->main.c拷贝到STM32_Demo---->USER里面;3.新建项目工程:新建工程文件并保存到USAR里面;选择芯片如下:STM32F407ZG把文件里面的.c和.s文件添加到项目工程,可以先对其进行分组;最终出现的效果如下(组的名称随意命名):在文件里面还有很多.h文件,咱们要在工程里面知名路径;编译会出现问题,咱们需要添加1个宏定义;STM32F40_41xxx这样编译就没有问题了。

先让ST-Link和STM32开发板连接,并连接到计算机;咱们需要使用ST-Link下载,所以要配置如下:点击上图中“Settings”,进入如下界面:下载工程文件到STM32开发板:配置注意的几点:第四:项目工程的分析:USER:main.c;HARDWARE:led.c和led.h;相关LED灯的操作文件;SYSTEM:sys文件夹:startup_stm32f40_41xxx.s:官方提供的启动代码文件;stm32f4xx.h:官方提供的STM32F4系列芯片的头文件,类似reg51.h。

stm32建立工程

stm32建立工程

1 点击UVision4 →project→new uvision project,保存在桌面的stm32文件/user文件下(先在桌面建立stm32文件,在里面再建立user文件),取名字STM32_lession1(随意取名)。

点击保存。

2选择芯片型号:选ST公司的STM32F103VET6,有64K SRAM,512K FLASH,接下来的窗口问我们是否拷贝STM32的启动代码到工程文件中,这份代码在M3系列中都是适用的,一般情况下我们都点是,但这里我们用的是ST的库,库文件里面也自带了这一份启动代码,所以为了保持库的完整性,我们就不需要开发环境为我们自带的启动代码了,稍后我们自己手动添加,这里点击否.此时新建工程成功,如下:3 在桌面的STM32文件夹下,新建四个文件夹,分别为:FWLib、CMSIM、Uotput、listing.4 把库3。

5。

0/3。

5。

0/STM32F10X_Stdperiph_lib_V3.5.0/Libearies/STM32F10X_StdPeriph_Driver的inc和src这两个文件夹拷贝到FWlib文件夹中。

5把库3.5.0/3.5。

0/STM32F10X_Stdperiph_lib_V3.5.0/Project/STM32F10X_StdPeriph_Template 下的main。

c、stm32f10x_it.h、stm32f10x_it。

c、stm32f10x_conf。

h、system_stm32f10x.c 拷贝到USER文件夹下.6把库3。

5。

0/3。

5.0/STM32F10X_Stdperiph_lib_V3.5.0/Libearies/CMSIS/CM3/DeviceSupport/ST/STM32F10X/ startup/arm下的全部文件拷贝到CMSIS/startup文件夹下。

STM32F103VET6,有512K Flash,属于大容量的,工程中把startup_stm32f10x_hd。

STM32创建工程

STM32创建工程
步骤一:创建一个新的工程(一)
首先创建一个新工程文件夹 ,用来保存 工程的文件,并在该文件夹下创建一个子文 件夹 (用来保存工程生成的文件)
步骤一:创建一个新的工程(二)

打开keil UV4
,如下下图所示:
步骤一:创建一个新的工程(三)

1.点击工具栏中的project,新建工程,如下 图所示:

6.添加完成后如下图所示:

7.编译并链接得到0个错误0个警告
步骤三:仿真
1.仿真参数设置

2.设置完成后打开仿真器

3.观测输出引脚波形PC.6、PC.7、PC.8、PC.9

4.开始仿真并观测波形

5.另外,还可以通过如下的来对各个IO的进 行观测
结束!

2.在打开的对话框中找到刚创建新工程文件 夹的路径,并给工程命名,保存在project 文件夹下

3.在弹出的对话框中选择STM32103ZE CPU

4.在弹出的对话框中选择是否要加载启动文 件,这里选择否。
步骤二:)、启动文件及 STM32F10xR(LIB格式)拷贝到工程文件夹 下。

2.添加文件到工程(点击Manage Components)

3.修改文件夹名称和添加相应的文件

4.增加库文件和启动文件后的如下图所示:

5.添加自己的Main程序,这里以GPIO测试 程序为例,给以解释。将GPIO_test中的.C 和.h文件拷到自己的工程目录下User中。

并将其加入到工程中,如上第三步骤。

STM32之新建工程

STM32之新建工程
1、新建工程,选择对于的单片机型号。

本教程用的是STMicroelectronics->STM32F103RB
2、点击 Yes复制启动文件到工程
3,新建一个C文件,添加到工程后添加头文件#include "STM32F10x.H",并加入主函数。

4、到此工程新建完成。

点击编译,有时会提示以下错误。

提示SystemInit函数没有定义。

(1)可以通过编写一个SystemInit函数来消除这个错误。

(2)也可以打开启动文件(startup_stm32f10x_md.s),把导入SystemInit函数的三条相关语句注释掉。

如下图所示。

5、修改完成,再点击编译可能会提示以下错误
(1)双击错误提示找到错误的地方,提示要先定义一种处理器设备。

(2)通过上文的描述与处理器数据手册的说明,我们这款处理器要对”STM32F10X_MD”这种类型的产品,所以添加这种类型的宏定义即可。

如下图
6、修改完成,再点击编译。

编译通过,工程顺利新建完成!!!
可能是为了规范化,所以设了几个坑。

对于刚从51转向ARM的朋友
来说刚开始可能有点不太理解为何要这般折腾。

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对应的文件夹,这里就设置成我们上面建立的两个。

STM32学习笔记——新建工程模板步骤(向原子哥学习)

STM32学习笔记——新建⼯程模板步骤(向原⼦哥学习)1、在创建⼯程之前,先在电脑的某个⽬录下⾯建⽴⼀个⽂件夹,我们先把它命名为Template,后⾯建⽴的⼯程可以放在这个⽂件夹下。

在Template ⼯程⽬录下⾯,新建 3 个⽂件夹USER , CORE , OBJ 以及STM32F10x_FWLib 。

代码⼯程⽂件都是放在 USER ⽬,录CORE ⽤来存放核⼼⽂件和启动⽂件, OBJ 是⽤来存放编译过程⽂件以及 hex ⽂件, STM32F10x_FWLib ⽂件夹顾名思义⽤来存放 ST 官⽅提供的库函数源码⽂件。

已有的 USER ⽬录除了⽤来放⼯程⽂件外,还⽤来存放主函数⽂件main.c,以及其他包括 system_stm32f10x.c等等。

2、在MDK主界⾯,点击 Keil 的菜单:Project -> New Uvision Project ,然后将⽬录定位到刚才建⽴的⽂件夹Template 之下,然后定位到USER ⽬录下⾯,我们的⼯程⽂件就都保存到 USER ⽂件夹下⾯。

⼯程命名为 Template ,点击保存。

3、接下来会出现⼀个选择 Device 的界⾯,就是选择我们的芯⽚型号,这⾥我们定位到STMicroelectronics 下⾯的 STM32F103ZE 。

弹出对话框“Copy STM32 Startup Code to project ….”,询问是否添加启动代码到我们的⼯程中,这⾥我们选择“否”,因为我们使⽤的 ST 固件库⽂件已经包含了启动⽂件。

此时,USER ⽬录下⾯包含三个⽂件。

4、将官⽅的固件库包⾥的源码⽂件复制到我们的⼯程⽬录⽂件夹下⾯。

打开官⽅固件库包,定位到我们之前准备好的固件库包的⽬录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下⾯,将⽬录下⾯的 src,inc ⽂件夹 copy 到我们刚才建⽴的STM32F10x_FWLib ⽂件夹下⾯。

STM32建工程教程 (1)


这时新的项目工程就建立了。 这时点击如图所示的图标。
弹出如下窗口:
一些重要文件的说明
• core_cm3.c/core_cm3.h • 该文件是内核访问层的源文件和头文件,查看其中的代码多半是使用汇编语言编写的。 • stm32f10x.h 该文件是外设访问层的头文件,该文件是最重要的头文件之一。 • system_stm32f10x.c/h • 该头文件也可以称为外设访问层的头文件和源文件。在该文件中可以定义系统的时钟
件路径一定要到最后一级。
找到如图目录中的文件夹inc进行添加,然后确定, 再添加第二项。
1
2
找到第二个目录的文件夹STM32F10X文件夹添加 完成,出现如图的界面,点击OK。
1
23
安装ST-LINK仿真器。点击Debug,勾上Use,选择下载 方式,我们用的是ST-LINK下载器中的SWD下载方式, 所以选择如图的选项
频率,定义低速时钟总线和高速时钟总线的频率,其中最关键的函数就是 SystemInit ()了,总之这两个文件是新固件库V3.5的重点,有了它俩也大大简化了使用 stm32的 初始化工作。 • stm32f10x_it.c/h :这两个文件包含了 stm32中断函数,
接下来进行配置,点击如图的图标。进入TARGET OPTION界面如图所示,
要在文件里包含此函数的声 明。将 gpio.c 中所有可能 被外部调用的函数声明都放 到 gpio.h 文件中,同时, 需要让 main.c 文件包含 gpio.h。声明如下
主函数 MAIN.C 如下
要使用固件库函数,必须包含此头文件 延时函数头文件 通用输入输出口头文件
stdio是标准输入输出,源代码中如用到标 准输入输出函数时,就要包含这个头文件!
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32自学笔记
之教程一:如何建立一个工程
1概述:
刚入手STM32,比较糊涂,感觉和51系列不同。

电脑安装keil mdk 4.23,借鉴前辈经验,开始新的旅程。

2建立目录
2.1 新建工程目录:“RS422”,你也可以根据自己的需要命名此顶层目录;
2.2在目录“RS422”下新建“RVMDK”目录,表示采用ARM MDK开发环境;
2.3在“RVMDK”目录下新建目录“V1”,表示软件版本V1.0,这个好处在于下次将整个目录复制一下改为“V2”,软件版本就是V2.0了。

2.4在“V1”目录下新建“Libraries”、“Project”、“USER”目录;
2.5在“Libraries”目录下新建“STM32F10X_StdPeriph_Driver”一个目录;
2.6在“Project”目录下新建“OBJ”、“LIST”、“Pro”3个目录。

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

图1:目录结构图
3 拷贝文件
3.1 将固件库目录“C:\Keil\ARM\RV31\LIB\ST\STM32F10x”下除“stm32f10x_it.h”的所有库函数拷贝到工程目录“RS422”→“RVMDK”→“V1”→“Libraries”目录下。

3.2 将固件库目录“C:\Keil\ARM\Startup\ST\STM32F10x”目录下的所有件拷贝到工程目录“RS422”→“RVMDK”→“V1”→“Libraries”→“STM32F10X_StdPeriph_Driver”目录下。

3.3将固件库目录“C:\Keil\ARM\RV31\LIB\ST\STM32F10x”目录下的“stm32f10x_it.c”拷贝到工程目录“RS422”→“RVMDK”→“V1”→“USER”→“SRC”目录下,在此“SRC”目录下新建“main.c”文件,“main.c”先“神马”也不写。

3.4 将固件库目录“C:\Keil\ARM\INC\ST\STM32F10x”目录下的“stm32f10x_conf.h”文件拷贝到工程目录“RS422”→“RVMDK”→“V1”→“USER”→“INC”目录下。

4 建立工程
4.1运行“Keil uVision4”;
4.2点击主菜单栏“Project”→“New uVision Project”,选择在工程目录的“V1”→“Project”→“Pro”目录下命名新建工程为“RS422_MODULE.uvproj”(当然也可以命名为你自己需要的工程名);
4.3接下来出现CPU选择窗口,选择CPU为“STMicroelectronics”→“STM32F103RC”(这个大家根据自己的需要选择),点击“OK”按钮;4.4接下来出现“Copy STM32 Startup Code to Project Folder and ADD File to Project ?”提示时选择“否”(在后面的步骤中会根据CPU选择启动文件的,这里不用选择),完成工程建立。

5 工程管理
上一节新建的工程还是空空的,这一步要将它实例化。

5.1 在“Project”窗口中选择的“Manage Components”子菜单(见图2),出现“Components,Environment and Books”窗口(见图3)。

图2 图2
图3
5.2 用鼠标双击“Project Targets”栏中的“Target 1”将“Target 1”改为“RS422_MODULE”(这个大家根据自己的需要选择)(见图4),在中间的“Groups”栏中添加“USER”、“STM32_LIB”、“MDK_STARTUP”3个条目(见图5)。

图4
图5
5.3在“USER”条目的“Files”栏中添加目录“V1”→“USER”→“SRC”下的“main.c”、“stm3210x_it.c”2个文件,通过窗口的“Add Files”按钮可以添加文件(见图6)。

图6
5.4在“STM32_LIB”条目的“Files”栏中添加目录“V1” “Libraries”下的相应的接口库文件。

图7
5.5在“MDK_STARTUP”条目的“Files”栏中添加目录“V1”→“Libraries”→“STM32F10X_StdPeriph_Driver”这个文件(见图8),需要更具选用不同CPU 选择不同启动文件。

图8
5.6退出“Keil uVision4”开发环境,将工程目录“RS422”去掉文件夹的只读属性,并“应用到子目录和所有文件”,这是因为STM32固件库下载下来是只读的,无法修改库中的文件。

去掉只读属性后再进入“Keil u Vision4”,然后打开工程“RS422_MODULE.uvproj”。

6 工程设置
6.1在“Project”窗口中右击最顶层的“RS422”,再点击右键弹出菜单选择菜单中的“Options for Target ‘RS422’…”子菜单(见图10),出现“Options for Target ‘RS422’”窗口(见图11),可以按图11进行设置。

图10
图11
6.2 选择顶层的“Output ”,进入“Output”设置页,点击下面的“Select Folder for Objects…”按钮,选择目录“V1”→“Project”→“OBJ”为目标文件目录,选中“Create HEX File”(见图12)。

件生成目录(见图13),所有的目标文件和烧写到芯片中的文件都在这里。

选择“Create HEX File”前面的方框,用来生成目标文件。

图12
6.3选择顶层的“Listing”页,进入“Listing”设置页,点击下面的“Select Folder for Listings…”按钮,选择目录“V1”→“Project”→“LIST”目录为list文件生成目录(见图13)。

图13
6.4这是关键的一步,将固件库目录“C:\Keil\ARM\RV31\LIB\ST”下的文件“STM32F10xR.LIB”拷贝到工程目录“RS422”→“RVMDK”→“V1”→“Libraries”目录下。

在第五步中添加至USER中即可。

在建立工程时,只要使用到固件库,就必须将文件“STM32F10xR.LIB”拷贝到工程文件下。

7. main.c文件
因为这是一个没有任何功能的工程框架,所以main.c可以这么写:
#include "stm32f10x.h"
main ()
{
while (1)
{
;
}
}
编译程序,没有警告和错误,框架就算生成了,想添加自己的代码就可以以后添加了,自己的代码放在工程目录“RS422”→“RVMDK”→“V1”→“USER”下的“INC”或“SRC”目录下,“INC”下放你的“.h”文件,“SRC”目录下放你的“.C”文件。

以上是对STM32工程框架的实例实现。

8.在编译时出现错误,请注意所有固件库函数是否为同一版本。

相关文档
最新文档