书签 分享 收藏 举报 版权申诉 / 75
上传文档赚钱

类型第5章-通用输入输出GPIO模块[]课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4782290
  • 上传时间:2023-01-10
  • 格式:PPTX
  • 页数:75
  • 大小:2.59MB
  • 【下载声明】
    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 基于基于标准外设库开发的一般流程标准外设库开发的一般流程开启相应开启相应外设时钟外设时钟确定确定功能功能引脚引脚初始化初始化外设外设硬件硬件应用功能应用功能实现实现若有中断,若有中断,编写中断编写中断服务函数服务函数开启相应外设时钟开启相应外设时钟配置外设功能参数,

    26、配置外设功能参数,调用初始化函数,调用初始化函数,初始化外设相关的初始化外设相关的参数参数使能相应的外设使能相应的外设5.4 GPIO5.4 GPIO模块的模块的HALHAL库接口函数及应用库接口函数及应用5.4.1 GPIO的的HAL库接口库接口函数函数5.4.2 GPIO的的 HAL库应用库应用实例实例 5.4.3 基于基于HAL库开发的一般流程库开发的一般流程 5.4.1 GPIO的的HAL库接口库接口函数函数 GPIO的的HAL库接口函库接口函数的源码在源文件数的源码在源文件stm32f1xx_hal_gpio.c中,中,其对应的头文件其对应的头文件stm32f1xx_hal_gpio

    27、.h声声明了明了GPIO所有的库函数,所有的库函数,共共8种。种。5.4.1 GPIO的的HAL库接口函数库接口函数类型类型函数原型函数原型功能描述功能描述初始化及复位初始化及复位函数函数HAL_GPIO_Init()GPIO初始化函数初始化函数HAL_GPIO_DeInit()复位选定的端口引脚到初始状态复位选定的端口引脚到初始状态引脚功能引脚功能操作函数操作函数HAL_GPIO_ReadPin()读取选定的端口引脚的电平状态读取选定的端口引脚的电平状态HAL_GPIO_WritePin()设置选定的端口引脚输出高电平或低电平设置选定的端口引脚输出高电平或低电平HAL_GPIO_Toggle

    28、Pin()设置选定端口引脚的电平状态翻转设置选定端口引脚的电平状态翻转HAL_GPIO_LockPin()当端口引脚电平状态改变时保持锁定时的当端口引脚电平状态改变时保持锁定时的值值HAL_GPIO_EXTI_IRQHandler()外部中断处理函数外部中断处理函数HAL_GPIO_EXTI_Callback()中断回调函数中断回调函数GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin)GPIO_PinState bitstatus;if(GPIOx-IDR&GPIO_Pin)!=(uint32_t)GPIO_

    29、PIN_RESET)bitstatus=GPIO_PIN_SET;else bitstatus=GPIO_PIN_RESET;return bitstatus;读取读取输入数据寄存器输入数据寄存器IDR的值与指定引脚进行按位与的值与指定引脚进行按位与操作,结果若不为操作,结果若不为0,则返回,则返回高电平;结果若为高电平;结果若为0,则返回,则返回低电平低电平。引脚功能操作函数引脚功能操作函数源码解析:源码解析:GPIOx为引脚的端口号,为引脚的端口号,取值为取值为GPIOAGPIOG,表示,表示指向指向GPIO结构体的指针,用结构体的指针,用于访问端口引脚的寄存器。于访问端口引脚的寄存器。5

    30、.4.1 GPIO的的HAL库接口函数库接口函数GPIO_Pin为常量为常量GPIO_Pin_0表示表示0 x0001;GPIO_Pin_15表示表示0 x8000。引脚号引脚号引脚定义寄存器地址引脚定义寄存器地址GPIO_PIN_0 (uint16_t)0 x0001GPIO_PIN_1 (uint16_t)0 x0002GPIO_PIN_2 0 x0004GPIO_PIN_3 0 x0008GPIO_PIN_4 0 x0010GPIO_PIN_5 0 x0020GPIO_PIN_6 0 x0040GPIO_PIN_7 0 x0080GPIO_PIN_8 0 x0100GPIO_PIN_9

    31、0 x0200GPIO_PIN_10 0 x0400GPIO_PIN_11 0 x080GPIO_PIN_12 0 x1000GPIO_PIN_13 0 x2000GPIO_PIN_140 x4000GPIO_PIN_150 x8000GPIO_PIN_All0 xFFFFGPIO_PinState表示引脚电平表示引脚电平状态,为枚举变量,状态,为枚举变量,typedef enum GPIO_PIN_RESET=0u,GPIO_PIN_SET GPIO_PinState;取值范围为取值范围为GPIO_PIN_SET=1 或者或者GPIO_PIN_RESET=0。5.4.1 GPIO的的HAL库

    32、接口函数库接口函数void HAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin,GPIO_PinState PinState)if(PinState!=GPIO_PIN_RESET)GPIOx-BSRR=GPIO_Pin;else GPIOx-BSRR=(uint32_t)GPIO_Pin ODR&GPIO_Pin)!=0 x00u)GPIOx-BRR=(uint32_t)GPIO_Pin;elseGPIOx-BSRR=(uint32_t)GPIO_Pin;读出读出输出数据寄存器输出数据寄存器ODR的的值与指定引脚进行按位与操作,值与指

    33、定引脚进行按位与操作,结果若为真,表明原来为高电平,结果若为真,表明原来为高电平,则写入则写入BRR寄存器(寄存器(BRR寄存器寄存器写入写入“1”有效,写入有效,写入“0”不影响不影响ODR的状态);若结果为假,表的状态);若结果为假,表明原来为低电平,则控制明原来为低电平,则控制BSRR寄存器低寄存器低16位部分做置位(置位部分做置位(置“1”)操作。操作。函数源码函数源码源码解析:源码解析:5.4.1 GPIO的的HAL库接口函数库接口函数数据输出寄存器数据输出寄存器GPIOx_ODR GPIOx_ODR数据输出寄存器的高数据输出寄存器的高16位为保留位,没有用到;低位为保留位,没有用到

    34、;低16位对应位对应I/O端口相应的引脚,可进行置位或复位操作。端口相应的引脚,可进行置位或复位操作。5.4.1 GPIO的的HAL库接口函数库接口函数端口位清除寄存器端口位清除寄存器GPIOx_BRR 端口位清除寄存器端口位清除寄存器GPIOx_BRR可以对端口数据输可以对端口数据输出寄存器出寄存器GPIOx_ODR中的每位中的每位进行进行复位复位操作,即操作,即GPIOx_BRR只能改变引脚状态为低电平。只能改变引脚状态为低电平。u对对GPIOx_BRR的低的低16位的某位的某位置位置“1”,则对应的,则对应的I/O端口端口引脚置输出低电平引脚置输出低电平“0”;u对对GPIOx_BRR的

    35、低的低16位的某位的某位置位置“0”,则对应的,则对应的I/O端口端口引脚状态不变。引脚状态不变。5.4.1 GPIO的的HAL库接口函数库接口函数 将将PB5置为低电平,即将置为低电平,即将GPIOB_ODR寄存器的第寄存器的第5位位ODR5置置“0”(注:寄存器(注:寄存器的位数为的位数为015),则可以有),则可以有三种方式三种方式实现:实现:举例举例位15141312111098765432100 x00201111111111011111位15141312111098765432100 x00200000000000100000操作操作GPIOx_BRR寄存器寄存器GPIOB-BRR

    36、=0 x0020(0000 0000 0010 0000););操作操作GPIOx_ODR寄存器寄存器GPIOB-ODR=0 xffef(1111 1111 1101 1111););方法一方法一操作操作GPIOx_BSRR寄存器寄存器GPIOB-BSRR=0 x00200000(0000 0000 0010 0000 0000 0000 0000 0000);方法二方法二方法三方法三 5.4.1 GPIO的的HAL库接口函数库接口函数 采用采用基于基于HAL库设计库设计方式,方式,利用两个利用两个GPIO引引脚输出高低电平控制发光脚输出高低电平控制发光二极管,并按一定时间间二极管,并按一定时

    37、间间隔改变隔改变IO口电平,实现灯口电平,实现灯光闪烁效果。光闪烁效果。功能功能硬件硬件设计设计 当引脚输出当引脚输出为低电平时,为低电平时,LED灯亮,灯亮,当当引脚引脚输出输出为高电平时,为高电平时,LED灯灭。灯灭。5.4.2 GPIO的的HAL库应用库应用实例实例基于基于HAL库的软件设计流程如库的软件设计流程如图所示:图所示:建立建立STM32CubeMX工程;工程;进行进行功能参数功能参数配置;配置;生成生成工程工程代码代码;修改修改代码完成应用程序代码完成应用程序设计设计;下载下载到开发板测试。到开发板测试。5.4.2 应用应用实例实例基于基于HAL库实现库实现LED闪烁闪烁 5

    38、.4.2 GPIO的的HAL库应用库应用实例实例设计步骤设计步骤新建新建STM32CubeMX工程,选择设计采用的工程,选择设计采用的MCU注意注意 所所建工程文件名必须是建工程文件名必须是英文名称英文名称,且,且必须是必须是英文路径英文路径。在在D盘或其他盘符目录下新建一个文件夹,用来存盘或其他盘符目录下新建一个文件夹,用来存放后面建立的放后面建立的STM32CubeMX工程。工程。设计步骤设计步骤新建新建STM32CubeMX工程,选择设计采用的工程,选择设计采用的MCU 在在主界面中通过单击主界面中通过单击“New Project”下下“ACCESS TO MCU SELECTOR”按按

    39、钮或钮或通过菜单栏中的通过菜单栏中的“File”“New Project”新建一个新建一个工程工程打开打开STM32CubeMX软件软件设计步骤设计步骤新建新建STM32CubeMX工程,选择设计采用的工程,选择设计采用的MCU 选择选择所用所用MCU对应的对应的内核内核,选择选择“ARM Cortex-M3”;在在“Series”选项选项中选择对应中选择对应的的系列系列,如,如“SMT32F1”;在在右侧右侧“MCUs/MPUs List”中中找到该系列下所使用的找到该系列下所使用的微控微控制器芯片制器芯片型号型号 选中选中并单击对应芯片型号,并单击对应芯片型号,在在“MCUs/MPUs L

    40、ist”上方会上方会显示该芯片对应的基本显示该芯片对应的基本信息。信息。也也可以通过在可以通过在搜索栏搜索栏内直接输入芯片型号采内直接输入芯片型号采用搜索的方式来快速完成用搜索的方式来快速完成。设计步骤设计步骤STM32CubeMX功能参数配置功能参数配置 在在New Project窗口完成窗口完成MCU的相关设置后,双击所选择的具体的相关设置后,双击所选择的具体芯片,进入芯片,进入STM32CubeMX的主的主界面,完成以下过程:界面,完成以下过程:RCC和时和时钟配置钟配置MCU引脚引脚选择选择GPIO引脚引脚参数配置参数配置设计步骤设计步骤STM32CubeMX功能参数功能参数配置(配置

    41、(RCC配置配置)在在“Categories”栏目栏目中中的的“System Core”中中,找到找到“RCC”选项选项 时钟信号时钟信号选择选择HSE作作为系统的外部时钟源,为系统的外部时钟源,HSE选择选择“Crystal/Ceramic Resonator”(晶振晶振/陶陶瓷谐振器瓷谐振器)LSE选择选择“Disable”设计步骤设计步骤STM32CubeMX功能参数配置(功能参数配置(时钟配置时钟配置)点点开开“Clock Configuration”选项选项栏,进行系统时钟配置栏,进行系统时钟配置 采用采用HSE外部晶振,频外部晶振,频率为率为8MHz,通过,通过PLL的的9倍频,使

    42、得倍频,使得系统时钟系统时钟SYSCLK为为72MHz;APB2时钟与时钟与HCLK相同,相同,所以不需要所以不需要分频;分频;HCLK经经2分频分频得到得到APB1的时钟频率为的时钟频率为PCLK1=36MHz,设计步骤设计步骤STM32CubeMX功能参数配置功能参数配置(MCU引脚选择)引脚选择)在在STM32CubeMX的主界面的主界面的的左侧左侧“Categories”栏目栏目中中的的“System Core”中中,找到找到“GPIO”选项,选项,在在STM32CubeMX的主界面的右侧的主界面的右侧“Pinout view”芯片引脚图中芯片引脚图中选中选中PE5、PB5引脚,设置为

    43、引脚,设置为GPIO_Output选项。选项。设计步骤设计步骤STM32CubeMX功能参数配置功能参数配置(GPIO引脚参数配置)引脚参数配置)选择选择好引脚后,在好引脚后,在左侧左侧“Configuration”栏目栏目下显下显示所选择的引脚,单击,对示所选择的引脚,单击,对应显示该引脚的参数设置表,应显示该引脚的参数设置表,设置相应参数,如输出电平、设置相应参数,如输出电平、模式、用户标签模式、用户标签等。等。设计步骤设计步骤生成生成工程代码工程代码 点击点击STM32CubeMX的主的主界面中的界面中的“Project Manager”菜单,在弹出的菜单,在弹出的页面中单击页面中单击“

    44、Project”项项,输入输入项目名称项目名称“Demo_GPIO”,选择,选择存放存放路径。路径。用户用户可以自己定义,项目可以自己定义,项目名称一般应反映项目内容,名称一般应反映项目内容,便于便于管理管理说明说明设计步骤设计步骤生成生成工程代码工程代码 点击点击“Code Generator”选项选项 在在“STM32Cube MCU packages and embedded software packs”栏内选择第栏内选择第二个单选项二个单选项“Copy only the necessary library files”,仅仅拷贝必须的库文件拷贝必须的库文件;在在“Generated

    45、files”栏内复栏内复选第选第1、3、4选项选项设计步骤设计步骤生成生成工程代码工程代码 单击单击右上角右上角“GENERATE CODE”按钮,即可生成对按钮,即可生成对应工程代码。应工程代码。成功后弹出成功后弹出Code Generation窗口,提示代码生成成功,窗口,提示代码生成成功,用户可以根据下一步需要选用户可以根据下一步需要选择打开文件夹、打开项目或择打开文件夹、打开项目或关闭。关闭。设计步骤设计步骤编写应用程序编写应用程序 使用使用STM32CubeMX生成的工生成的工程,其用户功能代码即应用程序程,其用户功能代码即应用程序代码的编写代码的编写有位置规范有位置规范要求要求。本

    46、实例的用户应用程序代码写在本实例的用户应用程序代码写在/*USER CODE BEGIN 3*/和和 /*USER CODE END 3*/之间:之间:while(1)/*USER CODE END WHILE*/*USER CODE BEGIN 3*/HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);/LED1-PB5状态翻转状态翻转 HAL_Delay(100);/延时延时100毫秒毫秒 HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);/LED2-PE5状态翻转状态翻转 HAL_Delay(100);/延时延时1

    47、00毫秒毫秒 用户用户自己编写的应用程序需写自己编写的应用程序需写在在/*USER CODE BEGIN x*/和和 /*USER CODE END x*/之间。之间。写写在其他地方,在使用在其他地方,在使用STM32CubeMX重新配置和生重新配置和生成工程时,会删除该代码。成工程时,会删除该代码。说明说明注意注意设计步骤设计步骤下载调试验证下载调试验证 单击单击keil uVision5工具栏的魔法棒工具栏的魔法棒“Options for Target”按钮,打开配置窗口页按钮,打开配置窗口页面,面,在在“Target”选项选项卡卡中将中将“Xtal(MHz)”改为改为8.0,采用采用8M

    48、Hz外部晶外部晶振振配置配置Keil5相关工程相关工程,重新,重新编译。编译。设计步骤设计步骤下载调试验证下载调试验证 在在Output选项选项卡中,勾选卡中,勾选Create HEX File选项,在选项,在工程重新编译后,工程重新编译后,会生成相应的会生成相应的HEX文件。文件。设计步骤设计步骤下载调试验证下载调试验证 在在“Debug”选项选项卡中,根卡中,根据所使用的开发板下载调试工据所使用的开发板下载调试工具,选择相应的选项,这里具,选择相应的选项,这里选选择择ST-Link调试调试下载器下载器 GPIO工程源码解析工程源码解析main.c gpio.cmain.h gpio.h针对

    49、针对GPIO-LED闪烁闪烁工程相关源码共工程相关源码共四个文件四个文件 /*Includes 头文件头文件*/#include main.h#include gpio.h /*函数声明函数声明*/void SystemClock_Config(void);/设置系统时钟设置系统时钟int main(void)/*将所有的外设复位将所有的外设复位,并并初始化初始化Flash和系统滴答时钟和系统滴答时钟Systick*/HAL_Init();/*配置系统时钟配置系统时钟*/SystemClock_Config();/*GPIO初始化,函数实现定义在初始化,函数实现定义在gpio.c文件中文件中

    50、*此代码对应于此代码对应于STM32CubeMX软件中的软件中的Pinout&Configuration设置的引脚参数设置的引脚参数 */MX_GPIO_Init();while(1)/以下为用户编写的应用程序代码以下为用户编写的应用程序代码 /*调用调用HAL_GPIO_TogglePin函数函数 使使LED1-PB5状态翻转状态翻转*/HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);HAL_Delay(100);/调用调用HAL库函数库函数HAL_Delay延时延时100毫秒毫秒 /*调用调用HAL_GPIO_TogglePin函数函数 使使LED2

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第5章-通用输入输出GPIO模块[]课件.pptx
    链接地址:https://www.163wenku.com/p-4782290.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库