第1讲 STM32F4体系结构.ppt_第1页
第1讲 STM32F4体系结构.ppt_第2页
第1讲 STM32F4体系结构.ppt_第3页
第1讲 STM32F4体系结构.ppt_第4页
第1讲 STM32F4体系结构.ppt_第5页
免费预览已结束,剩余49页可下载查看

下载本文档

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

文档简介

1、第1讲 STM32F4体系结构,1.1 嵌入式系统的概念 1.2 ARM处理器概述 1.3 STM32F4的总线架构 1.4 嵌入式C语言程序设计 1.5 STM32F4的时钟系统,电子计算机诞生于1946年。20世纪70年代出现了微处理器,计算机才出现了历史性的变化。以微处理器为核心的微型计算机以其型小、价廉、高可靠性特点迅速走出机房。 基于高速数值解算能力的微型机,表现出的智能化水平引起了控制专业人士的兴趣,要求将微型机嵌入到一个对象体系中,实现对象体系的智能化控制。 微型机经电气加固、机械加固,并配置各种外围接口电路,安装到大型舰船中构成自动驾驶仪或轮机状态监控系统。 计算机便失去了原来

2、的形态和通用的计算机功能。,1.1 嵌入式系统的概念,为区别于原有的通用计算机系统,把嵌入到对象体系中,实现对象体系智能化控制的计算机,称为嵌入式计算机系统。 通用计算机具有计算机的标准形态,通过安装不同的应用软件,以类同面目出现并应用于社会生活的各个方面;而嵌入式计算机则以嵌入式系统的形式隐藏在各种装置、产品和系统中。 IEEE的定义:用于控制、监视或者辅助设备、机器和车间运行的装置(Device used to control,monitor,or assist the operation of equipment,machinery or plants),1.1 嵌入式系统的概念,嵌入性

3、本质是将计算机嵌入到一个对象体系中,目前国内普遍认同的嵌入式系统(Embedded System)定义:以应用为中心,以计算机技术为基础、软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各行各业的具体应用相结合的产物。 嵌入式系统是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。,1.1 嵌入式系统的概念,嵌入式系统的组成,嵌入式系统的硬件 嵌入式最小系统(嵌入式处理器、存储模块、复位模块、电源模块、调试模块) 输入通道、输出通道、人机交互通道、通信互连通道 嵌入式系统的软件 设备驱动层程序(

4、硬件抽象层HAL、板级支持包BSP、设备驱动程序) 嵌入式操作系统() 应用程序接口(API) 实际用户应用程序,嵌入式系统的设计方法,嵌入式系统设计有别于桌面软件设计的一个显著特点: 需要一个交叉编译和调试环境;源代码的编译工作在宿主机上进行,编译好后需要下载到目标机上运行 宿主机和目标机通过串口、并口、网口或USB口建立起通信连接,并传输调试命令和数据 嵌入式系统设计的基本原则:“物尽其用”硬件和软件都必须高效率设计,量体裁衣、去除冗余,面临的问题: 嵌入式微处理器及操作系统的选择 开发工具的选择 对目标系统的观察与控制 设计步骤: 需求分析(功能性需求和非功能性需求)、 体系结构设计(系

5、统整体结构的一个规划和描述) 嵌入式硬软件及执行机构设计(详细设计) 嵌入式系统集成 嵌入式系统测试,嵌入式系统的发展,以8位/16位单片机为核心的初级嵌入式系统 以32位嵌入式微控制器为基础的中级嵌入式系统 以嵌入式操作系统为标志的中高级嵌入式系统 以Internet为标志的高级嵌入式系统,ARM(Advanced RISC Machines)具有多种含义,既是一个公司的名字,也可以代表一类嵌入式处理器,还可以代表一种技术。 目前,采用ARM技术知识产权核(IP核)的微处理器,即通常所说的ARM处理器,已遍及通信系统、网络系统、无线系统、消费类电子产品、工业控制等各类产品市场,基于ARM技术

6、的微处理器应用约占32位RISC处理器80%以上的市场份额。 手机处理器90%、平板电脑70%,1.2 ARM处理器概述,1990年ARM公司在英国剑桥成立。ARM是专门从事基于RISC技术芯片技术开发的公司,是IP(知识产权)供应商,本身不生产芯片,由合作公司生产各具特色的芯片。 世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。目前,全球有几十家大的半导体公司都使用ARM公司的授权。 ARM处理器已经占据了绝大部分32位、64位高端嵌入式处理器的市场,形成了移动通信、手持计算、多媒体数字消费等

7、嵌入式解决方案事实上的标准。,1.2 ARM处理器概述,ARM体系结构的演变,1991年开始共推出7个版本,V1V3未用于商业授权,V4T开始商业授权,T表示16位Thumb指令,ARM7TDMI,冯诺依曼结构,三级流水线,0.9MIPS/MHz,V5增强ARM和Thumb指令切换的支持,增加了DSP指令支持(后缀E)、Java支持(后缀J),V6版增强DSP和多媒体处理指令,增加SIMD指令扩展,对音、视频处理性能有极大提升,Thumb-2指令,2004年发布V7版,ARM首次为其体系结构命名,命名为Cortex,分为A(应用)、R(实时)、M(微控制器)三个系列,版本与型号区别,冯诺依曼结

