GPIO AFIO

GPIO的简介

其实GPIO就是类似于51单片机的IO口 有采集和控制的作用
GPIO AFIO_第1张图片

GPIO的复用 复用和通用功能

GPIO AFIO_第2张图片
通用和复用功能
GPIO AFIO_第3张图片
gpio的通用功能就是直接通过CPU控制IO(GPIO)引脚 而复用功能就是CPU通过其他外设和模块来控制IO(gpio)引脚

GPIO重映射

GPIO AFIO_第4张图片
当同一个gpio引脚被CPU(通用功能)和外设和模块控制时(复用功能)会产生分歧 gpio不知道输出由那个控制输出的电平 由此引出重映射 重映射就是把复用功能引用到其他引脚上去例如1引脚被CPU和其他模块控制 产生分歧 就把其他模块的复用功能分到2号引脚 由2好引脚来输出由其他模块控制的高低电平
GPIO AFIO_第5张图片

GPIO AFIO_第6张图片
翻转指的是高电平到低电平 或者低电平到高电平
GPIO AFIO_第7张图片
1.不能接5v的电压 接了就烧
2.coms端口和ttl端口的识别
GPIO AFIO_第8张图片
在芯片手册内IO口(可以理解为GPIO)后面又FT就是TTL端口 没有就是COMS端口 接着以COMS为例 在第一个范围内的电压GPIO就识别为0 在第二个电压范围内GPIO就识别为1 如果电压的范围是1.164~1.833则会获得一个随机值(避免这样的情况发生) GPIO的单端输出电流为25MA 极限情况 但是不能每个GPIO口都输出25MA 因为超过了芯片的的最大电流值就会烧毁

IO端口基本结构介绍

GPIO AFIO_第9张图片
上下分为输入和输出驱动 分别处理输入和输出的信号
上面为输入信号的路径 下面为输出信号的路径 2为上下拉电阻 输入的信号和进入片上外设 也可进入寄存器IDO从而读出IO口是高电平还是低电平 然后输出信号进入输出控制 通过控制作用使得上下两个mos管输出高电平或低电平(上面高电平 下面低电平)从而IO口有输入和输出的作用

GPIO AFIO_第10张图片
而二极管有保护作用如果输入5v的电阻则使得芯片内部输入信号的电位为3.6v起到钳位的作用(钳位电路) 下面的二极管也是如此
触发器的作用就是把正弦波转化为方波
GPIO AFIO_第11张图片
第一个坐标图是正弦波(输入的信号) 第二个坐标图是经过触发器输出的波形图
GPIO AFIO_第12张图片
模电的mos管

GPIO的八种输入模式分析

GPIO AFIO_第13张图片
四个输出模式 四个输入模式GPIO AFIO_第14张图片
空闲时就是高阻态
GPIO AFIO_第15张图片
空闲时(高阻态)由于上拉电阻的存在使得IO口为高电平
GPIO AFIO_第16张图片
空闲时(高阻态)由于下拉电阻的存在使得IO口为低电平GPIO AFIO_第17张图片
GPIO AFIO_第18张图片
当寄存器(ODO)对应的位写入0 下面的Pmos管导通 则输出VSS0低电平 如果寄存器对应的位写入1 则下面的Pmos截至 处于高阻态状态 无法输出高电平 (想要输出高电平必须外接上拉电阻)
GPIO AFIO_第19张图片

GPIO AFIO_第20张图片
F1和F4以及其他系列的差别
GPIO AFIO_第21张图片
GPIO AFIO_第22张图片
注意看F4以及其他系列的上下拉电阻是接在输入驱动器外部的 所以可以使用内部上下拉

GPIO的寄存器介绍

GPIO AFIO_第23张图片
F1系列的BRR和LCKR都不用 不用学习 同理F4的LCKR寄存器 GPIO AFIO_第24张图片
(GPIOA) CRL 和CRH都是32位寄存器 一共加起来是64位bit 而GPIOA有16个IO口引脚 相当于每四个bit控制一个IO口引脚GPIO AFIO_第25张图片
四个位控制一个IO口 圈起来的分别控制PA0 和PA1 所以这CRL一共控制8个IO口
GPIO AFIO_第26张图片
如要设置PA10位推完模式 首先PA10对应的寄存器为CRH(CRL是控制低八位的) 就是CRH中 8 9 10 11这四个位 其中8 9 是设置IO口的输入和输出模式 (8 9设置为工程需要的模式 如设置为输出模式 速度为需要的模式 就设置为1 0 给8 9 位写入 1 1)然后后面两个位 10 11写入0 0 就设置成功
如果要设置为上下拉电阻 就写入1 0 但是不知道到底是上拉还是下拉模式?
引出ODR寄存器 GPIO AFIO_第27张图片
ODR寄存器一共有16个位 一共对应16个IO口 每一个IO口对应一个位 加上了这个位就可以配置IO口的上下拉模式了 设置为1就输出高电平 设置为0就输出低电平
GPIO AFIO_第28张图片

GPIO AFIO_第29张图片
r 和rw 和w 分别是只读 读写 和只写的意思 举个例子 如果GPIOB_IDR 的第0位读到的是1 那么就说明PB0这个IO引脚接到的是高电平 (联想GPIO引脚的结构图)
GPIO AFIO_第30张图片
一共有32个位 两个位控制IO口的ODR寄存器 这个寄存器 BSRR 只写 如果一个IO口引脚 如 PA10 对应GPIOA 而GPIOA的寄存器中的BSRR的BR10为1 BS10为0 那么 对应的寄存器ODR就为0 就输出低电平 反之ODR就为1 输出高电平

F4系列的配置输入输出
GPIO AFIO_第31张图片
GPIO AFIO_第32张图片
GPIO AFIO_第33张图片
GPIO AFIO_第34张图片
相比于F1只是把功能分开了 多了一个上下拉电阻 (因为上下拉电阻是在IO信号进入的必经之路)
后面的IDR 和ODR BSRR都是和F1一样的
GPIO AFIO_第35张图片
使用BSRR寄存器

AFIO简介

GPIO AFIO_第36张图片
当引脚冲突时候了可以使用重映射把模块映射到其他地方去
AFIO就是把其他的模块映射到其他引脚上去
GPIO AFIO_第37张图片
GPIO AFIO_第38张图片
定时器1的四个通道和串口的引脚冲突 需要映射到其他的引脚去
GPIO AFIO_第39张图片
GPIO AFIO_第40张图片
GPIO AFIO_第41张图片

你可能感兴趣的:(stm32)