第1章 STM32基本原理_第1页
第1章 STM32基本原理_第2页
第1章 STM32基本原理_第3页
第1章 STM32基本原理_第4页
第1章 STM32基本原理_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

基于STM32的嵌入式系统原理与设计

第一章STM32基本原理博客:/u/2630123921交流论坛:/bp开发板和教程:要点STM32性能和结构CortexM3处理器输入输出端口GPIO引脚、电源和时钟树模数和数模转换中断定时器DMA灵活的FSMC同步和异步串行接口第一章STM32基本原理学习STM32需要从原理入手,为硬件、软件、操作系统、工程实践学习打下一个良好的基础。本章的第一部分是STM32的性能和结构,然后是对CortexM3处理器的分析,之后是地址映射、引脚功能描述、电源连接、复位和时钟控制RCC、输入输出端口GPIO、ADC和DAC、中断、DMA、定时器、同步串行通信SPI和I2C、同步异步串行通信USART,最后是灵活的存储器控制FSMC。通过本章的学习,既可以掌握STM32的全貌,也可以学习到重要的关于CortexM3处理器内核和STM32器件的细节信息1.1STM32性能和结构

1.1.1总体性能以高密度的STM32F103VET6为例,能适合一般项目的需要,价格在30元以下,避免由于FLASH和RAM太小造成的瓶颈。VET6的含义为:V的含义为100pins,即100个管脚。E表示512KB的FLASH。T表示LQFP封装。6表示-40到85度的温度范围。 STM32F103系列芯片包括从36脚至100脚不同封装形式,STM32系列命名遵循一定的规则:退出芯片类型:F——通用快闪,L——低电压(1.65~3.6V),W——无线系统芯片。103——ARMCortex-M3内核,增强型;050——ARMCortex-M0内核;101——ARMCortex-M3内核,基本型;102——ARMCortex-M3内核,USB基本型;105—ARMCortex-M3内核,USB互联网型;107——ARMCortex-M3内核,USB互联网型、以太网型;215/217——ARMCortex-M3内核,加密模块;405/407——ARMCortex-M4内核,不加密模块等。引脚数目:R——64PIN,F——20PIN,G——28PIN;K——32PIN,T——36PIN,H——40PIN,C——48PIN,U——63PIN,O——90PIN,V——100PIN,Q——132PIN,Z——144PIN,I——176PIN。B——128KBFlash(中容量),4——16KBFlash(小容量),6——32KBFlash(小容量),8——64KBFlash(中容量),C——256KBFlash(大容量),D——384KBFlash(大容量),E——512KBFlash(大容量),F——768KBFlash(大容量),G——1MKBFlash(大容量)。封装信息:T——LQFP,H——BGA,U——VFQFPN,Y——WLCSP。

工作温度范围:6——-40℃~85℃(工业级),7——-40℃~105℃(工业级)。6KBRAM*6KBRAM*STM32F103“增强型”系列FlashSize(bytes)128K256K512K100pins

LQFP/BGASTM32F103Rx20KBRAMSTM32F103Rx20KBRAMSTM32F103Cx20KBRAM32K64KSTM32F103Rx64KBRAMSTM32F103Vx20KBRAMSTM32F103Vx64KBRAMSTM32F103Vx20KBRAMSTM32F103Vx64KBRAM3xUSART3x16-bittimer2xSPI,2XI2CUSB,CAN,PWM2xADC64pinsLQFP48pins

LQFP2xUSART2x16-bittimer1xSPI,1xI2CUSB,CAN,PWM2xADC5xUSART5x16-bittimer2xSPI,2XI2CUSB,CAN,PWM2xADC,2xDAC,I2SEMI(144pinsonly)STM32F103Rx64KBRAM144pinsLQFP/BGASTM32F103Zx64KBRAMSTM32F103Zx64KBRAMSTM32R103Zx64KBRAMSTM32F103Cx10KBRAMSTM32F103Rx10KBRAM*32kBdevicesexistw/otheCANandUSB,with6kBofRAM0KSamplesApril07ProductionOct07SamplesDec07ProductionQ208STM32MCU结构由控制单元、从属单元和总线矩阵三大部分组成,控制单元和从属单元通过总线矩阵相连接控制单元包括Cortex-M3内核和两个DMA控制器(DMA1和DMA2)从属单元包括存储器(Flash和SRAM等)和设备(连接片外设备的接口和片内设备)1.1STM32性能和结构

