ARM+Cortex-M3嵌入式原理及应用-基于STM32F103微控制器(第2版)课件全套 黄克亚 第01-15章 ARM Cortex-M3 嵌入式系统-RTC时钟与DS18B20传感器_第1页
ARM+Cortex-M3嵌入式原理及应用-基于STM32F103微控制器(第2版)课件全套 黄克亚 第01-15章 ARM Cortex-M3 嵌入式系统-RTC时钟与DS18B20传感器_第2页
ARM+Cortex-M3嵌入式原理及应用-基于STM32F103微控制器(第2版)课件全套 黄克亚 第01-15章 ARM Cortex-M3 嵌入式系统-RTC时钟与DS18B20传感器_第3页
ARM+Cortex-M3嵌入式原理及应用-基于STM32F103微控制器(第2版)课件全套 黄克亚 第01-15章 ARM Cortex-M3 嵌入式系统-RTC时钟与DS18B20传感器_第4页
ARM+Cortex-M3嵌入式原理及应用-基于STM32F103微控制器(第2版)课件全套 黄克亚 第01-15章 ARM Cortex-M3 嵌入式系统-RTC时钟与DS18B20传感器_第5页
已阅读5页,还剩648页未读 继续免费阅读

下载本文档

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

文档简介

第1章

ARMCortex-M3

嵌入式系统本章概要CONTENTS嵌入式系统的定义ARMCortex-M3处理器嵌入式系统软件体系结构STM32微控制器1.1嵌入式系统概述嵌入式系统在日常生活中无处不在。目前,嵌入式系统已经成为计算机技术和计算机应用领域的一个重要组成部分。1.1嵌入式系统概述电子计算机是21世纪最伟大的发明之一,计算机发展有两个方向:一是,面向高速数据处理和海量数据存储的通用计算机系统。如:386→486→586;PI→PII→PIII→PIVCorei3、i5、i7、i9。1.1嵌入式系统概述二是,以嵌入式系统的形式隐藏在各种装置、产品和系统中的,完成一定的运算和控制功能的嵌入式计算机系统。各种家用电器、手机、PAD、数字机顶盒等各种常用设备中都有嵌入式系统的身影。1.1.1.什么是嵌入式系统1.1嵌入式系统概述嵌入式系统是以应用为核心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、安全性、成本、体积、重量、功耗、环境等方面有严格要求的专用计算机系统。将微型计算机主要功能部件集成于一块芯片内,称为单片微型计算机,简称单片机,英文缩写:SCM(singlechipmicrocomputer)单片机在国外通常称为微控制器,英文缩写:MCU(MicroControllerUnit)一般认为,传统的8位单片机是较低级嵌入式系统,而基于ARM的32位单片机是较高级的嵌入式系统。1.1.2嵌入式系统和通用计算机比较1.1嵌入式系统概述相同硬件和软件的集合都是由硬件和软件构成的;工作原理是相同的,都是存储程序机制。系统组成硬件上看:都是由CPU、存储器、I/O接口和中断系统等部件组成;从软件上看:都可以划分为系统软件和应用软件两类。硬件,软件1.1.2嵌入式系统和通用计算机比较1.1嵌入式系统概述不同“嵌入”于不同设备

基本雷同的标准形态独立存在形态专用单一

通用复杂。功能几mW-几W几百W功耗够用就行

大而全资源“嵌入”的不同设备

通用指标(计算能力、存储能力)价值1.1.3嵌入式系统特点1.1嵌入式系统概述如嵌入在微波炉中的控制系统只能完成微波炉的基本操作,而不能在洗衣机中使用。1专用性强软硬件均可剪裁,STM32F1系列,CPU主频72MHz,存储器16KB~1MB,操作系统最小8KB。2可裁剪性例如导弹拦截系统,一旦发现目标,必须立即启动拦截程序,否则将会产生严重后果。3实时性好很多嵌入式系统需全天候持续工作,甚至在恶劣环境下工作,大多具有可靠性机制。如看门狗、内存保护和重启机制等。4可靠性高与具体嵌入的产品同步:经历产品导入期→成长期→成熟期→衰退期等各个阶段。5生命周期长通用计算机,硬件:Intel,软件:Microsoft,嵌入式系统,百花争艳,百家齐鸣!6不易被垄断1.1.4嵌入式系统的应用领域工业控制数控机床、电力系统、石油化工等工控系统。随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,如工控机主板。交通管理与环境监测车辆导航、信息监测与汽车服务等方面,嵌入式系统已经获得了广泛的应用,内嵌GPS模块、GSM模块、北斗模块的移动定位终端获得了成功的使用,如北斗卫星。消费电子消费电子是目前嵌入式系统应用最广、使用最多的领域,如手机。火炮、导弹、坦克、舰艇、月球车、火星车等科学探测设备中,都有着嵌入式系统的身影,如太空车。国防军事1.1嵌入式系统概述1.1.4嵌入式系统的应用领域嵌入式系统广泛应用于办公自动化产品中,有的甚至嵌入了多个处理器,成为复杂的嵌入式系统设备。如多功能打印机办公自动化产品网络和通信设备万物互联的物联网时代,产生了大量网络基础设施、接入设备和终端设备,这些设备中大量使用嵌入式系统。32位嵌入式微处理器广泛应用于各网络设备供应商的路由器。汽车电子汽车内部的车载信息系统、导航系统、与驾车安全密切相关的防抱死刹车系统(ABS)等都是嵌入式系统。特别是近年来兴起的电动汽车和自动驾驶汽车更是高性能嵌入式系统的集成。金融商业嵌入式系统主要应用在其终端设备,如POS机(PointofSale)、ATM机(AutomaticTellerMachine)、电子秤、电能表、流量计、条形码阅读机、自动售货机、公交卡刷卡器等。1.1嵌入式系统概述1.1.4嵌入式系统的应用领域近年来,便携式和可穿戴逐渐成为生物医学和健康服务设备新的发展趋势。便携式和可穿戴要求生物医学和健康服务设备必须具备体积小、功耗低、价格便宜和易于使用的特点,而嵌入式系统恰好满足这些要求。如智能手环。生物医学信息家电信息家电被视为嵌入式系统潜力最大的应用领域。具有良好的用户界面,能实现远程控制和智能管理的电器是未来的发展趋势。如智能家居1.1嵌入式系统概述1.1.5嵌入式系统范例1.1嵌入式系统概述产品案例:智盘,快速结账系统

1.2ARMCortex-M3

