《CH03-02-STM32的GPIO模块原理.pptx》由会员分享,可在线阅读,更多相关《CH03-02-STM32的GPIO模块原理.pptx(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式系统原理与开发设计主讲人:赖树明东莞理工学院STM32的GPIO模块原理0101 STM32F4 GPIO模块原理GPIO口介绍GPIO相关寄存器外设时钟使能寄存器寄存器表示GPIO 控制LED实验示例STM32F40 xGPIO控制 GPIO口概述01GPIO口就MCU用来连接外部世界、与外界交换数据的桥梁。p51单片机:IO口是分组的,每组8个,IO口分组用数字表示。P2、P1口只有输入输出功能;P3口上还能复用成串口、定时器等;pSTM32单片机:IO口功能比较多,比较复杂;IO口同样是分组的方式,每组16个,命名的方式为英文字母,(比如:STM32F407ZGT6:AG-共112
2、个)概念51和STM32 GPIOSTM32F40 xGPIO控制 GPIO口介绍01p受控 I/O 多达 16 个p输出状态:推挽或开漏+上拉/下拉 -提升驱动能力p从输出数据寄存器(GPIOx_ODR)或外设(复用功能输出)输出数据p可为每个 I/O 选择不同的输出速度p输入状态:浮空、上拉/下拉、模拟 p将数据输入到输入数据寄存器(GPIOx_IDR)或外设(复用功能输入)p置位和复位寄存器(GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限p锁定机制(GPIOx_LCKR),可冻结 I/O 配置p模拟功能p复用功能输入/输出选择寄存器(一个 I/O 多达16 个复用功能)p
3、快速翻转,每次翻转最快只需要两个时钟周期p引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种STM32 GPIO特征STM32F40 xGPIO控制 GPIO口介绍01 输入浮空 输入上拉 输入下拉 模拟功能 具有上拉或下拉功能的开漏输出 具有上拉或下拉功能的推挽输出 具有上拉或下拉功能的复用功能推挽 具有上拉或下拉功能的复用功能开漏STM32F4 GPIO功能STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明GPIO 端口模式寄存器(GPIOx_MODER)(x=A.I)MODERy1:0:端口 x 配置位 (y=0.15)用于配置 I/O 方向模式
4、。00:输入(复位状态)01:通用输出模式10:复用功能模式 11:模拟模式示例:GPIOB的第3个管脚为输出模式?GPIOB_MODER&=(0 x3 6);GPIOB_MODER|=(0 x1 6);STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明GPIO 端口输出类型寄存器(GPIOx_OTYPER)(x=A.I)这些位通过软件写入,用于配置 I/O 端口的输出类型。位 31:16 保留,必须保持复位值。位 15:0 OTy1:0:端口 x 配置位(y=0.15)0:输出推挽(复位状态)1:输出开漏STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明 GP
5、IO 端口输出速度寄存器(GPIOx_OSPEEDR)(x=A.I/)用于配置 I/O 输出速度。OSPEEDRy1:0:端口 x 配置位(y=0.15)00:2 MHz(低速)01:25 MHz(中速)10:50 MHz(快速)11:30 pF 时为 100 MHz(高速)说明:GPIO口的速度越快,功耗越高。STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明 GPIO 端口上拉/下拉寄存器(GPIOx_PUPDR)(x=A.I/)用于配置 I/O 上拉或下拉。PUPDRy1:0:端口 x 配置位 (y=0.15)00:无上拉或下拉(浮空)01:上拉 10:下拉 11:保留S
6、TM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明GPIO 端口输入数据寄存器(GPIOx_IDR)(x=A.I)这个寄存器数值反应了当前IO口的状态结果。这些位为只读形式,只能在只读模式下访问,包含相应 I/O 端口的输入值。位 31:16 保留,必须保持复位值。位 15:0 IDRy15:0:端口输入数据(y=0.15)STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明端口输出数据寄存器(GPIOx_ODR)(x=A.I)该寄存器写1/0即可控制IO引脚上的电平状态。位 31:16 保留,必须保持复位值。位 15:0 ODRy15:0:端口输出数据(y=0.1
7、5)STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明GPIO 端口置位/复位寄存器(GPIOx_BSRR)(x=A.I)该寄存器可以控制GPIO引脚的电平,输出高电平和输出低电平位分别是使用低16位和高16位实现。注意:1)该寄存器对写0不敏感,往任何一个位写0时,GPIO引脚电平不会发生任何变化;2)输出高电平或低电平都是往对应的位写1,而不是写0。3)如果同时对 BSx 和 BRx 置位,则 BSx 的优先级更高。31:16 BRy:端口 x 复位位 y (y=0.15)(让IO口输出低电平)0:不会对相应的 ODRx 位执行任何操作;1:对相应的 ODRx 位进行复位
8、示例:GPIOC的第4个端口输出低电平。GPIOC_BSRR|=1 20;STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明 GPIO 端口配置锁定寄存器(GPIOx_LCKR)(x=A.I)锁定寄存器:锁定IO口的模式,一旦锁定,程序中不能修改IO口的模式了,想要修改,必须重新下载新的程序。位 31:17 保留,必须保持复位值;位 16 LCKK16:锁定键(Lock key)0:端口配置锁定键未激活。1:端口配置锁定键已激活。锁定键写序列:WR LCKR16=1+LCKR15:0 WR LCKR16=0+LCKR15:0WR LCKR16=1+LCKR15:0 RD LCK
9、RRD LCKR16=1(此读操作为可选操作,但它可确认锁定已激活)位 15:0 LCKy:端口 x 锁定位 y (y=0.15)这些位只能在 LCKK 位等于“0”时执行写操作。STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明GPIO 复用功能低位寄存器(GPIOx_AFRL)(x=A.I)该寄存器用于配置复用功能 I/O,一个引脚除输出输出功能外,还会有利用的功能。位 31:0 AFRLy:端口 x 位 y 的复用功能选择(y=0.7)AFRLy 选择:0000:AF00100:AF41000:AF81100:AF120001:AF10101:AF51001:AF9110
10、1:AF130010:AF20110:AF61010:AF101110:AF140011:AF30111:AF7 1011:AF111111:AF15STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明GPIO 复用功能低位寄存器(GPIOx_AFRL)(x=A.I)0000:AF00001:AF10010:AF20011:AF30100:AF40101:AF50110:AF60111:AF7 1000:AF81001:AF91010:AF101011:AF111100:AF121101:AF131110:AF141111:AF15STM32F40 xGPIO控制 GPIO相关寄
11、存器01寄存器说明GPIO 复用功能高位寄存器(GPIOx_AFRH)(x=A.I)该寄存器用于配置复用功能 I/O,一个引脚除输出输出功能外,还会有利用的功能。位 31:0 AFRLy:端口 x 位 y 的复用功能选择(y=0.7)AFRLy 选择:0000:AF00100:AF41000:AF81100:AF120001:AF10101:AF51001:AF91101:AF130010:AF20110:AF61010:AF101110:AF140011:AF30111:AF7 1011:AF111111:AF15STM32F40 xGPIO控制 GPIO相关寄存器01寄存器说明GPIO 复
12、用功能低位寄存器(GPIOx_AFRH)(x=A.I)0000:AF00001:AF10010:AF20011:AF30100:AF40101:AF50110:AF60111:AF7 1000:AF81001:AF91010:AF101011:AF111100:AF121101:AF131110:AF141111:AF15STM32F40 xGPIO控制外设时钟使能寄存器01概述STM32F407 内部有很多片上外设模块,而具体一个产品中是不会全部使用到。为了降低功耗,芯片内部给每个外设模块设计一个时钟控制开关,当不需要使用某个外设时候,可以禁止它时钟。相关寄存器涉 及 到 的 寄 存 器 有
13、 RCC_AHB1ENR,RCC_AHB2ENR,RCC_AHB3ENR,RCC_APB1ENR,RCC_APB2ENR。使能寄存器特性这些寄存器中每个位(有的位保留)都对应一个外设模块的时钟控制,写0到对应位禁用对应的外设,写1到对应位使能对应外设。写0:关闭相应模块时钟;写1:使能相应模块时钟寄存器说明RCC_AHB1 外设时钟使能寄存器(RCC_AHB1ENR)寄存器作用:对 AHB1外设总线上对应的模块时钟使能寄存器说明RCC_AHB2 外设时钟使能寄存器(RCC_AHB2ENR)寄存器作用:对 AHB2外设总线上对应的模块时钟使能STM32F40 xGPIO控制外设时钟使能寄存器05
14、寄存器说明RCC_AHB3 外设时钟使能寄存器(RCC_AHB3ENR)寄存器作用:对 AHB3外设总线上对应的模块时钟使能寄存器说明RCC_APB1 外设时钟使能寄存器(RCC_APB1ENR)寄存器作用:对 APB1外设总线上对应的模块时钟使能STM32F40 xGPIO控制外设时钟使能寄存器05寄存器说明RCC APB2 外设时钟使能寄存器(RCC_APB2ENR)寄存器作用:对 APB1外设总线上对应的模块时钟使能STM32F40 xGPIO控制外设时钟使能寄存器05寄存器概述STM32F4xx 的寄存器在代码中每个模块都定义为一个结构体;STM32F4xx 的寄存器定义文件在 stm
15、32f4xx.h 文件,读者可以自行打开这个文件查看外设模块的寄存器结构定义。STM32F40 xGPIO控制 寄存器表示05GPIO寄存器结构STM32F4xx GPIO口寄存器结构定义typedef struct _IO uint32_t MODER;_IO uint32_t OTYPER;_IO uint32_t OSPEEDR;_IO uint32_t PUPDR;_IO uint32_t IDR;_IO uint32_t ODR;_IO uint16_t BSRRL;_IO uint16_t BSRRH;_IO uint32_t LCKR;_IO uint32_t AFR2;GPIO
16、_TypeDef;RCC寄存器结构STM32F4xx RCC模块寄存器结构定义typedef struct._IO uint32_t AHB1ENR;_IO uint32_t AHB2ENR;_IO uint32_t AHB3ENR;uint32_t RESERVED2;_IO uint32_t APB1ENR;_IO uint32_t APB2ENR;.RCC_TypeDef;寄存器表示一般的规律:每个外设模块定义宏名来代表结构体指针,宏名就是外设模块名,如IO口 A组,就使用GPIOA表示,B组就使用GPIOB表示,依次类推。其中成员名则为寄存器名称(有少量例外,以stm32f4xx.h
17、中定义的结构为准)。#define GPIOA_BASE (AHB1PERIPH_BASE+0 x0000)#define GPIOB_BASE (AHB1PERIPH_BASE+0 x0400).#define GPIOA (GPIO_TypeDef*)GPIOA_BASE)#define GPIOB (GPIO_TypeDef*)GPIOB_BASE)#define CRC (CRC_TypeDef*)CRC_BASE)STM32F40 xGPIO控制 寄存器表示05原理图说明查看 STM32F407物联网开发平台-智能网关原理图.pdf 文档,LED 硬件设置原理图如下所示:STM32F
18、40 xGPIO控制GPIO LED实验示例05原理图分析1.四个LED都是低电平点亮2.四个LED 使用的GPIO引脚PG13 LED1 物联网实验箱上第 1 个灯PG14 LED2 物联网实验箱上第 2 个灯PB6 LED3 物联网实验箱上第 3 个灯PB7 LED4 物联网实验箱上第 4 个灯3.GPIO口配置:输出模式、推挽输出、输出速度默认即可、上拉或浮空都可以软件设计概述根据原理图的分析,要把PG13,PG14,PB6,PB7引脚配置成输出功能,然后通过GPIOx_ODR或GPIOx_BSRR 来控制对应的IO输出高低电平。STM32F40 xGPIO控制GPIO LED实验示例0
19、5设计思路 1.GPIO端口的初始化 使能GPIO外设时钟(B、G两组)-RCC_AHB1ENR寄存器,配置I/O口模式为输出功能-MODER寄存器 通用输出 配置I/O口输出类型-OTYPER寄存器 输出推挽 配置I/O口输出速度-OSPEEDR 寄存器 默认值 配置I/O口上下拉 -PUPDR寄存器 上拉或浮空 2.点亮LED灯 点灯:通过GPIOx_ODR或GPIOx_BSRR 选择其中之一。灭灯:通过GPIOx_ODR或GPIOx_BSRR 选择其中之一。初始化示例代码/开GPG,GPB口时钟RCC-AHB1ENR|=1 6|1 MODER&=(3 13*2|3 MODER|=(1 1
20、3*2|1 MODER&=(3 6*2|3 MODER|=(1 6*2|1 ODR&=(1 ODR|=(1 BSRRH =(1 BSRRL =(1 13);/输出高电平 STM32F40 xGPIO控制GPIO LED实验示例050606Keil开发环境调试技巧Keil工程项目配置进入调试模式使用Keil的各个调试功能-虚席以待-虚席以待-仿真配置 用户需要根据自己使用的仿真器来配套工作,分为以下两步:Keil开发环境调试技巧Keil工程项目配置02编译程序进入仿真调试前需要先编译程序,保存程序是没有错误的!Keil开发环境调试技巧 进入调试模式02进入调试调试按键说明进入调试模式后,Keil 界面上会出现对程序进行各种控制的按钮,开发者通过这些按钮可以对进程进行控制。Keil开发环境调试技巧 使用调试功能020303STM32F40 x GPIO作业作业概述作业任务描述作业概述根据本章内容讲解,编写代码,分别练习使用GPIO的输入与输出模式功能。STM32F40 x GPIO作业03作业任务1.根据实验箱硬件原理图,编写4个LED灯的流水灯程序。2.根据实验箱硬件原理图,编写4个按键的初始化代码。04致谢ACKNOWLEDGEMENTS感谢聆听,如有不足之 处敬请指出,欢迎提出您的宝贵建议!致谢