8、构VS哈弗结构,冯诺依曼结构,哈弗结构,CISC(Complex Instruction Set Computer) 指令系统庞大(数量、寻址)、指令功能复杂、指令变长(解码困难)、控制部分占芯片面积大 RISC(Reduced Instruction Set Computer) 指令系统简单(数量、寻址) 、指令功能简单(多数单周期可执行,可提高主频)、指令定长(解码快)、大量通用寄存器组、Load/Store结构、流水线技术,RISC技术,CISC与RISC,编译器,处理器 (复杂度高),编译器 (复杂度高),处理器,CISC,RISC,流水线技术,流水线明显比顺序方式效率高,ARM体系的

9、存储空间 232B的单一、线性地址空间。地址:0232-1 可以看作由230个32位的字组成的地址空间 也可以看作由231个16位的半字组成的地址空间 ARM体系的存储器格式 大端格式(Big Endian) 高字节存储在低地址中,低字节则存放在高地址中 小端格式(Little Endian) 高字节存储在高地址中,低字节则存放在低地址中,ARM存储器和存储器映像I/O,Big Endian vs Little Endian,(0H)=0123H (4H)=4567H (8H)=89ABH,Big Endian,(0H)=3210H (4H)=7654H (8H)=BA98H,Little E

10、ndian,ARM体系结构中,I/O操作通常被映射为存储器操作 I/O输出操作可以通过存储器写入操作实现 I/O输入操作可以通过存储器读取操作实现,ARM存储器映射I/O,与Intel的80 x86不同,ARM公司1996年提出高级微控制器总线结构AMBA(Advanced Microcontroller Bus Architecture),使片上不同宏单元的连接实现标准化。,ARM总线技术,ARM总线标准规定了两种类型总线: 先进的系统总线(ASB),用于连接高性能系统模块 先进的外围总线(APB),支持低性能外围接口,用于连接系统的周边组件 ASB和APB之间通过桥接器相连(ARM7) 第

11、二代标准增强了AMBA的性能,定义了两种高性能的总线标准AHB和APB2以及测试方法。(ARM9/ARM10/ARM Cortex-M) 第三代包括了AXI、ATB、AHB-Lite及APB3四个标准(ARM11/Cortex-R、Cortex-A) 第四代在第三代基础上增加了五个接口协议( Cortex-A 15) 第五代在第四代基础上增加了支持64位处理器的功能( Cortex-A 50系列),1.3 STM32F4的总线架构,STM32 F 407 Z G T 6,基于ARM的32位微控制器,通用类型,T:36PIN R:64PIN V:100PIN Q:132PIN; Z:144PIN

12、;,主系统由 32 位多层 AHB 总线矩阵构成,可实现以下部分的互连 : 八条主控总线:Cortex-M4 内核 I 总线、 D 总线、 S 总线;DMA1存储器总线、 DMA2存储器总线;DMA2 外设总线;以太网 DMA 总线;USB OTG HS DMA 总线。 7条被控总线:内部 FLASH ICode 总线;内部FLASH DCode 总线;主要内部 SRAM1(112KB)辅助内部 SRAM2(16KB);辅助内部 SRAM3(64KB) (仅适用 STM32F42xx 和 STM32F43xx 系列器件);,1.3 STM32F4的总线架构,8条主控总线,7条被控总线,八条主控

13、总线: I总线(S0) :将 Cortex-M4 内核的指令总线连接到总线矩阵 D总线(S1):将 Cortex-M4 内核的数据总线连接到总线矩阵 S总线(S2):将 Cortex-M4 内核的系统总线连接到总线矩阵 DMA存储器总线(S3,S4)将 DMA 存储器总线主接口连接到总线矩阵 DMA外设总线(S5): 将 DMA 外设主总线接口连接到总线矩阵 以太网 DMA总线(S6):将以太网 DMA 主接口连接到总线矩阵 USB OTG HS DMA总线(S7):将 USB OTG HS DMA 主接口连接到总线矩阵。,C语言典型数据类型 8位:char int8_t uint8_t 16

14、位:short int16_t uint16_t 32位:int int32_t uint32_t long float,1.4 嵌入式C语言程序设计,C语言典型运算符 算术运算符 + 、 -、 *、 /、 %(余数)、 +(自增运算符)、 - -(自减运算符) 关系运算符 、 =、=、= =、!= 逻辑运算符 _IO uint32_t OTYPER; GPIO_TypeDef;,struct _GPIO _IO uint32_t MODER; _IO uint32_t OTYPER; ,struct _GPIO GPIOA;,GPIO_TypeDef GPIOA,GPIOB;,结构体 Str

15、uct 结构体名 成员列表; 变量名列表; 例: Struct U_TYPE Int BaudRate Int WordLength; usart1,usart2;,结构体成员变量引用:结构体变量名字.成员名,结构体指针成员变量定义: Struct U_TYPE *usart3 引用:结构体指针变量名字-成员名 Usart3-BaudRate;,结构体的作用,例如:初始化外设的串口状态,包括串口号、波特率、极性、模式等 没有结构体:,void USART_Init(u8 usarttx,u32 Baudrate, u8 parity,u8 mode),如果要往函数中再传入一个参数?,void