处理器在众多嵌入式应用系统中,基于ARM处理器的嵌入式系统占有极高的市场份额,也是嵌入式学习的首选。1.2ARMCortex-M3处理器1.2.1ARM简介ARM(AdvancedRISCMachine),既可指英国的芯片设计公司ARM公司,也可指采用ARM技术的芯片。ARM芯片本质上是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式处理器设计中。其主要特点就是低成本、高性能、低功耗,目前已被大多数芯片厂家采用。ARM公司仅提供IP核,而非完整的芯片。当今,全球95%以上的手机以及超过四分之一的电子设备都在使用ARM技术。1.2ARMCortex-M3处理器1.2.2ARM处理器ARM处理器进化史1.2ARMCortex-M3处理器1.2.2ARM处理器处理器名字架构版本号存储器管理特性其它特性ARM7TDMIv4TARM7TDMI‐Sv4TARM7EJ‐Sv5EDSP,JazelleARM920Tv4TMMUARM922Tv4TMMUARM926EJ‐Sv5EMMUDSP,JazelleARM946E‐Sv5EMPUDSPARM966E‐Sv5E

DSPARM968E‐Sv5E

DMA,DSPARM966HSv5EMPU(可选)DSPARM1020Ev5EMMUDSPARM1022Ev5EMMUDSPARM1026EJ‐Sv5EMMU或MPUDSP,JazelleARM1136J(F)‐Sv6MMUDSP,JazelleARM1176JZ(F)‐Sv6MMU+TrustZoneDSP,JazelleARM11MPCorev6MMU+多处理器缓存DSPARM1156T2(F)‐Sv6MPUDSPCortex‐M3v7‐MMPU(可选)NVICCortex‐R4v7‐RMPUDSPCortex‐R4Fv7‐RMPUDSP+浮点运算Cortex‐A8v7‐AMMU+TrustZoneDSP,JazelleARM处理器命名表1.2ARMCortex-M3处理器1.2.2ARM简介更多处理器信息,请访问ARM官网。1.3STM32微控制器教材讲授的是意法半导体公司(STMicroelectronics)推出的32位Cortex-M内核的MCU产品,它市场占有率很高,技术资料全面,官方固件库易学易用。1.3STM32微控制器1.3.1从Cortex-M3内核到基于Cortex-M3的MCUARM与STM321.3STM32微控制器由ARM设计由芯片生产商设计生产,即SQC厂商ARM单片机生产商国别logo意法半导体(ST)欧洲恩智浦(NXP)荷兰德州仪器(TI)美国兆易创新(GD32)中国1.3STM32微控制器1.3.2微控制器产品线STM32产品线十分丰富,共分为4个类别,17个系列,100多个子系列,1200多个量产芯片。1.3STM32微控制器1.3.2微控制器产品线典型系列及性能1.3STM32微控制器STM32微控制器命名规则1.3STM32微控制器STM32F103系列微控器命名示例STM32F103C8T6STM32F103VET6STM32F103ZET61.3STM32微控制器

