STM32系列与固件库_第1页
STM32系列与固件库_第2页
STM32系列与固件库_第3页
STM32系列与固件库_第4页
STM32系列与固件库_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

STM32系列微控制器开发基础嵌入式系统原理与接口技术5.1STM32系列微控制器概述STM32系列微控制器概述STM32系列微控制器使用来自于ARM公司具有突破性的Cortex-M3内核,该内核是专门设计于满足集高性能、低功耗、实时应用、高性价比于一体的嵌入式领域的要求。STM32系列给MCU用户带来了前所未有的自由空间,提供了全新的32位产品选项,结合了高性能、实时、低功耗、低电压等特性,同时保持了高集成度和易于开发的优势。嵌入式系统原理与接口技术25.1STM32系列微控制器概述STM32系列微控制器的优势由于STM32系列微控制器的定位是针对传统的嵌入式入门市场,因此相对于传统的8051、AVR等单片机,其巨大的优势显露无遗。主要体现在以下几个方面:1.25DMIPS/MHz和0.19mW/MHz;支持Thumb-2指令集;单周期乘法指令和硬件除法指令;内置了快速的中断控制器,提供了优越的实时特性,中断间的延迟时间降到只需6个CPU周期,从低功耗模式唤醒的时间也只需6个CPU周期;与ARM7TDMI相比运行速度最多可快35%且代码最多可节省45%;提供更为丰富的外设和网络接口,使用更为灵活方便。嵌入式系统原理与接口技术35.1STM32系列微控制器概述STM32系列微控制器的应用STM32系列微控制器主要应用在以下场合:工业领域:可编程逻辑控制器(PLC)、变频器、打印机、扫描仪和工控网络。建筑和安防领域:警报系统、可视电话和HVAC。低功耗领域:血糖测量仪、电表和电池供电应用。家电领域:电机控制和应用控制。消费类产品领域:PC外设、游戏机、数码相机和GPS平台。嵌入式系统原理与接口技术45.2STM32F103系列微控制器主要特点STM32F103xx系列微控制器基于高性能32位RISC的ARMCortex-M3核,工作频率为72MHz。片上集成了高速存储器和通过APB总线连接的丰富和增强的外设和I/O。所有的设备都提供标准的通信接口(最多可达两个I2C接口,三个SPI接口和五个USART接口)。片上还带有两个12位的ADC、一个12位的双通道DAC、11个16位计时器。根据应用范围的不同,STM32F103xx系列具有众多的配置型号,非常适合不同应用中的选型。嵌入式系统原理与接口技术55.2STM32F103系列微控制器总体结构STM32F103xx的主系统由以下部分构成:四个驱动单元:Cortex-M3内核DCode总线(D-bus),和系统总线(S-bus);通用DMA1和通用DMA2。四个被动单元:内部SRAM;内部闪存存储器;FSMC;AHB到APB的桥(AHB2APBx),它连接所有的APB设备。嵌入式系统原理与接口技术65.2STM32F103系列微控制器系统结构嵌入式系统原理与接口技术75.2STM32F103系列微控制器各单元功能嵌入式系统原理与接口技术85.2STM32F103系列微控制器功能概述集成嵌入式Flash和SRAM存储器的ARM