1.1.2系统结构分析

STM32MCU结构连接片外设备的接口有并行接口和串行接口,并行接口即通用IO接口GPIO,串行接口有USART、SPI、I2C、USB和CAN等片内设备有定时器TIM、模数转换器ADC和数模转换器DAC等1.1STM32性能和结构

1.1.2系统结构分析

总线结构中各单元的功能STM32MCU结构ICode总线:将Flash存储器指令接口与Cortex-M3内核的指令总线相连接,用于指令预取;DCode总线:将Flash存储器的数据接口与Cortex-M3内核的DCode总线相连接,用于常量加载和调试访问;System总线:将Cortex-M3内核的System总线(外设总线)连接到总线矩阵;1.1STM32性能和结构

1.1.2系统结构分析

STM32MCU结构DMA总线:将DMA的AHB主控接口与总线矩阵相连;总线矩阵:用于连接三个主动单元部件和三个被动单元,负责协调和仲裁Cortex-M3内核和DMA对SRAM的访问,仲裁采用轮换算法

AHB/APB桥:两个AHB/APB桥在AHB和2个APB总线之间提供完全同步连接。1.1STM32性能和结构

1.1.2系统结构分析

1.1STM32性能和结构

1.1.2系统结构分析

1.1STM32性能和结构

1.1.2系统结构分析

(1)Cortex-M3CPU所在之处,是司令部是大脑。(2)总线矩阵

(3)FLASH通过FLASH接口连接CPU。

(4)静态存储器SRAM通过总线矩阵连接CPU。

(5)复位和时钟控制RCC。

(6)低速APB1外设。(7)低速APB2外设。(8)可变静态存储控制器FSMC。

(9)DMA通道。

1.1STM32性能和结构

1.1.3芯片封装和管脚概述

Cortex-M3简介Cortex-M3是采用哈佛结构的32位处理器内核,拥有独立的指令总线和数据总线,两者共享同一个4GB存储空间Cortex-M3内建一个嵌套向量中断控制器(NVIC:NestedVectoredInterruptController),支持可嵌套中断、向量中断和动态优先级等Cortex-M3内部还包含一个系统滴答定时器SysTick1.2CortexM3处理器

1.2CortexM3处理器

1.2.1Cortex-M3的定位和应用

从图1.2.1可见,嵌入式处理器核CortexM3,容量(Capability)和执行功能(PerformanceFunctionality)都居中,但其性价比是当今最好的品种之一,也是现在最流行的品种之一。

1.2CortexM3处理器

1.2.2Cortex-M3处理器结构

1.2CortexM3处理器

1.2.3Cortex-M3寄存器

1.2CortexM3处理器

1.2.3Cortex-M3寄存器

1.2CortexM3处理器

1.2.3Cortex-M3寄存器

特殊功能寄存器1.2CortexM3处理器

1.2.3Cortex-M3寄存器

1.2CortexM3处理器

1.2.4堆栈

1.2CortexM3处理器

1.2.4堆栈

1.3STM32存储地址映射程序存储器、数据存储器、寄存器和输入输出端口寄存器被组织在同一个4GB的线性地址空间内地址范围设备名称0xE0000000-0xE00FFFFF(1MB)内核设备(SysTick和NVIC等)0x40000000-0x5FFFFFFF(512MB)片上设备(GPIO、USART、TIM和ADC等)0x20000000-0x3FFFFFFF(512MB)SRAM0x00000000-0x1FFFFFFF(512MB)FLASH1.3STM32存储地址映射

代码分析,P13代码1-2到1-6说明如何访问串口寄存器来实现发送数据到串口1.3STM32存储地址映射