更多产品信息,请访问ST官网:1.4嵌入式系统的软件嵌入式系统的软件一般固化于嵌入式存储器中,是嵌入式系统的控制核心,控制着嵌入式系统的运行,实现嵌入式系统的功能1.4嵌入式系统的软件引导程序一般由汇编语言编写,在嵌入式系统上电后运行,完成自检、存储映射、时钟系统和外设接口配置等硬件初始化操作。应用程序一般由C语言编写,直接架构在硬件之上,在引导程序之后运行,负责实现嵌入式系统的主要功能。从软件结构上划分,嵌入式软件分为无操作系统和带操作系统两种。1.4.1无操作系统的嵌入式软件1.4嵌入式系统的软件1.4.2带操作系统的嵌入式软件带操作系统的嵌入式软件的体系结构如图所示,自下而上包括设备驱动层、操作系统层和应用软件层等。相比无操作系统的嵌入式软件,带操作系统的嵌入式软件规模较大,其应用软件架构于嵌入式操作系统上,而非直接面对嵌入式硬件,可靠性高,开发周期短,易于移植和扩展,适用于功能复杂的嵌入式系统。1.4嵌入式系统的软件1.4.3典型嵌入式操作系统µC/OS-IIμC/OSII是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和微控制器。效率高,空间小,性能优良,扩展性强、内核最小2KB,开源不免费。VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。WindRiver产品,高性能,高可靠性,商业软件,用于军事、航空、航天等领域。嵌入式Linux嵌入式Linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。AndroidAndroid是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。WindowsCEWindowsCE是微软公司嵌入式、移动计算平台的基础,它是一个可抢先式、多任务、多线程并具有强大通信能力的32位嵌入式操作系统。1.4嵌入式系统的软件1.4.4软件架构选择建议从理论上讲,基于操作系统的开发模式,具有快捷、高效的特点,开发的软件可移植性、后期维护性、程序稳健性等都比较好。但是,不是所有系统都要基于操作系统,因为这种模式要求开发者对操作系统的原理有比较透彻的掌握,一般功能比较简单的系统,不建议使用操作系统,毕竟操作系统也占用系统资源;也不是所有系统都能使用操作系统,因为操作系统对系统的硬件有一定的要求。因此,在通常情况下,虽然STM32单片机是32位系统,但并不建议嵌入操作系统。感谢聆听第2章STM32F103微控制器与实验平台本章概要CONTENTSSTM32F103微控制器电源模块电路扩展模块电路IO模块电路开发板总体概况核心板电路2.1STM32F103微控制器基于ARMCortex-M3内核的STM32F103微控制器讲解嵌入式原理及其应用方法。2.1STM32F103微控制器STM32F103系列芯片是ST公司较早推出的一款32位微控制器,拥有很高的性价比,主要用于电机控制、工业智能控制、医疗设备、计算机外围终端和全球定位系统等。其主要特性如下:2.1.1STM32F103功能特性01集成了32位的ARMCortex-M3内核,最高工作频率可达72MHz;02具有512KB片内FLASH存储器和64KB片内SRAM存储器;05具有睡眠、停止、待机三种低功耗工作模式;03内部集成了8MHz晶体振荡器,可外接4~16MHz时钟源;042.0V~3.6V单一供电电源,具有上电复位功能(POR);06144管脚LQFP封装(薄型四侧引脚扁平封装);2.1STM32F103微控制器2.1.1STM32F103功能特性07内部集成了11个定时器:2个基本,4个通用,2个高级,2个看门狗,1个SysTick。082个12位的DAC和3个12位的ADC;11集成了13个外部通信接口:2个I2C、3个SPI、1个CAN、5个UART、1个USB和1个SDIO;09集成了内部温度传感和实时时钟RTC;10具有112根高速通用输入输出口(GPIO),PA~PG口,每个端口16个引脚;1212通道的DMA控制器,支持定时器、ADC、DAC、SDIO、I2S、SPI、I2C和UART外设;13具有96位的全球唯一编号;14工作温度为-40~85℃。2.1.2STM32F103系统架构2.1STM32F103微控制器STM32F103系统架构:主要由4个驱动单元和4个被动单元构成,它们彼此之间通过一个多级的AHB(高性能总线)构架相互连接。其中,4个驱动单元是内核数据总线、系统总线、通用DMA1、通用DMA2;4个被动单元是内部SRAM、内部闪存存储器和连接所APB(高级外设总线)设备的AHB到APB桥。2.1.2STM32F103系统架构2.1STM32F103微控制器总线说明:ICode总线:该总线将Cortex-M3内核指令总线和闪存指令接口相连,指令预取在此总线上完成。DCode总线:该总线将Cortex-M3内核的DCode总线与闪存存储器的数据接口连接,常量加载和调试访问在此总线上完成。System总线:该总线连接Cortex-M3内核的系统总线(外设总线)到总线矩阵。DMA总线:该总线将DMA的AHB主控接口与总线矩阵相连。总线矩阵:总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁。AHB/APB桥:这两个桥在AHB和2个APB总线间提供同步连接,APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。2.1.3STM32F103内部结构2.1STM32F103微控制器STM32F103ZET6内部结构(详细信息参见数据手册P12)2.1.4STM32F103存储器映射2.1STM32F103微控制器STM32F1存储空间功能表存储器是微控制器最重要的功能单元之一,是众多存储单元的集合。存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。Cortex-M3是32位处理器内核,32位总线矩阵寻址空间是232B=4GB。在STM32F103芯片内部,程序存储器、数据存储器、寄存器和I/O端口排列在同一个顺序的4GB地址空间内。序号用途地址范围Block0Code0x00000000~0x1FFFFFFF(512MB)Block1SRAM0x20000000~0x3FFFFFFF(512MB)Block2片上外设0x40000000~0x5FFFFFFF(512MB)Block3FSMC的bank1~bank20x60000000~0x7FFFFFFF(512MB)Block4FSMC的bank3~bank40x80000000~0x9FFFFFFF(512MB)Block5FSMC寄存器0xA0000000~0xBFFFFFFF(512MB)Block6未使用0xC0000000~0xDFFFFFFF(512MB)Block7Cortex-M3内部外设0xE0000000~0xFFFFFFFF(512MB)2.1.4STM32F103存储器映射2.1STM32F103微控制器STM32F103存储器映射(更多详细信息参见数据手册P40)2.1.5STM32F103时钟树2.1STM32F103微控制器时钟源:HSI(HighSpeedInside)高速内部时钟,RC振荡器,频率为8MHz。可以直接作为系统时钟或者用作PLL输入HSE(HighSpeedExternal)高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。实验平台连接的是8MHz晶振,HSE也可以直接作为系统时钟或者PLL输入。LSI(LowSpeedInside)低速内部时钟,RC振荡器,频率约为40kHz。为独立看门狗和自动唤醒单元提供时钟。LSE(LowSpeedExternal)低速外部时钟,接频率为32.768kHz的石英晶体。这个主要是RTC的时钟源。PLL(PhaseLockedLoop)锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。2.1.5STM32F103时钟树2.1STM32F103微控制器STM32F103微控制器时钟系统,(更多详细信息参见中文参考手册P56~59)5个时钟源,分别为HSI、HSE、LSI、LSE、PLL。从时钟频率来分可以分为高速时钟源和低速时钟源。高速时钟:HSI、HSE、PLL;低速时钟:LSI、LSE。从来源可分为外部时钟源和内部时钟源。外部时钟源:就是从外部通过连接晶振的方式获取时钟源,其中HSE和LSE是外部时钟源,内部时钟源:HSI、LSI、PLL。2.1.5STM32F103时钟树2.1STM32F103微控制器时钟源是如何给各个外设以及系统提供时钟:MCO是STM32的一个时钟输出I/O(PA8),该时钟可以用来给外部其他系统提供时钟源,也可以用于时钟系统测试。这里是RTC时钟源。从时钟系统图可以看出C处USB的时钟是来自PLL时钟源。D处就是STM32的系统时钟SYSCLK,是供STM32中绝大部分部仵工作的时钟源。系统时钟可选择为PLL输出、HSI或者HSE,最大频率为72MHz。这里的E处是指其他所有外设。从时钟图上可以看出,其他所有外设的时钟最终来源都是SYSCLK。SYSCLK通过AHB分频器分频后送给各模块使用AHB总线、内核、内存和DMA使用的高速时钟HCLK。通过8分频后送给Cortex的系统定时器时钟,也就是SysTick。直接送给Cortex的自由运行时钟FCLK。送给APB1分频器。APB1分频器输出一路供APB1外设使用。送给APB2分频器。APB2分频器分频输出一路供APB2外设使用。2.1.6STM32F103引脚定义2.1STM32F103微控制器ST32F103ZET6芯片引脚图STM32F103ZET6引脚大体上分为三类,分别为电源引脚、GPIO引脚和系统功能引脚,引脚分布如右图所示,功能定义表见附录E,使用方法将在后续章节详细介绍。2.2开发板总体概况作者自主设计教材配套星火嵌入式开发板(F103),以便于项目验证和教学演示。2.2.1开发板设计背景2.1STM32F103微控制器量身定做,简单实用,包含51单片机经典项目,适合嵌入式入门。自主设计芯片功能强大,产品线丰富,传统的Proteus+Keil仿真教学模式无法适应。仿真教学功能复杂、价格较贵、适合嵌入式开发工程技术人员。网上购买嵌入式系统开发是一门实践性很强的专业课,必须通过大量的实验才能较好地掌握其系统资源。实践需要原创产品简单、实用、价格不贵2.2.2开发板总体介绍2.2开发板总体概况开发板PCB布局图参数尺寸:16.8cm×12.0cm,板层:双面布线、顶层安装,普通工艺。功能板载ISP下载器,提供JTAG接口,包含嵌入式学习经典项目特点简单实用、性价比高、适合32位单片机初学者入门与提高。2.2.2开发板总体介绍2.2开发板总体概况开发板PCB布线图2.3电源模块为开发板各模块提供电能。2.3.1电源模块原理图2.3电源模块开发板电源模块原理图实验平台采用双电源供电方式:一种方式为USB接口供电方式;一种方式为火牛接口供电方式。两个供电电路采用并联的方式,实验时只要接入一个电源即可。火牛接口USBB型口2.4核心板电路核心板电路就是单片机最小系统电路加上ISP(InSystemProgramming)下载电路,也就是让微控制器运行起来,并可在线更新程序。2.4.1芯片电源电路2.4核心板电路芯片电源电路芯片供电:采用3.3V供电,芯片的11个VDD引脚连接至+3.3V,11个VSS引脚连接至GNDADC模块:ADC模块电源VDDA和AD转换参考电源VREF+均取自系统3.3V主电源,并经一个10Ω电阻R9隔离。备用电源模块:实验平台的备用电源为一钮扣电池,选用CR1220型号,供电电压为3V,用于对实时时钟以及备份存储器进行供电。2.4.2CPU滤波电路2.4核心板电路CPU滤波电路为保证CPU供电可靠稳定,在芯片所有的电源引脚VDD和VSS之间加上滤波电容。CPU滤波电路采用了8个0.1μF的电容(C12-C19)并联为CPU电源提供滤波功能。2.4.3外接晶振模块2.4核心板电路外接晶振电路系统主晶振Y2,频率为8MHz,为STM32内核提供振荡源实时时钟晶振Y3,频率为32.768kHz,为RTC模块提供振荡源主晶振两端外接22pF对地微调电容RTC晶振两端外接15pF对地微调电容2.4.4复位电路2.4核心板电路开发板复位电路接通电源,R5和C20构成RC充电电路,对系统进行上电复位,复位持续时间由R5电阻值和C20容值乘积决定,一般情况电阻取10kΩ,电容取10μF可以满足复位要求。按钮RST可以实现按键复位,当需要复位时按下RST按钮,RSET引脚直接接地,CPU即可进入复位状态。2.4.5串口通信模块2.4核心板电路串口通信模块和启动设置电路串口通信模块,其核心为CH340G芯片,是一个USB总线的转接芯片,实现USB转串口或者USB转打印口。在串口方式下,CH340G提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将串口设备直接升级到USB总线。CH340G芯片正常工作时需要在XI和XO外接12MHz晶振,并在其两端连接2个对地微调电容。CH340G芯片采用5V电源供电,并在V3引脚与地之间跨接一下0.1uF的退耦电容。2.4.6启动设置电路2.4核心板电路启动方式与引脚对应表启动模式选择引脚启动模式说明BOOT1BOOT0×0从用户闪存启动这是正常的工作模式01从系统存储器启动启动的程序功能由厂家设置11从内置SRAM启动这种模式可以用于调试STM32三种启动模式对应的存储介质均是芯片内置:(1)用户闪存,即芯片内置的Flash。(2)SRAM,即芯片内置的RAM区,就是内存。(3)系统存储器,即芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,这个区域的内容在芯片出厂后不能够修改或擦除,即是一个ROM区。如实验平台启动设置电路所示,BOOT0引脚连接至PNP型三极管TP1的发射极,且在TP1的集电极和发射极之间跨接一个100kΩ电阻R7,BOOT1引脚通过100kΩ电阻R8接地。由于BOOT1引脚始终为低电平,由上表可知,芯片启动方式仅由其复位时BOOT0的电平状态决定,低电平从用户闪存启动,高电平从系统存储器启动。2.4.7JTAG接口2.4核心板电路JTAG接口实验平台推荐使用ISP电路实现程序下载和串口通信,但ISP电路在调试程序时并不方便,为了便于已经拥有调试器的读者调试下载程序,开发板设计了一个20针的标准JTAG(JointTestActionGroup)接口,其支持JTAG和SWD(SerialWireDebug)两种接连接方式。2.5IO模块电路主要介绍实验平台的输入和输出设备,这些设备是实验平台的基础设备,也是学习嵌入式系统的首先需要掌握的接口技术。2.5.1LED指示灯模块2.5IO模块电路实验平台共设置8个LED指示灯,采用共阳接法,即8个LED指示灯L1~L8的阳极经限流电阻R10~R17接系统的3.3V电源,8个LED指示灯的阴极接CPU的PC0~PC7。2.5.2按键模块2.5IO模块电路实验平台共设置5个输入按键,5个按键的一端并联接地,另外一端由CPU的GPIO控制,具体为KEY1~KEY4接PE0~PE3,KEY5接PE6。2.5.3数码管模块2.5IO模块电路实验平台共设置6个共阳数码管,采用动态扫描方式控制,为实现上述控制方法,需要将所有数码管的笔画位(a,b,c,d,e,f,g,dp,共8个笔画引脚)并联,每一个数码管的公共端(3和8引脚),由一个PNP三极管控制,可以将该数码管打开或关闭。数码管位选信号由PE15~PE10控制,段选信号由PG0~PG7控制。2.5.4蜂鸣器模块2.5IO模块电路实验平台配备一个无源蜂鸣器BUZ1作为系统报警或是演奏简单曲目使用,由PNP三极管Q7控制其导通或是关闭。三极管的基极由微控制器的PC8引脚控制,通过控制该GPIO引脚的信号频率和持续时间就可以控制蜂鸣器发出不同声音以及发音时间的长短。2.5.5OLED显示屏电路2.5IO模块电路OLED显示屏是利用有机发光二极管制成的显示屏。共有6个引脚,其中1号脚为GND,连接系统电源的地线;2号脚为VCC,连接系统的+5V电源;3号脚SCL为SPI接口的时钟线,连接CPU的PD6引脚;4号脚SDA为SPI接口的数据线,连接CPU的PD7;5号脚RES为OLED的复位线,连接CPU的PD4;6号脚DC为SPI接口的数据/命令选择线,连接CPU的PD5。2.6扩展模块电路主要介绍实验平台提供的基本外设扩展电路、典型传感器应用电路和GPIO引脚外接电路等内容。2.6.1温度传感器2.6扩展模块电路DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20属于单总线传感器,其接线较为简单,1号引脚为地线接电源地线即可,2号引脚为数据线,连接至CPU的PE4引脚,3号引脚为芯片电源连接到系统3.3V电源,同时还需要在3号引脚和2号引脚之间跨接一个10kΩ的电阻。2.6.2A/D采样模块2.6扩展模块电路A/D采样模块主要目的是提供4个可以调节的电压供系统采样,并将其转换成数字量,送入CPU模块进行后续处理。由于STM32芯片内核已经集成了A/D转换器,故不用外接A/D转换电路。所以本模块电路元件主要为4个10kΩ的电位器,电位器一端接系统电源3.3V,另一端接电源地,中间抽头与STM32微控器一组GPIO引脚(PA0~PA3)连接。2.6.3EEPROM存储器2.6扩展模块电路为能够持续保留重要数据和保存系统配置信息,实验平台外扩了一片EEPROM存储芯片AT24C02,与MCU之间接口采用模拟I2C接口。2.6.4蓝牙模块2.6扩展模块电路蓝牙作为一种近距离无线通信技术,为便于用户更便捷地使用蓝牙模块或其他串口通信设备,实验平台提供一个蓝牙模块连接插座。连接插座是根据BLE4.0+SPP2.0双模串口透传模块HC-04设计,连接至微控制器的USART3。2.6.5I/O引脚外接模块2.6扩展模块电路为了方便用户在外电路中使用本实验平台的控制引脚,所以特将STM32的部分I/O引脚以及系统电源(5V和3.3V)引出到实验平台两边的排针上。用户可以使用杜邦线将系统电源和I/O引脚信号引入到外电路当中,实验平台相当于普通的单片机核心板。左排针25x2右排针25x2感谢聆听第3章

