基于STM32F103单片机开发介绍_第1页
基于STM32F103单片机开发介绍_第2页
基于STM32F103单片机开发介绍_第3页
基于STM32F103单片机开发介绍_第4页
基于STM32F103单片机开发介绍_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于STM32F103单片机开发介绍目录一、IDE安装(MDK)2二、CMSIS 架构简介3三、标准外设库的外设库结构8四、Startup文件的选择及文件拷贝10五、创建工程14六、配置工程24七、下载及调试32八、SourceInght添加技巧33一、 IDE安装(MDK)STM32使用的开发环境是MDK,目前我们使用的版本是MDK5.10。安装步骤请参考MDK5.10安装手册.pdf。二、 CMSIS 架构简介安装完ARM.CMSIS.3.20.4.pack和Keil.STM32F1xx_DFP.1.0.5.pack后,会在Keil的安装路径下生成对应的文件夹:Keil_v5ARMPack

2、ARMCMSIS3.20.4Keil_v5ARMPackKeilSTM32F0xx_DFP1.0.3Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5PACK下的文件,将在我们开发和编译时都需要用上。1. CMSISARM Cortex 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。2. Core_cm3.h1、内对Lint进行了配置。2、最重要的是调用了“stdint.h”文件,该文件由编译环境提供,对8位、16位、32

3、位等整数类型的定义及其范围进行了规范,还定义了大数输出如:UINT_LEAST8_MAX。主要用来屏蔽不同编译器之前的差异。这种扩展整数类型的定义非常清晰,从类型名字上就可以看出它的长度,这有利于编写可移植的代码。3、指示寄存器的访问权限。CMSIS定义以下3种标识符来指定访问权限:_I(volatileconst)、_O(volatile)和_IO(volatile)。其中_I用来指定只读权限,_O指定只写权限,_IO指定读写权限。4、对CM3核内的寄存器进行了定义。定义了NVIC类型结构体NVIC_Type、SCB结构体SCB_Type、SysTick类型结构体SysTick_Type、I

4、TM类型结构体ITM_Type、MPU类型结构体MPU_Type、InterruptType类型结构体InterruptType_Type、CoreDebug类型结构体CoreDebug_Type。定义了各种寄存器。5、对CM3硬件内存地址进行了映射。6、对硬件抽象层的寄存器进行了定义,包括Cortex_M3核的全局变量声明和定义,并定义一些静态功能函数。用于C语言文件内调用汇编语句如:_NOP、_ISB()、_DSB()等。其原型在core_m3.c文件内。此文件在:Keil_v5ARMPackARMCMSIS3.20.4CMSISIncludecore_cm3.h3. stm32f10x.

5、h属于CMSIS的DPAL,包括了STM32F10x系列处理器所有的外设寄存器定义、位定义和不同容量STM32F10x的内存映射。1、可以通过该文件配置如下内容:目标芯片、是否使用库文件、个别特殊的参数,如HSE的频率等。2、定义了数据类型、结构体和所有外设的内存映射3、访问外设寄存器达到宏4、中断异常的定义CMSIS对异常和中断标识符、中断处理函数名以及中断向量异常号都有严格的要求。异常和中断标识符需加后缀_IRQn,系统异常向量号必须为负值,而设备的中断向量号是从0开始递增。CMSIS对系统异常处理函数以及普通的中断处理函数名的定义也有所不同。系统异常处理函数名需加后缀_Handler,而

6、普通中断处理函数名则加后缀_IRQHandler。这些异常中断处理函数被定义为weak属性,以便在其他的文件中重新实现时不出现重复定义的错误。这些处理函数的地址用来填充中断异常向量表,并在启动代码中给以声明,例如:NMI_Handler、MemManage_Handler、SysTick_Handler、WWDG_IRQHandler等。这里特别强调三点:一是如果选择用外设库来编程则必须在编译器的PreProcessor Symbols的Define中写入“USE_STDPERIPH_DRIVER, STM32F10X_HD”。这个STM32F10x标准外设库结构分析在很多的教程中都有些过的。

7、请打开stm32f10x.h并查看8184行。只有这样才能调用库的函数的stm32f10x.h;二是要定义存储器的类型,按照存储容量分为低容量、中容量和高容量;三是要定义HSE的频率。内部定义了25M和8M两种。此文件在:Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceIncludestm32f10x.h4. system_stm32f10x.h和system_ stm32f10x.c该文件提供了两个函数和一个全局变量。- SystemInit()函数用来设置系统时钟(系统时钟源、PLL倍频因子、AHB/APBx的预分频及其Flash)该函数在启动后的复位后

8、中被调用。- SystemCoreClock 全局变量包括了内核时钟(HCLK),可以用来在程序中设置SysTick和配置其他参数;- SystemCoreClockUpdate()函数用来更新系统内核时钟,当系统内核时钟变化后必须执行该函数进行更新当系统复位后,系统时钟利用的内部时钟源的8MHz,然后通过startup_stm32f10x_xx.s调用SystemInit() 系统主时钟。如果系统启动不成功,则 SystemInit()函数不会生效,HIS依旧运行于8MHz。HSE默认频率为8MHz。可在stm32f10x.h中修改“HSE_VALUE”来改变此值。当HSE被用作系统时钟时其