Cortex-M3内核ARMCortex-M3处理器是用于嵌入式系统的最新一代ARM处理器。用于提供一个满足MCU实现需要的低开销平台,具有更少的引脚数和更低的功耗,并且提供了更好的计算表现和更快的中断系统应答。嵌入式Flash存储器和RAM存储器内置了多达512K的嵌入式Flash,可用于存储程序和数据。多达64K的嵌入式SRAM可以以CPU时钟速度进行读写(不带等待状态)。嵌入式系统原理与接口技术95.2STM32F103系列微控制器功能概述可变静态存储控制器(FSMC)FSMC嵌入在STM32F103xC,STM32F103xD和STM32F103xE中,带有四个片选,支持下面四种模式:Flash,RAM,PSRAM,NOR和NAND。嵌套矢量中断控制器(NVIC)STM32F103xx系列微控制器嵌入了一个嵌套矢量中断控制器,可以处理43个可屏蔽中断通道(不包括Cortex-M3的16根中断线),提供16个中断优先级。嵌入式系统原理与接口技术105.2STM32F103系列微控制器功能概述外部中断/事件控制器(EXTI)外部中断/事件控制器由用于19条产生中断/事件请求的边沿探测器线组成。每条线可以被单独配置用于选择触发事件(上升沿,下降沿或者两者都可以),也可以被单独屏蔽。时钟和启动在启动的时候还是要进行系统时钟选择,但复位的时候内部8MHz的晶振被选作CPU时钟。可以选择一个外部的4-16MHz的时钟,并且会被监视判定是否成功。嵌入式系统原理与接口技术115.2STM32F103系列微控制器功能概述Boot模式在启动的时候,boot引脚被用来在三种boot选项中的选择一种:从用户Flash导入;从系统存储器导入;从SRAM导入。boot导入程序位于系统存储器,用于通过USART1重新对Flash存储器进行编程。电源供电方案VDD,电压范围为2.0到3.6V,用于I/O和内部调压器。VSSA,VDDA,电压范围为2.0到3.6V,用于ADC、复位模块、RC和PLL。VBAT,电压范围为1.8到3.6V嵌入式系统原理与接口技术125.2STM32F103系列微控制器功能概述电源管理设备有一个完整的上电复位(POR)和掉电复位(PDR)电路。这条电路一直有效,用于确保从2V启动或者掉到2V的时候进行一些必要的操作。当VDD低于一个特定下限VPOR/PDR的时候,不需要外部复位电路,设备也可以保持在复位模式。电源供电方案调压器有三种运行模式:主(MR),用在传统意义上的调节模式(运行模式);低功耗(LPR),用在停止模式;掉电,用在待机模式:调压器输出为高阻,核心电路掉电,包括零消耗。嵌入式系统原理与接口技术135.2STM32F103系列微控制器功能概述低功耗模式,包含三种低功耗模式:休眠模式。在休眠模式中,只有CPU停止工作,所有的外设继续运行,在中断/事件发生时唤醒CPU。停止模式。停止模式允许以最小的功耗来保持SRAM和寄存器的内容。设备可以通过外部中断线从停止模式唤醒。外部中断源可以使16个外部中断线之一、PVD输出或者TRC警告。待机模式。待机模式追求最少的功耗。内部调压器被关闭,这样1.8V区域被断电。PLL、HSI和HSERC振荡器也被关闭。嵌入式系统原理与接口技术145.2STM32F103系列微控制器片上外设概述DMA12通道的通用DMA可用于存储器到存储器、外设到存储器和存储器到外设的传输。DMA控制器支持循环缓冲器管理,从而避免了在到达缓冲区末端时产生中断。RTC(实时时钟)和备份寄存器RTC和备份寄存器通过一个开关来控制供电,当VDD有效的时候通过VDD供电,否则通过VBAT供电。备份寄存器(10个16位寄存器)可以用来在VDD无效的保存数据。嵌入式系统原理与接口技术155.2STM32F103系列微控制器片上外设概述独立看门狗独立看门狗基于12位的倒计数器和8位的预比较器。由一个独立的40kHz的内部RC提供时钟。由于和主时钟独立工作,所以它可以工作在停止和待机模式。可以用作在系统出问题时来复位设备,也可以作为一个空转的定时器来用于应用程序的定时器管理。窗口看门狗窗口看门狗基于一个在空转时可设置的7位倒计数器。可以用作在系统出问题的时候来复位设备。由主时钟提供时钟源。能够实现提早警告中断并且计数器在调试模式的时候可以冻结。嵌入式系统原理与接口技术165.2STM32F103系列微控制器片上外设概述SysTick定时器该定时器是OS专用,但也可以用作标准的倒计数器。它的特征是:一个24位的倒计数器;自动重载能力;当计数器为0时产生的系统中断是可屏蔽的;可编程的时钟源。通用定时器(TIMx)STM32F103xx设备最多自带4个同步标准定时器。这些定时器基于一个16位自动重载顺序/倒序计数器和一个16位的预比较器。每个定时器特有分别用于输入捕获、输出比较、PWM或者单脉冲模式输出的4个独立通道。嵌入式系统原理与接口技术175.2STM32F103系列微控制器片上外设概述基本定时器TIM6和TIM7这些定时器用于产生DAC触发,也可以用作通用的16位定时器。高级控制定时器(TIM1和TIM8)高级控制定时器(TIM1)可以被看作是一个在6通道上复用的三相PWM,也可以被看作是通用定时器,4个独立的通道可以用作:输入捕获;输出捕获;PWM产生;单脉冲模式输出;可设置空转时间的PWM输出。TIM1和具有相同结构的TIMx有相同的特性,所以TIM1通过同步连接特性或者事件链,可以和TIMx一起工作。嵌入式系统原理与接口技术185.2STM32F103系列微控制器片上外设概述I2C总线最多可有两个工作在多主机模式和从模式下的I2C总线接口,支持标准和快速模式。都支持双从机寻址(只能是7位)和7/10位主机模式下寻址。内置硬件CRC产生和验证模块。都支持DMA,支持SMBus2.0/PMBus。通用同步/异步收发器(USART)USART接口最多可以2.25Mbit/s的速度通信。对CTS和RTS信号使用硬件管理,支持IrDASIRENDEC,兼容ISO7816并且具有LIN主/从性能。USART接口支持DMA。嵌入式系统原理与接口技术195.2STM32F103系列微控制器片上外设概述串行外设接口(SPI)设备最多可有2个SPI接口,最多可以18Mbit/s的速度在全双工和单工的主机和从机模式下通信。3位预比较器提供了8种主机模式频率,桢长可以配置为8位或者16位。硬件CRC产生/验证模块支持基本的SDCard/MMC模式。SPI接口都支持DMA。I2SSTM32F103xC、STM32F103xD和STM32F103xE有两个和SPI2、SPI3复用的I2S接口,可用于主模式或者从模式。可以配置成16位或者32位精度的输入或者输出。音频采样频率可以在8KHz到48KHz。嵌入式系统原理与接口技术205.2STM32F103系列微控制器片上外设概述SDIOSTM32F103xC、STM32F103xD和STM32F103xE有一个SD/SDIO/MMC主机接口,支持MMC4.2。有三种数据总线模式:1位(默认),4位和8位。在8位模式下最高可达48MHz。此外还兼容SD2.0。1位和4位总线模式下支持SDIO2.0。控制器局域网(CAN)CAN兼容2.0A和2.0B标准,比特率高达1Mbit/s。可以发送和接收11位标示符的标准桢,也可以发送和接收29位标示符的扩展桢。有三个发送邮箱,两个3阶接收FIFO队列和14个可升级过滤器阵列。嵌入式系统原理与接口技术215.2STM32F103系列微控制器片上外设概述通用串行总线(USB)STM32F103xx嵌入了一个支持USB全速12Mbit/s的USB外设。USB接口实现了全速(12Mbit/s)功能接口。可通过软件配置端点,也可以通过软件控制挂起/恢复。时钟来自内部PLL产生的48MHz专用时钟源。GPIO(通用输入/输出)每一个GPIO引脚都可以由软件配置出输出,输入或者外设备用功能。大部分的GPIO引脚和数字或者模拟备用功能共享。所有的GPIO都支持高电流。嵌入式系统原理与接口技术225.2STM32F103系列微控制器片上外设概述ADC(模数转换器)STM32F103xx设备自带两个12位的模数转换器。每个ADC有多达16个外部通道,能够以单次或扫描模式进行转换。在扫描模式下,自动转换在一组选定的模拟输入上进行。DAC(数模转换器)DAC带有两个可缓冲通道,可以将两路数字信号转化为两路模拟信号输出。DAC通道通过定时器更新输出来触发,DAC每个通道可以连接到不同的DMA通道。每个通道可以独立被DMA控制器处理。嵌入式系统原理与接口技术235.2STM32F103系列微控制器片上外设概述温度传感器温度传感器用于根据温度的变化来产生一个线性的电压。转换的范围在2V到3.6V。温度传感器内部连接到ADC_IN16输入通道,从而把传感器输出电压转换为数字值。串行线JTAG调试端口(SWJ-DP)芯片嵌入了ARMSWJ-DP接口,并且组合了JTAG和串行线调试端口。JTAGTMS和TCK引脚分别和SWDIO和SWCLK复用。如果要在JTAG-DP和SW-DP之间切换,只需要在TMS输入一个特定的序列。嵌入式系统原理与接口技术245.3基于标准外设库的软件开发STM32标准外设库概述STM32标准外设库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。嵌入式系统原理与接口技术255.3基于标准外设库的软件开发使用标准外设库开发的优势简单地说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC等的所有标准外设。对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。嵌入式系统原理与接口技术26STM32F10xxx标准外设库结构与文件描述嵌入式系统原理与接口技术275.3基于标准外设库的软件开发STM32F10xxx标准外设库结构与文件描述基于CMSIS标准的软件架构基于CMSIS标准的软件架构主要分为以下4层:用户应用层、操作系统及中间件接口层、CMSIS层、硬件寄存器层。CMSIS层起着承上启下的作用:一方面该层对硬件寄存器层进行统一实现,屏蔽了不同厂商对Cortex-M系列微处理器核内外设寄存器的不同定义;另一方面又向上层的操作系统及中间件接口层和应用层提供接口,简化了应用程序开发难度,使开发人员能够在完全透明的情况下进行应用程序开发。也正是如此,CMSIS层的实现相对复杂。嵌入式系统原理与接口技术285.3基于标准外设库的软件开发STM32F10xxx标准外设库结构与文件描述基于CMSIS标准的软件架构的优势为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M上操作系统的移植难度减少了新入门的微控制器开发者的学习曲线和新产品的上市时间独立于供应商的Cortex-M处理器系列硬件抽象层,统一了接口嵌入式系统原理与接口技术295.3基于标准外设库的软件开发STM32F10xxx标准外设库结构与文件描述嵌入式系统原理与接口技术30STM32F10xxx标准外设库文件功能说明嵌入式系统原理与接口技术31STM32F10xxx标准外设库结构与文件描述基于CMSIS标准的软件架构嵌入式系统原理与接口技术32