MDK软件与

工程模板创建本章概要CONTENTSSTM32固件库概述STM32固件库目录结构KeilMDK软件模拟仿真调试KeilMDK工程模板的创建STM32固件库下载KeilMDK软件操作方法3.1STM32固件库认知建立工程模板需要从指定路径找到必要文件,要想很好地完成这一任务,我们需要首先认识固件库。3.1STM32固件库认知3.1.1STM32固件库概述ST公司提供的STM32F10x标准外设库是基于STM32F1系列微控制器的固件库进行STM32F103开发的一把利器。可以像在标准C语言编程中调用printf()一样,在STM32F10x的开发中调用标准外设库的库函数,进行应用开发。STM32F10x的固件库是一个或一个以上的完整的软件包(称为固件包),包括所有的标准外设的设备驱动程序,其本质是一个固件函数包(库),它由程序、数据结构和各种宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API。通过使用固件函数库,无须深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。3.1STM32固件库认知第一步:输入网址,打开ST官方网站,在首页搜索栏输入“stm32f10x”。3.1.2STM32固件库下载点击“SOFTWARE”按钮,登陆、著作权确认之后,即可将该固件库下载到的本机上3.1STM32固件库认知3.1.3.STM32固件库目录结构LOGO图标库函数与启动文件驱动示例工程模板ST官方开发板例程更新说明帮助文件3.1STM32固件库认知3.1.3.STM32固件库目录结构Libraries文件夹Libraries文件夹存放STM32F10x开发要用到的各种库函数和启动文件,其目录下包括CMSIS和STM32F10x_StdPeriph_Driver两个子文件夹1)CMSIS子文件夹STM32F10x的内核库文件夹,其核心是CM3子文件夹,在CM3子目录下有CoreSupport和DeviceSupport等两个文件夹。3.1STM32固件库认知3.1.3.STM32固件库目录结构a)CorcSupport文件夹Cortex-M3核内外设函数文件夹:Cortcx-M3内核通用源文件core_cm3.cCortcx-M3内核通用头文件core_cm3.hb)DeviceSupport文件夹设备外设支持函数文件夹:STM32F0x头文件stm32f10x.h系统初始化文件system_stm32f10x.c3.1STM32固件库认知3.1.3.STM32固件库目录结构本书配套开发板使用的STM32F103ZET6微控制器属于STM32F103的大容量产品,因此,它对应的启动代码文件为startup_stm32f10x_hd.s。3.1STM32固件库认知3.1.3.STM32固件库目录结构2)STM32F10x_StdPeriph_Driver文件夹STM32F10x_StdPeriph_Driver子文件夹为STM32Fl0x标准外设驱动库函数目录,包括了所有STM32F10x微控制器的外设驱动。文件夹下有两个子目录:src和inc。src子目录:src是source的缩写,该子目录下存放ST为STM32F10x每个外设而编写的库函数源代码文件。inc子目录:inc是include的缩写。该子目录下存放STM32F10x每个外设库函数的头文件。3.1STM32固件库认知3.1.3.STM32固件库目录结构Project文件夹Project文件夹对应STM32F10x标准外设库体系架构中的用户层,用来存放ST官方提供的STM32F10x工程模板和外设驱动示例1)STM32F10x_stdPeriph_Template子文件夹TM32F10x_stdPeriph_Template子文件夹,是ST提供的STM32F10x工程模板目录,包括了5个开发工具相关子目录和5个用户应用相关文件。开发工具:MDK-ARM、EWARM、HiTOP、RIDE和TrueSTUDIO相关文件:main.c、stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h和system_stm32f10x.c3.1STM32固件库认知3.1.3.STM32固件库目录结构2)STM32F10x_StdPeriph_Examples子文件夹STM32F10x_StdPeriph_Examples子文件夹,是ST提供的STM32F10x外设驱动示例目录。Utilities文件夹Utilities文件夹用于存放ST官方评估板的BSP(BoardSupportPackage,板级支持包)和额外的第三方固件。3.2工程模板创建本节介绍KeilMDK-ARM软件的安装、使用,并创建一个自己的MDK工程模板,该工程模板是后续学习的基础。3.2工程模板创建3.2.1MDK-ARM开发环境配置MDK-ARM简介01KeilMDK-ARM也称Keil、KeilMDK、MDK-ARM,是适用于基于Codex-M、Codex-R4、ARM7、ARM9和ARM11处理器的设备的完整软件开发环境。MDK-ARM软件主要特点如下:完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件。行业领先的ARMC/C++编译工具链。确定的KeilRTX,小封装实时操作系统(带源码)。μVision5IDE集成开发环境,调试器和仿真环境。TCP/IP网络套件提供多种的协议和各种应用。提供带标准驱动类的USB设备和USB主机栈。为带图形用户接口的嵌入式系统提供了完善的GUI库支持。执行分析工具和性能分析器可使程序得到最优化。大量的项目例程帮助你快速熟悉MDK-ARM强大的内置特征。符合CMSIS(Cortex微控制器软件接口标准)。3.2工程模板创建3.2.1MDK-ARM开发环境配置MDK-ARM下载02在Keil官网()首页,单击顶端Download链接,出现一个Overview页面,继续单击ProductDownloads选择项,选择MDK-ARM。MDK-ARM,适用于ARM内核开发工具3.2工程模板创建3.2.1MDK-ARM开发环境配置MDK软件安装03双击下载完成的MDK535.EXE可执行文件启动安装程序,单击Next按钮,同意许可协议,进入安装路径设置,默认安装于C盘,也可手动修改为其他英文路径。3.2工程模板创建3.2.1MDK-ARM开发环境配置器件包安装04在MDKV5.35安装完成后,还要安装STM32F1的器件支持包。安装分为在线安装和离线安装两种,推荐采用离线方式安装。MDK-ARM、器件包和注册软件均可以从以下链接获取。环境配置资源:/s/1Pz4Q5j7rpHLO4gTcXKnp0Q?pwd=95273.2工程模板创建3.2.1MDK-ARM开发环境配置MDK-ARM注册05找到KeilμVision5快捷方式,右键选择以管理员身份运行。单击File→LicenseManagement菜单项,打开授权管理对话框,将图中ComputerID填写到注册软件CID文本框,注册目标选择ARM,版本选择Professional,复制软件生成的LicenseID,并填写到图中NewLicenseIDCode(LIC)编辑框,单击ADDLIC按钮完成注册。注册成功会在授权管理对话框显示使用期限和“***LICAddedSuccessfully***”提示信息。下载注册软件关闭病毒防护3.2工程模板创建3.2.2工程模板的创建创建工程模板素材01创建工程模板素材主要是内核固件库,另外还有两个重要的预定义命令,位于模板素材文件夹。工程模板创建步骤02第一步:创建或复制文件夹(1)在桌面创建Template文件夹。(2)复制固件库中的Libraries文件夹到Template文件夹。(3)创建User文件夹,并复制main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h文件到该文件夹中。上述文件路径为:F10x_Lib_V3.6\Project\STM32F10x_StdPeriph_Template,3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(4)创建“MDK”文件夹,用于存放工程文件和输出文件。(5)创建“APP”文件夹,用于存放用户编写的外设驱动程序3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02第二步:新建工程文件,对文档进行分组(1)在开始/程序或桌面快捷方式中启动KeiluVision5软件。(2)依次单击菜单栏Project→newμvisionProject命令,弹出如图所示的窗口,表示新建一个工程文件,并需要我们选择保存路径。此时将保存路径选择为Template/MDK,文件名为Template。C3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(3)单击上图中的“保存”按钮,弹出选择芯片的对话框,由于实验平台使用的是STM32F103ZET6芯片,故选择CPU为STM32F103ZE。3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(4)单击上图中的“OK”按钮,此时弹出运行环境配置对话框,这是Keilμvision5的一项新功能,可以自动帮助用户向工程中添加文件,且无需设置包含路径。