9、直接接入PLL。所以需要用户必须根据自己的HSE实际频率更改该参数。ST定义的系统初始化函数SystemInit(),以及SystemInit()函数的原型可以在system_stm32f10x.c中找到。此部分文件在:Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceSource system_stm32f10x.cKeil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceInclude system_stm32f10x.h5. startup文件夹该文件夹下根据4种不同编译环境编写了启动的汇编代码,这些汇编代码分主要为STM32F

10、10x完成系统系统所必须的初始化,主要有:初始化堆栈指针SP、程序指针PC、设置中断矢量、配置系统时钟,系统启动完毕好后运行主程序。这些汇编文件时根据不同内存容量的芯片来区分的,使用时需要注意。后面还会详细讲到。此部分文件在:Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceSourceARM三、 标准外设库的外设库结构该部分主要有inc和src两个文件夹。该部分包括了所有外设的操作函数,固态函数库遵从以下命名规则:PPP表示任一外设缩写,例如:ADC。系统、源程序文件和头文件命名都以“stm32f10x_”作为开头,例如:stm32f10x_conf.h。他

11、们的命名都由英文字母大写书写。在大多数情况下,他们采用如下缩写规范:OK,讲到这里,这部分的文件分为2个部分:1、 用户不必修改文件位置:Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceStdPeriph_Driversrc这些模块可以直接使用。2、 用户需要修改文件位置:Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceStdPeriph_Drivertemplates这部分是STM提供的模板文件,用户开发的时候,需要根据自己的需要定制实现,主要包括stm32f10x_conf.h 定义用户系统需要用到的上述不必修改的模块

12、stm32f10x_it.c 空中断实现函数,用户需要根据自己的修改实现stm32f10x_it.h 空中断实现函数头文件到此,基本完成了介绍ARM和STM的一些架构和需要开发环境,下面我们可以开始移植开发。注:为了开发方便,我们会将这些文件Copy到自己的工程目录下。四、 Startup文件的选择及文件拷贝- startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices- startup_stm32f10x_ld.s: for STM32 Low density devices- startup_stm32f10x_m

13、d_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 devicescl:互联型产品,stm32f105/1

14、07系列vl:超值型产品,stm32f100系列xl:超高密度产品,stm32f101/103系列ld:低密度产品,FLASH小于64Kmd:中等密度产品,FLASH=64 or 128hd:高密度产品,FLASH大于128选择好需要的文件后,将startup文件Copy到自己的工程目录下:Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceSourceARM*SourceCOREARM*其他还需要COPY的文件:Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceSourcesystem_stm32f10x.cSourceCOR

15、Esystem_stm32f10x.cKeil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceStdPeriph_Driversrc*SourceSTM32F10x_LIBsrc*Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceStdPeriph_Driverinc*SourceSTM32F10x_LIBinc*Keil_v5ARMPackKeilSTM32F1xx_DFP1.0.5DeviceStdPeriph_Drivertemplates*SourceIOToggle* 这部分代码需要根据需要修改,主要是stm32f10x_

16、conf.h文件的修改另外包括已经实现的部分:HARDWARE (硬件相关的接口实现)SYSTEM (系统相关的接口,如delay, uart, 中断组等)OWCOMM (碧水源项目的通信接口实现)PROJECT (空文件夹,用于存放工程文件)OBJ (空文件夹,用于存放编译生成的文件及目标文件)五、 创建工程1. 新建工程打开Keil uVision5;Project-New uVision Project,Project选择保存在上述说的PROJECT文件夹下:2. 选择STM单片机类型然后以下窗口选择Cancel(OK也可以)3. CORE新建CORE Group或者将第一个GROUP改

17、为CORE添加文件system_stm32f10x.c注:只需要添加.c和.s即可,.h不需要添加。(其他Group也一样)添加文件startup_stm32f10x_hd.s4. HARDWARE新建HARDWARE Group根据需要依次添加需要的Hardware文件:5. IOToggle新建IOToggle Group添加文件stm32f10x_it.c:6. STM32F10x_LIB新建STM32F10x_LIB Group根据需要依次添加需要的STM32F10x_LIB文件:7. SYSTEM新建SYSTEM Group依次添加SYSTEM下的文件:8. OWCOMM新建OWCO

18、MM Group依次添加OWCOMM下的文件:9. USER新建USER Group添加文件main.c:当然我们也有其他简单方式创建工程相关:这里就不介绍了。至此,完成了所有文件的添加:六、 配置工程右键Target1. 配置晶振这里配置为72.0M2. 配置Output选择Output到OBJ下同时勾选Create Hex File3. 配置Listing同样,选择到OBJ下4. 配置C/C+增加Define:STM32F10X_HD,USE_STDPERIPH_DRIVER,OWCOMM_USE_UART增加Include Patch:为了便捷,这里加上了所有的路径另外我们还可以修改修改优化级别,默认为-O0,正常情况下我们可以使用-O2,尤其在ROM较小的情况下。(不过优化级别越高,系统的运行效率可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论