STM32 GPIO模式总结

发布者:花钱123最新更新时间:2019-01-30 来源: eefocus关键字:STM32  GPIO  模式总结 手机看文章 扫描二维码
随时随地手机看文章

GPIO的8种工作方式

4种输入模式


浮空输入


上拉输入


下拉输入


模拟输入


4种输出模式


开漏输出


复用开漏输出


推挽输出


复用推挽输出


3种最大输出速度


2MHz


10MHz


50MHz




浮空输入模式


 


1) 外部通过IO口输入电平,外部电平通过上下拉部分(浮空模式下都关闭,既无


上拉也无下拉电阻)


2) 传输到施密特触发器(此时施密特触发器为打开状态)


施密特触发器作用:


1. 波形变换 可将三角波、正弦波等变成矩形波。


2. 脉冲波的整形 数字系统中,矩形脉冲在传输中经常发生波形畸变,出现上升沿和下降沿不理想的情况,可用施密特触发器整形后,获得较理想的矩形脉冲。


3. 脉冲鉴幅 幅度不同、不规则的脉冲信号施加到施密特触发器的输入端时,能选择幅度大于欲设值的脉冲信号进行输出。


3) 继续传输到输入数据寄存器IDR


4) CPU通过读输入数据寄存器IDR实现读取外部输入电平值


5) 在输入浮空模式下可以读取外部输入电平


6) 由于浮空输入一般多用于外部按键输入,有的理解为,浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。


上拉输入模式


 


   在没有信号输入的时候,上拉电阻能使读取input值保持为高,而下拉电阻正是相反。有些传感器等元气件,他们的信号输出有效时候会输出一个高电平(或者低电平),无效时候不输出,为开路。此时我们就必须用上拉电阻(或下拉电阻)。I2S时下拉输入,其它都是上拉输入。


  和输入浮空模式相比较,不同之处在于内部有一个上拉电阻连接到VDD(输入上拉模式下,上拉电阻开关接通,阻值约30-50K)。


外部输入通过上拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取。




输入下拉模式


 


 


和输入浮空模式相比较,不同之处在于内部有一个下拉电阻连接到VSS(输入下拉模式下,下拉电阻开关接通,阻值约30-50K)


外部输入通过下拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取


输入模拟模式


 


1.上拉和下拉部分均为关闭状态(AD转换-模拟量转换为数字量)


2.施密特触发器为截止状态


3.通过模拟输入通道输入到CPU


4.IO口外部电压为模拟量(电压形式非电平形式),作为模拟输入范围一般为0~3.3V






开漏输出模式


 


1,CPU写入 位设置/清除寄存器BSRR,映射到输出数据寄存器ODR


2,连通到输出控制电路(也就是ODR的电平)


3,ODR电平通过输出控制电路进入N-MOS管


-ODR输出1:


    N-MOS截止,IO端口电平不会由ODR输出决定,而由外部上拉/下拉决定


在输出状态下,输出的电平可以被读取,数据存入输入数据寄存器,由CPU读取,实现CPU读取输出电平。


所以,当N-MOS截止时,如果读取到输出电平为1,不一定是我们输出的1,有可能是外部上拉产生的1。


-ODR输出0:


    N-MOS开启,IO端口电平被N-MOS管拉倒VSS,使IO输出低电平


此时输出的低电平同样可以被CPU读取到。




开漏复用输出模式


 


与开漏输出模式唯一的区别在于输出控制电路之前电平的来源


开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的


开漏推挽输出模式的输出电平是由复用功能外设输出决定的


其他与开漏输出模式相似:


    控制电路输出为1:N-MOS截止,IO口电平由外部上拉/下拉决定


    控制电路输出为0:N-MOS开启,IO口输出低电平


推挽输出模式




与开漏输出相比较:


输出控制寄存器部分相同


输出驱动器部分加入了P-MOS管部分


当输出控制电路输出1时:


P-MOS管导通N-MOS管截止,被上拉到高电平,IO口输出为高电平1


当输出控制电路输出0时:


P-MOS管截止N-MOS管导通,被下拉到低电平,IO口输出为低电平0


同时IO口输出的电平可以通过输入电路读取


复用推挽输出模式


 


与推挽输出模式唯一的区别在于输出控制电路之前电平的来源


开漏输出模式的输出电平是由CPU写入输出数据寄存器控制的


开漏推挽输出模式的输出电平是由复用功能外设输出决定的


推挽输出:


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


  推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。


详细理解:


  推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。对负载而言,好像是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。当输出高电平时,也就是下级负载门输入高电平时,输出端的电流将是下级门从本级电源经VT3拉出。这样一来,输出高低电平时,VT3 一路和 VT5 一路将交替工作,从而减低了功耗,提高了每个管的承受能力。又由于不论走哪一路,管子导通电阻都很小,使RC常数很小,转变速度很快。因此,推拉式输出级既提高电路的负载能力,又提高开关速度。


推挽输出和开漏输出的区别:


推挽输出:可以输出强高/强低电平,可以连接数字器件


开漏输出:只能输出强低电平(高电平需要依靠外部上拉电子拉高),适合做电流型驱动,吸收电流能力较强(20ma之内)在STM32中选用IO模式设置推挽模式,只能是输出模式,而输出高低电平的驱动电流都很大。即可作为输出,也可作为输入。作输出时,要输出高电平,需要外加上拉电阻。作输入时,要求处理高电平状态,才能读外部引脚。




GPIO配置情况


(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,读输入值是未知的


(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)


(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

关键字:STM32  GPIO  模式总结 引用地址:STM32 GPIO模式总结

上一篇:STM32F429之GPIO使用
下一篇:stm32-点亮led,流水灯

推荐阅读最新更新时间:2024-03-16 16:23

嵌入式STM32建立工程的详细步骤
创建工程步骤: 1、 在硬盘上创建工程目录Project,(cm3、Startup、STM32F10x_StdPeriph_Driv er、Users)添加到Project文件夹下,再创建一个Mdk文件,在Mdk下再创建一个Output和Listing文件夹。 目录结构如上图左栏。 2、创建工程。 点击保存后。即可 因为我们自己已经把启动代码复制到工程目录下了,所以不需要添加软件自带的。点击否。 3、建立工程管理目录树。 然后将其它的组也创建后,并且加入对应的源代码文件。结果如图。 点击OK后,进入到KEIL软件中。结果如图。 接下来。点击Target Options按钮 选中
[单片机]
嵌入式<font color='red'>STM32</font>建立工程的详细步骤
STM32 定时器正交编码器模式 寄存器配置程序
void Encoder_Init(void) { RCC- APB1ENR|=1 1; //TIM3时钟使能 RCC- APB2ENR|=1 2; //使能PORTA时钟 GPIOA- CRL&=0XF0FFFFFF;//PA6 GPIOA- CRL|=0X04000000;//浮空输入 GPIOA- CRL&=0X0FFFFFFF;//PA7 GPIOA- CRL|=0X40000000;//浮空输入 TIM3- DIER|=1 0; //允许更新中断 TIM3- DIER|=1 6; //允许触发中断 MY_NVIC_Init(1,3,TIM3_IRQChannel,2); TIM3- PSC = 0x0;/
[单片机]
STM32开源闭环步进电机源程序
单片机源程序如下: /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32F0xx_HAL_CONF_H #define __STM32F0xx_HAL_CONF_H #ifdef __cplusplus extern C { #endif #include main.h /* Exported types ------------------------------------------------------------*/ /* Exported constants -----
[单片机]
STM32 结构体位域操作 (int a:4)
1、什么是位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。 例如: 在存放一个开关量时,只有 0 和 1 两种状态, 用一位二进位即可。 为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。 所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。 每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。 位段成员必须声明为 int、unsigned int 或 signed int 类型(short char long)。 2、位域定义 struct
[单片机]
SPI接口说明及原理
1简介 SPI:Serial Peripheral Interface,是串行外设接口。 SPI是由摩托罗拉于 1985 年前后开发,是一种适用于短距离、设备到设备通信的同步串行接口。 从那时起,这种接口就已成为许多半导体制造商,特别是微控制器(MCU)和微处理器(MPU)采用的事实标准。 2SPI接口 SPI总线是一种4线总线,通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以。 MOSI:Master Output Slave Input,主设备数据输出,从设备数据输入; MISO:Master Input Slave Output,主设备数据输入,从设备数据输出; SCLK:Serial Clock,时
[单片机]
SPI接口说明及原理
配置STM32的PWM输出时没有波形输出的问题
以前在组织代码的时侯都是在初始化系统时钟时就一并初始化了各个外设,如 端口、定时器、串口等, 今天突发奇想,将各外设的初始化放到各外设的模块中去,这样的话没用到的外设就可以不用给时钟,降低能耗。 就这样问题出现了,PWM输出时没有波形输出。 反复检查对比了定时器的功能模块配置、输出IO的设置、RCC配置等,一直没有找到原因。 在准备放弃的时侯,有一搭没一搭的扫代码,突然一看,在设置输出IO代码之前没有给输出IO配置时钟,是在后配置的。 是不是这里的问题呢, 马上试试,果然。 这一记当头棒喝!! :) 所以, 在配置输出IO之前就要先配置IO时钟,谨记之!
[单片机]
STM32 串口的基本配置(寄存器版)笔记
1.串口 1.串口作为MCU和外界的连接工具,既可以检验代码的正确性,也可以和上位机进行交流 2.在STM32F103RCT6中,最多支持5路串口,对于串口而言,一般使用串行通信(USART1--5) 3.几个比较重要的寄存器: 具体配置过程 1.计算波特率(整数和小数部分) 2.初始化GPIO口 3.复位USART 配置波特率,配置奇偶校验,停止位等 4.配置中断(可编写中断服务函数) 代码实现: //初始化IO 串口1 //pclk2:PCLK2时钟频率(Mhz) //bound:波特率 //1.计算波特率(整数和小数) //2.初始化引脚 //3.复位USAR
[单片机]
<font color='red'>STM32</font> 串口的基本配置(寄存器版)笔记
stm32HAL库版本软件设计基础知识
一、去掉多余的hal库内外设 实际上可以根据工程需要添加,这样可以减少工程编译时间。 必须要的是:rcc时钟/内核/电源/dma 大概率要用的:gpio、usart stm32f4xx_hal.c //最基本的东西 stm32f4xx_hal_cortex.c //内核 stm32f4xx_hal_gpio.c //端口(95%情况要用) stm32f4xx_hal_pwr.c //电源 stm32f4xx_hal_pwr_ex.c stm32f4xx_hal_rcc.c //配置系统时钟和使能外设时钟 stm32f4xx_hal_rcc_rx.c stm32f4xx_hal_usa
[单片机]
stm32HAL库版本软件设计基础知识
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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