实时内核中间件

外设寄存器和中断向量定义层core_cm3.hstm32f10x.h

内核外设函数core_cm3.h中间件函数器件级外设函数其他外设调试/跟踪接口CMSISNVIC嵌套向量中断控制器SysTick实时内核定时器CortexCPU用户应用程序实时操作系统MCUSTM32F10xxx标准外设库结构与文件描述基于CMSIS文件夹结构嵌入式系统原理与接口技术335.3基于标准外设库的软件开发STM32F10xxx标准外设库的使用标准外设库中包含了众多变量定义和功能函数,有必要了解它们的命名规范和使用规律。缩写定义。库中的主要外设都使用了缩写,可以查阅相关对应资料进行了解。命名规则。标准外设库命名时用PPP表示任一外设缩写,如:ADC。源程序文件和头文件命名以“stm32f10x_”作为开头,如:stm32f10x_conf.h。变量定义。在早期的版本中有24个变量定义,在Keil的安装根目录下,可以找到对应的定义,路径为:Keil\ARM\INC\ST\STM32F10x\stm32f10x_type.h。嵌入式系统原理与接口技术345.3基于标准外设库的软件开发STM32F10xxx标准外设库的使用新建一个项目并设置工具链对应的启动文件,可以使用标准外设库中提供的模板,也可以根据自己的需求新建按照使用产品的具体型号选择具体的启动文件,加入工程调用对应的函数进行相应的功能设计嵌入式系统原理与接口技术35STM32F10xxx标准外设库的命名规则PPP_Init:根据PPP_InitTypeDef中指定的参数,初始化外设PPPPPP_DeInit:复位外设PPP的所有寄存器至缺省值PPP_Init:通过设置PPP_InitTypeDef结构中的各种参数来定义外设的功能PPP_Cmd:使能或者失能外设PPPPPP_ITConfig:使能或者失能来自外设PPP某中断源PPP_GetFlagStatus:检查外设PPP某标志位被设置与否嵌入式系统原理与接口技术36STM32F10xxx标准外设库的命名规则PPP_GetITStatus:判断来自外设PPP的中断发生与否PPP_ClearFlag:清除外设PPP标志PPP_ClearITPendingBit:清除外设PPP中断待处理标志位便于程序编写和阅读程序严谨,不易出错嵌入式系统原理与接口技术375.4使用KeilMDK以及标准外设库创建STM32工程开发工具与开发环境软件版本本节所使用KeilMDK为目前的最新版V4.21,使用的标准外设库为目前最新的V3.5版本。使用的开发调试工具为JLINK-V8,使用的驱动版本为V4.08l。建立工程目录首先建立一个用于存放工程的文件夹,在文件夹下分别建立LIB、USER、MDK三个文件夹,分别用于存放标准外设库文件、用户程序文件、工程目录。在MDK文件夹下建立List、Obj两个文件夹,分别用于存放在编译过程中产生的临时文件和输出文件。然后拷贝标准外设库和相应的文件到工程目录中。嵌入式系统原理与接口技术38MDK的操作与设置新建工程首先启动KeiluVision4,点击菜单栏Project-NewuVisionProject,选择工程的保存位置。嵌入式系统原理与接口技术395.4使用KeilMDK以及标准外设库创建STM32工程MDK的操作与设置新建工程在弹出的界面中选择所使用的芯片信号,在本节中选择STM32F103ZE。嵌入式系统原理与接口技术405.4使用KeilMDK以及标准外设库创建STM32工程MDK的操作与设置新建工程芯片选择完成后软件会弹出一条提示,提示是否要拷贝STM32大容量启动代码并添加到工程,由于我们使用新版本标准外设库中提供的启动代码,因此此处选择否。至此,建立了一个新的工程。嵌入式系统原理与接口技术415.4使用KeilMDK以及标准外设库创建STM32工程MDK的操作与设置添加程序文件在左侧Project一栏中对Target1双击之后可以重命名,这里命名为STM32,然后右击,单击ManageComponents,如右图所示。嵌入式系统原理与接口技术425.4使用KeilMDK以及标准外设库创建STM32工程MDK的操作与设置添加程序文件在下图对应的Group上右键AddGroup和AddFilestoGroup,即可添加我们所需的文件。嵌入式系统原理与接口技术43MDK的操作与设置嵌入式系统原理与接口技术445.4使用KeilMDK以及标准外设库创建STM32工程MDK的操作与设置程序调试与下载设置接下来进行的是程序调试和下载的相关设置,有关调试的设置在Debug选项卡中,此选项卡主要完成程序调试的相关设置,选项卡分为两个部分,左侧是使用模拟器进行仿真与调试的方式,点选后软件会进入模拟器调试。右侧是使用仿真器连接硬件开发平台进行调试,首先从右侧选择所使用的仿真器,这里使用的是J-Link仿真器,故在下拉框中选择Cortex-M/RJ-LINK/J-Trace,在两侧的下方可以通过勾选对应的复选框来选择是否需要在调试开始时下载程序和运行到主程序,其他部分的设置保持默认即可。嵌入式系统原理与接口技术455.4使用KeilMDK以及标准外设库创建STM32工程MDK的操作与设置程序调试与下载设置嵌入式系统原理与接口技术465.4使用KeilMDK以及标准外设库创建STM32工程MDK的操作与设置程序调试与下载设置嵌入式系统原理与接口技术475.4使用KeilMDK以及标准外设库创建STM32工程使用KeilMDK运行第一个STM32F10X程序程序的编写为了方便使用者的入门和理解,这个小程序的功能非常简单,作为本书功能实践的第一个程序,其功能是最为经典的“HelloWorld!”,只不过不是简单的屏幕输出,而是利用硬件的串口进行输出,同时作为单片机类的第一个程序自然少不了LED闪烁的功能,这就是这个小程序的两个主要的功能。利用串口1输出“HelloWorld!”字符;控制两个LED闪烁。嵌入式系统原理与接口技术485.4使用KeilMDK以及标准外设库创建STM32工程使用KeilMDK运行第一个STM32F10X程序程序的编写在进行程序开发时可先查看如下图的帮助文件以及库中自带的工程实例,同时结合STM32F10x系列的芯片手册来完成程序的开发。嵌入式系统原理与接口技术495.4使用KeilMDK以及标准外设库创建STM32工程使用KeilMDK运行第一个STM32F10X程序程序的编译在KeilMDK的工具栏上自左至右依次有三个图标,分别为编译指定文件、生成工程、重新生成所有工程。首先在main.c下点击编译图标,如果编译没有错误,单击图标生成工程,生成没有错误则整个编译过程结束。如果存在错误则可以直接点击对应的错误跳转到对应文件对应的行,根据错误提示进行再次修改。嵌入式系统原理与接口技术505.4使用KeilMDK以及标准外设库创建STM32工程使用KeilMDK运行第一个STM32F10X程序程序的调试在实际开发时,可以首先利用软件进行仿真,利用软件进行仿真查看具体的寄存器配置,外设的工作情况等,同时通过断点的配合可以查找出程序中绝大多数的错误。软件仿真完成后可以下载到硬件平台去运行,如果程序仍然没有达到需要的效果,在硬件检查完成后可以使用在线仿真的方式,在硬件平台上直接运行程序,进一步查找问题。嵌入式系统原理与接口技术515.4使用KeilMDK以及标准外设库创建STM32工程使用KeilMDK运行第一个STM32F10

温馨提示

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

评论

0/150

提交评论