16、USART_Init(u8 usarttx,u32 Baudrate, u8 parity,u8 mode,u8 wordlength),太麻烦,结构体将多个变量组合为一个有机整体。在不改变 入口参数的情况下,只需要改变结构体的成员变量,Void USART_Init(USART_TypeDef *USARTx, USART_InitTypeDef *USART_InitStruct);,typedef struct uint32_t USART_BaudRate; uint16_t USART_Wordlength; uint16_t USART_StopBit; uint16_t USAR

17、T_Parity; uint16_t USART_Mode; uint16_t USART_HardwareFlowControl; USART_InitTypeDef;,传统的51单片机只需一个系统时钟 STM32有一个相当复杂的时钟树 STM32本身非常复杂,外设很多,有高速外设,有低速外设 时钟越快,功耗越大、抗电磁干扰能力越弱 每个外设的时钟都有使能端,外设不用时可将其时钟关闭以节约能耗,1.5 STM32F4的时钟系统 ,复杂的MCU一般都采用多时钟源的方法解决该问题,A,B,C,D,E,G,H,I,F,每个外设时钟都有使能,5个时钟源 LSI:低速内部时钟,RC 振荡器,频率为 3

18、2kHz 左右。供独立看门狗、RTC、自动唤醒单元使用 LSE:低速外部时钟,接频率为32.768kHz 的石英晶体。主要是 RTC 的时钟源 HSI:高速内部时钟,RC 振荡器,频率为 16MHz。可以直接作为系统时钟或者用作 PLL输入 HSE:高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围4MHz26MHz。开发板接8M晶振。HSE也可以直接做为系统时钟或者 PLL 输入。,1.4 STM32F4的时钟系统,时钟树,5个时钟源 PLL:锁相环倍频输出 主 PLL:由 HSE 或者 HSI 提供时钟信号,并具有两个不同的输出时钟。 PLLP:生成高速的系统时钟(最高168M

19、Hz) PLLQ:生成 USB OTG FS 的时钟(48MHz)、随机数发生器的时钟和 SDIO时钟 专用 PLL(PLLI2S):生成精确时钟,从而在 I2S 接口实现高品质音频性能,1.4 STM32F4的时钟系统,时钟树,PLL输出频率计算方法 输入时钟先M分频再N倍频最后P(或Q)分频 开发板:fin=8MHz,设置M=8,N=336,P=2,则 fout= 8MHz336/(82)=168MHz,1.4 STM32F4的时钟系统,时钟树,SYSCLK(系统时钟) =168MHz AHB 总线时钟(HCLK=SYSCLK)=168MHz APB1 总线时钟(PCLK1=SYSCLK/

20、4)=42MHz APB2 总线时钟(PCLK2=SYSCLK/2)=84MHz PLL主时钟 =168MHz,SystemInit()中设置的系统时钟大小,stm32f4xx_rcc.h、stm32f4xx_rcc.c 时钟源使能函数 外设时钟使能函数 时钟源选择和分频因子配置函数 外设复位函数 状态参数获取函数 RCC中断相关函数,STM32F4时钟使能和配置,实际是读取或配置相关寄存器(略),这里学习相关库函数,void RCC_HSICmd(FunctionalState NewState); void RCC_LSICmd(FunctionalState NewState); voi

21、d RCC_PLLCmd(FunctionalState NewState); void RCC_PLLI2SCmd(FunctionalState NewState); void RCC_PLLSAICmd(FunctionalState NewState); void RCC_RTCCLKCmd(FunctionalState NewState); 例:使能PLL时钟 RCC_PLLCmd(ENABLE);,时钟源使能函数,void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState); void

22、 RCC_AHB2PeriphClockCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState); void RCC_AHB3PeriphClockCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState); void RCC_APB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState); void RCC_APB2PeriphClockCmd(uint32_t RCC_AHB2Periph, FunctionalS

23、tate NewState);,外设时钟使能函数 ,数据手册 P17:Figure 5. STM32F40 x block diagram 查固件库函数中的参数宏定义 stm32f4xx_rcc.h,如何知道某个外设挂接哪个总线,GPIOA挂在AHB1上,GPIOA挂在哪个总线上?,两个总线桥,TIM6挂在APB1上,定时器6挂在哪个总线上?,方法二:查固件库函数中的参数宏定义 例:GPIOA挂在哪个总线上?定时器6挂在哪个总线上?,如何知道某个外设挂接哪个总线,void RCC_HSEConfig(uint8_t RCC_HSE); void RCC_LSEConfig(uint8_t RC

24、C_LSE); void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP, uint32_t PLLQ); void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource); void RCC_HCLKConfig(uint32_t RCC_SYSCLK); void RCC_PCLK1Config(uint32_t RCC_HCLK); 例:设置系统时钟源为HSI RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); 例:设置APB1时钟为HCLK的2

温馨提示

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

评论

0/150

提交评论