运行环境配置过程如图所示,首先单击CMSIS和Device组件前面的“+”号展开列表,然后分别勾选CMSIS组件中CORE模块和Device组件中的Startup模块后面的复选框,这本质上是将固件库的内核支持文件和器件支持文件添加到工程,最后单击“OK”确定。3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(5)建立分组并添加文件依次单击Project→Manage→components,Environment或直接单击工具栏图标打开ManageProjectItems窗口,在此窗口界面中的Groups项中,先删除原来的SourceGroup1,然后依次添加User、ST_Driver和APP分组,并为每个分组添加相应的源文件User:main.c、stm32f10x_it.c。ST_driver:stm32f10x_gpio.c、stm32f10x_rcc.c。APP:此分组下面还没有文件,由用户编写。3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02第三步:选择编译器,添加预编译变量,包含头文件路径(1)依次单击菜单Project→Optionsfortarget或直接单击工具栏图标,打开如图所示的Optionsfortarget‘target1’对话框。(1)依次单击菜单Project→Optionsfortarget或直接单击工具栏图标,打开如图3-30所示的Optionsfortarget‘target1’对话框。

3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(2)在“Target”选项卡中选择编译器ARMCompiler为Usedefaultcompilerversion5,即使用编译器5,此时C/C++选项卡的名称也由图中的“C/C++(AC6)”变换为“C/C++”,其操作界面如图所示。使用编译器5相较于编译器6有更好的兼容性。3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(3)在Output选项卡中勾选CreateHEXFile复选框,输出文件夹已默认设置为MDK\Object,无需更改。3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(4)在“C/C++”选项卡中,在“Define”区域添加两个重要的预编译命令:“USE_STDPERIPH_DRIVER,STM32F10X_HD”,这两个预编译命令存放在素材文件夹中的“两个重要的预编译指令.txt”文件中,操作界面如图所示。3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(5)在如上图所示的“C/C++”选项卡中,单击“IncludePath”后面的按钮,打开包含文件夹路径设置对话框。将工程中可能需要用到的头文件所在路径全部包含进来。操作结果如图所示。3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(6)在“Debug”选项卡中选中UseSimulator单选按钮,其操作界面如图所示。至此工程文件OptionsforTarget选项已全部配置完成,单击“OK”退出。3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02第四步:创建main.h文件,重写main.c文件,编译调试(1)依次单击菜单Project→Optionsfortarget或直接单击工具栏图标,打开如图3-30所示的Optionsfortarget‘target1’对话框。

