STM32学习笔记(1)

GPIO是一种通用输入输出接口,支持多种模式如上拉/下拉输入、推挽/开漏输出。其功能包括驱动LED、控制蜂鸣器、读取按键等。STM32通过配置GPIO寄存器实现IO口的控制,包括开启时钟、初始化和设置模式。开漏模式适用于多机通信,防止干扰,而推挽模式则具有强驱动能力。
摘要由CSDN通过智能技术生成

GPIO(General Purpose Input Output)简介

  • GPIO(General Purpose Input Output)通用输入输出口
    可配置为8种输入输出模式
  • 引脚电平:0V~3.3V,部分引脚可容忍5V
  • 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
  • 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

GPIO基本结构

GPIO基本结构
每个GPIO都有16个引脚(0~15)
内核可以通过APB2对寄存器读写,可以完成输出电平和读取电平的功能
输出寄存器写1,对应引脚就会输出高电平,写0,就输出低电平
输入寄存器读取为1,就证明对应的端口目前是高电平,读取为0,就是低电平

GPIO位结构

在这里插入图片描述

1.上拉和下拉输入模式:
提供一个默认的输入电平,对与一个数字的端口,不是高电平就是低电平。如果输入什么都不接,那么输入就会处于一种浮空的状态(极易被改变状态),引脚的输入电平极易收到外界干扰而改变。
上拉输入模式:默认高电平输入模式
下拉输入模式:默认低电平输入模式

2.施密特触发器:
对电压进行整形,可以有效避免因信号波动造成的输出抖动的现象;如果输入电压大于 某一阈值,输出就会升为高电平,如果输入电压小于某一阈值,输出就会瞬间将为低电平

3.推挽、开漏、关闭

  1. 推挽:P-MOS和N-MOS均有效。数据寄存器为1,上管导通,下管断开,输出直接接到VDD,输出高电平;数据寄存器为0,上管断开,下管导通,输出直接接到VSS,就是输出低电平。 这种模式下,高低电平均有较强的驱动能力,所以推挽输出模式也叫强推输出模式,在该模式下,STM32对IO口有绝对的控制权,高低电平都是由STM32说了算。
  2. 开漏:P-MOS输出无效,只有N-MOS在工作。数据寄存器位1,下管断开,这时输出相当于断开,也就是高阻模式;数据寄存器为0时下管导通,输出直接接到VSS,也即是输出低电平。 这种模式下只有低电平有驱动能力,高电平时没有驱动能力的。开漏模式可以作为通信协议的驱动方式,多机通信的情况下,该模式可以避免各个设备的相互干扰。也可输出5V电平信号
  3. 关闭:引脚配置为输入模式,两个MOS管均无效,也就是输出关闭,端口的电平由外部信号来控制

4.如果通过输出数据寄存器进行控制,就是普通的IO口输出,
写数据寄存器的某一位就可以操作某个端口

5.位设置/清除寄存器,可以单独输出数据寄存器的某一位,而不影响其他位

GPIO模式

请添加图片描述

  • 上拉、下拉、浮空输入结构
    在这里插入图片描述

  • 模拟输入
    在这里插入图片描述

  • 开漏、推挽输出
    在这里插入图片描述
    一个 端口只能有一个输出,但可以有多个输入

  • 复用开漏、推挽
    在这里插入图片描述
    高电平弱驱动,低电平强驱动(一般单片机)

操作STM32的GPIO一共需要3个步骤:

  1. 使用RCC开启GPIO时钟(最常用 RCC_AGB, RCC_APB2, RCC_APB1)
  2. 使用GPIO_init函数初始化时钟
  3. 使用输入或输出的函数控制GPIO口
    GPIO_Mode_AIN(Analog IN) 模拟输入
    GPIO_Mode_IN_FLOATING 浮空输入
    GPIO_Mode_IPD(In Pull Down) 下拉输入
    GPIO_Mode_IPU(In Pull Up) 上拉输入
    GPIO_Mode_Out_OD(Out Open Drain) 开漏输入
    GPIO_Mode_Out_PP(Out Push Pull) 推挽输出
    GPIO_Mode_AF_OD(Atl Open Drain) 复用开漏
    GPIO_Mode_AF_PP(Alt Push Pull) 复用推挽
    (他用推挽输出,但我没理解是啥意思)
    (这里气死我了,这个板子要超大力的摁在面包板上,才有反应)
    推挽输出高低电平都有驱动能力
    开漏输出仅有低电平由驱动能力
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucky Ray

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值