嵌入式系统导论(第2版)-教学课件 嵌入式导论04_第1页
嵌入式系统导论(第2版)-教学课件 嵌入式导论04_第2页
嵌入式系统导论(第2版)-教学课件 嵌入式导论04_第3页
嵌入式系统导论(第2版)-教学课件 嵌入式导论04_第4页
嵌入式系统导论(第2版)-教学课件 嵌入式导论04_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统导论主讲教师:第4章STM32微控制器本章内容提要4.1STM32微控制器结构4.2STM32微控制器开发4.3复位与时钟控制(RCC)4.1STM32微控制器结构基于Cortex-M3/M4设计微控制器产品的公司意法半导体(STMicroelectronics)爱特梅尔(Atmel)三星(Samsung)……微控制器包含许多不同的模块处理器核心存储器时钟电路、系统总线外设(硬件单元):I/O接口、通信接口、定时器、ADC和DAC,……基于Cortex-M3的微控制器STM32微控制器应用类别STM32系列产品主要特点(核心,时钟频率等)高性能STM32F2系列STM32F4系列STM32F7系列STM32H7系列Cortex-M3、120MHz,基础产品线Cortex-M4+FPU、180MHz,基础或先进产品线Cortex-M7+FPU、216MHz,极高性能双核Cortex-M7+M4FPU、480MHz,极高性能主流STM32F0系列STM32G0系列STM32F1系列STM32F3系列STM32G4系列Cortex-M0、48MHz,入门级,适用于成本敏感的应用Cortex-M0+、64MHz,新一代入门级、首个8引脚STM32Cortex-M3、72MHz,基础产品线Cortex-M4+FPU、72MHz,具有16位ADC等Cortex-M4+FPU、170MHz,具有数学加速器等超低功耗STM32L0系列STM32L1系列STM32L4系列STM32L4+系列STM32L5系列STM32U5系列Cortex-M0+、32MHz,低功耗模式+RAM+RTCCortex-M3、32MHz,低功耗模式+RAM+RTCCortex-M4+FPU、80MHz,低功耗模式+RAM+RTCCortex-M4+FPU、80MHz,低功耗模式+RAM+RTCCortex-M33+FPU、110MHz,低功耗模式+RAM+RTCCortex-M33+FPU、160MHz,低功耗模式+RAM+RTCSTM32微控制器STM32F0系列:入门级MCU、基于CM0STM32F1系列:主流MCU、基于CM3STM32F2系列:高性能MCU、基于CM3STM32F3系列:具有DSP和FPU的MCU、基于CM4STM32F4系列:具有DSP和FPU的高性能MCU、基于CM4STM32L0系列:低功耗MCU、基于Cortex-M0+STM32L1系列:低功耗MCU、基于Cortex-M3……CM:Cortex-M,CM3:Cortex-M3,CM4:Cortex-M4STM32F10x系列微控制器STM32F10xSTM32F1系列微控制器STM32F10024MHz,具有马达控制器和HDMICEC功能STM32F10136MHz,多达1MBFlash存储器STM32F10248MHz,支持USB接口STM32F10372MHz,多达1MBFlash存储器支持马达控制、USB和CAN接口STM32F105/10772MHz,支持以太网、CAN和USB2.0OTG接口STM32F10xSTM32F103系统结构哈佛存储结构独立的指令总线(I-bus),连接Flash总线矩阵(BusMatrix)提供多种数据通道数据总线(D-bus)系统总线(System)DMA和SRAM通过AHB-APB桥连接2个先进外设总线APBAPB2可全速工作于72MHz,但APB1限制在36MHz外设连接在APB上STM32F103系统结构STM32F103的主要外设通过APB连接外设和I/O接口,共同具有的外设:通用和复用功能I/O(GPIO和AFIO)通用定时器(TIMx)实时时钟(RTC)(Cortex处理器自带系统时间片时钟SysTick)看门狗(WatchDog)通用同步异步接收发送器(USART)串行外设接口(SPI)I2C接口(I2C)模拟数字转换器ADC(以及温度传感器)更高性能的STM32微控制器还支持更多外设STM32F10x存储器结构4GB线性地址空间,全部统一编排地址4GB空间分成8个512MB(0.5GB)区域代码区(Code),起始于0x00000000Flash组成,程序代码起始于0x08000000SRAM区,起始于0x20000000型号不同、容量不同:16KB、48KB、64KB等

外设区,起始于0x40000000外设的寄存器访问地址外部区,起始于0x600000001GB用于外部RAM,1GB用于外设系统外设区,起始于0xE0000000STM32地址空间4.2STM32微控制器开发基于目标机-宿主机的交叉编译系统在集成开发环境(MDK)的支持下进行通常采用高级语言(C/C++语言)编写Cortex微控制器软件接口标准CMSIS为基于Cortex-M处理器的系统定义了标准软件接口是Cortex-M处理器与供应商无关的硬件抽象层可实现与处理器和外设间的一致且简单的软件接口从而简化软件的重用,便于初学者使用、降低成本目前,CMSIS包含以下组件CMSIS-Core:处理器与外围寄存器间的接口CMSIS-RTOS:实时操作系统的标准化编程接口CMSIS-DSP:60多种DSP函数库CMSIS-SVD:系统视图描述的XML文件CortexMicrocontrollerSoftwareInterfaceStandard基于CMSIS-Core的开发结构https:///cmsisCMSIS-Core的标准化工作标准化处理器外设定义标准化访问处理器特性的访问函数(有些文献称之为应用程序接口API)标准化访问特殊指令的函数标准化系统异常处理程序的函数名标准化系统初始化的函数(系统初始化使用“SystemInit()”函数)……CortexMicrocontrollerSoftwareInterfaceStandardCMSIS-Core使用很多针对Cortex-M的软件产品都兼容CMSISCMSIS文件被集成在设备驱动程序库中有些文件是ARM提供、对所有微控制器厂商通用有些文件与厂商设备相关的MDKV5开发平台,用户应用程序需要:startup_<device>.s(startup_stm32f10x_hd.s) 设备的启动代码,包括复位处理程序和异常向量system_<device>.c(system_stm32f10x.c)

设备的基本配置文件,包括时钟和总线设置<device>.h(stm32f10x.h) 用户代码需要的包含文件,用于访问设备嵌入式应用程序的开发方式针对外设寄存器直接编程需要详细掌握各个寄存器、费时耗力但能够深入理解原理,通常代码简洁高效适合C51等比较简单的8位单片机(微控制器)基于厂商提供的驱动程序库进行开发简单快捷、兼容性好、便于移植,但代码略多32位STM32微控制器结构比较复杂直接从寄存器入手会很困难建议初学者从驱动程序库入手逐渐深入到寄存器编程STM32驱动程序库(标准外设固件库)ST公司为使用STM32提供的函数接口开发人员通过调用库函数配置STM32寄存器STM32库是以函数源代码形式提供的函数接口库函数是直接对寄存器编程非常好的实例通过阅读学习这些官方库函数不仅能够深入理解STM32工作原理同时也是进一步熟练掌握C语言的极佳机会直接对寄存器编程,也可利用其头文件STM32F10xStandardPeripheralsFirmwareLibrarySTM32库-基本代码文件stm32f10x.hSTM32寄存器地址、结构体类型定义的底层头文件使用STM32库的应用程序都要引用(包含)该文件system_stm32f10x.c(system_stm32f10x.h)定义核心时钟变量、设置系统时钟和总线时钟等的源程序文件startup_stm32f10x_??.s启动文件,“??”表示不同类型STM32微控制器MDKV5通过“运行环境管理”添加到项目中STM32-外设驱动程序文件StdPeriph_Driver\src子目录驱动程序的源文件stm32f10x_ppp.cStdPeriph_Driver\inc子目录驱动程序的头文件stm32f10x_ppp.hMDKV5通过“运行环境管理”添加到项目中STM32标准外设名称-1缩写ppp

外设名称adcbkpcanceccrcdacdbgmcudmaextiflashfsmcA/D转换器备份寄存器CAN控制器局域网消费电子控制CRC计算单元D/A转换器MCU调试模块DMA控制器外部中断/事件控制器闪存灵活的静态存储器控制器STM32标准外设名称-2缩写ppp