1.4引脚功能描述引脚功能来源于数据手册,注意复用功能1.6复位和时钟控制RCC

复位分三种形式,电源复位、系统复位和备份区域复位。1.6.1复位STM32系统时钟树系统时钟树由系统时钟源、系统时钟和设备时钟等部分组成系统时钟源有4个:高速外部时钟HSE、低速外部时钟LSE、高速内部时钟HSI和低速内部时钟LSI1.6复位和时钟控制RCC

1.6.2时钟源1.6复位和时钟控制RCC

时钟树图解了各个设备时钟的来源。参考P19页图1-11STM32时钟树。问题:STM32定时器1是APB2外设,请从晶振开始,分析器定时器1时钟的来源。那么定时器2呢?通常,STM32主频在72M,而外时钟选择8M,因此必须通过倍频获得。(锁相环PLL对选择的时钟进行倍频)

1.6.2时钟源1.6复位和时钟控制RCC

STM32系统时钟树系统时钟SYSCLK可以是HSE或HSI,也可以是HSE或HSI通过锁相环倍频后的锁相环时钟PLLCLKSYSCLK经AHB预分频器分频后得到AHB总线时钟HCLK,HCLK经APB1/APB2预分频器分频后得到APB1/APB2总线时钟PCLK1和PCLK21.6复位和时钟控制RCC

STM32MCU系统时钟树系统时钟树中的时钟选择、预分频值和外设时钟使能等都可以通过对复位和时钟控制(RCC)寄存器编程实现偏移地址名称类型复位值说明0x14RCC_AHBENR读/写0x00000014AHB设备时钟使能寄存器0x18RCC_APB2ENR读/写0x00000000APB2设备时钟使能寄存器0x1CRCC_APB1ENR读/写0x00000000APB1设备时钟使能寄存器1.6复位和时钟控制RCC

STM32MCU系统时钟树Keil的电源,复位和时钟控制对话框1.6复位和时钟控制RCC

STM32MCU系统时钟树APB2设备时钟使能寄存器(RCC_APB2ENR)

前页

返回郭书军cortex_m3@126.com位名称类型复位值说明0AFIOEN读/写0AFIO时钟使能:0-关闭时钟,1-开启时钟2GPIOAEN读/写0GPIOA时钟使能:0-关闭时钟,1-开启时钟3GPIOBEN读/写0GPIOB时钟使能:0-关闭时钟,1-开启时钟9ADC1EN读/写0ADC1时钟使能:0-关闭时钟,1-开启时钟11TIM1EN读/写0TIM1时钟使能:0-关闭时钟,1-开启时钟12SPI1EN读/写0SPI1时钟使能:0-关闭时钟,1-开启时钟14USART1EN读/写0USART1时钟使能:0-关闭时钟,1-开启时钟1.6复位和时钟控制RCC

STM32MCU系统时钟树Keil的APB桥对话框1.6复位和时钟控制RCC

1.7输入输出端口GPIO

1.7.1常规输入输出GPIO

GPIO包括多个16位I/O端口,每个端口可以独立设置3工作模式,并可独立地置位或复位GPIO由寄存器、输入驱动器和输出驱动器等部分组成GPIO是可编程输入/输出端口1.7输入输出端口GPIO

1.7.1常规输入输出GPIO

GPIO通过7个32位寄存器进行操作偏移地址名称类型复位值说明0x00CRL读/写0x44444444配置寄存器低位(每个端口4位)0x04CRH读/写0x44444444配置寄存器高位(每个端口4位)0x08IDR读0x000016位输入数据寄存器0x0CODR读/写0x000016位输出数据寄存器0x10BSRR写0x00000000位置位/复位寄存器0x14BRR写0x0000位复位寄存器0x18LCKR读/写0x00000配置锁定寄存器1.7输入输出端口GPIO

1.7.1常规输入输出GPIO