(1)在KeilμVision5工程文件界面中,依次单击File→New新一个空白文件,并将其以文件名main.h保存到Template\User文件夹下,在main.h文件中输入以下代码:#ifndef_MAIN_H#define_MAIN_H#include“stm32f10x.h”#endif3.2工程模板创建3.2.2工程模板的创建工程模板创建步骤02(1)依次单击菜单Project→Optionsfortarget或直接单击工具栏图标,打开如图3-30所示的Optionsfortarget‘target1’对话框。

(2)将原main.c中的程序删除,写一个main的空函数,并包含公共头文件“main.h”。#include"main.h"intmain(){

}(3)依次单击Project→Rebuildalltargetfiles或直接单击工具栏图标对整个工程进行编译,直至没有编译错误出现为止。3.3软件模拟仿真KeilMDK同样提供了强大的软件模拟仿真功能,对于暂不具备硬件平台的学习者也可以通过模拟仿真学习嵌入式开发。3.3软件模拟仿真第一步:创建项目工程,并编译生成目标文件在上一节创建的工程模板中main.c文件中输入图方框中的源程序,该程序用于在PC0端口输出方波信号,项目只是用于讲解KeilMDK软件仿真操作,其代码较为简单。3.3软件模拟仿真第二步:将调试方式设置为软件模拟仿真方式在KeilMDK的工程管理窗口中,选中刚才编译链接成功的Target1工程,打开0ptionforTarget‘Target1’对话框。在该对话框中,选择Debug选项卡,选中左侧的UseSimulator单选按钮,同时设置左侧CPUDLL为SARMCM3.DLL和Parameter为空,并设置左侧DialogDLL为DARMSTM.DLL和Parameter为-pSTM32F103ZE,然后单击OK按钮确定。3.3软件模拟仿真第三步:进入软件模拟调试模式选择菜单Debug→Start/StopDebugSession命令或者单击工具栏中的Debug按钮,进入软件模拟调试模式,第四步:打开相关窗口添加监测变量或信号选择菜单View→AnalysisWindows→LogicAnalyzer命令或者直接单击工具栏的LogicAnalyzer按钮,打开逻辑分析仪窗口3.3软件模拟仿真第四步:打开相关窗口添加监测变量或信号单击逻辑分析仪窗口的Setup按钮,打开SetupLogicAnalyzer对话框,单击右上角的New按钮,在空白框中输入PORTC.0,新增一个观测信号,并在DisplayType下拉列表框中选择Bit,单击Close按钮退出,3.3软件模拟仿真第五步:软件模拟运行程序,观察仿真结果选择菜单Debug→Run命令或者单击工具栏中的Run按钮,开始仿真。让程序运行一段时间后,再选择菜单Debug→Stop命令或者单击工具栏中的Stop按钮,暂停仿真。在LogicAnalyzer窗口中可以看到程序仿真运行期间PC0的信号图。3.3软件模拟仿真第六步:退出模拟仿真调试模式选择菜单Debug→start/stopDebugsession命令或者单击工具栏中的Debug按钮,即可退出模拟仿真调试模式。仿真观测信号范围十分广泛,包括I/O端口、逻辑数值、寄存器、存储器等,还可以设定外设的工作状态,包括GPIO、ADC、DMA、Timer等,还经常被用于时序分析,调试输出等典型应用,功能十分强大。感谢聆听第4章

通用目的输入输出口本章概要CONTENTSGPIO概述及管脚命名GPIO工作模式GPIO控制寄存器及配置实例GPIO复用功能重映射GPIO内部结构GPIO输出速度基于寄存器开发方式的LED灯闪烁工程4.1GPIO概述及管脚命名GPIO:GeneralPurposeInputOutput通用目的输入输出口,是微控制器必备的片上外设,几乎所有的基于微控制器的嵌入式应用开发都会用到它,是嵌入式系统学习中最基本的也是最重要的模块,4.1GPIO概述及管脚命名4.1GPIO概述及管脚命名GPIO是微控制器的数字输入输出的基本模块,可以实现微控制器与外部设备的数字交换。当微控制器没有足够的I/O引脚或片内存储器时,GPIO还可实现串行和并行通讯、存储器扩展等复用功能。STM32F103微控制器最多可以提供112个多功能双向I/O引脚。这些I/O引脚依次分布在不同的端口中,这些引脚分布在GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF和GPIOG端口中。每个端口有16个I/O引脚,分别命名为0-15。引脚命名采用“端口号+引脚号”方式,例如PA0、PA1、PA2…PA15。4.2GPIO内部结构本节介绍GPIO内部结构,一个端口有16个引脚,这样结构有16套,STM32F103ZET6有112个GPIO引脚,整芯片这样的结构有112套。4.2GPIO内部结构STM32F103微控制器GPIO的内部主要由保护二极管、输入驱动器、输出驱动器、输入数据寄存器、输出数据寄存器等组成,其中输入驱动器和输出驱动器是每一个GPIO引脚内部结构的核心部分。4.2GPIO内部结构GPIO的输入驱动器主要由TTL肖特基触发器、带开关的上拉电阻和带开关的下拉电阻电路组成。根据TTL肖特基触发器、上拉电阻和下拉电阻开关状态,GPIO的输入方式可以分为以下4种:4.2.1输入驱动器(1)模拟输入:TTL肖特基触发器关闭,模拟信号被提前送到片上外设,即A/D转换器。(2)上拉输入:GPIO内置上拉电阻,即上拉电阻开关闭合,下拉电阻开关打开,引脚默认情况下输入为高电平。(3)下拉输入:GPIO内置下拉电阻,即下拉电阻开关闭合,上拉电阻开关打开,引脚默认情况下输入为低电平。(4)浮空输入:GPIO内部既无上拉电阻也无下拉电阻,处于浮空状态,上拉电阻开关和下拉电阻开关均打开。该模式下,引脚下在默认情况下为高阻态(悬空),其电平状态完全由外部电路决定。4.2GPIO内部结构多路选择器根据用户设置决定该引脚是用于普通GPIO输出还是用于复用功能输出。普通输出:该引脚的输出信号来自于GPIO输出数据寄存器。复用功能输出:该引脚输出信号来自于片上外设,并且一个STM32微控制器引脚输出可能来自多个不同外设,但同一时刻,一个引脚只能使用这些复用功能中一个,其它复用功能都处于禁止状态。4.2.2输出驱动器多路选择器GPIO输出驱动器主要由多路选择器、输出控制和一对互补的MOS管组成。4.2GPIO内部结构4.2.2输出驱动器输出控制逻辑输出控制逻辑根据用户设置,控制一对互补的MOS管的导通或关闭状态决定GPIO输出模式。推挽(Push-Pull,PP)输出:就是一对互补的MOS管,NOMS和PMOS只有一个导通,另一个关闭,推挽式输出可以输出高电平和低电平。当内部输出“1”时,PMOS导通,NMOS截止,引脚相当于接VDD,输出高电平;当内部输出“0”时,NMOS导通,PMOS截止,引脚相当于接VSS,输出低电平。开漏输出(Open-Drain,OD)输出:开漏输出模式中,与VDD相连的PMOS始终处于截止状态,对于与VSS相连的NMOS来说其漏极是开路的。在开漏输出模式下,当内部输出“0”时,NMOS管导通,引脚相当于接地,外部输出低电平;当内部输出“1”时,NMOS管截止,由于此时PMOS管也截止,外部输出既不是高电平,也不是低电平,而是高阻态(悬空)。4.3GPIO工作模式4.3GPIO工作模式STM32芯片I/O引脚共有8种工作模式,包括4种输入模式和4种输出模式。输入模式输入浮空(GPIO_Mode_IN_FLOATING)输入上拉(GPIO_Mode_IPU)输入下拉(GPIO_Mode_IPD)模拟输入(GPIO_Mode_AIN)输出模式开漏输出(GPIO_Mode_Out_OD)开漏复用功能(GPIO_Mode_AF_OD)推挽式输出(GPIO_Mode_Out_PP)推挽式复用功能(GPIO_Mode_AF_PP)四种输入四种输出4.3GPIO工作模式4.3.1输入浮空输入浮空:浮空就是逻辑器件与引脚即不接高电平,也不接低电平。4.3GPIO工作模式4.3.2输入上拉输入上拉模式:上拉就是把电位拉高,比如拉到VCC。4.3GPIO工作模式4.3.3输入下拉输入下拉:就是把电位拉低,拉到GND。与上拉原理相似,4.3GPIO工作模式4.3.4模拟输入模拟输入:用于将芯片引脚模拟信号输入到内部的模数转换器,此时上拉电阻开关和下拉电阻开关均关闭,并且肖特基触发器也关闭。4.3GPIO工作模式4.3.5开漏输出开漏输出:输出端连接于N-MOS的漏极,相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。4.3GPIO工作模式4.3.6开漏复用输出开漏复用输出功能:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用),端口必须配置成复用功能输出模式(推挽或开漏)。4.3GPIO工作模式4.3.7推挽式输出推挽式输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个MOS管分别受到互补信号的控制,总是在一个MOS管导通的时候另一个截止。4.3GPIO工作模式4.3.8推挽式复用输出推挽式复用功能:可以理解为GPIO口被用作第二功能时的配置情况(并非作为通用IO口使用)。4.2GPIO内部结构模式名称性质特征浮空输入数字输入可读取引脚电平,若引脚悬空,则电平不确定上拉输入数字输入可读取引脚电平,内部连接上拉电阻,悬空时默认高电平下拉输入数字输入可读取引脚电平,内部连接下拉电阻,悬空时默认低电平模拟输入模拟输入GPIO无效,引脚直接接入内部ADC开漏输出数字输出可输出引脚电平,高电平为高阻态,低电平接VSS推挽输出数字输出可输出引脚电平,高电平接VDD,低电平接VSS复用开漏输出数字输出由片上外设控制,高电平为高阻态,低电平接VSS复用推挽输出数字输出由片上外设控制,高电平为接VDD,低电平接VSS工作模式总结4.3GPIO工作模式4.3.9工作模式选择01如果将需要将引脚信号读入到微控制器,则应选择输入工作模式;如果需要将微控制器内部信号更新到引脚端口,则应选择输出工作模式。02作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。03作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。04作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。4.3GPIO工作模式4.3.9工作模式选择05作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。06作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的某个复用功能模块。07GPIO工作在输出模式时,如果既要输出高电平(VDD)和又要输出低电平(VSS)且输出速度快(如OLED显示屏),则应选择推挽输出。08GPIO工作在输出模式时,如果要求输出电流大,或是外部电平不匹配(5V),则应选择开漏输出。4.4GPIO输出速度输出信号速度和驱动电路速度相匹配将会使电路达到最佳性能。4.4GPIO输出速度STM32微控制器I/O管脚内部有多个响应速度(2MHz,10MHz,50MHz)不同的驱动电路,用户可以根据自己的需要选择合适的驱动电路。一般推荐I/O引脚的输出速度是其输出信号速度的5-10倍。对于连接LED、数码管和蜂鸣器等外部设备,一般设置为2MHz。对于串口来说,这样只需要用2MHz的GPIO的引脚速度就可以了。