外设名称gpioi2ciwdgpwrrccrtcsdiospitimusartwwdg通用I/O端口I2C总线接口独立看门狗电源控制复位和时钟控制器实时时钟SD存储卡接口SPI串行外设接口定时器通用同步异步收发器窗口看门狗C语言的数据类型ARM处理器C数据类型C99标准位数Bytecharint8_tuint8_t8Halfwordshortint16_tuint16_t16Wordint,longint32_tuint32_t32Doublewordlonglongint64_tuint64_t64intN_t有符号整数,uintN_t无符号整数C语言的位操作

a&=~(1<<6);//位与实现复位

//将整型变量a的D6位清零、其他位不变

a|=(1<<6);//位或实现置位

//将整型变量a的D6位置位、其他位不变

a^=(1<<6);//位异或实现求反

//将整型变量a的D6位取反、其他位不变运算符含义示例(假设为char类型)&位与0x69&0x55→0x41|位或0x69|0x55→0x7D~位非~0x69→0x96^位异或0x69^0x55→0x3CI/O接口和外设的访问外设单独编排地址主存空间I/O空间FFFFF0FFFF主存部分I/O部分存储器空间00000FFFFF外设与存储器统一编址外设寄存器的访问I/O接口寄存器通过存储器地址访问C语言使用指针访问这些外设寄存器“volatile”类型修饰符必不可少volatile说明的变量表示是随时可能发生变化的每次操作需要直接访问地址单元获取最新的数据编译器不能进行编译优化外设寄存器的访问都需要进行如此限定

/*定义*/#defineGPIOA_CRL(*((volatileunsignedlong*)(0x40010800)))

/*使用*/GPIOA_CRL=0;外设寄存器的结构类型外设具有多个寄存器可以定义成为结构类型每个寄存器是结构成员定义结构体变量(指针)通过结构成员访问寄存器/*定义*/typedef

struct{__IOuint32_tCRL;__IOuint32_tCRH;__IOuint32_tIDR;__IOuint32_tODR;__IOuint32_tBSRR;__IOuint32_tBRR;__IOuint32_tLCKR;}GPIO_TypeDef;/*使用*/

GPIO_TypeDef

GPIOx;

GPIOx.CRL=0;

GPIO_TypeDef*GPIOx;

GPIOx->CRL=0;#define__IOvolatile外设基地址的定义定义外设基地址后,外设 被定义为指向这个基地址的结构类型指针#definePERIPH_BASE((uint32_t)0x40000000)...#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)...#defineGPIOA_BASE(APB2PERIPH_BASE+0x0800)#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)该方法应用于微控制器驱动程序库中4.3复位和时钟控制(RCC)为了让STM32微控制器工作,需要提供电源电源上电复位后,接着就需要提供工作时钟为了降低功耗,需要对时钟进行灵活控制所以,STM32设计的时钟系统非常复杂所有振荡器、PLL、总线配置等属于

复位和时钟控制(RCC)(ResetandClockControl)电源控制(PWR)系统复位后,微控制器默认处于运行模式需要节省能耗时,进入低功耗模式睡眠模式(Sleep

Mode):CPU时钟关闭,所有外设(包括Cortex-M3核心外设)保持运行停止模式(Stop

Mode):基于CPU时钟关闭的睡眠模式、再关闭外设时钟备用模式(Standby

Mode):基于睡眠模式,再停止1.8V主电源,微控制器处于最低功耗状态 (备用模式也常被译为待机模式)STM32微控制器复位系统复位多种原因导致:外部复位、WWDG复位、IWDG复位、软件复位和低功耗管理复位电源复位当电源上电/掉电和退出备用模式时产生备份复位置位备份区域控制寄存器的BDRST位触发供电电压或者备用电池上电时触发时钟树系统时钟SYSCLK系统时钟SYSCLK可以来自内部高速振荡器HSI(HighSpeedInternalOscillator)外部高速振荡器HSE(HighSpeedExternalOscillator)内部锁相环PLL(PhaseLockedLoop)锁相环PLL由内部或外部高速振荡器驱动用于提供稳定的时钟频率源内部振荡器和外部振荡器8MHz的内部高速振荡器是复位后首先启用为锁相环PLL提供时钟支持微控制器以最高72MHz时钟频率运行但是内部振荡器不如外部晶振精确和稳定晶振频率4–16

温馨提示

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

评论

0/150

提交评论