GPIO结构及寄存器说明每个端口的4个配置位是CNF[1:0]和MODE[1:0]CNF[1:0]MODE[1:0]输入配置CNF[1:0]MODE[1:0](2)输出配置0000模拟输入0001/10/11通用推挽输出0100浮空输入(复位状态)0101/10/11通用开漏输出1000上拉/下拉输入(1)1001/10/11推挽复用输出1100保留1101/10/11开漏复用输出注:(1)ODR=1:上拉,ODR=0:下拉(2)01/10/11依次对应最大输出频率为10MHz/2MHz/50MHz1.7输入输出端口GPIO

1.7.1常规输入输出GPIO

GPIO端口的模式模式是输入浮空,为什么这样设计?1.7输入输出端口GPIO

1.7.2GPIO复用可以将具有复用功能的引脚的功能进行重新配置,例如配置一些管脚为ADC的管脚,这些管脚就不能再作为GPIO使用。这个过程叫做复用重映射。

8个ADC通过的选择过程P21-22。

问题:根据P21表1-7,如果需要选择一个引脚做ADC输入引脚,可以选择哪个引脚呢?为什么?ADC简介模数转换器ADC的主要功能是将模拟信号转化为数字信号以便于微控制器进行数据处理STM32ADC是12位逐次比较型,最多可测量21个外部的模拟量,各通道的转换可以单次、连续、扫描或间断模式执。1.8模数转换器和数模转换器

1.8.1模-数转换器ADC结构STM32ADC主要由模拟多路开关、模拟至数字转换器、数据寄存器和触发选择等部分组成转换通道分为规则通道和注入通道两组规则通道由最多16个通道组成,按顺序转换注入通道由最多4个通道组成,可插入转换1.8模数转换器和数模转换器

1.8.1模-数转换器1.8模数转换器和数模转换器

1.8.2数-模转换器1.数模转换器框图分析P24图1-15。2.参考源。3.信号发生器功能。中断简介接口数据传送控制方式有查询、中断和DMA等,中断是重要的接口数据传送控制方式STM32中断控制分为全局和局部2级,全局中断由嵌套向量中断控制器NVIC控制,局部中断由设备控制STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。而常用的就是这68个可屏蔽中断:

在STM32F103系列上面,只有60个(在107系列才有68个)

嵌入式实时操作系统的系统服务也是靠中断激发的!1.9中断STM32部分中断向量表(异常)1.9中断

1.9.1STM32的中断通道和中断向量处理STM32部分中断向量表(中断向量存放的执行代码么?)1.9中断

1.9.1STM32的中断通道和中断向量处理STM32部分中断向量表(续)1.9中断

1.9.1STM32的中断通道和中断向量处理STM32部分中断向量表(续)1.9中断

1.9.1STM32的中断通道和中断向量处理1.9中断

1.9.1STM32的中断通道和中断向量处理1.STM32中断通道。表1-8中的中断通道分析2.启动代码设置中断向量表代码1-7分析3.复位中断的处理代码1-8分析EXTI中断每个配置为输入方式的GPIO引脚都可以配置成外部中断的中断输入口,这点也是STM32的强大之处。STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置,触发请求可以是上升沿、下降沿或者双边沿触发。1.9中断

1.9.2STM32外部中断EXTIALIENTEK中断线的映射关系图1.9中断

1.9.2STM32外部中断EXTIEXTI中断STM32F103的19个外部中断为:EXTI线0~15连接到对应外部IO口的输入中断EXTI线16连接到PVD中断EXTI线17连接到RTC闹钟中断EXTI线18连接到USB唤醒中断EXTI线19连接到以太网唤醒中断(F107系列)注意:同一时间,对于不同端口同一序列的端口线,只能设置一个为中断!1.9中断

1.9.2STM32外部中断问题:是否可以用PA0和PB0同时作为外部中断?是否可以用PA0和PB1同时作为外部中断?为什么?

STM32支持16个中断优先级,使用8位中断优先级设置的高4位,并分为抢占优先级(先占优先级)和非抢占优先级(从优先级或响应优先级),抢占优先级在前,响应优先级在后,具体位数通过应用程序中断及复位控制寄存器AIRCR的优先级分组PRIGROUP位段(AIRCR[10:8])设置。1.9中断

