GPIO外设

GPIO简介
  • GPIO 通用输入输出口。即IO口

  • 可配置8种输入输出模式

  • 引脚电平 0v ~ 3.3v 部分引脚可以容忍5v

    • 容忍5v 即 可在端口输入5v电压 但是只能输出3.3v 因为供电是3.3v

    • 可以通过看引脚定义图 带FT的都是可以容忍5v

  • 输出模式下 可以控制端口输出高低电平,用以驱动LED 控制蜂鸣器,模拟通信协议输出时序

  • 输入模式下 可以读取端口的高低电平或者电压,用于读取按键输入,外接模块电平信号输入(eg 光敏电阻等),ADC电压采集,模拟通信协议接收数据


GPIO基本结构
  • GPIO是在APB2外设总线上的

  • GPIO命名方式 GPIOX (x 可以是 A -------)

  • 每个GPIO都有16个引脚 分别是 PA0 ----PA15

  • 每个GPIO中包含寄存器和驱动器

    • 寄存器 特殊的存储器 内核可以通过APB2总线对寄存器进行读写 ---->完成输出电平读取电平的功能

    • 寄存器的每一位对于一个引脚

    • 输出寄存器 写1 表示输出高电平 写 0 表示 输出低电平

    • 输入寄存器 读取为1 表示 当前端口是 高电平 反之

  • STM32是32位单片机,寄存器只有16位,所以只有低16位有数据

  • 驱动器 是用来增加信号的驱动能力的,寄存器只负责存储数据


GPIO位结构
  • 对于保护二级管那块 VDD 3.3V VSS 0V

    • 若输入电压大于 3.3V 则上方二极管导通 直接流入 VDD

    • 若输入电压小于 0V 则下方二极管导通 直接导向 VSS

    • 保护二极管---保护内部电路

  • 上拉电阻/下拉电阻

    • 这个电阻,阻值大 是弱下拉

    • 给输入提供一个默认的输入电平

    • 对一个数字端口,输入不是低电平就是高电平,如果输入引脚啥也不输入------ 则输入处于浮空状态-------输入处于浮空状态 引脚 输入的电平 极易受到外界干扰而改变

      • 避免因处于浮空状态而导致输入数据不准确

        • 接上拉电阻时,当浮空状态时,可保证引脚是高电平 ------上拉输入默认为是高电平输入方式

        • 接下拉电阻时,当浮空状态时, 可保证引脚是低电平 ------下拉输入默认为是低电平输入方式

    • TLL肖特基触发器

      • 对输入电压进行整形

      • 执行逻辑:若输入电压大于某一阈值,输出瞬间升为高电压

        若输入电压低于某一阈值, 输出瞬间升为低电压

      • 有效避免因信号波动造成的输出抖动现象

    • 位设置/清除寄存器 输出寄存器

      • 位设置/清除寄存器 一次只能控制一位

      • 输出寄存器 同时控制16个端口

    • 想到单独控制某一个端口,而不影响到别的端口

      • 方法1

        先读出寄存器的值

        通过按位与或者按位或进行更改

        再将更改以后的写会

      • 方法2

        位设置/清除寄存器

      • 方法3

        读写STM32的位带区域(不太了解)

    • 对于P-MOS 和N-MOS的理解

      • MOS管 ------电子开关

      • 分为三种模式 推挽模式 开漏模式 关闭

      • 推挽模式(又称强推输出模式)

        • P-MOS和N-MOS 都有效

        • 当数据寄存器为1时 上导通下断开 VDD 输出高电平

        • 当数据寄存器为0时 上断开下导通 VSS 输出低电平

      • 开漏模式

        • P-MOS无效

        • 当数据寄存器为1时 下断开 输出断开 (高阻模式)

        • 当数据寄存器为0时 下导通 VSS 输出低电平

        • 只有低电平有驱动能力,高电平没有驱动能力

        • 开漏模式可以作为通信协议的驱动方式

        • 开漏模式还可以输出5V的电平信号

          • IO口外接一个上拉电阻到5V的电源

            • 输出低电平时 由N-MOS 直接到VSS

            • 输出高电平5v时 由外部上拉电阻拉高至5v

        • 关闭

          • 当引脚配置为输入模式时

          • 两个MOS管都无效

          • 输出关闭,端口的电平由外部信号控制


GPIO的8种模式

通过配置GPIO的端口配置寄存

对于浮空输入

端口一定要接上一个连续的驱动元,不能够出现浮空的状态

对于模拟输入

ADC模数转换器的专属配置

输入浮空/上拉/下拉配置

区别🗣上拉电阻和下拉电阻地选择

🔈在输入模式下,输出寄存器为断开的,端口只能用来输入

模拟输入

🗣GPIO无效 引脚直接接入ADC

🔈在模拟输入模式下,TLL肖特基触发器 和输出寄存器都是断开的

开漏/推挽输出模式

🔈在输出模式下,输入模式也是有效的

因为一个端口 只能有一个输出,但是可以有多个输入

开漏输出模式下 高电平为高阻态 没有驱动能力

复合开漏/推挽输出

🗣引脚电平由片上外设控制


操作stm32的GPIO步骤

  • 使用RCC开启GPIO的时钟

  • 使用GPIO_Init函数初始化GPIO

  • 使用输出或者输入的函数控制GPIO口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值