请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

嵌入式天空

 找回密码
 我要注册

扫一扫,访问微社区

最近看过此主题的会员

查看: 2293|回复: 2

尚观STM32-GPIO简介

[复制链接]

37

主题

74

帖子

1332

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1332
QQ
发表于 2017-6-27 14:59:37 | 显示全部楼层 |阅读模式
本帖最后由 zack 于 2017-6-27 15:07 编辑

GPIO简介

作者:北京尚观科技·张伟
    通用的输入输出口
    (其实简单来讲GPIO就是芯片的管脚)

1.查看所用开发板的封装形式
    打开<STM32课程SDK\DataSheet\STM32>目录找到<STM32F405OE_...>pdf文件P41-------->144管脚的封装
    从pdf中得出结论,我们的开发板用的芯片的GPIO有9组,每组有16个管脚
    例如:
        PE2 就是 GPIO 的 E 组的第 2 个管脚
        PC0 就是 GPIO 的 C 组的第 0 个管脚
        ...
        也就相当于
        GPIOXY
        X 范围 A-H
        Y 范围 0-15
2.芯片管脚的功能
    GPIO是多功能复用的
    (相当于管脚既可以是GPIO功能,也可以是其他功能<uart iic spi ...>)   
    功能:
        1.IO功能
            input output
        --------------------------------------------
        注:
            GPIO的输入功能相当于检测
            GPIO的输出功能相当于控制
        --------------------------------------------
        2.其他功能
            uart iic spi ...
3.GPIO的输入输出功能
    例如:PD0
        PD0管脚是由一系列寄存器来控制(在STM32内部有很多寄存器,有几个寄存器专门用来控制管脚的)
        有一个寄存器用来控制PD0的功能(输入\输出)
            输出:相当于STM32是可以控制这个管脚的
            可以控制这个管脚输出高电平还是低电平

            输入:相当于通过STM32来检测这个管脚的
            可以检测是高电平还是低电平
        对于我们的STM32F407来说3.3V是高电平 0V是低电平
        或者3.3V是1     0V是0
        也就相当于GPIO是输出功能时是控制    GPIO是输出功能时是检测
        
4.开发板上的每一个管脚都是独立的
        也就是说每一个管脚都可以分别来控制

    注意:我们看的<STM32F405OE_...>pdf文件只是芯片的封装形式,至于哪个GPIO连接的是什么硬件还需要看硬件原理图

5.打开<STM32课程SDK\DataSheet\STM32>目录下的
    <STM32F4xx中文参考手册>.pdf文件
    1>找到第2章的第2小节P52
        (虽然在表中写着有GPIOI,但是对于STM32F4其他系列芯片来说的
        我们这一款只有GPIOA ~ GPIOH)
        从表中我们得出,GPIOA ~ GPIOH都连到了AHB1总线上
        每一组GPIO都会对应10个寄存器的,每一个寄存器都有地址   
        -------------------------------------------------------------------------------
        0x40020400 - 0x400207FF    GPIOB
        0x40020000 - 0x400203FF    GPIOA
            从0x40020000到0x400203FF就是GPIOA的寄存器所对应的地址范围
            从0x40020400到0x400207FF就是GPIOB的寄存器所对应的地址范围
        0x40020000是起始地址<也叫做基地址>
        0x400203FF是结束地址
            每一组GPIO的基地址都是不一样的
    -------------------------------------------------------------------------------
    2>找到第7章第4小节P187
        注意:虽然在手册中寄存器列出了10个寄存器,但是其实一共有8 * 10个寄存器
        因为我们的GPIO一共有8组,每一组GPIO都会有10个寄存器
    -------------------------------------------------------------------------------
    GPIO  端口模式寄存器 (GPIOx_MODER) (x = A..I)
    GPIO port mode register
    偏移地址:0x00

    x可以是A B C D E F G H(其实代表8个寄存器)
    寄存器的真实地址 = 寄存器的基地址 + 偏移地址
    注意:每一组的GPIO的基地址都不一样
   
    从图中可以得出端口模式寄存器一共有32位
    被分成了2位一小块,正好分成了16个小块,正好对应每组GPIO的16个管脚
    例:
        GPIOA的基地址 + 0x00 = GPIOA组的端口模式寄存器
        GPIOA组的端口模式寄存器的第0位和第1位是管理GPIOA0
        GPIOA组的端口模式寄存器的第2位和第3位是管理GPIOA1
        ...
        GPIOA组的端口模式寄存器的第30位和第31位是管理GPIOA15
    如果把第0位和第1位设置成    00 那就是    输入模式
    如果把第0位和第1位设置成    01 那就是    输出模式
    如果把第0位和第1位设置成    10 那就是    复用功能模式
    如果把第0位和第1位设置成    11 那就是    模拟模式(模拟信号)
    -------------------------------------------------------------------------------
    GPIO  端口输出类型寄存器 (GPIOx_OTYPER) (x = A..I)
    GPIO port output type register
    偏移地址:0x04
                               \\这个寄存器只有在端口模式寄存器配制成输出模式时才有用
    这个寄存器有32位但是只有16位有效,也就相当于1位对应GPIO的1个管脚
    0:输出推挽(复位状态)    \\可以输出高电平也可以输出低电平
    1:输出开漏                \\管脚只能拉低不能拉高
    注:如果选择开漏输出的话,管脚只能拉低不能拉高,本身是没有这个能力的
    如果想要拉高必须外接上拉电阻
    通常情况下我们就选择推挽输出
06GPIO简介-上拉电阻.png
06GPIO简介-下拉电阻.png
    -------------------------------------------------------------------------------
    GPIO  端口上拉/ 下拉寄存器 (GPIOx_PUPDR) (x = A..I/)
    GPIO port pull-up/pull-down register
    偏移地址:0x0C
    上拉电阻        看图<06GPIO简介-上拉电阻>
    下拉电阻        看图<06GPIO简介-下拉电阻>
    对于STM32来说每一个管脚在芯片内部都会有上拉电阻和下拉电阻
    注:STM32内部的是弱上拉和弱下拉,所以千万不能让它吸收电流或者供应电流
    看图<06GPIO简介-芯片内部上拉下拉>
06GPIO简介-芯片内部上拉下拉.png
    -------------------------------------------------------------------------------
    GPIO  端口输入数据寄存器/GPIO  端口输出数据寄存器
    看图<06GPIO简介-GPIO的输入输出>
06GPIO简介-GPIO的输入输出.png

回复

使用道具 举报

0

主题

1

帖子

203

积分

新手上路

Rank: 1

积分
203
发表于 2017-6-27 22:16:22 | 显示全部楼层
赞赞赞
回复

使用道具 举报

37

主题

74

帖子

1332

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1332
QQ
 楼主| 发表于 2017-7-28 16:55:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EBMSKY Inc. ( 冀ICP备17022971号-1  

GMT+8, 2019-7-18 03:10 , Processed in 0.095298 second(s), 40 queries .

Powered by Discuz! X3.2

© 2014-2018 Comsenz Inc. 【嵌入式天空】设计

快速回复 返回顶部 返回列表