版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《嵌入式系统原理与开发设计》主讲人:赖树明东莞理工学院STM32的GPIO模块原理01STM32F4GPIO模块原理GPIO口介绍GPIO相关寄存器外设时钟使能寄存器寄存器表示GPIO控制LED实验示例STM32F40xGPIO控制GPIO口概述01GPIO口就MCU用来连接外部世界、与外界交换数据的桥梁。51单片机:
IO口是分组的,每组8个,IO口分组用数字表示。P2、P1口只有输入输出功能;P3口上还能复用成串口、定时器等;STM32单片机:IO口功能比较多,比较复杂;IO口同样是分组的方式,每组16个,命名的方式为英文字母,(比如:STM32F407ZGT6:A~G--共112个)概念51和STM32GPIOSTM32F40xGPIO控制GPIO口介绍01受控I/O多达16个输出状态:推挽或开漏+上拉/下拉---提升驱动能力从输出数据寄存器(GPIOx_ODR)或外设(复用功能输出)输出数据可为每个I/O选择不同的输出速度输入状态:浮空、上拉/下拉、模拟将数据输入到输入数据寄存器(GPIOx_IDR)或外设(复用功能输入)置位和复位寄存器(GPIOx_BSRR),对GPIOx_ODR具有按位写权限锁定机制(GPIOx_LCKR),可冻结I/O配置模拟功能复用功能输入/输出选择寄存器(一个I/O多达16个复用功能)快速翻转,每次翻转最快只需要两个时钟周期引脚复用非常灵活,允许将I/O引脚用作GPIO或多种外设功能中的一种STM32GPIO特征STM32F40xGPIO控制GPIO口介绍01●输入浮空●输入上拉●输入下拉●模拟功能●具有上拉或下拉功能的开漏输出●具有上拉或下拉功能的推挽输出●具有上拉或下拉功能的复用功能推挽●具有上拉或下拉功能的复用功能开漏STM32F4GPIO功能STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO端口模式寄存器(GPIOx_MODER)(x=A..I)MODERy[1:0]:端口x配置位(y=0..15)用于配置I/O方向模式。00:输入(复位状态)01:通用输出模式10:复用功能模式11:模拟模式示例:GPIOB的第3个管脚为输出模式?GPIOB_MODER&=~(0x3<<6);GPIOB_MODER|=(0x1<<6);STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO端口输出类型寄存器(GPIOx_OTYPER)(x=A..I)这些位通过软件写入,用于配置I/O端口的输出类型。位31:16保留,必须保持复位值。位15:0OTy[1:0]:端口x配置位(y=0..15)0:输出推挽(复位状态)1:输出开漏STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO端口输出速度寄存器(GPIOx_OSPEEDR)(x=A..I/)用于配置I/O输出速度。OSPEEDRy[1:0]:端口x配置位(y=0..15)00:2MHz(低速)01:25MHz(中速)10:50MHz(快速)11:30pF时为100MHz(高速)说明:GPIO口的速度越快,功耗越高。STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)(x=A..I/)用于配置I/O上拉或下拉。PUPDRy[1:0]:端口x配置位(y=0..15)00:无上拉或下拉(浮空)01:上拉10:下拉11:保留STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO端口输入数据寄存器(GPIOx_IDR)(x=A..I)这个寄存器数值反应了当前IO口的状态结果。这些位为只读形式,只能在只读模式下访问,包含相应I/O端口的输入值。位31:16保留,必须保持复位值。位15:0IDRy[15:0]:端口输入数据(y=0..15)STM32F40xGPIO控制GPIO相关寄存器01寄存器说明端口输出数据寄存器(GPIOx_ODR)(x=A..I)该寄存器写1/0即可控制IO引脚上的电平状态。位31:16保留,必须保持复位值。位15:0ODRy[15:0]:端口输出数据(y=0..15)STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO端口置位/复位寄存器(GPIOx_BSRR)(x=A..I)该寄存器可以控制GPIO引脚的电平,输出高电平和输出低电平位分别是使用低16位和高16位实现。注意:1)该寄存器对写0不敏感,往任何一个位写0时,GPIO引脚电平不会发生任何变化;2)输出高电平或低电平都是往对应的位写1,而不是写0。3)如果同时对BSx和BRx置位,则BSx的优先级更高。31:16BRy:端口x复位位y(y=0..15)(让IO口输出低电平)0:不会对相应的ODRx位执行任何操作;1:对相应的ODRx位进行复位示例:GPIOC的第4个端口输出低电平。GPIOC_BSRR|=1<<20;STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO端口配置锁定寄存器(GPIOx_LCKR)(x=A..I)锁定寄存器:锁定IO口的模式,一旦锁定,程序中不能修改IO口的模式了,想要修改,必须重新下载新的程序。位31:17保留,必须保持复位值;位16LCKK[16]:锁定键(Lockkey)0:端口配置锁定键未激活。1:端口配置锁定键已激活。锁定键写序列:WRLCKR[16]=‘1’+LCKR[15:0]WRLCKR[16]=‘0’+LCKR[15:0]WRLCKR[16]=‘1’+LCKR[15:0]RDLCKRRDLCKR[16]=‘1’(此读操作为可选操作,但它可确认锁定已激活)位15:0LCKy:端口x锁定位y(y=0..15)这些位只能在LCKK位等于“0”时执行写操作。STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO复用功能低位寄存器(GPIOx_AFRL)(x=A..I)该寄存器用于配置复用功能I/O,一个引脚除输出输出功能外,还会有利用的功能。位31:0AFRLy:端口x位y的复用功能选择(y=0..7)AFRLy选择:0000:AF0 0100:AF4 1000:AF8 1100:AF120001:AF1 0101:AF5 1001:AF9 1101:AF130010:AF2 0110:AF6 1010:AF10 1110:AF140011:AF3 0111:AF7 1011:AF11 1111:AF15STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO复用功能低位寄存器(GPIOx_AFRL)(x=A..I)0000:AF0 0001:AF1 0010:AF2 0011:AF3 0100:AF4 0101:AF5 0110:AF6 0111:AF71000:AF8 1001:AF9 1010:AF101011:AF111100:AF121101:AF131110:AF141111:AF15STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO复用功能高位寄存器(GPIOx_AFRH)(x=A..I)该寄存器用于配置复用功能I/O,一个引脚除输出输出功能外,还会有利用的功能。位31:0AFRLy:端口x位y的复用功能选择(y=0..7)AFRLy选择:0000:AF0 0100:AF4 1000:AF8 1100:AF120001:AF1 0101:AF5 1001:AF9 1101:AF130010:AF2 0110:AF6 1010:AF10 1110:AF140011:AF3 0111:AF7 1011:AF11 1111:AF15STM32F40xGPIO控制GPIO相关寄存器01寄存器说明GPIO复用功能低位寄存器(GPIOx_AFRH)(x=A..I)0000:AF0 0001:AF1 0010:AF2 0011:AF3 0100:AF4 0101:AF5 0110:AF6 0111:AF71000:AF8 1001:AF9 1010:AF101011:AF111100:AF121101:AF131110:AF141111:AF15STM32F40xGPIO控制外设时钟使能寄存器01概述STM32F407内部有很多片上外设模块,而具体一个产品中是不会全部使用到。为了降低功耗,芯片内部给每个外设模块设计一个时钟控制开关,当不需要使用某个外设时候,可以禁止它时钟。相关寄存器涉及到的寄存器有RCC_AHB1ENR,RCC_AHB2ENR,RCC_AHB3ENR,RCC_APB1ENR,RCC_APB2ENR。使能寄存器特性这些寄存器中每个位(有的位保留)都对应一个外设模块的时钟控制,写0到对应位禁用对应的外设,写1到对应位使能对应外设。写0:关闭相应模块时钟;写1:使能相应模块时钟寄存器说明RCC_AHB1外设时钟使能寄存器(RCC_AHB1ENR)寄存器作用:对AHB1外设总线上对应的模块时钟使能寄存器说明RCC_AHB2外设时钟使能寄存器(RCC_AHB2ENR)寄存器作用:对AHB2外设总线上对应的模块时钟使能STM32F40xGPIO控制外设时钟使能寄存器05寄存器说明RCC_AHB3外设时钟使能寄存器(RCC_AHB3ENR)寄存器作用:对AHB3外设总线上对应的模块时钟使能寄存器说明RCC_APB1外设时钟使能寄存器(RCC_APB1ENR)寄存器作用:对APB1外设总线上对应的模块时钟使能STM32F40xGPIO控制外设时钟使能寄存器05寄存器说明RCCAPB2外设时钟使能寄存器(RCC_APB2ENR)寄存器作用:对APB1外设总线上对应的模块时钟使能STM32F40xGPIO控制外设时钟使能寄存器05寄存器概述STM32F4xx的寄存器在代码中每个模块都定义为一个结构体;
STM32F4xx的寄存器定义文件在stm32f4xx.h文件,读者可以自行打开这个文件查看外设模块的寄存器结构定义。STM32F40xGPIO控制寄存器表示05GPIO寄存器结构STM32F4xxGPIO口寄存器结构定义typedefstruct{__IOuint32_tMODER;__IOuint32_tOTYPER;__IOuint32_tOSPEEDR;__IOuint32_tPUPDR;__IOuint32_tIDR;__IOuint32_tODR;__IOuint16_tBSRRL;__IOuint16_tBSRRH;__IOuint32_tLCKR;__IOuint32_tAFR[2];}GPIO_TypeDef;RCC寄存器结构STM32F4xxRCC模块寄存器结构定义typedefstruct{ ....
__IOuint32_tAHB1ENR; __IOuint32_tAHB2ENR; __IOuint32_tAHB3ENR; uint32_tRESERVED2; __IOuint32_tAPB1ENR; __IOuint32_tAPB2ENR; .....}RCC_TypeDef;寄存器表示一般的规律:每个外设模块定义宏名来代表结构体指针,宏名就是外设模块名,如IO口A组,就使用GPIOA表示,B组就使用GPIOB表示,依次类推。其中成员名则为寄存器名称(有少量例外,以stm32f4xx.h中定义的结构为准)。#defineGPIOA_BASE(AHB1PERIPH_BASE+0x0000)#defineGPIOB_BASE(AHB1PERIPH_BASE+0x0400)…..#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)#defineGPIOB((GPIO_TypeDef*)GPIOB_BASE)………#defineCRC((CRC_TypeDef*)CRC_BASE)STM32F40xGPIO控制寄存器表示05原理图说明查看STM32F407物联网开发平台-智能网关原理图.pdf文档,LED硬件设置原理图如下所示:STM32F40xGPIO控制GPIOLED实验示例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输出高低电平。STM32F40xGPIO控制GPIOLED实验示例05设计思路
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<<1;//配置GPIOG13、GPIOG14、GPIOB6、GIOPB7为:01通用输出模式GPIOG->MODER&=~(3<<13*2|3<<14*2);//对应的两位分别清0GPIOG->MODER|=(1<<13*2|1<<14*2);//对应的两位分别设置为01GPIOB->MODER&=~(3<<6*2|3<<7*2);//对应的两位分别清0GPIOB->MODER|=(1<<6*2|1<<7*2);//对应的两位分别设置为01STM32F40xGPIO控制GPIOLED实验示例05IO电平控制示例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度教育装备采购会参展商合作框架合同3篇
- 个人理财协议书
- 全面创新科技布局
- 墙体保温板采购合同(2篇)
- 2024招投标与合同管理法律顾问服务合同2篇
- 2024森林质量精准提升
- 2024年高速路改造工程:贵黄高速房屋拆迁补偿合同
- 车辆定点维修合同书协议范本模板
- 纯人工劳务分包合同
- 19只有一个地球说课稿-2024-2025学年六年级上册语文统编版
- 建筑施工现场农民工维权告示牌
- 《枪炮、病菌与钢铁》-基于地理视角的历史解释(沐风学堂)
- 酒店爆炸及爆炸物品紧急处理应急预案
- 2022年版物理课程标准的特点探讨与实施建议
- 《中外资产评估准则》课件第4章 国际评估准则
- 幼儿园班级安全教育活动计划表
- 《银行柜台风险防控案例汇编》银行柜台风险案例
- 展馆精装修工程施工方案(98页)
- 香港联合交易所有限公司证券上市规则
- (高清正版)JJF 1908-2021 双金属温度计校准规范
- (高清版)严寒和寒冷地区居住建筑节能设计标准JGJ26-2018
评论
0/150
提交评论