当前位置:首页 > 单片机 > 单片机
[导读]此篇文章重点讨论STM32的GPIO的配置种类以及上拉输入、下拉输入、浮空输入、模拟输入的区别经过学习STM32发现,GPIO有8种工作方式输入模式:输入浮空、输入上拉、输入下拉、模拟输入输出模式:开漏输出、开漏复用功能

此篇文章重点讨论STM32的GPIO的配置种类以及上拉输入、下拉输入、浮空输入、模拟输入的区别

经过学习STM32发现,GPIO有8种工作方式

输入模式:输入浮空、输入上拉、输入下拉、模拟输入

输出模式:开漏输出、开漏复用功能、推挽式输出、推挽式复用功能

输入模式参照图片来讲

浮空输入:浮空输入状态下上拉电阻和下拉电阻都是断开的,信号经过I/O端口——施密特触发器——输入数据寄存器——CPU读取

上拉输入:相比浮空输入状态,就是上拉电阻闭合(下拉电阻仍然处于断开状态)

下拉输入:相比浮空输入状态,就是下拉电阻闭合(上拉电阻仍然处于断开状态)

模拟输入:上拉电阻和下拉电阻都处于断开状态,并且信号不是经过施密特触发器,而是直接进入施密特触发器之前的模拟输入通道


输出模式也参照图片来讲:


开漏输出模式:其中1号区域,两个寄存器有两种读写方式,这个后面会介绍,这是关于寄存器的配置原因,对于输出驱动器部分,当输出控制电路输出逻辑1(高电平)时,外部的I/O端口输出的电平由外部电路决定,如果外部连接有上拉电阻,则输出高电平,如果接有下拉电阻,则输出低电平;当输出控制电路输出逻辑0(低电平)时,外部的电路不管是否接有上拉电阻还是下拉电阻,都输出低电平;所有应用开漏输出模式的时候想要输出高电平切记要加上拉电阻

开漏复用功能输出:此模式与开漏输出模式只有一个不同的地方,就是在1号区域,此模式是直接在复用功能输出引输出部分输出的

推挽输出模式:也是走的1、2、3、4号路线,其中在2号区域输出控制电路部分,如果输出逻辑1,则3号区域P-MOS导通,N-MOS截止,输出高电平(不管外部有没有上拉电阻);如果输出逻辑0,则3号区域P-MOS截止,N-MOS导通,输出低电平(不管外部有没有上拉电阻和下拉电阻)

推挽复用功能输出:此模式与推挽输出模式不同的地方就是1号区域,此模式是直接在复用功能输出部分输出的

下面讲解一下输出模式与寄存器的关系

在STM32的参考手册中我们可以找到GPIOx_CRL和GPIOx_CRH寄存器,这两个寄存器功能相同,就是GPIOx_CRL是用来配置低8位(例:PA0_PA7)I/O口的,GPIOx_CRH是用来配置高8位(例:PA8_PA15)I/O口的


这是一个32位寄存器,每4位配置一个端口,例:第1位和第0位即MODE0[1:0],用来设置Px0(PA0%20or%20PB0%20or%20PC0%20and%20so%20on)是输入还是输出,第3位和第2位即CNF0[1:0],用来选择Px0的输入或者输出的具体模式。

其中有一个地方值得注意,就是在输入模式下,CNFx=10的状态:上拉/下拉输入模式,到底是上拉输入模式还是下拉模式就要用到另一个寄存器GPIOx_ODR,并且这个寄存器对输入和输出有着不同的作用


这是一个32位寄存器,高16位保留,低16位每位对应Px的一个I/O口

在输入模式下,如果对应位置1,则为上拉输入;如果对应位置0,则为下拉输入

在输出模式下,如果对应位置0,则是要求输出端口输出默认输出高电平,注意:此处,若为开漏输出模式,若想输出高电平需要外界上拉电阻

具体对应关系见下表:


还有一个寄存器需要介绍,端口位设置/清除寄存器(GPIOx_BSRR)


在输出模式下,可以通过配置这个寄存器决定到底是输出高电平还是低电平,低16位置1,则对应端口输出高电平,高16位置1,则对应端口输出低电平

这个寄存器就是上面讲解输出模式时的疑问


配置输出模式时,可以通过配置寄存器GPIOx_BSRR然后映射到寄存器GPIOx_ODR,也可以直接配置寄存器GPIOx_ODR,但是对于运行效率来说,还是通过GPIOx_BSRR映射到GPIOx_ODR效率更高。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

树莓派,(英语:Raspberry Pi,简写为RPi,别名为RasPi / RPI)是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。随着Windows 10 IoT的发布,用户可以用上运行...

关键字: 树莓派 gpio gpio编程

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8...

关键字: 3AT89C51 单片机 引脚说明

串行外设接口(SPI)是微控制器和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。本文先简要说明SPI接口,然后介绍ADI公司支持SPI的模拟开关与多路转换器,以及它们如何帮助减少系...

关键字: gpio spi 串行外设接口

一、什么是GPIO? GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要C

关键字: gpio 通用io口

//**********************************************************************//************************************...

关键字: gpio STM32

GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。 S3C2410共有117个I...

关键字: ARM gpio 硬件介绍

Ⅰ、写在前面完事开头难,只要肯努力;师傅领进门,修行看个人;当你看到本文,说明你是幸运的,作者接下来推出的一系列STM8S教程,将助你踏入STM8S的世界。本文是STM8S教程的开始,写给刚入门STM8S的朋友。学习本文

关键字: gpio stm8s 基础知识

一、在STM32中,有5个时钟源,为HSI,HSE,LSI,LSE,PLL.①HSI是高速内部时钟,RC振荡器,频率为8MHz;②HSE--高速外部时钟,可接石英或者陶瓷谐振器,或者外部时钟源,频率范围4MHz--15M...

关键字: STM32 stm32f10x 时钟配置

以下是驱动的源码。#includelinux/config.h//配置头文件#includelinux/kernel.h//用于调用kmalloc和kfree#includelinux/sched.h//调度,进程睡眠,...

关键字: gpio mini2440 驱动led

一、API说明HAL库一共包含如下6个IO操作函数:1、读取某个引脚的电平状态:HAL_GPIO_ReadPin()2、写入某个引脚的电平状态:HAL_GPIO_WritePin()3、翻转某个引脚的电平状态:HAL_G...

关键字: gpio LED STM32
关闭
关闭