版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目二STM32F4单片机的编译集成环境MDK5的设置任务2.1认识STM32官方标准固件库与MDK任务2.1认识STM32官方标准固件库与MDK任务2.2新建STM32F4单片机项目工程项目二STM32F4单片机的编译集成环境MDK5的设置任务2.1认识STM32官方标准固件库与MDK【知识目标】了解STM32官方STD标准固件库与MDK编辑界面。【能力目标】能够阐述STM32官方标准固件库的架构组成。【素质目标】培训系统学习能力。查阅设计资料的能力。培养分析问题解决问题的能力。1.STM32F4单片机的官方标准固件库下载3.STM32F4官方标准固件库包2.CMSIS标准本节学习内容:4.STM32F4单片机的关键配置文件5.系统启动文件6.MDK简介STM32F4单片机的官方标准固件库下载ST公司为了方便用户开发编写程序,提供了一套标准的STM32F4固件库,该固件库对内部的硬件电路功能以函数的形式提供了访问接口。可以通过查看库函数的源程序,了解具体对寄存器的操作过程。STM32标准外设库的下载:ST官网下载/Designresource/list/STM32%20MCU/firmware_software/firmware_software开源电子网CMSIS标准CMSIS标准英文全称是CortexMicrocontrollerSoftwareInterfaceStandard,ARMCortex微控制器软件接口标准。任何一个Cortex-M4芯片,内核结构都完全相同,不同的是芯片的存储器容量、片上外设、IO以及其他模块的区别。ARM是一个做芯片标准的公司,它负责的是芯片内核的架构设计。TI、ST等公司并不做标准,他们根据ARM公司提供的芯片内核标准设计自己的芯片。CMSIS标准图2-1基于CMSIS框架的应用程序基本结构CMSIS标准图2-1基于CMSIS框架的应用程序基本结构CMSIS框架内分为3个基本功能层:内核外设访问层:由ARM公司实现,包含了名称定义、地址定义、存取内核寄存器和外围设备的协助函数。同时也为RTOS(实时操作系统)定义了独立的内核接口函数。中间件访问层:由ARM公司实现,芯片厂商提供更新,主要负责当以中间件访问的应用程序接口API函数。器件级外设访问层:由芯片厂商实现,包含了定义硬件寄存器的地址以及外设的访问函数,比如ST公司提供的固件库外设驱动文件(stm32f40x_gpio.c等文件)。另外厂商会对异常向量进行扩展,以处理相应异常。STM32F4官方标准固件库包介绍下载“STSW_STM32065_STM32F4单片机DSP与标准外设库”后解压缩后如图2-2所示:图2-2“STSW_STM32065_STM32F4单片机DSP与标准外设库”内容STM32F4官方标准固件库包介绍STM32F4官方标准固件库包介绍STM32F4官方标准固件库包介绍STM32F4官方标准固件库包介绍Libraries文件夹里面的文件在建立工程的时候会使用。STM32F4官方标准固件库包介绍包含ST公司提供的官方实例(常用的硬件功能应用),用户可以参考这些实例编写自己的开发程序,缩短开发周期。存放工程模板,给出了常用的集中开发环境下的项目模板。STM32F4官方标准固件库包介绍固件库的帮助文档,在开发过程中会用到。STM32F4单片机的关键配置文件表2-1STM32F4单片机的关键配置文件序号文件所在目录说明1core_cm4.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Include该头文件是CMSIS的核心文件,提供进入Cortex-M4内核接口。用户无须修改该文件。2stm32f4xx.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\IncludeSTM32F4片上外设访问层头文件,该文件至关重要,对系统寄存器进行了定义声明以及内存操作,该文件同时还包含了时钟的相关定义、FPU和MPU单元开启定义、中断相关定义等。3system_stm32f4xx.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include片上外设接入层系统头文件。主要是申明设置系统及总线时钟相关的函数。STM32F4单片机的关键配置文件表2-1STM32F4单片机的关键配置文件序号文件所在目录说明4system_stm32f4xx.c\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates该文件是在系统启动时对整个系统和时钟系统进行配置,系统启动后首先要调用该文件中的SystemInit函数。5stm32f4xx_it.c\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4x_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Template用于集中编写中断函数6stm32f4xx_it.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4x_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templatestm32f4xx_it.c对应的头文件。STM32F4单片机的关键配置文件表2-1STM32F4单片机的关键配置文件序号文件所在目录说明7stm32f4xx_conf.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4x_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Template外设驱动配置文件,通过修改该文件中所包含的外设头文件,用户启动或禁用外设驱动。8stm32f4xx_rcc.c\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\src与系统时钟RCC相关的一些操作函数,主要是对一些时钟的配置和使能。9stm32f4xx_rcc.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\incstm32f4xx_rcc.c对应的头文件。STM32F4单片机的关键配置文件表2-1STM32F4单片机的关键配置文件序号文件所在目录说明10misc.c\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\src包含中断优先级以及内核中滴答定时器的配置操作函数,在实际设计中会经常用到misc.c和misc.h这两个文件。11misc.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\incmisc.c对应的头文件。系统启动文件系统的启动文件系统启动文件完成以下工作:初始化堆栈指针SP。初始化PC指针,将指针PC设置为“Reset_Handler”,系统启动后从“Reset_Handler”向量入口开始执行程序。初始化中断向量表。配置系统时钟,调用SystemInit。系统启动文件将栈的区域“Stack_Size“大小设置为0x00000400(1K字节)*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************系统启动文件
*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************系统启动文件开辟一个栈空间,栈空间的标号为“Stack_Mem”,栈空间大小为“Stack_Size”。SPACE伪指令用于开辟一个空间。*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************标号“__initial_sp”表示了堆空间的顶部,也就是栈顶。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************
代码定义了一个名为“HEAP”的数据段,标号“__heap_base”表示了的数据段的底部,标号“__heap_limit”表示了堆的顶部。系统启动文件通过上述程序代码可以看出,栈的顶部和堆的底部是连接在一起的,在程序运行中,当发生进栈操作时是向RAM的低地址方向存储临时变量。而堆的作用是分配变量,向高地址方向分配RAM的存储空间。
当设计程序非常庞大时,运行过程中有可能会出现堆栈溢出的情况。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************指定当前文件保持堆栈八字节对齐。指示编译器将使用Thumb指令集。在使用Thumb具体指令前要使用该指令进行声明。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************定义了一个名为“RESET”的数据段,并设置为只读属性,通过“EXPORT”将标号“__Vectors”、“__Vectors_End”、“__Vectors_Size”声明为全局量,可供其他源文件访问。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************DCD伪指令在RAM中分配了连续的存储空间并进行了初始化设置。分配了连续字节的存储空间,并进行了初始化设置,初始化值为“__initial_sp”,“__initial_sp”标号代表了地址值。“__Vectors”标号也同样代表了当前数据段在RAM中的地址值。标号“__Vectors_End”表示了上述分配空间结束后的地址值。标号“__Vectors_Size”代表了分配的向量空间的总字节数。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************分配了名为“|.text|”只读的程序存储空间段“PROC”和“ENDP”构成了一个过程,相当于定义了一个函数,在”PROC”与“ENDP”之间的代码构成了一个子程序的内容,”PROC”与“ENDP”成对出现。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************标号Reset_Handler相当于函数名,对应了这段程序的首地址。EXPORT用于声明,声明Reset_Handler标号为全局标号,其它源文件可以访问。[WEAK]用于指示如果有其它源文件定义Reset_Handler标号,则屏蔽掉此处的声明。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************通知编译器使用其它源文件中的“SystemInit”、“__main”标号。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************将“SystemInit”标号对应的值写入内部寄存器R0中。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************跳转到寄存器R0内容对应的地址处执行子程序,并将指令切换回ARM指令集。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************定义了标号名称为NMI_Handler的子程序,ENDP:表示程序的结束,[WEAK]:该段程序的定义为弱定义方式,其它源文件定义了“NMI_Handler”函数则屏蔽掉此处的声明。MDK简介KeilMDK,也称MDK-ARM、RealviewMDK,源自于德国的KEIL公司,是ARM公司推出的针对各种嵌入式处理器的软件开发工具。图2-4MDK5启动界面MDK简介KeilMDK,也称MDK-ARM、RealviewMDK,源自于德国的KEIL公司,是ARM公司推出的针对各种嵌入式处理器的软件开发工具。图2-5MDK5的组成MDK简介KeilMDK,也称MDK-ARM、RealviewMDK,源自于德国的KEIL公司,是ARM公司推出的针对各种嵌入式处理器的软件开发工具。MDK5下载网址:/demo/eval/arm.htmARM.CMSIS.5.8.0pack安装包和Keil.STM32F4xx_DFP.2.16.0.pack安装包下载网址:/dd2/Pack/#!#eula-containerMDK安装教程本节总结1.STM32F4单片机的官方标准固件库下载3.STM32F4官方标准固件库包2.CMSIS标准4.STM32F4单片机的关键配置文件5.系统启动文件6.MDK简介任务2.2新建STM32F4单片机项目工程【知识目标】掌握使用MDK新建STM32F4设计项目的流程。【能力目标】能够在MDK中成功创建一个全新的STM32F4单片机项目工程。能够根据项目需求,在STM32项目中精准配置相应STD库文件和编译选项。【素质目标】培训系统学习能力。培养查阅设计资料的能力。培养分析问题解决问题的能力。1.创建项目工程并配置项目参数3.在项目中添加自定义延时文件和自定义系统文件2.在项目中添加配置文件本节学习内容:4.添加并配置标准库文件5.启动文件配置6.项目头文件路径配置8.设置下载/调试选项7.设置输出选项9.配置系统时钟参数10.单片机项目编译准备工作:1.下载STM32F4固件库包并解压缩,如图所示:2.安装好MDK53.安装好STM32F4的器件包:Keil.STM32F4xx_DFP.1.0.8.pack1.创建项目工程并配置项目参数1)首先在电脑的硬盘上创建一个文件夹用来存放工程模板,并在该文件夹下新建6个文件夹,如图2-5所示。图2-5新建模板的窗口1.创建项目工程并配置项目参数2)打开MDK软件,执行Project\NewμVisionProject…菜单命令,并将工程路径选择为新建的模板文件下的USER,并保存工程名为template。在弹出的窗口中选择器件,如图2-6所示:图2-6新建项目选择器件将器件选择为:STMicroelectronics/STM4Series/STM32F407/STM32F407ZG/STM32F407ZGTx1.创建项目工程并配置项目参数单击OK后,在弹出的如图2-7所示的“ManageRun-TimeEnvironment”对话框中选择Cancel。操作完成后,USER文件夹下文件如图2-8所示。图2-8USER目录下的文件图2-7“ManageRunEnvironment”对话框2.在项目中添加配置文件1)将stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Drive目录下的inc、src文件夹复制到新建模板目录下的FWLIB文件夹下。固件库中src为驱动STM32F4的库函数文件。inc则是这些库文件对应的头文件。2)将与内核和启动相关的文件复制到模板文件夹下的core文件夹内。将stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目录下的startup_stm32f40_41xxx.s启动文件复制到CORE文件夹内。将stm32f4_dsp_stdperiph_lib_V1.8.0\Libraries\CMSIS\Include目录下的core_cm4.h、core_cmsimd.h、core_cmFunc.h、core_cmInstr.h复制到CORE文件夹内。2.在项目中添加配置文件3)将stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include目录下的stm32f4xx.h、system_stm32f4xx.h文件复制到USER目录下。4)将stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates目录下的main.c、main.h、stm32f4xx_conf.h、system_stm32f4xx.c、stm32f4xx_it.c、stm32f4xx_it.h文件复制到USER文件夹下。2.在项目中添加配置文件文件复制后的user文件夹如图2-9所示。图2-9USER文件夹3.在项目中添加自定义延时文件和自定义系统文件在system文件夹内新建两个文件夹delay、sys,如图2-12所示。图2-12新建sys、delay文件夹在MDK界面执行菜单命令File\New命令,新建文件分别保存在delay文件中和sys文件夹中:delay文件夹中保存的文件名为delay.c和delay.hsys文件夹中保存为sys.c和sys.h3.在项目中添加自定义延时文件和自定义系统文件在STM32编程过程中经常会使用到调用毫秒级和微秒级的延时函数,一般使用STM32单片机内部的滴答定时器来设计实现毫秒、微妙延时功能,因此用户可以自己编写滴答定时器的驱动程序。
本模板中的延时驱动函数保存在delay.c文件中,对应的头文件为delay.h。
打开delay.c文件,录入代码内容并保存。3.在项目中添加自定义延时文件和自定义系统文件在STM32编程过程中经常会使用到调用毫秒级和微秒级的延时函数,通常会使用STM32单片机内部的滴答定时器来设计实现毫秒、微妙延时功能,因此用户可以自己编写滴答定时器的驱动程序。
本模板中的延时驱动函数保存在delay.c文件中,对应的头文件为delay.h。
打开delay.c文件,录入代码内容并保存。3.在项目中添加自定义延时文件和自定义系统文件在STM32编程过程中经常会使用到调用毫秒级和微秒级的延时函数,通常会使用STM32单片机内部的滴答定时器来设计实现毫秒、微妙延时功能,因此用户可以自己编写滴答定时器的驱动程序。
本模板中的延时驱动函数保存在delay.c文件中,对应的头文件为delay.h。
打开delay.c文件,录入代码内容并保存。3.在项目中添加自定义延时文件和自定义系统文件打开delay.h文件,录入如下代码并保存。delay.h对delay.c中定义的函数进行了声明,包含了delay.h头文件的源文件可以使用delay.h中声明过的函数。3.在项目中添加自定义延时文件和自定义系统文件打开sys.h文件,并录入代码并保存。sys.h文件定义了STM32F4的IO口输入读取宏定义和输出宏定义,在编程操作时通过有参宏的使用能够直接读取、设置I/O端口的引脚电平,为程序设计提供了方便。创建用户自己的系统文件sys.c,并保存在sys文件夹内。用户可以将自己创建的系统函数保存在sys.c文件内。打开新建的MDK模板项目,如图2-10所示,在“Target1”上单击鼠标右键,添加组,并将组改名为USER、FWLIB、SYSTEM、HARDWARE、CORE,与模板文件夹下文件夹名称相对应,如图2-11所示。图2-10新建组操作图2-11新建并分组后的项目4.添加并配置标准库文件4.添加并配置标准库文件单击工具栏中的,在弹出的如图2-13所示的窗口界面下,将之前复制的文件添加到修改的组内。图2-13添加文件到FWLIB组操作4.添加并配置标准库文件将src内的源文件全部添加到FWLIB组内,添加后的界面如图2-14所示。由于设计的模板采用的是STM32F407单片机,不需要使用stm32f4xx_fmc.c文件,该文件在STM32F42、STM32F43系列单片机中才会使用,因此可以将该文件移除。图2-14添加FWLIB组文件界面5.启动文件配置
1)将startup_stm32f40_41xxx.s文件添加CORE组内,由于默认添加的文件类型为*.h和*.c,因此在添加该文件时需要将添加文件的类型选择为Allflies(*.*),如图2-15所示。图2-15添加启动文件到CORE组内5.启动文件配置
2)将main.c、system_stm32f4xx.c添加到USER组内,如图2-16所示,如果希望将用户编写的中断响应函数存放在stm32f4xx_it.c文件中则将stm32f4xx_it.c添加到USER包内,如果用户不需要将自己编写的中断响应函数保存在stm32f4xx_it.c中则可以不添加该文件到USER包中。图2-16添加用户文件到USER中5.启动文件配置
3)将delay.c、sys.c文件添加到system组中,如图2-17所示。图2-17添加sys.c和delay.c文件5.启动文件配置
4)添加文件的包内列出对应的包内文件,如图2-18所示。图2-18添加文件后的模板项目6.项目头文件路径配置在MDK集成环境中需要明确指出文件头文件所在路径,否则MDK无法查找到各类元件中需要的头文件。图2-19设置头文件路径单击工具栏内的,在弹出的界面内选择C/C++选项,鼠标左键单击“includePaths”右侧的按钮,在弹出的窗口中在空白处双击鼠标左键,如图2-19所示。6.项目头文件路径配置然后点击单片机右侧的,选择头文件所在的文件夹,如图2-20所示,添加CORE文件夹路径。同时添加USER文件夹、FWLIB\inc、SYSTEM\delay、SYSTEM\sys文件夹路径。图2-20选择头文件路径文件夹6.项目头文件路径配置对于STM32F40系列工程,还需要添加一个全局宏定义标识符。单击工具栏内的,在弹出的界面内选择C/C++选项内的“Define:”操作框内输入“STM32F40_41xxx,USE_STDP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年金融知识竞赛试题及答案
- 学校综合办公室应急方案制定方案
- 2026年规模经济技术服务合作协议书
- 社交媒体媒体资源互换协议
- 2026年安全规程安全文化题集
- POS机权益分配协议
- 慢病精准管理的实践路径:国际标准与本地适配
- 慢病管理效果追踪与社区干预调整
- 慢病管理中的技术应用规范
- 慢病管理与健康公平性实践
- GB/T 26110-2025锌铝涂层技术规范
- 税局查合作协议书
- 开发矿山协议书
- 2331《建筑制图基础》国家开放大学期末考试题库
- 2025年井下胶轮车司机(高级)职业技能《理论知识》真题卷(新版解析)
- 2025年昆明市呈贡区城市投资集团有限公司及下属子公司第二批招聘(11人)备考笔试试题及答案解析
- 未来五年动车组行业跨境出海战略分析研究报告
- 化疗与静疗相关课件
- 管带机(输送机)技术协议二
- 初中英语听说能力培养策略研究教学研究课题报告
- 智能健康监测系统在公共卫生中的应用
评论
0/150
提交评论