1.9.3STM32中断优先级分组优先级越高,数值越低!!1.9中断

1.9.3STM32中断优先级分组注意:

第一,如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;

第二,高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。DMA简介直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的批量数据传输。DMA传送过程中无须CPU干预,数据可以通过DMA快速地传送,这就节省了CPU的资源来做其他操作STM32的两个DMA控制器有12个通道(DMA1有7个通道DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求,还有一个仲裁器来协调各个DMA请求的优先权。1.10直接存储器存取DMA1.10DMA

1.10.1DMA解析1.图1-17DMA框图解析2.从内存到外设或从外设到内存的DMA传输。3.传输申请和仲裁。DMA1的通道请求源1.10DMA

1.10.2DMA通道和请求在使用某一条通道时,应尽可能做到只有一个外设的DMA请求或者时分复用。P32表1-10和表1-11DMA仲裁机制1.10DMA

1.10.2DMA通道和请求仲裁器是用来协调各个DMA通道的优先级(这里所说的优先级指的是DMA通道的优先级,而不是来自外设的DMA请求的优先级)。然后,再由仲裁器根据优先级来处理各个通道的。通道号高,优先级低。同一DMA模块可通过软件编程设置通道优先权。P33图1-18TIM结构和功能说明STM32定时器:

系统滴答定时器SysTick,常规定时器(高级控制定时器TIM1/8、通用定时器TIM2-5、基本定时器TIM6/7)

。实时钟RTC、独立看门狗IWDG和窗口看门狗WWDG等高级控制定时器除了具有刹车输入BKIN、互补输出CHxN和重复次数计数器外与通用定时器的主要功能基本相同,两者都包含基本定时器的功能实时钟提供时钟日历的功能。独立看门狗和窗口看门狗用来检测和解决软件错误引起的故障1.11定时器高级控制定时器高级控制定时器主要由时基单元、输入捕获和输出比较等部分组成时基单元包含16位计数器CNT、16位预分频器PSC、自动重装载寄存器ARR和重复次数计数器RCR时基单元是定时器的核心,也是基本定时器的主要功能单元1.11定时器

1.11.1STM32常规定时器高级控制定时器输入捕获包含输入滤波器和边沿检测器、预分频器和捕获/比较寄存器等,可以测量输入信号的周期和脉冲宽度输出比较包含捕获/比较寄存器、死区发生器DTG和输出控制,可以产生PWM等1.11定时器

1.11.1STM32常规定时器计数器模式向上计数模式:计数器从0计数到设定的数值,然后重新从0开始计数并且产生一个计数器溢出事件。向下计数模式:计数器从设定的数值开始向下计数到0,然后自动从设定的数值重新向下计数,并产生一个向下溢出事件。中央对齐模式(向上/向下计数):计数器从0开始计数到设定的数值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;再从0开始重新计数。1.11定时器

1.11.1STM32常规定时器1.11定时器

1.11.1STM32常规定时器STM32的常规定时器分为三类,包括1.高级控制定时器TIM1和TIM82.通用定时器TIM2、TIM3、TIM4、TIM53.基本定时器TIM6、TIM7三种定时器功能P39表1-16

系统滴答定时器说明Systick就是一个简易的周期定时器,放在了NVIC中,主要目的是为了给操作系统提供一个硬件上的中断(号称滴答中断)。操作系统进行运转的时候,也会有“心跳”。它会根据“心跳”的节拍来工作,把整个时间段分成很多小小的时间片,每个任务每次只能运行一个“时间片”的时间长度就得退出给别的任务运行,这样可以确保任何一个任务都不会霸占整个系统不放。或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。

只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。1.11定时器

1.11.2系统滴答定时器SysTick系统滴答定时器寄存器四个寄存器:

SysTick->CTRL,

--控制和状态寄存器

SysTick->LOAD,

--重装载寄存器

SysTick->VAL,

--当前值寄存器

SysTick->CALIB,

--校准值寄存器

1.1

温馨提示

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

最新文档

评论

0/150

提交评论