STM32学习笔记之GPIO(二)

发布者:素雅之韵最新更新时间:2020-09-04 来源: eefocus关键字:STM32  GPIO  工作方式 手机看文章 扫描二维码
随时随地手机看文章

首文提到了GPIO拥有八种工作方式:
4种输入模式:
输入浮空
输入上拉
输入下拉
模拟输入
4种输出模式:
开漏输出
开漏复用功能
推挽式输出
推挽式复用功能
3种最大翻转速度:
-2MHZ
-10MHz
-50MHz

八种模式介绍及电路详解

输入浮空模式:
由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO 的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
在这里插入图片描述输入上拉模式:

上拉输入/下拉输入/模拟输入:这几个概念很好理解,从字面便能轻易读懂。在这里插入图片描述
输入下拉模式:
在这里插入图片描述
模拟模式:
在这里插入图片描述
开漏输出:

只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,


其吸收电流的能力相对强(一般 20ma 以内).


开漏形式的电路有以下几个特点:

1.利用外部电路的驱动能力,减少 IC 内部的驱动。当 IC 内部 MOSFET 导通时,驱动电流是从外部的
VCC 流经 R pull-up ,MOSFET 到 GND。IC 内部仅需很下的栅极驱动电流。

2.一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时, 只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供 TTL/CMOS 电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)
3.OPEN-DRAIN 提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。


4.可以将多个开漏输出的 Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是 I2C,SMBus 等总线判断总线占用状态的原理。
在这里插入图片描述
开漏复用输出模式:
复用开漏输出:可以理解为 GPIO 口被用作第二功能时的配置情况(即并非作为通用 IO口使用)
在这里插入图片描述
推挽输出模式:

可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由 IC 的电源低定。


推挽电路是两个参数相同的三极管或 MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
在这里插入图片描述
推挽复用输出模式:
复用推挽输出:可以理解为 GPIO 口被用作第二功能时的配置情况(即并非作为通用 IO口使用)
在这里插入图片描述

八种工作方式的总结

在 STM32 中选用 IO 模式

(1)浮空输入_IN_FLOATING ——浮空输入,可以做 KEY 识别,RX1
(2)带上拉输入_IPU——IO 内部上拉电阻输入
(3)带下拉输入_IPD—— IO 内部下拉电阻输入
(4)模拟输入_AIN ——应用 ADC 模拟输入,或者低功耗下省电
(5)开漏输出_OUT_OD ——IO 输出 0 接 GND,IO 输出 1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为 1 时,IO 口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样 IO 口也就可以由外部电路改变为低电平或不变。可以读 IO 输入电平变化,实现 C51 的 IO 双向功能
(6)推挽输出 _OUT_PP----IO输出 0接GND,IO输出 1接VCC,读输入值是未知的
SCL,SDA)
(7)复用功能的推挽输出——AF_PP——片内外设功能(IIC的SCL,SDA)
(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

(1)模拟 I2C 使用开漏输出_OUT_OD,接上拉电阻,能够正确输出 0 和 1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读 IO 的值;使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);
(2)如果是无上拉电阻,IO 默认是高电平;需要读取 IO 的值,可以使用带上拉输入_IPU 和浮空输入
_IN_FLOATING 和开漏输出_OUT_OD;

通常有 5 种方式使用某个引脚功能,它们的配置方式如下:
1)作为普通 GPIO 输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。
2)作为普通 GPIO 输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。
5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。


注意如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。


stm32 复位后,IO 端口处于输入浮空状态. JTAG 引脚复位以后,处于上拉或者下拉状态.


所有 IO 端口都具有外部中断能力,端口必须配置成输入模式,才能使用外部中断功能. IO 端口复用功能配置:

对于复用功能输入,端口可以配置成任意输入模式或者复用功能输出模式. 对于复用功能输出,端口必须配置成复用功能输出
对于双向复用功能,端口必须配置成复用功能输出

stm32 的部分 IO 端口的复用功能可以重新映射成另外的复用功能. stm32 具有 GPIO 锁定机制,即锁定 GPIO 配置,下次复位前不能再修改.

关键字:STM32  GPIO  工作方式 引用地址:STM32学习笔记之GPIO(二)

上一篇:STM32F4寄存器编写跑马灯例程
下一篇:stm32之GPIO寄存器学习

推荐阅读最新更新时间:2024-11-09 10:22

