第5章-通用输入输出GPIO模块[]课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第5章-通用输入输出GPIO模块[]课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通用 输入输出 GPIO 模块 课件
- 资源描述:
-
1、第第5 5章章 通用输入输出通用输入输出GPIOGPIO模块模块STM32本章知识与能力要求u 了解了解GPIO的基本概念;的基本概念;u 理解理解STM32F103微控制器微控制器GPIO的内部结构、工作模式和的内部结构、工作模式和使用特性;使用特性;u 理解理解GPIO的输入输出模式;的输入输出模式;u 熟悉熟悉STM32F103微控制器微控制器GPIO相关的标准外设库函数和相关的标准外设库函数和HAL库函数;库函数;u 掌握掌握基于标准外设库实现基于标准外设库实现LED灯闪烁的方法;灯闪烁的方法;u 掌握掌握基于基于HAL库实现库实现LED灯闪烁的方法灯闪烁的方法。5.1 GPIO概述概
2、述5.2 STM32的的GPIO工作原理工作原理5.3 GPIO模块的标准外设库接口模块的标准外设库接口函数及应用函数及应用5.4 GPIO模块的模块的HAL库接口函数库接口函数及应用及应用5.5 编程思想之模块化编程编程思想之模块化编程第5章 通用输入输出GPIO模块5.1 GPIO概述 GPIO端口内部是由一个个寄存器组成,端口内部是由一个个寄存器组成,一个引脚对应一个寄存器或多个引脚对应一一个引脚对应一个寄存器或多个引脚对应一个多位的寄存器个多位的寄存器,改变寄存器中的数据改变寄存器中的数据就就可可以改变外设的工作方式。以改变外设的工作方式。与与51单片机相比,单片机相比,STM32拥有
3、更多的拥有更多的I/O引脚,引脚,其驱动能力更强,控制方式更多更灵活,功能其驱动能力更强,控制方式更多更灵活,功能也更强大。也更强大。5.2.1 GPIO引脚引脚5.2.2 GPIO内部结构内部结构5.2.3 GPIO工作模式工作模式5.2.4 GPIO输出速度输出速度5.2 STM32的GPIO工作原理5.2.1 STM32F103引脚图引脚图 STM32F103ZET6一共有一共有144个引脚,这些引个引脚,这些引脚共分为六大类:脚共分为六大类:&电源引脚电源引脚:VDD、VSS、VREF+、VREF-、VDDA、VSSA、VBAT;&晶振引脚晶振引脚:PC14、PC15和和OSC_IN、
4、OSC_OUT&复位引脚复位引脚:NRST。&BOOT引脚引脚:BOOT0、BOOT1;&程序下载引脚程序下载引脚:PA13、PA14、PA15、PB3和和PB4&GPIO引脚引脚:共有共有7组组GPIO,分别为:,分别为:PA组组:PA0PA15;PB组组:PB0 PB15;PC组组:PC0 PC15;PD组组:PD0 PD15;PE组组:PE0PE15;PF组组:PF0PF15;PG组组:PG0PG15;大多数引脚还通过复用技术兼具其他专用大多数引脚还通过复用技术兼具其他专用功能功能。5.2.2 GPIO内部结构内部结构左侧连接左侧连接MCU内部内部中间部分为中间部分为GPIO引脚的引脚的
5、基本电路。基本电路。右侧为右侧为MCU引出的引出的I/O外设引脚外设引脚STM32F103系列微控制器系列微控制器GPIO端口的基本结构端口的基本结构5.2.2 GPIO内部结构内部结构GPIOPA组组PB组组PC组组PD组组PE组组PF组组PG组组PA0PA15PB0PB15PC0PC15PD0PD15PE0PE15PF0PF15PG0PG1516个引脚个引脚16个引脚个引脚16个引脚个引脚16个引脚个引脚16个引脚个引脚16个引脚个引脚16个引脚个引脚 STM32F103系列微系列微控制器共有控制器共有7组组GPIO端口,每一组端口包端口,每一组端口包括括16个引脚,如个引脚,如PA组组端
6、口,包括端口,包括PA0PA15共共16个个引脚引脚。5.2.2 GPIO内部结构内部结构配置寄存器配置寄存器(32位)位)GPIOx_CRLGPIOx_CRH数据寄存器数据寄存器(32位)位)GPIOx_IDRGPIOx_ODR置位置位/复位复位寄存器寄存器(16位)位)GPIOx_BSRR复位寄存器复位寄存器GPIOx_BRR锁定寄存器锁定寄存器(32位)位)GPIOx_LCKR 每每组组GPIO端口端口(Px)都由都由7个寄存器组成,负责控制该端口的个寄存器组成,负责控制该端口的16个引脚个引脚Px0 Px15。5.2.3 GPIO工作模式工作模式工作模式工作模式4种输出模式种输出模式推
7、挽输出推挽输出开漏输出开漏输出复用推挽输出复用推挽输出 复用开漏输出复用开漏输出4种输入模式种输入模式上拉输入上拉输入下拉输入下拉输入模拟输入模拟输入浮空输入浮空输入 推挽结构一般指两个推挽结构一般指两个MOS管受管受互补信号的控制,按互补对称的互补信号的控制,按互补对称的方式连接,任意时刻总是一个三方式连接,任意时刻总是一个三极管导通,另一个截止极管导通,另一个截止。推挽输出模式(推挽输出模式(Push-Pull,PP)使用使用推挽输出模式的目的:增大输出电流,即增加输出引脚的驱动能力,推挽输出模式的目的:增大输出电流,即增加输出引脚的驱动能力,提高电路的负载能力和提高开关的速度。提高电路的
8、负载能力和提高开关的速度。推挽模式下,I/O引脚输出高电平时,P-MOS导通推挽模式下,I/O引脚输出低电平时,N-MOS导通 漏极漏极开路(开路(OD)输)输出与集电极开路输出十出与集电极开路输出十分相似,即只有下拉分相似,即只有下拉MOS管没有上拉管没有上拉MOS管,管,MOS管的漏极直接与管的漏极直接与I/O引脚相连,不与电源连引脚相连,不与电源连接,处于悬空状态,称接,处于悬空状态,称之为漏极开路。之为漏极开路。开漏输出模式(开漏输出模式(Open-Drain,OD)利用外部电利用外部电路的驱动能路的驱动能力,减少芯力,减少芯片内部的驱片内部的驱动。动。无上拉电阻时,只无上拉电阻时,只
9、能输出低电平,要能输出低电平,要输出高电平,则必输出高电平,则必需外接上拉电阻。需外接上拉电阻。开漏输出能开漏输出能够方便的实够方便的实现现“逻辑与逻辑与”功能。功能。开漏输出模式的应用开漏输出模式的应用场合场合复用功能输出模式(复用功能输出模式(Alternate Function,AF)STM32F103系列微控制器有系列微控制器有144个引脚,其中的个引脚,其中的GPIO引脚除了作为引脚除了作为通用输入通用输入/输出引脚使用外,还可以输出引脚使用外,还可以作为片上外设(如串口、作为片上外设(如串口、ADC、IIC等)的等)的I/O引脚,即一个引脚可以作引脚,即一个引脚可以作为多个外设引脚
10、使用,称为复用为多个外设引脚使用,称为复用I/O端口端口AFIO(Alternate Function I/O),但一个引脚某一时刻),但一个引脚某一时刻只能使只能使用复用功能中的一个用复用功能中的一个。当当I/O引脚作为复引脚作为复用功能时,可选择用功能时,可选择复用推挽输出模式复用推挽输出模式或复用开漏输出模或复用开漏输出模式,在选择复用开式,在选择复用开漏输出模式时,需漏输出模式时,需外接上拉电阻。外接上拉电阻。输入模式输入模式上拉输入模上拉输入模式(式(Input Pull-up)上拉输入模式,引脚内部有个上拉电阻,通过开关连接到电源VDD,当I/O引脚无输入信号时,默认输入高电平。下
11、拉输入模下拉输入模式(式(Input Pull-down)下拉输入模式和上拉输入模式正好相反,当I/O引脚无输入信号时,默认输入低电平。浮空输入模浮空输入模式式浮空输入模式下引脚内部既不接上拉电阻也不连接下拉电阻,直接经施密特触发器输入I/O引脚的信号。模拟输入模式模拟输入模式 模拟输入模拟输入模式下,施密特触发器关闭,既不接上拉模式下,施密特触发器关闭,既不接上拉电阻也不连接下拉电阻,引脚信号连接到芯片内部的电阻也不连接下拉电阻,引脚信号连接到芯片内部的片上外设,其典型应用是片上外设,其典型应用是A/D模拟输入,对外部信号模拟输入,对外部信号进行采集。进行采集。5.2.4 GPIO输出速度输
12、出速度输出速度并不是输出信输出速度并不是输出信号的速度,而是指号的速度,而是指I/O口驱动电路的响应速度。口驱动电路的响应速度。STM32F103系列微控制系列微控制器的器的I/O引脚的输出速引脚的输出速度有度有3种选择:种选择:2MHz、10MHz和和50MHz。实际开发中,需要结合系实际开发中,需要结合系统实际情况选择合适的响统实际情况选择合适的响应速度,以确保信号的稳应速度,以确保信号的稳定性和降低功耗等。定性和降低功耗等。一般常用一般常用的外设如的外设如LED、蜂鸣器等建议采用、蜂鸣器等建议采用2MHz的输出速度,而用作的输出速度,而用作IIC、SPI等复用功能的输出引脚时,则尽量选择
13、高响应速度如等复用功能的输出引脚时,则尽量选择高响应速度如10MHz或或50MHz。5.3 GPIO5.3 GPIO模块的标准外设库接口函数及应用模块的标准外设库接口函数及应用5.3.1 GPIO标准标准外设外设库接口库接口函数函数5.3.2 GPIO标准外设库应用标准外设库应用实例实例5.3.3 基于基于标准外设库开发的一般流标准外设库开发的一般流程程 5.3.1 GPIO标准外设库接口函数标准外设库接口函数类型类型函数原型函数原型功能描述功能描述初始化及初始化及复位函数复位函数GPIO_Init()根据根据GPIO初始化结构参数初始化初始化结构参数初始化GPIOx外设寄存器外设寄存器GPI
14、O_DeInit()将将GPIOx外设寄存器恢复为默认复位值外设寄存器恢复为默认复位值GPIO_StructInit()GPIO结构体初始化结构体初始化GPIO_AFIODeInit()取消所有的复用功能取消所有的复用功能引脚功能引脚功能操作函数操作函数GPIO_Write()置位或复位选定的置位或复位选定的GPIO数据端口数据端口GPIO_WriteBit()置位或复位选定的置位或复位选定的GPIO端口引脚端口引脚GPIO_SetBits()置位选定的置位选定的GPIO端口引脚端口引脚GPIO_ResetBits()复位选定的复位选定的GPIO端口引脚端口引脚GPIO_ReadInputDa
15、ta()读取选定的读取选定的GPIO输入端口数据输入端口数据GPIO_ReadInputDataBit()读取选定的读取选定的GPIO输入端口引脚数据输入端口引脚数据GPIO_ReadOutputDataBit()读取选定的读取选定的GPIO输出端口数据输出端口数据GPIO_ReadOutputData()读取选定的读取选定的GPIO输出端口引脚数据输出端口引脚数据外部中断外部中断处理函数处理函数GPIO_EXTILineConfig();外设端口作为中断线号输入外设端口作为中断线号输入GPIO_EventOutputConfig()事件输出事件输出 GPIO的标准外设库的标准外设库接口函数的
16、源码在源接口函数的源码在源文件文件stm32f10 x_gpio.c中,其对应的头文件中,其对应的头文件stm32f10 x_gpio.h声明声明了了GPIO所有的库函数,所有的库函数,共共18种。种。5.3.1 GPIO标准外设库接口函数标准外设库接口函数如果想要查看具体的如果想要查看具体的函数定义实现,可在函数定义实现,可在keil 5工程中将光标放工程中将光标放在想要查看的函数上,在想要查看的函数上,然后然后右键选择右键选择“Go To Definition of”,即可即可跳转到相应函数的函跳转到相应函数的函数体中数体中 5.3.1 GPIO标准外设库接口函数标准外设库接口函数 GPI
17、O_Init()函数用于初函数用于初始化始化GPIO,有两个输入参,有两个输入参数:数:第一个参数用于指定第一个参数用于指定GPIO的具体端口的具体端口x(x=A,B,C,D,E)第二个参数根据第二个参数根据GPIO_InitStruct结构体变量结构体变量中指定的参数初始化中指定的参数初始化GPIO,GPIO_InitStruct是指向是指向GPIO_InitTypeDef结构体的结构体的指针。指针。GPIO_Init()函数源码函数源码 5.3.1 GPIO标准外设库接口函数标准外设库接口函数GPIO_InitTypeDef结构体成员结构体成员取值范围取值范围GPIO_PinGPIO_Pi
18、n_0 GPIO_Pin_15GPIO_Pin_AllGPIO_SpeedGPIO_Speed_10MHzGPIO_Speed_2MHzGPIO_Speed_50MHzGPIO_ModeGPIO_Mode_AINGPIO_Mode_IN_FLOATINGGPIO_Mode_IPDGPIO_Mode_IPUGPIO_Mode_Out_ODGPIO_Mode_Out_PPGPIO_Mode_AF_ODGPIO_Mode_AF_PP GPIO的配置参数,如具体的的配置参数,如具体的GPIO引脚、输出速度、引脚、输出速度、GPIO引引脚的工作模式等。脚的工作模式等。GPIO_InitTypeDef结构
19、体结构体定义在定义在stm32f10 x_gpio.h 5.3.1 GPIO标准外设库接口函数标准外设库接口函数 5.3.2 GPIO标准外设库应用实例标准外设库应用实例 采用基于标准外设采用基于标准外设库设计方式,利用单个库设计方式,利用单个GPIO引脚输出高低电平引脚输出高低电平控制发光二极管,并按控制发光二极管,并按一定时间间隔改变一定时间间隔改变I/O口电平,实现灯光闪烁口电平,实现灯光闪烁效果。效果。功能功能硬件硬件设计设计 改变限流电阻改变限流电阻R1的值可改变发光二极的值可改变发光二极管的亮度,一般选用管的亮度,一般选用400 1K 电阻。电阻。主流程图由两部主流程图由两部分构成
20、:分构成:初始化函数部分;初始化函数部分;一个无限循环功一个无限循环功能部分。能部分。5.3.2 GPIO标准外设库应用实例标准外设库应用实例代码实现代码实现新建一个新建一个led.h头文件头文件新建一个新建一个led.c文件文件main.c文件文件 5.3.2 GPIO标准外设库应用实例标准外设库应用实例 用于存放用于存放led.c文件的文件的管脚定义、全局变量声管脚定义、全局变量声明和函数声明等内容。明和函数声明等内容。#ifndef _LED_H#define _LED_H#include stm32f10 x.hvoid LED_Init(void);/函数声明函数声明#endifle
21、d.h头文件头文件 5.3.2 GPIO标准外设库应用实例标准外设库应用实例#include led.hvoid LED_Init(void)GPIO_InitTypeDef GPIO_InitStructure;/定义一个定义一个GPIO_InitTypeDef类型的结构体变量类型的结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);/开启开启GPIOB的时钟的时钟 PIO_InitStructure.GPIO_Pin=GPIO_Pin_5;/选择要使用的选择要使用的I/O引脚,此处选择引脚,此处选择PB5引脚引脚 GPIO_I
22、nitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/设置引脚输出模式为推挽输出设置引脚输出模式为推挽输出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/设置引脚的输出速度为设置引脚的输出速度为50MHz GPIO_Init(GPIOB,&GPIO_InitStructure);/调用初始化库函数初始化调用初始化库函数初始化GPIOB端口端口新建一个新建一个led.c文文件:件:用于用于GPIO端口初端口初始化操作,即硬件驱始化操作,即硬件驱动程序的编写。动程序的编写。5.3.2 GPIO标准外设库应用实例标准外设库
23、应用实例#include stm32f10 x.h#include led.h/*函数名:函数名:Delay*功能描述:不精确的延时,延时时间功能描述:不精确的延时,延时时间=nCount/72000,单位为单位为ms,72MHz为为STM32主频主频*输入参数:输入参数:nCount*输出参数:无输出参数:无*/void Delay(_IO u32 nCount)for(;nCount!=0;nCount-);int main(void)LED_Init();while(1)GPIO_SetBits(GPIOB,GPIO_Pin_5);/调用调用GPIO_SetBits函数,将函数,将PB5
24、置为高电平,熄灭置为高电平,熄灭LED Delay(720000);/调用延迟函数,延迟调用延迟函数,延迟10ms GPIO_ResetBits(GPIOB,GPIO_Pin_5);/调用调用GPIO_ReSetBits函数,将函数,将PB5置为低电平,点亮置为低电平,点亮LED Delay(720000);/调用延迟函数,延迟调用延迟函数,延迟10ms main.c文件的代码文件的代码 5.3.2 GPIO标准外设库应用实例标准外设库应用实例代码完成后,代码完成后,单单击击Keil中的编译按钮中的编译按钮 进行进行编编译译;若提示程序有错误,则若提示程序有错误,则需认真检查一下代码,需认真检
25、查一下代码,找出错误所在,直到编找出错误所在,直到编译无错误;译无错误;如果提示无错误,就可如果提示无错误,就可以通过调试和下载工具,以通过调试和下载工具,将编译好的可执行文件将编译好的可执行文件下载下载到芯片中,查看并到芯片中,查看并验证实验结果。验证实验结果。5.3.2 GPIO标准外设库应用实例标准外设库应用实例 5.3.3 基于基于标准外设库开发的一般流程标准外设库开发的一般流程开启相应开启相应外设时钟外设时钟确定确定功能功能引脚引脚初始化初始化外设外设硬件硬件应用功能应用功能实现实现若有中断,若有中断,编写中断编写中断服务函数服务函数开启相应外设时钟开启相应外设时钟配置外设功能参数,
展开阅读全文