对于I2C接口,可以选用10MHz的GPIO引脚速度。对于SPI接口,需要选择呢50MHz的GPIO引脚速度

对于用作FSMC复用功能连接存储器的输出引脚,一般设置为50MHz的I/O引脚速度。如STM32微控制器的GPIO引脚工作于某个输出模式下,通常还需设置其输出速度。这个输出速度指的是I/O口驱动电路的响应速度,而不是输出信号的速度,输出信号的速度取决于软件程序。4.5复用功能重映射复用功能重映射,使芯片使用更加灵活,可以进一步优化PCB设计布局。4.5复用功能重映射用户根据实际需要可以把某些外设的“复用功能”从“默认引脚”转移到“备用引脚”上,这就是外设复用功能的I/O引脚重映射。例:对于STM32F103微控制器的片上外设USART1来说,它的发送端Tx和接收端Rx默认映射到引脚PA9和PA10,但如果此时引脚PA9已被另一复用功能TIM1的通道2(TIM1_CH2)占用,我们就需要对USART1进行重映射,将Tx和Rx重新映射到引脚PB6和PB7,其重映射关系如表。复用功能USART1_REMAP=0USART1_REMAP=1USART1_TxPA9PB6USART1_RxPA10PB7USART1重映像关系表4.6GPIO控制寄存器虽然我们使用的是库函数开发方式,但是对寄存器的学习有利于掌握STM32工作原理,并对需要频繁读写模块编写出高效代码。4.6GPIO控制寄存器端口配置低寄存器(GPIOx_CRL)(x=A..E)0131302928272625242322212019181716CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6[1:0]CNF5[1:0]MODE5[1:0]CNF4[1:0]MODE4[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW

1514131211109876543210CNF3[1:0]MODE3[1:0]CNF2[1:0]MODE2[1:0]CNF1[1:0]MODE1[1:0]CNF0[1:0]MODE0[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位:31:3027:2623:2219:1815:1411:107:63:2CNFy[1:0]:端口x配置位(y=0…7)(Portxconfigurationbits)软件通过这些位配置相应的I/O端口。在输入模式(MODE[1:0]=00):00:模拟输入模式01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式11:保留在输出模式(MODE[1:0]>00):00:通用推挽输出模式01:通用开漏输出模式10:复用功能推挽输出模式11:复用功能开漏输出模式位:29:2825:2421:2017:1613:129:85:41:0MODEy[1:0]:端口x的模式位(y=0…7)(Portxmodebits)软件通过这些位配置相应的I/O端口。00:输入模式(复位后的状态)01:输出模式,最大速度10MHz10:输出模式,最大速度2MHz11:输出模式,最大速度5

温馨提示

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

评论

0/150

提交评论