采用stm32f103rc的STM32最小系统
采用stm32f103rc的STM32最小系统详细解析图,如下: 一、STM32主电路 二、USB转串口下载电路 注:此图中二极管D1不用接! 三、SWD模式调试仿真电路 四、指示电路 五、整体电路 注:此图中二极管D1不用接!
[单片机]
采用stm32f103rc的<font color='red'>STM32</font>最小系统
基于STM32的平衡小车设计过程分享(3)
一、简介 续上文,电机驱动、MPU6050驱动均已完成,接下来我们给他加上PID让它站起来 二、PID控制 我们将小车PID控制函数放到MPU6050中断函数中,每当MPU6050有数据输出时,引脚INT有相应的电平输出。依次来触发外部中断作为控制周期。保持MPU6050数据的实时性。 2.1直立环控制 通过传入的KP、KD参数,让平衡车的pitch轴保持在水平位置。 直立环是用于控制机械系统中垂直方向运动的一种控制器。在这些应用中,垂直方向的运动通常是非常稳定的,因此I控制器的积分作用并不是必需的。而PD控制器可以提供足够的控制性能,同时避免了可能出现的积分饱和问题,因此在直立环中通常只使用PD控制器,而不使用I控
[单片机]
基于<font color='red'>STM32</font>的平衡小车设计过程分享(3)
讲讲基于STM32的硬件资源
今天来说说高端处理器的基本知识,开发32位单片机首先要了解基本芯片的硬件基础,所以今天就讲讲基于STM32的硬件资源。 STM32基础硬件知识 STM32与单片机的硬件接口基本一致,都是调用硬件接口控制I/O,完成相应的功能。另外,STM32在软件方面具有ST官方的源代码开放的库文件,开发速度相对轻松方便,而且BUG较少。 本文以STM32F103为例对STM32的硬件资源进行介绍。 1、STM32最小系统 72 MHz -40~105°C ,有内置的ARM核心,因此它与所有的ARM工具和软件兼容, 128k 闪存。 NVIC 嵌套的向量式中断控制器---可处理43个可屏蔽中断通道(不含16个中断线)和16个优先级。 EXTI
[单片机]
讲讲基于<font color='red'>STM32</font>的硬件资源
关于单片机STM32裸机程序架构设计
本着授人以渔的原则,既提供我一直在用的程序架构,也讲程序架构的设计思路。 如果本文内容,你都能领悟并做到,不管项目多复杂,都将游刃有余。 我研发的那几年,接触大多数工程师,都没有程序架构的概念,基本一个while死循环干到底。 模块之间也没有封装好,导致代码写好以后,扩展性和维护性太差,类似的功能代码,也很难移植到新项目去复用。 早期我也是这样写的,反正实现功能就行了,代码好不好,功能上又看不出区别。 不过,等你接触到复杂的项目时,这招就行不通了,没设计好程序架构,根本做不稳定。 我意识到这个问题,是碰到两种需求的时候: 1.是做一个基于STM32的网关项目,项目做完以后,客户老是要改功能,客户不懂技术,在客户眼里,觉得改一个
[单片机]
关于单片机<font color='red'>STM32</font>裸机程序架构设计
手把手教你如何写单片机的结构体
摘要:听说还有好多学单片机的小伙伴不会用结构体?指针和结构体是学单片机必须要掌握的,如果你C语言掌握的不牢,单片机根本学不到精髓,只能完成一些低级的项目。看得懂结构体并且能够灵活运用结构体才能说你入门了单片机。本篇将以最通俗的方式结合STM32单片来讲讲结构体的运用。解决你学完C语言、考过了计算机二级还是看不懂单片机结构体的苦恼。宝藏文章,记得点赞转发收藏。 大家知道指针和结构体是单片机的难点,所以就去学习C语言,找视频看书...... 这里面每一个视频的播放量都非常高。对于单纯的学习C语言,这里讲的很清楚。看完你不禁在下面评论一句:哇!讲的真的太清楚了吧!但是等你真正的学单片机的时候,你会发现我不是学过C语言吗?计算机二
[单片机]
手把手教你如何写单片机的结构体
STM32单片机小Tips(6):玩转IAR,开发STM32
  从51开始,单片机玩了很长时间了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但一直没有开始,原因 -----不知道玩了ARM可以做什么(对我自己而言)。如果为学习而学习,肯定学不好。然后cortex-m3出来了,据说,这东西可以替代单片机,于 是马上开始关注。也在第一时间开始学习,可惜一开始就有点站错了队,选错了型(仍是对我自己而言)。我希望这种芯片应该是满大街都是,随便哪里都可以买得 到,但我选的第一种显然做不到。为此,大概浪费了一年多时间吧,现在,回到对我来说是正确的道路上来啦,边学边写点东西。   闲话多了些,就权当前言了。下面准备开始。   STM32单片机小Tips之RTC实践   BKP还没有搞完,
[单片机]
<font color='red'>STM32</font>单片机小Tips(6):玩转IAR,开发<font color='red'>STM32</font>
毕业设计| STM32蓝牙智能小车
+ 功能描述 蓝牙智能小车由STM32微处理器、步进电机、蓝牙,L298N等模块构成的:1)采用STM32微处理器为核心,在MDK环境下进行编程。2)通知控制L298N模块IN1~IN4引脚的高低电平进而控制电机的转动方向,使小车产生不同的转动模式。3)控制小车的转动模式则是通过蓝牙模块来实现,利用手机蓝牙助手和蓝牙模块相通,进而控制小车的各种运转模式。 + 整体框架 下面的图把核心连接部分都画出来了(其他部分按要求接就可以了,Vcc接电源,GND接地即可),图画的有点丑,希望大家不要介意呀( - ) + 硬件设计 1)芯片连接 使用微控制器为STM32F103RC,芯片上所连接的部分: PC10 - IN1;
[单片机]
毕业设计| <font color='red'>STM32</font>蓝牙智能小车
STM32学习日志——SPI实验
一、简介 SPI是外围串行设备接口,主要应用于EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器。它是一种高速、全双工、同步的通信总线。它有四根线,MISO:主机输入从机输出 MOSI:主机输出从机输入 SCK:时钟线 CS:片选。 SPI内部结构简明图 从图中可以看出,主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。主机寄存器通过MOSI将字节发送给从机,从机寄存器通过MISO发送给主机,这样两个移位寄存器的内容就被交换,外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节,如果只进行读操作,只需发送一个空字节0xff。 SP
[单片机]
<font color='red'>STM32</font>学习日志——SPI实验
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved